Skip to content

feat(tui): shade cache-read meter bands instead of recoloring them - #1070

Merged
edwin-zvs merged 1 commit into
mainfrom
meter-cached-texture
Aug 1, 2026
Merged

feat(tui): shade cache-read meter bands instead of recoloring them#1070
edwin-zvs merged 1 commit into
mainfrom
meter-cached-texture

Conversation

@edwin-zvs

Copy link
Copy Markdown
Contributor

A model owned two colors: its series color for new work, and that color blended toward black for the volume its provider served from cache. Two shades of one hue is what the meter otherwise uses for nothing, and a recessed color only reads as recessed next to the brighter one — a column that is entirely cache-read just looked like a dim model.

Now each model owns exactly one color, the one on its legend dot, and the split is carried by fill: cache-read cells are in the model's own color, new work stays .

The one cell that can't hold the split

A cell can only be shaded if one band owns it outright and fills it to the top — the eighth-blocks have no half-density counterpart, and a background can't carry a glyph. So the single cell where a model's two parts meet goes to whichever owns more of it, which is the rule the partial cell topping a column already followed.

The bands are flipped to cache-first (cache-read at the base, new work above) so that cell always lands on new work, where a solid block is the correct rendering anyway. The degradation costs nothing visible in practice.

Boundaries between different models are unaffected — they still differ in color, so they keep the fg-over-bg encoding.

Notes

  • specs/0167-fleet-token-meter.md updated: the "must be a color rather than an attribute" reasoning is superseded, and the cache-first ordering is recorded as a rendering requirement rather than a stylistic choice.
  • No artifact: same render surface as feat(tui): split each token-meter band into new and cache-read work #1068, where an artifact was declined.
  • Code lives entirely in the construct binary (crates/cli).

A model owned two colors: its series color for new work, and that color
blended toward black for the volume its provider served from cache. Two
shades of one hue is what the meter otherwise uses for *nothing*, and a
recessed color only reads as recessed next to the brighter one — a
column that is entirely cache-read just looked like a dim model.

Give each model exactly one color, the one on its legend dot, and carry
the split in fill instead: cache-read cells are the shaded block in the
model's own color, new work stays solid.

A cell can only be shaded if one band owns it outright and fills it to
the top — the eighth-blocks have no half-density counterpart, and a
background can't carry a glyph — so the single cell where a model's two
parts meet goes to whichever owns more of it, the same rule the partial
cell topping a column already followed. Flipping the bands to cache-first
aims that cell at new work, where a solid block is the right answer
anyway, so the degradation costs nothing visible in practice.
@edwin-zvs
edwin-zvs merged commit c55e921 into main Aug 1, 2026
1 check passed
@edwin-zvs
edwin-zvs deleted the meter-cached-texture branch August 1, 2026 06:04
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