Files
security-game/TODO.md
T
zwitschi 1b976bf351
Full build / Import + headless tests (push) Successful in 30s
Full build / Full desktop build + optional release (push) Failing after 3m38s
Add body-camera timeline to the shift review
- New src/game/ui/event_timeline.gd flattens every recorded incident event
  (ADR-0005) into one time-ordered list and shows time, person, and a one-line
  summary. Step with Left/Right or the buttons; Esc returns to the review. No live
  3D replay in this first version.
- Shift review gains a "Body camera timeline" button that hands the review to the
  timeline; the review dim is hidden while it is open (stacked overlays made the
  screen nearly black) and restored on close.
- ShiftCoordinator records started_at_ms so the review can stamp events as mm:ss.
- 8 new string keys for the timeline UI and the review button.

Tests/docs
- Headless suite 113 -> 120 (test_event_timeline.gd), new smoke_timeline.gd that
  opens the timeline from the review, steps through every event, and closes back.
- README, TODO section moved to DONE, MEMORY notes. Version 0.2.6.
2026-10-31 21:02:25 +01:00

3.0 KiB

TODO

Godot 4.3 prototype. Release v0.2.6 is tagged. Headless suite 120/120, plus smoke_session_shell.gd, smoke_plan_verbs.gd, smoke_crowd.gd, smoke_emergency.gd, smoke_timeline.gd, and the windowed focus/radial smoke.

Host REQUIRE_SIGNIN_VIEW stays deferred.

NPC theater

Intents sit / photo / film / perform already pick waypoints. ADR-0010 rig (face/hair) is in the working tree. Bodies still idle-stand at those spots.

  • Sit pose at steps_end. Photo: brief raise of the influencer/tourist prop. Performer stays put and plays the hat/sign.

Audio

AudioFeedback is sine beeps. DONE called that "crowd ambience"; it is not.

  • Loop a low crowd bed that rises with CrowdSystem.mood.
  • Radio open/close crackle on the existing radio panel, still headless-safe (no-op without an audio server).

Accessibility

  • Escalation colors that still read in grayscale (shape or label, not hue alone).
  • HUD font scale in settings.

Scenario content still missing vs PLAN lists

  • Joke Shop: guest on the reservation list without ID; borrowed/mismatched ID; guest refuses wand screening; late arrival during a performance.
  • Studio: filming-boundary repeat (influencer ignores a posted line); celebrity-arrival crowd spike (more rubberneckers, not only one arrive spawn).
  • Building: "activate body camera" and "request reason" once those verbs exist, used in at least one authored event.

Distribution follow-up (host config, deferred)

Verified via API+host credentials (2026-10-31):

  • Repo is public (private:false) and account has admin rights.
  • Release v0.2.1 now carries all five artifacts (portable binaries + NSIS installer + AppImage).
  • Remaining host setting: instance-wide [service] REQUIRE_SIGNIN_VIEW=true makes anonymous browsing/downloads redirect to login. Host admin: REQUIRE_SIGNIN_VIEW = false under [service] in app.ini, restart Gitea. Alternative: mirror downloads.

Open Polish

  • Keep % placeholders stable in Strings.fmt when adding keys (positional formatting).

Screen design references (QA tooling)

  • tools/screen_designs.py generate writes one reference design per screen (from the docs/ descriptions) to docs/screens/designs/, with an offline --draft wireframe mode and an OpenRouter --ai mockup mode.
  • tools/screen_designs.py compare checks docs/screenshots/*.png against the designs (aspect ratio, size, blank-frame, and layout/palette/detail drift).
  • Vision-model judge for semantic screenshot comparison. Pixel and perceptual metrics cannot decide whether a frame's composition is correct; a follow-up should send the capture + reference design to a vision model and ask whether they depict the same screen.

Tooling (when an editor workflow exists)

  • IDE/editor-based GUT integration. Until then the custom headless runner stays.
  • Optional later: author venues as .tres resources instead of ScenarioFactory functions.