Skip to content

Refine the color system: violet base, deliberate lime signal moments - #79

Merged
windoze95 merged 1 commit into
mainfrom
feature/color-scheme-refine
Jul 10, 2026
Merged

Refine the color system: violet base, deliberate lime signal moments#79
windoze95 merged 1 commit into
mainfrom
feature/color-scheme-refine

Conversation

@windoze95

Copy link
Copy Markdown
Owner

Summary

A full color-scheme audit (8 auditors over every screen/widget + 3 design-critic passes with WCAG math verified) applying one doctrine:

  • Violet is the calm base. primaryColor (7C4DFF) paints fills/borders/interactive surfaces; accentColor (B388FF) is the only violet used as small text — primary tops out at ~4.1:1 and failed the 4.5:1 AA floor in 20+ places (eyebrows, text buttons, snackbar actions, avatar initials, scrub timestamps).
  • Lime is the loud signal that breaks the silence — used only for genuine resume/ready moments, never ambiance, never per-row state.

Highlights

  • Fixes the invisible CONTINUE WATCHING pill (confirmed on-device): AppStatusPill gains an onImage variant with an opaque dark backing; the spotlight pill becomes Home's lime moment. Discover's FOR YOU pill had the same on-image bug and gets the same backing.
  • Player: center controls scrim (white play/skip icons had zero scrim over bright frames), accent scrub-preview timestamp, white hold-to-seek label, black87 360p badge, resume banner as the player's lime moment.
  • Green re-homed as the "your progress" layer: watch-progress slivers on thumbnails + the spotlight resume bar via a new watchProgressColor; interactive player scrubber stays violet. Watched checkmarks demoted to muted (dozens of lime dots per list diluted the signal); membership pill demoted; the 6%-alpha lime ambient glow repainted violet — green is never wallpaper.
  • Contrast repairs: unified fallback-avatar recipe (was 2.4–3.7:1 purple-on-purple in five drifting variants), progress track vs fill now clears 3:1, delete-profile confirm uses the dark onError ink (was white-on-salmon 2.6:1), legible in-button busy spinners.
  • Token hygiene: infoColor, violetDeepColor, selectionFill tokens replace stranded hexes; dialogs/sheets standardize on cardColor at the theme (ten per-call overrides deleted).

Test plan

  • flutter analyze --fatal-infos --fatal-warnings — clean
  • flutter test — 227 passing (two consecutive clean full runs)
  • Import happy-path test now scrolls suggestions into view (the new PROFILE FOUND pill shifts them below the test viewport)
  • Note: catalog_cache_fallback_test flaked once during local runs (async, pre-existing, unrelated to this change)

🤖 Generated with Claude Code

Full audit of every color pairing in the app (WCAG-verified), applying
one doctrine: violet is the calm brand base — primaryColor for fills,
borders, and interactive surfaces; accentColor as the only violet used
for small text (primary tops out at ~4.1:1 and failed the 4.5:1 floor
in 20+ places). The lime successColor is the loud signal that breaks
the violet silence, reserved for genuine resume/ready moments and
never used as ambiance or per-row state.

Legibility fixes:
- AppStatusPill gains an onImage variant (opaque dark backing) — the
  spotlight CONTINUE WATCHING pill was invisible over thumbnails; it is
  now Home's green moment. Discover's FOR YOU pill gets the same
  backing. Default pill ink is accentColor (the primary default failed
  AA on every surface).
- Player: the controls scrim now dims the center of the frame (white
  play/skip controls had zero scrim over bright video); scrub-preview
  timestamp accent+bold instead of primary; hold-to-seek label white;
  360p badge on black87; resume banner is the player's green moment
  (lime history icon + timestamp, accent Start over).
- Theme-level violet-as-text: text buttons, snackbar actions, floating
  input labels -> accentColor; onSecondary dark ink; eyebrows and
  onboarding numerals -> accentColor.
- Fallback avatar initials unified: primary 20% fill + accent letter
  (was primary-on-primary at 2.4-3.7:1 in five drifting recipes).
- progressBackground merged into cardHoverColor so the violet fill
  clears the 3:1 component floor; delete-profile confirm uses the
  onError ink (white on errorColor was 2.6:1); unsubscribe border
  alpha raised; in-button busy spinners get a legible explicit color.

Green re-homed as signal:
- Watch-progress slivers on thumbnails + the spotlight resume bar use
  a new watchProgressColor (= successColor): green owns "how far you
  are" while the interactive player scrubber stays violet.
- Watched checkmarks demoted from lime to muted metadata (dozens of
  green dots per list diluted the signal); channel membership pill
  demoted (state, not a moment) while a Resume button gets a lime play
  icon; settings shows one green per event; add-profile gains a
  PROFILE FOUND lime pill when a lookup succeeds.
- The 6%-alpha lime ambient glow is repainted violet — green is never
  wallpaper. Both backdrop glows now derive from theme tokens.

Token hygiene: infoColor + violetDeepColor tokens replace stranded
hexes in the badge maps and fallback gradients (amber near-duplicate
merged into warningColor); selectionFill shared by nav bar, rail,
chips, and the desktop sidebar; dialogs and sheets standardize on
cardColor at the theme with all ten per-call overrides removed.

Test: the import happy-path test scrolls suggestions into view before
tapping (the new pill shifts them below the test viewport).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@windoze95
windoze95 merged commit 855ccd1 into main Jul 10, 2026
7 checks passed
@windoze95
windoze95 deleted the feature/color-scheme-refine branch July 10, 2026 18:13
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