Files

5.0 KiB

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.