Fixed
-
Secondary text is now readable in every theme. The palette bridge mapped the render-time colours onto
the wrong rungs of each theme's text scale: prose used thetext_dimstep and faint text usedtext_ghost,
whiletext_muted(the step meant for prose) went unused entirely.On the SuperQode theme secondary text measured 4.35:1 against the background, below the 4.5:1 WCAG
requires for body text, and faint text measured 2.72:1. On Dracula the same bug put faint text at 1.56:1
— effectively invisible.Each rung now shifts up one, fixing every theme at once. The brand gradient is untouched, and a test
asserts it verbatim so contrast work can never dilute the identity. -
:themelooked like it did nothing. It correctly replaced all 21 palette colours, butrefresh()
cannot recolour text whose styles were resolved when it was written, so the screen kept the old palette. The
home screen is now rebuilt from source and a theme change is visible immediately. A conversation is never
cleared for a cosmetic command: when a transcript is present, the command explains that earlier output keeps
its original colours and that:homerepaints in full.
Added
scripts/show_theme_contrast.pyprints a theme's text colours as real terminal swatches with their
measured contrast ratio, because a colour change is hard to judge from a diff.