fix(ui): adopt the canonical fleet theme and hue set C - #1297
Merged
Merged
Conversation
ui/src/theme/msn-shared.css is now byte-identical to the canonical copy in MustardSeedNetworks/.github (sha256 b073e5e15bab). The fleet ci-conformance check compares the two by hash and has been failing every stem PR since .github#72 landed; stem's copy was 38eb15f3a815. The canonical file darkens the light-mode surface-border from #d9d2bd (1.45:1 on the page, under WCAG 1.4.11's 3:1 for a UI edge) to #8e7f52, re-derives the whole dark palette at hue 43-51 as the night version of the warm-cream light theme, and owns the eyebrow gold as --color-accent-gold, so product-stem.css drops brand-gold. The anchor takes the fleet's hue set C (owner 2026-09-15): #1565c0 light, #2d81e1 dark, with the theme-color meta and the favicon following it. brand-accent tracks the anchor because it is both the hover fill behind every primary button and a text colour: light #10509b carries white at 7.95:1, dark #5a9fea reads 6.53:1 on the page ground. Three sites keep muted text while only the surface changes on hover (SettingsDrawer, HelpDrawer). Under the canonical dark palette that pair is 3.88:1, down from 6.40:1, so they move to text-secondary (5.97:1) -- the same substitution seed made on UI-SEED-7. The Storybook a11y gate does not see it: stories render on the addon's own backgrounds, not on surface-hover. Fixes #1263
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
ui/src/theme/msn-shared.cssis now byte-identical to the canonical copy inMustardSeedNetworks/.github(sha256 b073e5e15bab). The fleetci-conformancecheck 9 compares the two by hash and has been failing everystem PR since
.github#72landed at 13:03:21Z —ci-conformanceis inci-complete'sneeds:andCI Completeis required. stem's copy was38eb15f3a815.What the canonical file changes for stem: light
--color-surface-border#d9d2bd→#8e7f52(1.45:1 → 3.48:1 on base, WCAG 1.4.11 wants 3:1 for a UIedge), the whole dark palette re-derived at hue 43–51° as the night version of
the warm-cream light theme instead of cold steel, and
--color-brand-goldreplaced by the shared
--color-accent-gold(same value, one fleet decision).stem's own darker success green was already the fleet's value.
The anchor moves to the fleet's hue set C (owner 2026-09-15):
#1565c0light,#2d81e1dark, inui/src/theme/product-stem.css, with thetheme-colormetaand the favicon following it.
--color-brand-accenttracks the anchor becauseit is both the hover fill behind every primary button (
components/ui/Button.tsx)and a text colour (
Sidebar, ghost/outline variants): light#10509bcarrieswhite at 7.95:1 and reads 7.60:1 as text on the page; dark
#5a9feareads6.53:1 on the page ground and 5.81:1 on cards.
Three sites keep muted text while only the surface changes on hover
(
SettingsDrawer.tsx:259,274,HelpDrawer.tsx:294). Under the canonical darkpalette that pair is
#91896eon#312e25= 3.88:1, down from 6.40:1before this change, so they move to
text-text-secondary(5.97:1). This is thesame finding run
seed-20260916-1310recorded on UI-SEED-7; UI-NIAC-9 and anyother adopter needs the same substitution, and the token itself is worth a
.githubfollow-up — the canonical file's comments measuretext-mutedagainstbase (5.17) and raised (4.61) but never against
surface-hover.Not changed here: the six module accents keep their current dark values — their
colour-blind-safe re-cut is UI-STEM-10's row, not this one.
Linked Issue
Fixes #1263
Type of Change
Risk
Low, and entirely visual. No Go, no API, no behaviour.
changes two tokens. Both were reviewed against the canonical file's measured
comments and re-measured here for the pairs stem actually renders.
--color-text-accenttakes the set C anchor as the row prescribes. Its darkvalue measures 4.09:1 on
surface-raised, under AA — recorded rather thandeviated from, and it has no consumer:
rg 'text-text-accent' ui/srcreturns nothing (the token is defined in the
@thememap only; the sidebarand buttons consume
brand-accent).scripts/build-favicons.js, which installssharptransiently; nothing wasadded to
package.jsonor the lockfile (git statusclean there).android-chrome-512x512.pnggrew 14239 → 20786 bytes — encoder output, notcontent.
Testing Evidence
RED/GREEN on the gate that is blocking the repo, using
.githubmain's ownscript (the version every caller actually runs — the reusable workflow's SHA pin
does not freeze it, support-plan D-GH-3):
Gates (golangci-lint reports v2.13.2, the pinned CI version):
Storybook accessibility in real Chromium (
color-contrastis blocking here,preview.tsxtest: 'error'):Note that this gate was already green with the 3.88:1 pair present: stories
render on the a11y addon's own
#ffffff/#1a1a2ebackgrounds, not onsurface-hover. The three sites were found by grepping the class pairs andmeasuring them, not by the gate.
Past the gates to the artifact, because a gate can pass on a definition the
bundler drops:
Security and Release Checklist
govulncheck ./...clean//nolint, nobiome-ignore