build: let tsc find the bindings nothing reads

This project has no linter and does not want one, but `strict` says nothing
about a binding that is simply never read — and that is the one kind of dead
code a reader cannot tell apart from a deliberate seam. `tsc` already walks
every file, so it may as well answer the question.

Three had accumulated: an unread `type View` import in App, and a
`useGameMeta()` resolver in Controls and YourOwn, both of which draw their
colours from somewhere else — the game-order list has its own resolver, and
YourOwn reads the reader's own records directly. None of them were wrong, they
were just leftovers that read as intent.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
This commit is contained in:
Lucas Winther
2026-08-20 06:11:26 +02:00
co-authored by Claude Opus 5
parent 5ae559de97
commit 447ea25632
5 changed files with 11 additions and 5 deletions
+8 -1
View File
@@ -66,7 +66,14 @@ feed is a static JSON file built from snapshots, falling back to checked-in fixt
The only runtime dependency is `zod`. Do not add a bundler, test runner, HTTP client, or HTML
parsing library — Bun covers all four. `tsconfig.json` runs `strict` plus
`noUncheckedIndexedAccess` and `exactOptionalPropertyTypes`.
`noUncheckedIndexedAccess`, `exactOptionalPropertyTypes`, `noUnusedLocals` and
`noUnusedParameters`.
The last two are there because this project has no linter and does not want one: a binding nothing
reads is the only kind of dead code a reader cannot tell from a deliberate seam, and `tsc` already
walks every file. Three had accumulated behind `strict` — an unread `type View` import, and a
`useGameMeta()` resolver in two components that each draw their colours from somewhere else. A
genuinely unused parameter is spelled with a leading underscore, which both flags already exempt.
## Commands