Lane 2: the invitation, the shared analytics page and Help (#728) #756
Loading…
Reference in a new issue
No description provided.
Delete branch "build/lane2-pub345"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Lane 2 of the v4.5.0 redesign (#728), the fourth PR of its series: PUB-3, PUB-4 and PUB-5 — the three public pages a stranger is most likely to meet — rebuilt in the frame #751 added. Frontend only.
The one that reaches beyond this lane: eyebrows are sentence case now
Not a lane 2 departure, a lane 0 port error, found while building these pages.
prototype/shared/looks.css:153says it outright::root[data-look]is on in every prototype page, so sentence case is what every drawing the owner reviewed shows. Lane 0 portedkit.css's.labeland the look's--label-*tokens, but not the look's own three properties — and shipped the version that decision retired. The app readAN INVITATIONwhere the drawing reads An invitation, on the front door, sign in, Home, You and all five public pages.Three properties in one file, restoring a settled decision rather than making one. It also improves contrast as a side effect:
--ink-softrather than--ink-faintis 8.1:1 in light and 9.8:1 in dark, against 5.5:1 and 6.7:1 before.The surfaces
PUB-3, the invitation —
SH-081toSH-091,IS-196,IS-357,IS-393. Every state: looking it up, the invitation, not signed in, joining, the inline failure, already in it, the GM has been asked. A dead link is a stop in the world's voice (D65) with one line for all five reasons and the sentence saying why it says no more — the part that stops it reading as evasion.IS-196is new: where a table records its sessions, the invitation says so before anyone joins, not after.PUB-4, the shared analytics page —
CA-242,SH-120toSH-127, andSH-122replaced. The failure that was a line of red text with nowhere to go now has somewhere to go.PUB-5, Help —
SH-092toSH-119,IS-390. The index lists both guides with their sections, and those twenty section names are extracted from the markdown, not typed a second time. The extractor skips fenced code (the player guide has a```textblock whose contents would otherwise read as a heading), and a test asserts the index says Home and not The dashboard, so the day someone hand-copies the list back it goes red.Departures, all recorded on #728 before building
SH-124's "13 sessions in six months" is not a number the server has. The endpoint reportsaverage_gap_daysandsessions_last_30_days, and the ledger row says "completed in the last 30 days". The drawn figures are also arithmetically impossible together — thirteen sessions at a thirteen-day gap is not six months — so the page keeps the sentence's shape with the number the server actually reports. The drawn words would need a new server field.SH-088has no way onward, as drawn; the ledger says it links to the dashboard.SH-091is on the default state only, as drawn; the ledger says every state.pub--wide. In a still,widemeans "fill the still" (~600px); in a window it means up to 1560px — a guide set to a 1560px measure. Prose gets the narrow card.SH-122's wordmark is a link. The decision is that the header's Quest Board link "goes somewhere that exists"; the drawing's head is the shared non-link wordmark, so building it literally would leave the page with no door into Quest Board at all — worse for exactly the stranger the row is about.Not a departure, and worth saying because it looks like one:
SH-126's rate colours are built exactly as drawn.IS-295asks that status never be carried by colour alone, and it is not — every cell prints the percentage and the fraction, so the colour is redundant with text already there. The one cell where that would not hold is the unknown one, which is why the drawing writes "never asked" in words rather than leaving a grey dash.Two faults only the render caught
.pubhelp .glistloses to the frame's.qb .pub uland inherited a bullet list's padding.Neither is visible in the markup.
A false alarm worth recording
Headless Chromium on Windows silently clamps
--window-sizebelow about 492px and then returns a crop of the wider render — a 360px "phone" shot showed tiles and paragraphs cut off at the right edge that do not exist. A probe page printinginnerWidthreturned492for a 360×200 window. Three cycles went into chasing that before someone measured it.The fix it produced was kept anyway, because it is correct independently:
.pubshare .tscroll { min-width: 0 }— a grid item'smin-widthisauto, sooverflow-x: autoalone lets a wide table push the card out instead of scrolling inside it. Six long display names on a real phone would do it. The comment says so and no longer claims anyone saw it.Checks
lint 0 errors (239 warnings, all in pages no lane has rebuilt; zero in this PR's files, which are now held at
error), 1298 tests in 115 files, build clean. All three pages served from the builtdistand looked at, desktop and ~492px, both themes.🤖 Generated with Claude Code
`src/ui/base.css` still draws `.label` as tracked capitals. The look retires that, and says so in as many words — `prototype/shared/looks.css:153`: /* Labels: sentence case everywhere; the kit's tracked capitals are retired. */ :root[data-look] .label { text-transform: none; letter-spacing: 0; … } `:root[data-look]` is on in every page of the prototype, so **sentence case is what every drawing the owner has reviewed shows**. Lane 0's port took `kit.css`'s rule and the look's `--label-weight` / `--label-style` tokens, but not the look's own three properties, and so shipped the version that decision had retired. Every eyebrow in the app has read AN INVITATION where the drawing reads An invitation. Three properties, one rule. `text-transform` and `letter-spacing` are both inherited and the `font` shorthand resets neither, so both are written out rather than left to the initial value. `--ink-soft` rather than `--ink-faint` is a contrast change as well as a case change, and it is the right way: 8.1:1 in light and 9.8:1 in dark against `--paper`, where the retired colour was 5.5:1 and 6.7:1. The one place the swap would have gone the wrong way is the Contents rail, where a label sits on navy — and the rail already sets `--chrome-soft` on its own (`Contents.css`), which is exactly what `looks.css:167` does. Checked rather than assumed, with axe-core run in the page under the same tag set the journeys use (`WCAG_22_AA_TAGS`): 0 violations on the front door, the invitation, Help and the shared analytics page, in both themes, and 0 colour-contrast violations on both guides in both themes. Looked at as well — `/design`'s Label, Doc and Contents sections, the front door and the invitation — because a case change is not something a contrast checker has an opinion about. No test pins this. The jsdom suite runs with vitest's default `css: false`, so no stylesheet is applied and `getComputedStyle` sees nothing; there is no precedent in the suite for a test that reads a source file. The honest home is an assertion in the journeys' front-door scan, which needs a run of `scripts/journeys.sh` to be worth adding. The stale "small-caps" prose in `Label`'s docstring, its `/design` blurb and `PublicPage.css`'s note goes with it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>