# TODO Godot 4.3 prototype. Release **v0.2.9** is tagged. Headless suite **139/139**, plus the session, PLAN-verb, crowd, emergency, timeline, audio, and windowed focus/radial smokes. Host `REQUIRE_SIGNIN_VIEW` stays deferred. ## 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. ## Release pipeline follow-up - [x] Fix `tools/publish_release.sh`: the `~/.git-credentials` branch never set `AUTH`, so every tag build since v0.2.2 failed to publish. - [x] Add a `github.token` fallback in `.gitea/workflows/build.yml` (the repo has no `GITEA_TOKEN` secret). - [x] Fall back to the checkout's git extraheader when no token/credentials exist (the Gitea runner does not expose `github.token`). - [x] Uploads now fail loudly and the release is verified to carry every artifact (a silent HTTP 4xx used to leave an empty release with a green job). - [ ] **Host disk is full** (`/` 7.8G, 100%, 0 bytes free) so release uploads fail with HTTP 500 `Attachments.Save: no space left on device`. Root-owned data is using the space; `sudo journalctl --vacuum-size=100M` (~700 MB in `/var/log/journal`), `sudo apt-get clean` (~90 MB), and clearing `attachments/tmp` would unblock it. Alternative: prune superseded releases (v0.2.0 + v0.2.9 assets ≈ 565 MB). - [ ] Verify the fallback on the next tag push produces a release automatically (the v0.2.11 tag build reached the publish step and created the release; only the upload failed on disk space). - [ ] Optionally backfill releases for v0.2.4–v0.2.8 (their CI artifacts were not retained; would need local rebuilds) or leave them superseded by the latest. ## 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.