Skip to content

fix(design): the homepage had a fifth colour system, and the guard missed it - #149

Merged
github-actions[bot] merged 1 commit into
mainfrom
fix/homepage-accents
Aug 28, 2026
Merged

fix(design): the homepage had a fifth colour system, and the guard missed it#149
github-actions[bot] merged 1 commit into
mainfrom
fix/homepage-accents

Conversation

@catomean

Copy link
Copy Markdown
Collaborator

#148 shipped with the guard passing and the homepage still emitting bg-blue-100, text-indigo-600, bg-purple-100.

Both were true, because the guard only walked app/ and components/.

Where it hid

data/professionals.ts had its own getAccentColorClasses, giving each of the six first-party professionals a colour — blue, green, indigo, red, amber, purple. The same mistake as the bots in #144, in the one directory the scanner didn't read.

That's the lesson worth keeping: a source scanner is blind in exactly the shapes you forget to look at, so its first clean run proves nothing.

Fixed

  • The six professionals now use the brand, like the six bots
  • The guard walks data/ and lib/ too
  • data/menuItems.ts lost a blue/purple gradient

Two documented exceptions, not debt

Both are categorical scales that have to stay mutually distinguishable:

File Why
lib/constants.ts Document status — pending yellow, processing blue, ready green, error red. Recolouring "processing" to ochre would make state read as brand chrome.
lib/infrastructure/providers.ts Per-provider identity, so Ollama and OpenAI are tellable apart at a glance.

They sit alongside Callout.tsx's info/warning/error triad, each with its reason written next to it.

Verify

format:check, lint, typecheck, 256 tests, build — all green. Homepage confirmed to emit no raw palette class at all.

🤖 Generated with Claude Code

https://claude.ai/code/session_01HVwg8DKHQktxJuHeLM3xpG

…ssed it

#148 shipped with the guard passing and the homepage still emitting
bg-blue-100, text-indigo-600, bg-purple-100. Both were true, because the
guard only walked app/ and components/.

The palette was in data/professionals.ts -- its own getAccentColorClasses,
giving each of the six first-party professionals a colour (blue, green,
indigo, red, amber, purple). Same mistake as the bots in #144, in the one
directory the scanner did not read. That is the whole lesson: a source
scanner is blind in exactly the shapes you forget to look at, so its first
clean run proves nothing.

  - the six professionals now use the brand, like the six bots
  - the guard walks data/ and lib/ too
  - data/menuItems.ts lost a blue/purple gradient

Two files are now DOCUMENTED exceptions rather than debt, because their
colour is categorical and has to stay mutually distinguishable:

  lib/constants.ts                    document status -- pending yellow,
                                      processing blue, ready green, error red.
                                      Recolouring "processing" to ochre would
                                      make state read as brand chrome.
  lib/infrastructure/providers.ts     per-provider identity, so Ollama and
                                      OpenAI are tellable apart at a glance.

Both sit alongside Callout.tsx's info/warning/error triad, each with its
reason written next to it.

verify: format, lint, typecheck, 256 tests, build -- all green. Homepage
confirmed to emit no raw palette class at all.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HVwg8DKHQktxJuHeLM3xpG
@github-actions
github-actions Bot merged commit 57b13dd into main Aug 28, 2026
1 check passed
@github-actions
github-actions Bot deleted the fix/homepage-accents branch August 28, 2026 10:04
github-actions Bot pushed a commit that referenced this pull request Aug 28, 2026
#144 branded the bot page sections. It did not reach the demo underneath
them, so every first-party bot still ran the per-colour palette in its
interactive step -- the buttons, focus rings, progress dots, message bubbles,
dropzone and context panel -- plus the bot switcher in the nav.

The colour came from lib/demo/botDemoConfigs.ts, which carried its own
accentColor per bot (blue, green, red, indigo, amber). That is the sixth
place a colour was chosen, after: globals.css, lib/config/colors.ts,
lib/hooks/navigationConfig.ts, ACCENT_HERO_CLASSES, and data/professionals.ts.

DemoSection and BotSwitcher are used ONLY by the first-party bot pages
(verified: no custom-bot page imports either), so both are now brand:
BRAND_BUTTON, BRAND_FOCUS_RING, BRAND_STARTER, BRAND_CHECKBOX, BRAND_PROGRESS,
BRAND_MESSAGE, BRAND_DROPZONE, BRAND_CONTEXT_PANEL, BRAND_SWITCHER.

accentColor is gone from the demo config, its type, and the whole prop chain.

What still emits raw palette, correctly:
  VISION_STATUS_CONFIG   roadmap status -- completed green, in-progress blue,
                         planned amber, vision purple. Four states that have to
                         stay tellable apart; collapsing them to ochre would
                         destroy the information.
  the /personal templates per-template identity in the memorial/legends
                         product, chosen from an allowlisted surface.

Both live behind lib/config/colors.ts, which the guard already documents as an
exception -- so the guard passing while those classes ship is correct, not a
blind spot. The blind spot was data/professionals.ts, fixed in #149.

verify: format, lint, typecheck, 256 tests, build -- all green. Bot demo
confirmed ochre end to end against a local production build.


Claude-Session: https://claude.ai/code/session_01HVwg8DKHQktxJuHeLM3xpG

Co-authored-by: Mao Nakamoto <41178744+maonakamoto@users.noreply.github.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant