Uh oh!
There was an error while loading. Please reload this page.
refactor(ui): StatTile primitive — four stat-tile recipes become one (convergence R4) - #701
Merged
Merged
Conversation
…(convergence R4) The permission and health summary tiles were literal hand-rolled twins; MetricCard (bot/usage) and the daily-review totals cell repeated the same shape at metric-strip density. One primitive now owns the recipe: - value slot BAKES tabular-nums (tabular-nums contract re-pinned onto the primitive source for the four converged surfaces) - emphasis outline|filled (card tile vs quiet strip); tone paints value ink and, on outline, tints the border (the health model — scans best) - numeric zero drops tone to neutral + dims (the permission '0 已拒绝 in red is a false alarm' rationale, now everywhere) - new --font-size-stat: 20px ladder step retires the ad-hoc 1.5/1.4em (typography-converge rejected the em literal — governance working) - MetricCard stays as a thin alias; wrapper classes keep grid placement - twin CSS blocks deleted; card-converge/radius/roadmap contracts re-pinned to the new forms Caught by the screenshot net: the first build shipped a missing import (vite doesn't typecheck) — full typecheck now part of this round's verification. Desktop 2297/2297, ui 46/46, dead-css + alignment auditor clean, health/permission captures verified.
7 tasks
Astro-Han added a commit
that referenced
this pull request
Jul 30, 2026
Both recipes the StatTile primitive converged declared `line-height: var(--leading-tight)` on the value in CSS: `.settingsHealthSummaryTile strong` and `.settingsPermissionSummaryValue`. #701 folded them into one primitive and carried the leading as a `leading-tight` utility, which `cn`'s tailwind-merge dropped against the later `text-[length:var(--font-size-stat)]` — a Tailwind v4 font-size utility also carries a line-height, so it read as conflicting. Every outline tile has rendered 5px taller than its own recipe since. Measured on the live app, light, 1440x900: health and permission tiles 76.5 -> 71.5px, value line box 30 -> 25px, widths and element counts unchanged. The filled tile is deliberately left at 1.5 — neither source it converged (daily-review totals cell, `.settingsMetricCard strong`) ever set a line-height, so tightening it would be a new design value rather than a restored one; measured unchanged at 43.875px.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Round 4 of notes/ui-convergence-map-2026-07-09.md, executed inline after the agent run was cancelled.
npm run typecheckadded to this round's gateDesktop 2297/2297 + ui 46/46 exit-code gated; dead-css, alignment auditor, health/permission captures all verified.