Skip to content

themes: reconcile 12 palettes + WCAG mirror to the finalised colour spec - #176

Merged
mapgie merged 2 commits into
mainfrom
claude/theme-palette-reconciliation
Aug 22, 2026
Merged

themes: reconcile 12 palettes + WCAG mirror to the finalised colour spec#176
mapgie merged 2 commits into
mainfrom
claude/theme-palette-reconciliation

Conversation

@mapgie

@mapgie mapgie commented Aug 22, 2026

Copy link
Copy Markdown
Owner

What this is

The theme redesign deliverable from the design handover, kept as its own bounded PR (separate from the logging-redesign plan). It aligns Color.kt's 12 named palettes to GoFlo Theme Redesign.md, the source of truth for the hex values.

Changes

Color.kt — 12 palettes, light + dark (24 schemes):

  • Reconciled every token to the spec so each palette's three-hue chord delivers on its name. Notable fixes vs. what was in the code: Coral's tertiary is now sun-bleached gold (was rose-magenta); Sage's is honey gold (was periwinkle); Summer Candy's is lemon gold (was violet); Beach Vibes' secondary is sun-gold sand (was coral-orange); Disco's tertiary is glitter gold (was lime); Colour Me Happy is tomato/sky/grass; Dragon Fire's tertiary is furnace gold.
  • Updated the two light previewArgb swatches that changed (Coral 0xFFBC4D3F, Peach Melba 0xFFB35535); all other previews already matched.
  • Corrected the 8 now-wrong chord comments.
  • Left untouched: HighContrastLight/Dark, BlueOrange, all 24 WCAG AAA *Wcag variants, CUSTOM, the ThemeGroup/AppTheme enum names (DataStore keys), and colorSchemeFor()'s signature.

WCAG checker mirror (wcag_check_real.py + its base64 wcag_check.py):

  • The checker mirrors Color.kt's values and is meant to be kept in sync. It had drifted two generations behind (e.g. Coral primary C15542) and was missing the Dragon Fire and Midnight Neon palettes entirely, so it wasn't validating the palette that ships.
  • Regenerated all 24 standard entries from the same values as Color.kt (single source of truth) and added the two missing palettes. wcag_check.py is the base64 encoding of wcag_check_real.py; regenerated so the two stay identical (verified base64 -d wcag_check.py == wcag_check_real.py).

Verification

  • python3 wcag_check_real.py405 pairs pass across 27 themes, exit 0. Every standard palette now meets WCAG AA (4.5:1 text, 3:1 UI) in light and dark.
  • python3 a11y_check.py → clean, exit 0.
  • Changelog fragment added (patch); check_changelog_fragment.py → OK.
  • Cannot compile here (no Android SDK); CI is the build check. The change is data-only (colour literals) with no structural edits.

Notes

🤖 Generated with Claude Code

https://claude.ai/code/session_01Hz3A1rUUrbhVHcRWgguUFD


Generated by Claude Code

… spec

Aligns Color.kt's 12 standard palettes (light + dark) to
'GoFlo Theme Redesign.md' so each palette's three-hue chord delivers on its
name (e.g. Coral's tertiary is now sun-bleached gold, not rose-magenta;
Dragon Fire is all fire; Midnight Neon glows in both modes). Updates the two
changed light previewArgb values (Coral, Peach Melba) and corrects the now-wrong
chord comments. Accessibility schemes (HighContrast, Blue & Orange), the WCAG
AAA variants, colorSchemeFor(), CUSTOM, and the AppTheme enum names are all
left untouched.

Also reconciles the WCAG contrast checker's mirrored palette, which had drifted
two generations behind Color.kt and was missing the Dragon Fire and Midnight
Neon palettes entirely. The mirror is now regenerated from the same values as
Color.kt; wcag_check.py (base64 of wcag_check_real.py) is regenerated to match.
All 405 pairs pass across 27 themes; a11y_check.py is clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Hz3A1rUUrbhVHcRWgguUFD
@mapgie
mapgie marked this pull request as ready for review August 22, 2026 18:48
@mapgie
mapgie merged commit 6e7705f into main Aug 22, 2026
4 checks passed
@mapgie
mapgie deleted the claude/theme-palette-reconciliation branch August 22, 2026 19:26
mapgie pushed a commit that referenced this pull request Aug 23, 2026
Conflict in wcag_check.py: main re-encoded the updated checker as a
single base64 line (the same mangling this branch fixes). Resolved by
taking main's updated content decoded to plain text. Also removed
wcag_check_real.py, a byte-identical duplicate kept as a workaround
while the canonical file was unrunnable, and dropped the roles
spot-check's extra accent table now that the THEMES table covers all
27 themes. Re-verified against the reconciled palettes: 405 palette
pairs and 81 derived roles all pass (worst 4.21:1).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TCyUnDhCFcXP9yr3FuywuV
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.

2 participants