Intent: the two text-wrapping rules pages borrow from content.ts live with the other text utilities (.truncate, .num) in base.ts.
Done:
[ ] .break { overflow-wrap: anywhere } moves from src/web/style/content.ts to src/web/style/base.ts beside .truncate; its ~30 uses (boards-view, backups, origins, site, map, scope) are unchanged
[ ] base.ts gains .nowrap { white-space: nowrap }; tokenCount() in src/web/ui.ts draws class="num nowrap", and .tok leaves content.ts
[ ] docs/DESIGN.md §5d lists .break and .nowrap under base.ts and no longer lists .break or .tok under content.ts
[ ] a test asserts tokenCount's markup has no class="tok" and the rendered stylesheet defines .break and .nowrap once each
Run bun scripts/design-lint.ts and bun test test/design-lint.test.ts before pushing; where counts fall, lower docs/design/baseline.json in the same pull. Keep the diff to the files named.
Intent: the two text-wrapping rules pages borrow from content.ts live with the other text utilities (
.truncate,.num) in base.ts.Done:
.break { overflow-wrap: anywhere }moves from src/web/style/content.ts to src/web/style/base.ts beside.truncate; its ~30 uses (boards-view, backups, origins, site, map, scope) are unchanged.nowrap { white-space: nowrap };tokenCount()in src/web/ui.ts drawsclass="num nowrap", and.tokleaves content.ts.breakand.nowrapunder base.ts and no longer lists.breakor.tokunder content.tsclass="tok"and the rendered stylesheet defines.breakand.nowraponce eachRun
bun scripts/design-lint.tsandbun test test/design-lint.test.tsbefore pushing; where counts fall, lower docs/design/baseline.json in the same pull. Keep the diff to the files named.