Skip to content

Polish the live-smoke ledger: grid slots, dark focus ring, system monitor states#128

Merged
ctate merged 7 commits into
mainfrom
polish/live-smoke-ledger
Jul 16, 2026
Merged

Polish the live-smoke ledger: grid slots, dark focus ring, system monitor states#128
ctate merged 7 commits into
mainfrom
polish/live-smoke-ledger

Conversation

@ctate

@ctate ctate commented Jul 13, 2026

Copy link
Copy Markdown
Collaborator

Five findings from the post-launch live GUI smokes, each fixed in both authoring tiers where both ports carry it.

  • Grids keep their declared column slots when children run short — the engine clamped the declared column count to the child count, so any parent-stretched grid re-divided its full width among the survivors (the "search down to one album and the tile stretches" finding). The declared count now wins: children fill leading slots at column-slot width, trailing slots stay empty. Pinned at the layout level and in both soundboard e2e batteries.
  • Accent focus rings desaturate in dark appearance — the theme_accent override channel stamped the raw brand hue as the focus ring in both schemes (the neon finding); the house and Geist packs were already per-scheme. New accentFocusRing(accent, scheme) keeps the accent in light and halves its HSL saturation in dark; the Zig soundboard's hand-authored theme states the identical derivation, so both tiers land the same ring. High contrast unchanged. Token-level tests; no goldens involved.
  • System monitor footer says what it shows — the sample timestamp comes from the journaled clock in UTC, and no journaled timezone channel exists, so the honest fix labels it sampled at HH:MM:SS UTC in both tiers (a journaled tz-offset channel is the follow-up if local time is wanted; an unjournaled OS read would break replay byte-identity).
  • The "terminate request delivered" notice retires on the next applied sample — the sample whose rows show the delivery's outcome; failure notices persist. Both cores, both batteries pinned.
  • Empty search results name their scope — "Search sees the top 128 processes by CPU…" derived from the sampler bound in both tiers.

Suites: full battery, validate, test-tooling, test-examples-native, test-ts-core-e2e — all green. Changelog fragments included; no registry codes touched.

ctate added 4 commits July 13, 2026 15:41
- gridColumnCount no longer clamps the declared column count to the child count, so a filtered grid's children keep their column-slot width instead of stretching across the freed row
- pin the rule in the widget layout tests and in both soundboard e2e batteries (Zig example + TS port), which search the album grid down to one match and hold the tile at its natural width
- canvas.accentOverrides now takes the resolved scheme and derives the dark focus ring at half the accent's HSL saturation (canvas.accentFocusRing), matching the built-in packs' per-scheme ring moves
- the Zig soundboard theme states the same derivation so both authoring tiers land the identical ring; pins in the token tests and both soundboard suites
- label the footer sample time UTC: local rendering would need a journaled tz channel to keep replay byte-identical, so the honest label wins for this sweep
- clear the transient 'terminate request delivered' notice on the next applied sample (failure notes still stick); pinned in both e2e batteries
- hint the top-128-by-CPU search scope in the no-match empty state, derived from the sampler cap
- the theme_accent bullet now names the dark scheme's desaturated focus-ring derivation
@vercel

vercel Bot commented Jul 13, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
native-sdk Ready Ready Preview, Comment Jul 16, 2026 3:55pm

- accentFocusRing's dark step now lifts the desaturated ring's HSL lightness until it holds 3:1 (WCAG non-text) against the default dark background whenever the accent itself cleared that bar, and never below the accent's own contrast when it did not — halving saturation alone dropped #008000 from 3.9:1 to ~2.6:1; a hue-sweep test pins the floor, and the changelog fragment now states the accentOverrides ColorScheme parameter as a deliberate pre-1.0 break with the .light migration line.
- gridRowCount ceil-divides as 1 + (count - 1) / columns so an unclamped huge declared column count no longer overflows the additive form in safe builds; both the layout and intrinsic-size paths already share the helper, and a unit test covers maxInt columns and zero children.
…he grid row sweep

- accentFocusRing's dark floor now measures against the lightest tone controls commonly sit on (house surface_subtle #262626) instead of the background, so rings drawn on cards and muted chrome clear 3:1 too — green's ring rises from ~2.72:1 to 3.49:1 on the dark surface, and the never-invent escape hatch caps at the accent's own contrast against that same reference
- Route intrinsicGridChildrenSize's row count through gridRowCount: the additive ceil-div still panicked when a parent intrinsically measured a nonempty grid with maxInt columns (the earlier fix only covered the placement path)
- Extend the hue sweep to assert 3:1 per adjacent tone across both packs and add the nested-grid intrinsic regression (verified to panic before the fix)
- A ps sample already in flight when the kill confirmed collected its rows before the signal, so its ps_done must not retire the delivered notice; both cores now bump a sample generation at launch and clear only when an applied sample's generation exceeds the kill_done stamp (pure Msg-driven state, replay-deterministic)
- Pin the race in both batteries: the stale in-flight sample applies with the notice surviving into the rendered footer (kill exit and stale ps exit drained in one batch), and the first sample launched after the kill retires it
- Rework the live kill-note pins to drive real launches through the cadence so delivered-clears and failure-persists keep their semantics under the generation gate
@ctate
ctate merged commit eefa369 into main Jul 16, 2026
21 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