- Responder outcomes now reach the shift review (ShiftCoordinator.responder_outcomes), and the review screen names them. - "evacuation" (emergency call, low danger, no weapon) actually clears the entrance: the door is locked, every NPC flees and is marked as leaving, and a security_failure reputation hit applies. - An emergency call the situation did not justify (no weapon, danger <= 1) appends an investigation note, records investigation_opened, and applies the existing false_report hit. The review lists the investigations. - Fix dispatch dying after the first shift: coordinator.setup() builds a new RadioSystem, so the responder_arrived connection made in _ready was lost on every venue switch/restart. _connect_radio() re-wires it beside _connect_crowd(). Tests/docs - Headless suite 105 -> 113 (test_emergency_aftermath.gd), new smoke_emergency.gd covering the investigation, evacuation aftermath, and review copy. - README controls/status/smoke checklist, TODO section moved to DONE, MEMORY notes. - Version 0.2.5.
75 lines
3.2 KiB
Markdown
75 lines
3.2 KiB
Markdown
# TODO
|
|
|
|
Godot 4.3 prototype. Release **v0.2.5** is tagged. Headless suite **113/113**, plus
|
|
`smoke_session_shell.gd`, `smoke_plan_verbs.gd`, `smoke_crowd.gd`, `smoke_emergency.gd`, and the
|
|
windowed focus/radial smoke.
|
|
|
|
Host `REQUIRE_SIGNIN_VIEW` stays deferred.
|
|
|
|
## Body-camera replay
|
|
|
|
- [ ] Shift review: a timeline of recorded incident events (ADR-0005 already stores them).
|
|
Scrub or step through; no live 3D replay required in the first version.
|
|
|
|
## 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):
|
|
|
|
- [x] Repo is **public** (`private:false`) and account has admin rights.
|
|
- [x] 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)
|
|
|
|
- [x] `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.
|
|
- [x] `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.
|