feat(web): read the meta description and footer brand from config (BUNYIP-501) #502
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/BUNYIP-501-debrand-chrome"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
B3 of the BUNYIP-459 epic, part 1: the config-driven de-brand of the framework chrome.
What
The document
<head>and the footer no longer carry hardcoded bunyip brand copy; they read from config, so the shared layout scaffolding (which B4 will extract) carries no bunyip string.Changes
Config.brand_description(BRAND_DESCRIPTION, default bunyip's copy) feeds the<meta name="description">, installed via aviews::layoutOnceLock(the B1 / B2 pattern)."Bunyip · {domain}"now readsapp_name()(from B1) ->{app_name} · {domain}.maininstalls the description;bunyip-web/.env.exampledocumentsBRAND_DESCRIPTION.Byte-identical by default
BRAND_DESCRIPTIONunset -> the default string;APP_NAMEunset -> "Bunyip". The meta and footer render identically, and the 211 bunyip-web tests pass unchanged.Scope: B3 is two parts, this is part 1
This PR does B3's "strip bunyip strings from
layout.rsmeta / footer, read from config" acceptance criterion. B3's other half - physically relocating the marketing / legal / docs page bodies (handlers/public.rslanding,handlers/content.rspricing / story / roadmap / legal,src/docs/*.md) and the brand assets (bunyip-hero.png,mokosh-logo.png) into a separable skin module - is a large reorganization (~1500 lines + routes) that primarily enables the deferred B4 (the web-kit crate). It stays open under BUNYIP-501 as that issue's remaining acceptance criteria; this PR does not close the issue.Stacked on B1 + B2
Branches off B2 (PR #501), which sits on the merged B1. The PR base is
feat/BUNYIP-500-theming, so it shows only B3's diff and merges after B2. (B1 -> B2 -> B3 is the intended merge order; keeping the epic children stacked avoids the sibling conflicts that arise when they branch offmainin parallel.)Validation
cargo fmt --all --check,cargo clippy --workspace --all-targets -- -D warnings, andcargo test -p bunyip-webare green.B3 of the theme-agnostic web-kit epic, part 1: de-brand the framework chrome. The document head and the footer no longer carry hardcoded bunyip copy. Config.brand_description (BRAND_DESCRIPTION, default bunyip's copy) feeds the <meta name="description">, installed via a views::layout OnceLock (the B1/B2 pattern). The footer brand line "Bunyip · {domain}" now reads app_name() (from B1). main installs the description; .env.example documents BRAND_DESCRIPTION. Byte-identical by default: BRAND_DESCRIPTION unset yields the default string and APP_NAME unset yields "Bunyip", so the meta and footer render identically and the 211 bunyip-web tests pass. This does B3's "strip bunyip strings from layout.rs meta/footer, read from config" criterion; B3's other half (relocating the marketing/legal/docs pages and brand assets into a skin module) stays open under BUNYIP-501. Stacked on B2 (PR #501). #BUNYIP-501 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>