From 6100d19a25fa2e747396a0b65f45280c53fe9cf2 Mon Sep 17 00:00:00 2001 From: Zwitschi Date: Sun, 1 Nov 2026 18:55:43 +0100 Subject: [PATCH] Document the gear-fit pass and add the changelog Create CHANGELOG.md with the post-0.6.0 gear-fit entries and backfill the recent release history. Update the implemented-features list, asset-tooling notes, README links and verification counts (headless 229, Python 87). --- CHANGELOG.md | 87 ++++++++++++++++++++++++++++++++++++++ MEMORY.md | 4 +- README.md | 10 +++-- docs/asset-tooling.md | 6 ++- docs/development-status.md | 3 +- 5 files changed, 102 insertions(+), 8 deletions(-) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..9602b7e --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,87 @@ +# Changelog + +All notable user-facing changes to Gig Line. The format follows +[Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and versions use +Semantic Versioning. + +## [Unreleased] — planned 0.6.1 + +### Added + +- Gear-fit checks: `tools/blender_assets.py fit` reports head/skirt clearance, + and the headless suite verifies that head and back gear clears the body + silhouette. +- A refreshed Influencer portrait and gallery captures with a before/after + report in `docs/screens/realism/2026-11-01-gear/`. +- An explicit `--portrait-type` override for capturing hooded roles when a + scenario spawns one. + +### Changed + +- Narrowed the sunglasses so they sit inside the face silhouette. +- Moved the shoulder bag outboard so it clears both the coat and dress skirts. +- Raised the firefighter helmet so the brim no longer sits on the brow. +- Portrait captures now turn the subject toward the camera and hide the blue + focus overlay, so close-ups show the character rather than the UI. +- The README now links to focused docs pages for gameplay, architecture, setup, + asset tooling, development status and the manual smoke checklist. + +### Fixed + +- The shoulder bag no longer clips through the coat's skirt. +- The firefighter helmet no longer cuts into the brow ridge. +- The portrait subject no longer faces away from the camera. +- `--portrait-type` is now parsed and applied instead of being ignored. + +## [0.6.0] — 2026-11-01 + +### Added + +- Blender-authored character, gear and prop library with baked ambient occlusion. +- Higher-resolution environment textures with tangent normal maps. +- Phase-driven emissive details on library props, characters and street dressing. +- Dedicated README docs for gameplay, architecture, setup, asset tooling, + development status and manual smoke testing. + +### Changed + +- Environment lighting, fog, sun angle and night glow were retuned for the new + skyline and surface assets. +- The flashlight beam is visible at night and the NPC detail pass adds faces, + hands and cuffs. + +### Fixed + +- The body-camera overlay no longer covers the shift status. +- Selecting a venue releases the menu input lock and recaptures the mouse. + +## [0.5.0] — 2026-11-01 + +### Added + +- Articulated NPC characters with layered outfits, hand items, face/hair variety, + idle behaviour, reaction symbols, queue offsets and three LOD tiers. +- Player acceleration/braking, step-up assist, head bob, landing dip, + precision-walk feedback and surface-aware footsteps. +- Remappable keyboard and gamepad controls. + +### Changed + +- Crowd roles now select deterministic character variants and props. + +## [0.4.0] — 2026-11-01 + +### Added + +- Collision and navigation footprints for every street prop. +- Zoned prop placements with deterministic variants and small clutter. + +## [0.3.0] — 2026-10-31 + +### Added + +- Surface-material profiles, ACES tonemapping, glow, aerial fog and phase-based + colour grading. +- Framed facade windows, door trim, curb and lane markings. +- Generated street-furniture models and the Web export. +- Aim-free targeting, a focus cone and precision walk. diff --git a/MEMORY.md b/MEMORY.md index cb27d85..3d918bf 100644 --- a/MEMORY.md +++ b/MEMORY.md @@ -74,7 +74,7 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o - **Status (2026-11-01, after the NPC detail pass):** v0.6.0 is released. Post-v0.6.0 the realism pass, the visual-alignment pass and the NPC face/hand pass all landed. Headless - **228/228**, Python tooling **86/86**, `tools/check_screenshots.sh` **11 good / 0 bad**, + **229/229**, Python tooling **87/87**, `tools/check_screenshots.sh` **11 good / 0 bad**, `screen_designs.py compare` 11 good / 0 bad, `scene_concepts.py audit` all GOOD, `blender_assets.py audit` exit 0, `smoke_npc_budget` OK (16 avatars, 6.94 ms of 50 ms). `PLAN.md` is compact; README/architecture track the current controls, asset pipeline, CI and @@ -618,7 +618,7 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o - Joke Shop `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 **228/228**; the windowed smokes, screenshot compare and judge pass. Remaining visual follow-ups are in `TODO.md`. +- Headless suite is **229/229**; the windowed smokes, screenshot compare and judge pass. 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 diff --git a/README.md b/README.md index 58d6267..6923b1b 100644 --- a/README.md +++ b/README.md @@ -36,8 +36,9 @@ The central design goal is simple: > `REQUIRE_SIGNIN_VIEW` was disabled on 2026-10-31. > > **Latest: v0.6.0** — Blender-authored character/gear/prop library with baked AO, higher-resolution environment textures, and phase-driven library props. -> `main` also contains the post-v0.6.0 realism and visual-alignment pass (v2 skylines/textures, -> UI mockup art, flashlight beam, HUD fixes); the next release will package it. +> `main` also contains the post-v0.6.0 realism, visual-alignment and gear-fit passes +> (v2 skylines/textures, UI mockup art, flashlight beam, fitted NPC gear, HUD fixes); +> the next release will package them. > Releases are built automatically when a `vX.Y.Z` tag is pushed > (see [`docs/RELEASING.md`](docs/RELEASING.md)); manual builds use > `./tools/build_releases.sh`. Installer/AppImage packaging runs in the same pipeline @@ -103,6 +104,7 @@ Full setup, every run/test/smoke command, and the controls table are in - [`TODO.md`](TODO.md) — Active checkbox task list. - [`DONE.md`](DONE.md) — Completed task sections. - [`MEMORY.md`](MEMORY.md) — Persistent session notes. +- [`CHANGELOG.md`](CHANGELOG.md) — User-facing changes by version. - [`docs/architecture.md`](docs/architecture.md) — arc42-style architecture documentation. - [`docs/gameplay.md`](docs/gameplay.md) — Gameplay systems, venues, and the escalation model. - [`docs/asset-tooling.md`](docs/asset-tooling.md) — Asset pipelines, model tools, and screenshot gates. @@ -116,8 +118,8 @@ Full setup, every run/test/smoke command, and the controls table are in ## Development Status v0.6.0 shipped (Blender character/gear/prop library, baked AO, environment -lift); the realism and visual-alignment pass is adopted on `main` and packages -in the next release. See +lift); the realism, visual-alignment and gear-fit passes are adopted on `main` +and package in the next release. See [`docs/development-status.md`](docs/development-status.md) for the full implemented list and [`TODO.md`](TODO.md) for what's next. Manual verification uses the [`docs/smoke-checklist.md`](docs/smoke-checklist.md). diff --git a/docs/asset-tooling.md b/docs/asset-tooling.md index e200a7d..df9972b 100644 --- a/docs/asset-tooling.md +++ b/docs/asset-tooling.md @@ -194,7 +194,11 @@ compares the pre-adoption captures with the current build: on the shots both set judge's like-for-like means rose on every sub-score (overall 0.8 → 1.0, backdrop 0.6 → 1.6) and the Pillow metric gap fell 0.444 → 0.348. The character pass ([`2026-11-01-npc/`](../docs/screens/realism/2026-11-01-npc/report.md)) adds the portrait shot and -records the new faces, hands and sleeve cuffs. +records the new faces, hands and sleeve cuffs. The gear-fit run +([`2026-11-01-gear/`](../docs/screens/realism/2026-11-01-gear/report.md)) checks +the sunglasses, bag and helmet against measured head/skirt bounds with +`python3 tools/blender_assets.py fit`; it also fixed the portrait yaw and hid +the focus overlay so the close-up shows the avatar. ![realism run](../docs/screens/realism/2026-11-01-adopt/sheet.jpg) diff --git a/docs/development-status.md b/docs/development-status.md index 26271df..b834416 100644 --- a/docs/development-status.md +++ b/docs/development-status.md @@ -5,7 +5,7 @@ Implemented so far: - Godot 4.3 project scaffold, input map, procedural world builder - Venue-driven simulation core: `ShiftCoordinator`, `VenueScenario`, `EventScheduler`, `NPCController` + FSM, `AccessVerifier`, `EscalationManager`, `RadioSystem`, `IncidentRecorder`, `ReputationEvaluator`, `CrowdSystem` - Three authored scenarios (Hollywood Boulevard building, The Joke Shop, Late Night TV Studio) with access policies, NPC archetypes, and event pools -- Headless unit tests: **227 passing** (access rules and venue-correct access loadout, escalation, radio cooldown/battery, NPC reaction determinism, door lock, flashlight perception, persistence round-trip, settings round-trip, input remaps, navmesh, step colliders, skyline alpha, scenario data, full-shift simulation, wand screening, responder dispatch, localization strings, focus cone, action wheel, session shell, PLAN verbs and incident recording, crowd presentation, emergency aftermath, body-camera timeline, NPC theater poses, audio, accessibility, authored scenario content, string formatting, `.tres` venue round-trip, surface materials and environment, focus ranking and outfit/gait helpers, generated prop models, web export preset, prop atlas material, player movement, NPC character layers/LOD/queue, input bindings) +- Headless unit tests: **229 passing** (access rules and venue-correct access loadout, escalation, radio cooldown/battery, NPC reaction determinism, door lock, flashlight perception, persistence round-trip, settings round-trip, input remaps, navmesh, step colliders, skyline alpha, scenario data, full-shift simulation, wand screening, responder dispatch, localization strings, focus cone, action wheel, session shell, PLAN verbs and incident recording, crowd presentation, emergency aftermath, body-camera timeline, NPC theater poses, audio, accessibility, authored scenario content, string formatting, `.tres` venue round-trip, surface materials and environment, focus ranking and outfit/gait helpers, generated prop models, web export preset, prop atlas material, player movement, NPC character layers/LOD/queue, input bindings) - Simulation extras: protester archetype, CALL_SOMEONE reaction, door lock/secure mechanic (visual indicator), flashlight with night perception bonus, LATE shift phase reaching the violent-threat event - First-person prototype with interaction HUD, access inspection, wand screening, radio report form (incl. emergency hold-to-confirm), dispatched responder avatars, aim-free targeting, venue cycling between all three scenarios, color-coded escalation feedback, procedural audio cues, navigation-mesh NPC paths, JSON-backed localized strings, persisted shift history, debug overlay, and shift review - Control pass: focus cone on NPC heads with a billboarded blue circle in front of the face and name, action wheel (LMB/Space) with de-escalation-first slices, mouse-look freeze while a panel is open, acceleration-based walking, and named input actions (`action_menu`, `confirm`, `cancel`, `inspect`, `wand`) @@ -41,5 +41,6 @@ Implemented so far: - Visual alignment: start/venue menu, pause, settings, shift review, radio, wand, inspection, timeline, HUD target chip/escalation bar, and radial menu now use or match their AI references in `assets/images/ui/`. The runtime art loader (`src/game/ui/art.gd`) falls back cleanly when a file is missing. - Realism adoption (post-v0.6.0): v2 per-phase skylines and surface tiles with normal maps, retuned sun/exposure/fog, wet asphalt, denser foliage, a visible additive flashlight beam, and refreshed staging captures. `tools/check_screenshots.sh` is the repeatable capture/compare gate; judge is clean of `diff` verdicts. - Input/reliability fixes: selecting a venue now releases the start-menu input lock and recaptures the mouse; the body-camera overlay no longer covers the shift status. +- Gear fit (post-v0.6.0): Blender gear is measured against the avatar head/skirt silhouette and the checks run in both the Python tooling and the headless suite. Sunglasses, the shoulder bag and the firefighter helmet were fitted to the new faces; the Influencer portrait and gallery were recaptured with a before/after report. Not yet implemented: a desktop-only Forward+ preset (the renderer stays GL Compatibility for Web parity), live 3D body-camera replay, editor-based GUT integration, and crowd performance profiling/LOD (see [`TODO.md`](../TODO.md)).