Phase 1: extended category colour roles (quaternary/quinary/senary) + fixed-colour picker - #177
Open
mapgie wants to merge 4 commits into
Open
Phase 1: extended category colour roles (quaternary/quinary/senary) + fixed-colour picker#177mapgie wants to merge 4 commits into
mapgie wants to merge 4 commits into
Conversation
The script was committed as a single base64-encoded line in 84624bc, making it unrunnable. Decoded content verified: 345 pairs across 23 themes, all passing. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TCyUnDhCFcXP9yr3FuywuV
…xed-colour framing Phase 1 of the logging redesign (docs/design/logging-redesign): - Color.kt: ExtendedRoles + deriveExtendedRoles(scheme), HSL hue rotation of the scheme's own accents (+30/-30/+45 degrees). Near-greyscale accents (High Contrast themes) shift lightness instead, since hue rotation of grey is a no-op. On-colours pick near-black or white by max contrast, guaranteeing at least ~4.1:1 on any derived role. - Theme.kt: LocalExtendedRoles CompositionLocal provided by GoFloTheme, derived once per theme; covers the CUSTOM scheme path too. - CategoryAppearance.kt: QUATERNARY/QUINARY/SENARY tokens and resolver branches; the local is read only inside the new branches so existing tokens resolve unchanged. - ManageCategoriesScreen.kt: colour picker reworked to the row-6 mock: six in-theme role pill chips (Role.RadioButton, 48dp min, selection shown by fill + check, never colour alone) and a relabelled fixed colour section that stays put on theme change. - wcag_check_roles.py: mirrors the derivation over every palette (including Dragon Fire and Midnight Neon, absent from wcag_check.py's tables) and asserts on-colour contrast >= 3:1. Worst ratio 4.24:1. - Changelog fragment, PLAN.md progress log, subsystem map 03 drift note. No DB change; colorToken is free-form so the new tokens need no migration. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TCyUnDhCFcXP9yr3FuywuV
mapgie
marked this pull request as ready for review
August 22, 2026 19:35
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
…drift note The reconciled wcag_check.py THEMES table now carries Dragon Fire and Midnight Neon, so wcag_check_roles.py no longer needs its own copies of their accent trios (which were stale after the reconciliation anyway). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TCyUnDhCFcXP9yr3FuywuV
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.
Phase 1 of the logging & category-system redesign (build guide). Fully additive: no DB migration (colorToken is free-form), no screen removed, DB stays at v23.
Now merged with main's theme palette reconciliation (#176) and re-verified against the reconciled palettes.
What's in here
Color.kt:ExtendedRolesholder +deriveExtendedRoles(scheme), HSL house style (no HCT/TonalPalette dependency). Each extra role hue-rotates one of the scheme's own accents (primary +30, secondary -30, tertiary +45 degrees), keeping its saturation/lightness so the result sits in the scheme's accent band.Theme.kt:LocalExtendedRolesstatic CompositionLocal provided byGoFloThemearoundMaterialTheme, derived once per theme. Runs on the CUSTOM (buildCustomColorScheme) path too.colorSchemeFor's signature untouched.CategoryAppearance.kt:QUATERNARY/QUINARY/SENARYadded toCategoryColor; branches in both resolvers. The local is read only inside the new branches, so primary/secondary/tertiary/hex tokens resolve exactly as before, including outsideGoFloTheme.ManageCategoriesScreen.kt: colour picker reworked to the row-6 mock: "In-theme roles" is six pill chips (unselected = hairline + colour dot + label; selected = tonal fill + check + bold label), and the hex section is reframed as "Fixed colour / Stays put on theme change".wcag_check_roles.py(new): mirrors the derivation in Python over every palette's accent trio inwcag_check.py's THEMES table (all 27 themes after themes: reconcile 12 palettes + WCAG mirror to the finalised colour spec #176) and asserts derived on-colour contrast >= 3:1.wcag_check.pyrestored to plain text: it had been committed as a single base64-encoded line in 84624bc and was unrunnable by its canonical name; themes: reconcile 12 palettes + WCAG mirror to the finalised colour spec #176 re-encoded its update the same way, resolved in the merge by decoding main's updated content. The byte-identical plain-text workaround copywcag_check_real.pyis removed now that the canonical file runs. LESSONS.md entry added; consider wiring the checkers into CI so this can't recur.minor), PLAN.md §7 progress log updated, subsystem map 03 drift note added.Deviations from the phase guide's sketch (documented in PLAN.md §7)
Acceptance criteria (phase-1-color-roles.md)
LocalExtendedRoles, which is rebuilt from the active scheme on every theme change (verified by inspection; spot-check script exercises all light + dark palettes)wcag_check_roles.pygreen: 81 roles across all 27 themes (12 families light+dark, High Contrast x2, Blue & Orange), worst ratio 4.21:1 on the reconciled paletteswcag_check.pyanda11y_check.pyboth green (405 pairs / 27 themes post-themes: reconcile 12 palettes + WCAG mirror to the finalised colour spec #176; 95 files clean)Role.RadioButton, are >= 48dp tall, and selection is not colour-only (tonal fill + check mark + bold label)Feature-preservation checklist
primary/secondary/tertiary/hex tokens resolve exactly as before — old branches and the hex fallback are unchanged;isCustomColorToken's length-8 guard already excludes the new 7-10 char keysDayLogSheetbubbles, Stats colour usage unchanged — calendar readsMaterialTheme.colorSchemedirectly; the other 7 consumers oftoCategoryColoronly gain new branches; widgets never call the Compose resolversCUSTOMtheme path still works —deriveExtendedRolesruns on whatever schemeGoFloThemeresolved, includingbuildCustomColorSchemeoutputCI is the build check for this environment; both Python checkers were run locally and pass.
🤖 Generated with Claude Code
https://claude.ai/code/session_01TCyUnDhCFcXP9yr3FuywuV