Skip to content

fix(proposal): move the spacing onto the layout boundary and make the type fluid - #34

Merged
scheemunai merged 1 commit into
mainfrom
fix/proposal-fluid-type
Sep 5, 2026
Merged

fix(proposal): move the spacing onto the layout boundary and make the type fluid#34
scheemunai merged 1 commit into
mainfrom
fix/proposal-fluid-type

Conversation

@scheemunai

Copy link
Copy Markdown
Owner

The boundary, and I caused it

proposal's 34rem block toggled type scale and spacing while declaring nothing structural — a reader between 545 and 599 received a measure set for a layout they did not have.

That was #29. It lifted .hero{grid-template-columns} out of the 34rem block into its own 37.5rem block to fix a horizontal overflow, and left the old boundary purely typographic. Verified against history:

1fa8031  34rem block: .hero{grid-template-columns:minmax(0,1fr)}   1 structural declaration
a681dee  (#29)                                                     0 structural declarations

The fix

Rather than give the old boundary a structural rule it does not need:

  • the spacing moves to 37.5rem, where the hero actually restructures — type, spacing and layout now move together, which is what the correctly-classified boundaries already do;
  • the two stepped type sizes become clamp().mast .lead and .move h2 — so there is no step to misplace.

That is the shape runbook and changelog already use: one breakpoint, fluid type.

media blocks              2 -> 1
structural decls in it    1
font-size in any block    0
step at 540..550          none
remaining boundary        600->601, +541, and it restructures

Verification

390     2,687 -> 2,687   unchanged
768     1,995 -> 1,987   8px better
1,440   2,060 -> 2,060   unchanged
overflow  0 across 992 widths — 320-700 step 1, 700-1920 step 2

window.innerWidth is asserted before every recorded measurement; the harness refuses rather than records on mismatch.

Nothing removed. No line-height touched. pnpm check clean; pnpm exec vitest run — 151 files, 1,096 tests, all passing.

A note on the test run

My first full suite showed 3 failures against a baseline of 2, and I nearly reported that my change added one. The named test passes in isolation three times in both trees, and a second full run of the fix tree is completely green — 0 failures. Both earlier runs were flake. I had compared two single samples of a non-deterministic measurement and read the difference as signal.

🤖 Generated with Claude Code

… type fluid

The 34rem block toggled type scale and spacing while declaring nothing
structural, so a reader between 545 and 599 received a measure set for a
layout they did not have.

I caused that. #29 lifted `.hero{grid-template-columns}` out of the 34rem
block into its own 37.5rem block to fix a horizontal overflow, which left
the old boundary purely typographic. Before #29 that block did declare
layout.

Rather than give the old boundary a structural rule it does not need, the
spacing moves to 37.5rem where the hero actually restructures, and the two
stepped type sizes become `clamp()` so there is no step to misplace. That
is the shape `runbook` and `changelog` already use: one breakpoint, fluid
type.

  media blocks           2 -> 1
  structural decls in it 1
  font-size in any block 0
  step at 540..550       none
  remaining boundary     600->601, +541, and it restructures

  390    2,687 -> 2,687   unchanged
  768    1,995 -> 1,987   8px better
  1,440  2,060 -> 2,060   unchanged
  overflow  0 across 992 widths (320-700 step 1, 700-1920 step 2),
            innerWidth asserted before every recorded measurement

Nothing removed, no line-height touched.

Co-Authored-By: CRHQ <noreply@crhq.ai>
@scheemunai
scheemunai merged commit a178fee into main Sep 5, 2026
5 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.

2 participants