Close the 0.9.3 UI polish milestone
Add deterministic captures 14-21 for the remaining screen-design states, fix the panel/button layout issues they exposed, and record 21/21 compare and judge results. Bump the source to 0.9.3 and move the completed milestone to DONE.md.
This commit is contained in:
1 parent
e805a91ad3
commit
c1cd4898e8
32 files changed
+440
-160
No files matched your search
@@ -63,7 +63,7 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o
|
||||
release build, version bump or tag was created at this gate.
|
||||
- **UI flow smoke (2026-11-02):** `smoke_ui_flows.gd` boots the real scene and
|
||||
exercises inspection allow/deny, normal vs emergency radio, Help filtering,
|
||||
wand allow/deny and review return-to-menu. Keep this smoke in the 0.9.3/0.9.6
|
||||
wand allow/deny and review return-to-menu. Keep this smoke in the 0.9.6
|
||||
handoff; it complements the unit tests that only exercise panels.
|
||||
- **Destructive actions (2026-11-02):** `SettingsPanel._open_destructive_dialog()`
|
||||
owns one confirmation instance for reset/replay; repeated presses focus the
|
||||
@@ -91,16 +91,16 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o
|
||||
states and font colours for the dark session/UI shell. Use `UiStyles.apply_button()`
|
||||
for every new `Button`; CheckButton/OptionButton keep the engine theme. Timeline
|
||||
Previous/Next disable at the ends; F1 tutorial skip is keyboard-only by design.
|
||||
- **Version and roadmap renumber (2026-11-02):** source is now **0.9.2**; the
|
||||
completed map/NPC work is the patch content. Postponed work is renumbered to
|
||||
**0.9.3 UI**, **0.9.4 NPC**, **0.9.5 textures**, **0.9.6 integration**, then the
|
||||
**0.10.0** minor release candidate. `TODO.md` plans only 0.x patch/minor
|
||||
increments; no major-version scope is defined yet. No release build or tag has been produced
|
||||
for 0.9.2.
|
||||
- **Priority change (2026-11-02):** the map optimization (originally planned for 0.9.5) and the pre-build
|
||||
NPC revisit are complete and in `DONE.md`. The postponed 0.9.3 UI, 0.9.4 NPC
|
||||
detail, 0.9.5 textures and 0.9.6 integration/0.10.0 release work are next. The
|
||||
current source version is 0.9.2; no release build or tag has been produced.
|
||||
- **Version and roadmap renumber (2026-11-02):** source is now **0.9.3**; the
|
||||
completed map/NPC work and UI polish are the patch content. Next work is
|
||||
**0.9.4 NPC**, **0.9.5 textures**, **0.9.6 integration**, then the **0.10.0**
|
||||
minor release candidate. `TODO.md` plans only 0.x patch/minor increments; no
|
||||
major-version scope is defined yet. No release build or tag has been produced
|
||||
for 0.9.3.
|
||||
- **Priority change (2026-11-02):** the map optimization, pre-build NPC revisit and
|
||||
0.9.3 UI polish are complete and in `DONE.md`. The 0.9.4 NPC detail, 0.9.5
|
||||
textures and 0.9.6 integration/0.10.0 release work are next. The current source
|
||||
version is 0.9.3; no release build or tag has been produced.
|
||||
- **Hollywood landmark map (2026-11-02):** the default venue is the real El Capitan
|
||||
Entertainment Centre block at 6840 Hollywood Blvd, not a generic brick entrance. Its
|
||||
reference/mapping notes live in `docs/hollywood-boulevard-map.md`; the map-budget test
|
||||
@@ -248,17 +248,19 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o
|
||||
material (`baseColorTexture` + `metallicRoughnessTexture`, NEAREST sampling). Colours are sRGB in
|
||||
the texture, so the old `srgb_to_linear`/`_linear_rgba` helpers were removed. `audit_glb` fails
|
||||
if a prop is not exactly one material or misses TEXCOORD_0/images.
|
||||
- **Mockups complete (v0.3.2):** `docs/screens/designs/` holds AI references for all 19
|
||||
catalogue screens. Only the six staged captures (01–06) are compared/judged; the other 13
|
||||
have no `capture`, so adding staged captures for the wand panel, timeline and escalation HUD
|
||||
would extend automated visual checks. `generate` now calls `_load_env_file()`.
|
||||
- **Staged captures (v0.3.3, updated 2026-11-02):** `capture_screenshots.gd` emits the gallery
|
||||
shots; states 7–10 switch to The Joke Shop at elapsed 620 s, retry the wand until it alerts,
|
||||
- **Mockups complete (v0.3.2, updated 0.9.3):** `docs/screens/designs/` holds AI references for
|
||||
all 21 catalogue screens, and every entry now has a committed current-build capture.
|
||||
`capture_screenshots.gd` covers scenes 01–13, `capture_ui_states.gd` covers UI states 14–21,
|
||||
and `capture_prop_gallery.gd` covers the prop gallery. `generate` now calls `_load_env_file()`.
|
||||
- **Staged captures (v0.3.3, updated 2026-11-02):** `capture_screenshots.gd` emits the scene
|
||||
gallery; states 7–10 switch to The Joke Shop at elapsed 620 s, retry the wand until it alerts,
|
||||
then jump to 760 s after staging for night lighting. LATE now has its own routine pool.
|
||||
Shot 12 closes any stale wand/inspection modal before the venue beauty shot (the wand fallback
|
||||
can leave `hud.show_wand` open without `wand_open`). The timeline needs
|
||||
`recorder.close_all_open()`, because `to_dict()` only lists closed incidents. The escalation
|
||||
HUD mockup is third-person now; `judge` still classes it `review` (no diff).
|
||||
`recorder.close_all_open()`, because `to_dict()` only lists closed incidents.
|
||||
`capture_ui_states.gd` adds 14–21; crowd panic stages a group 70 frames into the flee and
|
||||
responder arrival parks the responder with the door locked. `check_screenshots.sh` writes all
|
||||
captures to `docs/screenshots/` before `compare`; judge is 21/21 match.
|
||||
- **Prop collision (v0.4.0):** `_add_prop_model()` fits a `StaticBody3D` from the model bounds
|
||||
(cylinder for bollard/bin/hydrant, box otherwise) and adds a `NavigationObstacle3D`; NPC agents
|
||||
enable avoidance and move with the safe velocity from `velocity_computed`. The navmesh stays a
|
||||
@@ -732,7 +734,7 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o
|
||||
- Venue `door_staff_lines` are logged through `GameManager` (inspect / wand / refuse). They are not a separate dialogue UI.
|
||||
- Access loadout is implemented; do not re-fix `override_access` as if it were still unread.
|
||||
- `Save.SETTINGS_FILE` is declared and unused; settings persistence goes through `Save.load_settings()` / `save_settings()`.
|
||||
- Headless suite is **261/261**; the windowed smokes, screenshot compare and judge pass. Remaining visual follow-ups are in `TODO.md`.
|
||||
- Headless suite is **261/261**; Python tooling is **97/97**; screenshot compare is **21 good / 0 bad** and the automatic judge is **21/21 match, 0 diff**. Remaining visual follow-ups are in `TODO.md`.
|
||||
- Typed spawn signal extra args: handlers must accept the 4th `event: Dictionary` or Godot will not call them (`test_shift_coordinator_runs_a_shift` failed until `_on_spawn` took four args).
|
||||
- GDScript inference trap that broke the main scene: a `var` typed as a base class
|
||||
(`radial: CanvasLayer`) exposes script members as `Variant`, so `var x := radial.is_open` is a
|
||||
@@ -742,8 +744,9 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o
|
||||
- Do not snapshot right after changing a transform in the same frame: `capture_screenshots.gd`
|
||||
needs a state/frame gap or the capture uses the old camera orientation.
|
||||
- `EventScheduler` probabilities are per simulated second, not per call. Never poll it per frame.
|
||||
- Screenshot staging lives in `src/test/capture_screenshots.gd` (guard at z≈10.5 facing the door).
|
||||
`docs/screenshots/` copies are manual: copy from `user://screenshots/`.
|
||||
- Screenshot staging lives in `src/test/capture_screenshots.gd` (guard at z≈10.5 facing the door)
|
||||
and `src/test/capture_ui_states.gd` (UI states 14–21). `tools/check_screenshots.sh` renders all
|
||||
captures into `docs/screenshots/`; do not regenerate them by hand.
|
||||
|
||||
## Open Questions
|
||||
|
||||
@@ -754,10 +757,10 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o
|
||||
## Plan vs code
|
||||
|
||||
`PLAN.md` describes intended design; `README.md` and `DONE.md` describe what shipped. As of
|
||||
2026-11-01 the playable build covers all three venues, controls, access/radio/evidence/review,
|
||||
the Blender asset library, the realism pass, and the visual-alignment pass. `TODO.md` holds only
|
||||
the realism follow-ups and optional future ideas. The project uses a custom headless runner, not
|
||||
GUT, and Gitea Actions, not GitHub Actions.
|
||||
2026-11-02 the playable build covers the three venues, tutorials/campaign/checkpoints, the 0.9.3
|
||||
UI/accessibility pass, and the Blender + realism asset pipeline. `TODO.md` holds the remaining
|
||||
0.9.4–0.10.0 work. The project uses a custom headless runner, not GUT, and Gitea Actions, not
|
||||
GitHub Actions.
|
||||
|
||||
<!-- b64: RWFzdGVyIGVnZzogYSByYXJlIHJhZGlvIHRyYW5zbWlzc2lvbiAiwr9Ew7NuZGUgZXN0w6EgbGEgbW90YT8iIGZpcmVzIHZpYSBHYW1lTWFuYWdlci5fbWF5YmVfcmFkaW9fZWFzdGVyX2VnZyAoMi41JSBjaGFuY2UgYWZ0ZXIgYSBzdWNjZXNzZnVsIHJhZGlvIGNhbGwpLiBTdHJpbmcga2V5IHJhZGlvLmVhc3Rlcl9lZ2cgaW4gY29udGVudC9zdHJpbmdzLmVuLmpzb24uIERvIG5vdCByZW1vdmUu -->
|
||||
|
||||
|
||||
Reference in new issue
Block a user