bc-ka5y.22: The type scale is the half of bc-03pz that needs deciding — 22 sizes - #702
Open
mordam wants to merge 5 commits into
Open
bc-ka5y.22: The type scale is the half of bc-03pz that needs deciding — 22 sizes#702mordam wants to merge 5 commits into
mordam wants to merge 5 commits into
Conversation
Every font-size in public/style.css and public/flow.js is on the six-step scale Adam picked, and test/metricscale.mjs fails the build on a seventh value — the third and last of the metric axes bc-03pz opened. 356 of 518 declarations moved, none by more than 2px. 11, 13, 16 and 24 stayed exactly where they were, which is most of why this is cheap. The three equidistant sizes — 10px, 12px and 14.5px, 98 declarations between them — round DOWN, which measured as 6 boxes taller and 27 shorter where rounding up gave 29 taller and one card 83px longer. The four places that documented this as an open decision no longer do, and the foundations/type.html card draws all six steps instead of four sizes, two of which were themselves off any scale. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…frame bc-ka5y.28 landed while this branch was open and removed the third source of inflation (the card frame's own .ds-note prose), so the header comment saying "until bc-ka5y.28 lands" was wrong by the time it was written down. Measured on the merged tree: 8 distinct rendered sizes, down from 22. The two that are not scale steps are `code` at 0.94em resolving to 12px inside 13px prose, and the browser's own 13.3333px for `small` and a bare `input` — both already free of the scale in test/metricscale.mjs, and neither reachable by a px scale at all. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Owner
Author
|
A beadcause worker opened this and does not merge its own work. It is on the merge queue as bc-zsn0c. |
Owner
Author
|
The beadcause merge queue tried to merge this and could not: it has been tried 3 times and stopped at the same place each time. 2 checks failing (shard 2, test). The base is green on them, so these failures came in with this branch. A merge queue will not merge over a check the branch broke. Tried 3 times — that was the last. It is Adam's call now — see bc-zsn0c. |
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 free
to 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.
Every font-size in the app is now on a six-step scale — 9 / 11 / 13 / 16 / 19 / 24 — and
test/metricscale.mjsfails the build on a seventh value, which is the third and last ofthe metric axes bc-03pz opened. 356 of the 518 declarations in
public/style.cssandpublic/flow.jsmoved, none of them by more than 2px, and 11 / 13 / 16 / 24 stayed exactlywhere they were: those four already carried the app, and keeping them is most of why this is
cheap.
The scale was chosen on a measurement, not on the argument, and the tie rule is part of
it. Three sizes were equidistant from two steps — 10px (×9 declarations), 12px (×71) and
14.5px (×18) — and Adam's answer rounds all 98 of them down, to 9, 11 and 13. That is not
a detail: applying each candidate to the real sheet and diffing the computed-style
fingerprint gives 6 boxes taller and 27 shorter rounding down, against 29 taller and 7
shorter rounding up, with
history/rows.htmlgrowing 83px anddecisions/proposal.html49px on the up variant. Same six numbers either way. The rounding rule is written into
test/metricscale.mjs's header, because a later 12px is not a near-miss to wave through —it is 11px or 13px and the sheet has already decided which.
Two of the bead's own acceptance criteria could not be met by any type scale and were
rewritten on the bead three days ago rather than fudged here. "No box height changed
anywhere" is impossible: line-heights here are unitless multipliers, so 292 elements move by
≤4px without anything reflowing — the reflow set (|Δh| ≥ 5px) is what is worth reading, and
it is 33 elements over 15 cards. And the rendered distinct count does not reach the scale's
6: it lands at 8, because
codeat 0.94em resolves to 12px inside 13px prose and thebrowser's own 13.3333px for
smalland a bareinputhas no declaration behind it at all.Both are in a
SIZE_FREEset, the way0/inheritare free of the radius scale. (The beadpredicted 9–11; bc-ka5y.28 landing mid-branch removed the third source and took it to 8.)
Five cards lose a line and none gains one. The single card that grows on the design board
is
decisions/options.html, whose option hint goes 19px → 39px — and that one I measured byhand at real phone widths, because it is the card Adam reads answers on: at 360px and 393px
that hint is already two lines before this change (38px), and after it is 39px. The wrap
only appears at the board's own 440px viewport, which is wider than any phone the app
targets. The five that shrink are
history/rows(−53px),prs/pr-open,chat/comments,overlays/setupandutility/send-queue— text that used to wrap and now does not.Prose: the four places that documented this as an open decision no longer do — the block in
test/metricscale.mjs, the paragraph inREADME.md, the axis table inscripts/design/README.md, and the header ofscripts/design/vocabulary.mjs— and thefoundations/type.htmlcard inscripts/design/manifest.mjsis rewritten: it said "there isno type scale as such" and drew four sample sizes, two of them (15px, 17px) hard-coded off
any scale. It now draws all six with the role each carries. I also put the two measurement
traps into
vocabulary.mjs's andscripts/design/README.md's headers, since both cost mereal time:
baseline.mjs's height column is not a wrap detector for a font change, andvocabulary.mjs's per-size tallies are inflated by the card frame until bc-ka5y.28 lands.Two things found on the way that are not mine.
test/finishedepic.mjsis red on main —24/25, "with the sweep on (the default), the advocate asks instead of opening a session",
reproduced standalone on a tree with this branch's seven files reverted out. There was no
bead for it, so it is now bc-ka5y.39; it matters beyond itself because
npm testisfail-fast and a red at suite 164 hides the 270 after it. And the bigger one:
bc-ka5y.28 landed on main mid-branch and its
el.closest('[class*="ds-"]')over-skips:[class*="ds-"]matches the wrappers the app's markup sits inside (.ds-stack, and.ds-box/.ds-scalefrom the cards' own CSS), not just the.ds-notecommentary it wasaimed at. The regression baseline now fingerprints 1084 elements where it fingerprinted
2654, across 73 of 77 cards, and
prs/lamps.html— everyspan.lamp,span.diffstat,span.board-checks— fingerprints as zero. An empty array diffs clean against an emptyarray forever, so the tool reports success while watching nothing. Filed as bc-ka5y.38
(P2, auto-endorsed) with the one-line fix. It does not affect the numbers above: I took both
shots with the walk scoped to
.ds-note, which watches 2276 elements, and the reflow set isidentical to the one measured before .28 landed.
What I am least sure of is the aesthetic half, which no harness can answer: a scale
necessarily widens the gap between neighbouring roles.
flow.js's.fc .subused to sit0.5px under its body text and now sits 2px under it. Nothing reflowed and I think it reads
better, but it is the kind of thing that wants eyes rather than a fingerprint.
Tests: No-bail 6-way runner over all 434 suites, post-merge: 433/434. The one red is test/finishedepic.mjs, which reproduces standalone on a tree with this branch's seven files reverted to origin/main — pre-existing on main, now filed as bc-ka5y.39. test/metricscale.mjs 11/11 (the four new type checks among them). scripts/design/check.mjs 0 problems over 77 cards. scripts/design/contrast.mjs 0 below AA in 1316 text runs. scripts/topbar-check.mjs exit 0, every page at least 24px of slack at 360px. scripts/design/vocabulary.mjs 8 distinct rendered sizes, down from 22. test/swbump.mjs says no service-worker cache bump is owed and I agree: a cached old sheet against a new page is older text, not broken layout.
Worth knowing: 356 font-size declarations moved across a 1300-rule sheet, so the blast radius is every page at once. What bounds it is the fingerprint: 6 boxes gained height and 27 lost it, over 15 of 77 cards, and I have read all 33. The one that grows is decisions/options.html's option hint, 19px to 39px — measured by hand at 360px and 393px, where it is already two lines before this change; the wrap exists only at the design board's wider 440px viewport. The residual risk is a surface with no design card, since the fingerprint only covers what the 77 cards draw.
Left undone: android/ untouched — it is a WebView with no bundled CSS, so nothing to rebuild. bc-ka5y.38 (the ds- filter over-skip I found in main's baseline.mjs) is filed, not fixed: it is another bead's just-landed work and fixing it here would have put an unrelated file in this diff. The two em-relative sizes are documented as free of the scale rather than converted to px.
Files changed — 7 files · +483 −385 · against `main`
Opened by a beadcause worker session on bc-ka5y.22 — The type scale is the half of bc-03pz that needs deciding — 22 sizes, seven of them doing one job. It merges itself once the checks report; merging is what closes the bead. If this is still open, something stopped that, and the reason is on bc-ka5y.22 and in Adam's inbox.
bead: bc-ka5y.22