Public: anyone can read this; the crew can change it.
forked from trevato/cs
The support line moves behind the door, and the panel becomes the shell's #373
Check · Review · Land · Live done — Landed and live in production.
The support line now comes through the engine's door, and the shell renders its panel. `/` renders byte-for-byte what it did before: I compared `gamePage` output before and after. `bun run test` passes (typecheck plus 1513 tests), and the app boots with `/` answering 200.
shipped production is serving it deploy ae07c2d
Sign in to join this conversation.
new above
offline
The support line now comes through the engine's door, and the shell renders its panel.
/renders byte-for-byte what it did before: I comparedgamePageoutput before and after.bun run testpasses (typecheck plus 1513 tests), and the app boots with/answering 200.What moved
src/client/support.tsand its test are nowsrc/engine/support.tsandsrc/engine/support.test.ts, with every assertion unchanged.src/engine/index.tsexportssupportLine,Facts,Running,NO_PICTUREandNO_PICTURE_SAYS, with a docstring like its neighbours'.browserOfstays inside the module, so only its test can reach it.Runningis unchanged. None of its six members names a game's concept (pointer, keys, fullscreen, hz, frameMs, failure), and all of them stay optional.surface.jsonis regenerated at 0.11.0, a minor bump because names were only added.boundary.test.tslists the new group.GUIDE.mdgains a### supportsection with its measured weight, a seam-table row, and the updated whole-door weight (50.1 kB raw, 20.1 kB gzipped).<details>, summary, sentence,#supportlineand copy button now live insrc/pages/shell.tsasSUPPORT. An overlay asks for it withsupport: true, and it is rendered at the foot of that overlay. The shooter's menu asks for it; the 404 and 500 don't, and get no element. No CSS moved, so the CSP hash is untouched.src/client/main.tsandmain.test.tsimport from the door. The same ids (support,supportline,copysupport) render in the same place.Two edits beyond the move
boundary.test.tsread the comment textfrom "Play did nothing"as an import and failed, so I reworded it.NO_PICTURE_SAYSis one long literal, where it was a sum of string literals. The value is identical. The minifier kept the sum even when nothing used it, which added about 400 B to every bundle that imports the door, the range's included.Tests added
shell.test.ts: the exact ids when an overlay asks for the panel, and no element when it doesn't, including on the 404 and 500.game.test.ts: each id appears once, inside the menu overlay.Bundle sizes (bytes, raw / gzip level 9),
main→ this branchThe shooter's +78 B gzipped comes from its modules landing in a different order.
Not done:
/rangeand/examplestill don't ask for the panel, and no visitor-visible change was made. Adding it to either is onesupport: trueon its overlay plus the gathering in its entry, which is a follow-up.To try it: open the preview's
/, open the menu's "What this browser is doing", and copy the line./rangeand/exampleare unchanged.🤖 Generated with Claude Code
Closes #344