Skip to content

fix(claude): keep hot status line readings on a dark pill - #25

Merged
hyperb1iss merged 2 commits into
mainfrom
nova/claude-dark-alert-pills
Sep 14, 2026
Merged

hyperb1iss merged 2 commits into
mainfrom
nova/claude-dark-alert-pills

Conversation

@hyperb1iss

Copy link
Copy Markdown
Owner

πŸ› What broke

Once the context reading or a rate limit crossed 80 or 90 percent, the Claude Code status line painted that reading on a solid warning yellow or danger red box, sitting inside the ramp's brightest pink segment. With the five-hour and seven-day limits both running hot, the right third of the line turned yellow and salmon. A dark neon theme has no business going peach.

πŸ” Why

pill() in the generated script used the ramp's warning and danger colours directly as backgrounds, with the page background as text. Those two colours are the palette's alert accents, tuned to read as text or thin markers on a dark page, not to fill a run of cells. Three of them side by side on hot pink swamped the whole segment.

πŸ› οΈ The fix

Hot readings now sit on a dark pill. The prompt ramp gains four keys per variant:

  • warning_surface and danger_surface: the alert hue blended a quarter of the way into the page background, so the pill reads as a tinted dark hole rather than a bright block.
  • warning_text and danger_text: the alert colour itself, lifted toward the ramp's brightest foreground only as far as WCAG AA needs. The yellows already clear 4.5:1 on their surface, but the reds land near 4:1 unlit, so readable() binary-searches the smallest lift that gets them over the line.

The template swaps its three alert variables for these four, and the five scripts under extras/claude/ are rebuilt. The Starship generator still reads warning, danger and foreground_warning, which are unchanged, and its TOML output is byte-identical.

βœ… Verification

  • make check green: 106 tests, lint and format clean.
  • Independent verifier computed every pill's text on surface contrast across all five variants: all ten pairs clear 4.5:1 (glow danger is the tightest at 4.50), and every surface sits at 3.5:1 or better against the pink segment it lives in, so the pill still reads as a pill.
  • Rendered each generated script with a hot payload (context 85%, five-hour 92%, seven-day 81%): no background sequence uses the raw warning or danger colour, and the three pills appear with their surfaces. A cold payload renders byte-identical to the script on main.
  • The Starship TOML and generator show zero diff.
  • A new spec asserts the AA ratio and the dark side of the page for every pill, so a future palette change trips the test instead of shipping a bright pill.

πŸ€– Generated with Claude Code

https://claude.ai/code/session_01RpxCFKCCDdhy1DQLdBjGQv

hyperb1iss and others added 2 commits September 13, 2026 17:16
Once context or a rate limit crossed 80 or 90 percent, the status line
painted that reading on a solid warning yellow or danger red box inside
the ramp's brightest segment. With the five-hour and seven-day limits
both running hot the right third of the line turned yellow and salmon,
which is the opposite of the palette's mood.

Hot readings now sit on a dark pill: the alert hue blended a quarter of
the way into the page background, with the alert colour itself as text.
The prompt ramp exposes warning_surface, danger_surface, warning_text
and danger_text for every variant. The text is lifted toward the ramp's
brightest foreground only as far as WCAG AA needs, since the reds do
not clear 4.5:1 on their own dark surface unaided. The starship keys
warning, danger and foreground_warning are untouched.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RpxCFKCCDdhy1DQLdBjGQv
…iant

The pill text is lifted toward the ramp's brightest foreground only as
far as it needs, and nothing stopped a future palette change from
landing a pill under 4.5:1 or on the bright side of the page. The spec
now checks both for the warning and danger pills of all five variants.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RpxCFKCCDdhy1DQLdBjGQv
@hyperb1iss
hyperb1iss merged commit 6c97d71 into main Sep 14, 2026
8 checks passed
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