Repository navigation
v1.8.0 — Branding customization
The product "face" becomes operator config — name, theme, logo — edited visually at cockpit → Branding, stored as [branding] in .bss-cli/settings.toml, hot-reloaded everywhere without restarts.
Highlights
- 6 curated dark themes (phosphor default, amber-crt, ice, magenta, paper, solarized-dark) in the new
bss-brandingpackage — single source of truth for portal CSS variables and transactional-email colors, WCAG-contrast test-pinned. - Logo: built-in text glyphs ($ ● ▲ ✦ ► + custom 1–3 chars) render everywhere; optional PNG/JPEG/WebP upload replaces the glyph in the browser portal headers (magic-byte gated, ≤256 KB, never SVG). Emails and the CLI keep the glyph.
- Cockpit Branding screen — swatch picker, mark picker, logo upload, HTMX live preview (writes nothing until Save). CLI parity:
bss branding show / themes / set-theme / set-name / set-mark. - Version demoted — headers drop
vX.Y.Z; abss-cli v1.8.0footer footnote carries product attribution (never rebranded). - Chat greeting unified —
BSS_OPERATOR_NAMEbecomes an explicit override; unset, the bot greets with[branding].brand_name. - New
accent_altslot splits the decorative secondary accent (IDs, tool chrome) from the fixed semantic warn amber; leftover hardcoded phosphor greens converted to palette vars. - Self-serve portal gains the
?v=static-asset cache-buster.
Doctrine
CLAUDE.md Phase 0 amendment (settings.toml read rule) + new "Branding (v1.8)" block; 3 new make doctrine-check guards; DECISIONS 2026-07-05; phases/V1_8_0.md. Compose mounts .bss-cli/ read-only into portal-self-serve + subscription.
Upgrade notes
docker compose build && docker compose up -d(new env/volumes on portal-self-serve + subscription).BSS_OPERATOR_NAMEin.envnow pins the chat greeting explicitly — unset it to follow the portal brand.- No DB migration.
🤖 Generated with Claude Code