88 lines
5.2 KiB
Markdown
88 lines
5.2 KiB
Markdown
# TODO
|
|
|
|
Durable backlog. Agents append here instead of leaving `TODO` comments in source.
|
|
Small, specific, independently actionable. Remove only when actually done.
|
|
|
|
## Now
|
|
- [ ] Verify every `// TODO(verify)` field in `src/data/sample.ts` (56 after final review: saga names, singers,
|
|
story times, Odyssey book/lines, motif descriptions, facts) before any content leaves mockup stage.
|
|
|
|
## Next
|
|
- [ ] After a direction is chosen: decide whether the unused mockups are deleted or kept, and record the
|
|
chosen direction in `DESIGN.md`.
|
|
- [ ] Add CI under `.gitea/workflows/` (none exists): `bun install --frozen-lockfile`, `bun test`,
|
|
`bun run typecheck`, `bun run build`; plus a check that `AGENTS.md`, `CLAUDE.md`, `GEMINI.md` and the
|
|
`docs/` paths exist and `AGENTS.md` is under 150 lines. Proposed, not added.
|
|
|
|
## Someday
|
|
- [ ] Make `bun dist/server.js` work from any cwd (Bun 1.3.14 resolves bundled assets relative to cwd;
|
|
try `--asset-naming` / `naming`, or re-check on a newer Bun). Today `bun run start` and Docker
|
|
work around it.
|
|
- [ ] Derive `src/server.ts` routes and `src/index.html` cards from `src/mockups/registry.ts` instead of
|
|
three hand-kept lists (tests catch drift today).
|
|
- [ ] Decide whether real lyrics may be shown (copyright question, deferred).
|
|
|
|
## Recurring
|
|
- [ ] Maintain `AGENTS.md`:
|
|
- **Add a rule only in response to a real failure.** When an agent repeatedly gets something wrong,
|
|
that is a gap; add one line, ideally with a code example. Do not pre-empt hypothetical mistakes.
|
|
- **Update in the same PR as the convention change.** A stale rules file is worse than none — it
|
|
actively misleads.
|
|
- **Prune quarterly.** Delete rules whose convention has changed or whose mistake no longer occurs.
|
|
- **Optional, cheap validation:** run the same task twice in clean sessions, with and without the
|
|
file, and compare steps and token use. This is how the published numbers were produced, and it is
|
|
the only way to know your file is helping rather than costing 20% for nothing.
|
|
|
|
## Known issues
|
|
- [ ] `bun dist/server.js` from the repo root crashes: `TypeError: Bundled file "./index-….js" not found`.
|
|
Repro: `bun run build && bun dist/server.js`. Workaround: `bun run start`.
|
|
- [ ] Two mockups with byte-identical `style.css` fail `bun run build` with "Multiple files share the same
|
|
output path" (reproduced by copying `01-editorial/style.css` over `02-vertical-story/style.css`).
|
|
Identical `main.ts` files do not trigger it.
|
|
|
|
## Deferred from final review (2026-10-23)
|
|
|
|
### Shared / foundation
|
|
- [ ] `src/server.ts`: routes are hand-listed; generate them from `src/mockups/registry.ts` (see Someday).
|
|
|
|
### Docs / permissions
|
|
- [ ] `docs/DECISIONS.md`: entries are oldest-first; the template is newest-first. Pick one.
|
|
- [ ] `AGENTS.md`: the architecture map duplicates `docs/ARCHITECTURE.md`; trim one.
|
|
- [ ] `docs/plans/README.md`: says "feature branch" while branching is still `TODO(maintainer)`.
|
|
|
|
### Sample data
|
|
- [ ] `src/data/sample.ts`: `odyssey.url` points at Butler's prose translation, so "lines X-Y" will not match the linked text; switch to book/chapter references or a lineated edition when verifying.
|
|
|
|
### Mockup 01 editorial
|
|
- [ ] `src/mockups/01-editorial/style.css`: credit footer clips at about 761-1068px width with the folio open (parked; spec targets desktop 1440x900).
|
|
|
|
### Mockup 02 vertical story
|
|
- [ ] `src/mockups/02-vertical-story/main.ts`: `frame()` interleaves layout reads and writes.
|
|
- [ ] `src/mockups/02-vertical-story/style.css`: saga marker padding inflates boundary gaps; `.sea` background snaps between sagas.
|
|
|
|
### Mockup 03 transit map
|
|
- [ ] `src/mockups/03-transit-map/main.ts`: ruler repeat label reads "Year 0" for fall-of-Troy songs.
|
|
- [ ] `src/mockups/03-transit-map/main.ts`: `--footer-h` is not re-measured after fonts load.
|
|
|
|
### Mockup 04 greek frieze
|
|
- [ ] `src/mockups/04-greek-frieze/main.ts`: post-drag click-swallow listener can stay armed if no click fires.
|
|
|
|
### Mockup 05 score
|
|
- [ ] `src/mockups/05-score/main.ts`: `.part.is-cued` is not cleared on song change or close.
|
|
- [ ] `src/mockups/05-score/main.ts`: chip click re-renders the panel, which would restart the MP3.
|
|
- [ ] `src/mockups/05-score/main.ts`: `has-song` class is unused.
|
|
|
|
### Mockup 06 constellation
|
|
- [ ] `src/mockups/06-constellation/`: per-frame `Vector3` allocations; constructor failure leaks the canvas; WebGL probe context is not released.
|
|
- [ ] `src/mockups/06-constellation/`: label box cache goes stale on resize; Enter on the credits link opens a song.
|
|
- [ ] `src/mockups/06-constellation/`: fallback ruler is inert; legend/panel overflow; Troy saga caption is clipped.
|
|
- [ ] `src/mockups/06-constellation/`: check intro flight and easing in a real browser (unverifiable headless).
|
|
|
|
### Mockup 07 sea voyage
|
|
- [ ] `src/mockups/07-sea-voyage/`: per-frame `Color`/`Vector3` allocations; WebGL probe context is not released.
|
|
- [ ] `src/mockups/07-sea-voyage/`: no `webglcontextlost` handler; DPR is read once.
|
|
- [ ] `src/mockups/07-sea-voyage/`: waypoint tag `innerHTML` is unescaped; drawer clips the "The open sea" label.
|
|
|
|
- Mockup 14: the cave-mouth mask may repeat as holes during the curtain drop (Chrome, oversized mask
|
|
region). Fixed in 15 by shrinking the region; 14 left as is (superseded).
|