Skip to content

docs(plan): record the G11 follow-up as shipped, and what stays out - #72

Merged
mizu-jun merged 1 commit into
masterfrom
docs/g11-followup-plan-update
Aug 21, 2026
Merged

docs(plan): record the G11 follow-up as shipped, and what stays out#72
mizu-jun merged 1 commit into
masterfrom
docs/g11-followup-plan-update

Conversation

@mizu-jun

Copy link
Copy Markdown
Owner

What

The G11 follow-up entry in docs/plans/ui-ux-modernization-v3.md has been an open checkbox holding a list of sites since #62. It now records what shipped — #69 (terminal surfaces), #70 (modal scrim + destructive-button reds), #71 (modal dialog buttons) — split by surface, plus the two sites that stay out.

Why those two stay out (decisions, not leftovers)

  • overlay/picker.rs's query/selection colours. The purple/green macro & SSH branding is intentional per its own code comments, so migrating it is a product decision about whether Nexterm keeps per-feature brand hues at all — not a token substitution.
  • color_util::resolve_color's no-palette fallbacks. render_frame builds scheme_palette as an unconditional Some, so the None arm is reachable only from tests. Tokenising it would change nothing that renders. (Noted in passing: the same line makes the DesignTokens::default() branch beside it dead too — a future cleanup, not G11's.)

Three findings recorded in the plan, not just in commit messages

Each contradicts something the previous entry assumed:

  1. The delete-dialog reds had drifted further than recorded — not only the focused fill ([0.498, 0.196, 0.196] vs [0.486, 0.180, 0.180]) but the resting treatment (dark red vs surface_1) and the label rule.
  2. The scrim was never "one literal in four files". It was an asymmetry: five modal surfaces, only the settings panel scheme-derived, so a light scheme put a black veil behind a light panel.
  3. No fixed blend strength can carry a semantic fill across all nine schemes. Nord (error hue at 0.85 → 4.42:1) and Solarized (warning used raw → 4.37:1) land at luminances where neither a near-black nor a near-white label has anything to contrast with. Hence semantic_fill stepping the blend back until the label clears the floor.

On-device backlog

Gains #69 / #70 / #71, with #70 flagged as the highest-value item in the whole list: the scrim is the one place this work changed what an existing surface looks like rather than only where its value comes from (four modals went from a black veil to surface_0, so on a light scheme from dark to light). That was reasoned about, never seen.

The section now also states what the colour work did get machine-verified — the contrast floors are pinned by tests across all nine schemes, and two of those tests fail if a hard-coded literal returns — so the line between measured readability and unverified appearance stays explicit rather than blurring into "it's tested".

Test plan

🤖 Generated with Claude Code

The follow-up entry has been an open checkbox holding a list of sites
since #62. It now records what was actually done in #69 / #70 / #71,
split by surface, plus the two sites that stay out and why they are
decisions rather than leftovers: `picker.rs`'s per-feature brand hues
need a product call, and `resolve_color`'s no-palette fallbacks sit on a
branch `render_frame` cannot reach outside tests.

Three findings are worth keeping in the plan rather than only in commit
messages, because each contradicts what the entry previously assumed:

- The delete-dialog reds had drifted further than recorded — not only the
  focused fill but the resting treatment and the label rule.
- The scrim was never "one literal in four files". It was an asymmetry:
  five modal surfaces, only one of them scheme-derived, so a light scheme
  put a black veil behind a light panel.
- No fixed blend strength can carry a semantic fill across all nine
  schemes. Nord (error, 4.42:1) and Solarized (warning used raw, 4.37:1)
  land at luminances where neither a near-black nor a near-white label
  has anything to contrast with, which is why `semantic_fill` steps the
  blend back until the label clears the floor.

The on-device backlog gains #69 / #70 / #71, with #70 flagged as the
highest-value item in the list: the scrim is the one place this work
changed what an existing surface *looks like* rather than where its
value comes from, and that was reasoned about, never seen. The same
section now also states what the colour work *did* get machine-verified,
so the distinction between measured readability and unverified
appearance stays explicit.

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
@github-actions

Copy link
Copy Markdown

Coverage report


Generated by cargo llvm-cov (workspace minus nexterm-client-gpu and nexterm-i18n).

@mizu-jun
mizu-jun merged commit 7034d5b into master Aug 21, 2026
12 checks passed
@mizu-jun
mizu-jun deleted the docs/g11-followup-plan-update branch August 21, 2026 13:50
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