refactor(settings): own two-phase runtime settings
Move pre-window loading, startup application, live settings mutation, toon context, quality reapply, and SettingsVM loans behind one RuntimeSettingsController. Preserve retail command behavior, ordered target publication, draft semantics, and retryable failure convergence while removing duplicate GameWindow state and feature bodies. Co-authored-by: Codex <codex@openai.com>
This commit is contained in:
parent
4eae9b4f5a
commit
fec0d94148
24 changed files with 2379 additions and 599 deletions
|
|
@ -3,9 +3,9 @@
|
|||
## Current state
|
||||
|
||||
The behavior-preserving App ownership campaign is complete through Slice 7 and
|
||||
Slice 8 checkpoints A–F. `GameWindow.cs` moved from the 2026-07-21 baseline of
|
||||
15,723 lines / 278 fields / 205 methods to 4,057 lines / 198 fields / 54
|
||||
methods: 11,666 lines (74.2%) were removed without changing accepted gameplay
|
||||
Slice 8 checkpoints A–G. `GameWindow.cs` moved from the 2026-07-21 baseline of
|
||||
15,723 lines / 278 fields / 205 methods to 3,663 lines / 162 fields / 37
|
||||
methods: 12,060 lines (76.7%) were removed without changing accepted gameplay
|
||||
or rendering behavior.
|
||||
|
||||
| Slice | Ownership moved out | Closeout size |
|
||||
|
|
@ -19,6 +19,7 @@ or rendering behavior.
|
|||
| 7 | complete render-frame orchestration and failure recovery | 4,666 / 196 / 70 |
|
||||
| 8 A–E | shell freeze, native/session/environment composition, reversible pointer/input/framebuffer ownership | 4,266 / 194 / 65 |
|
||||
| 8 F | sole gameplay action route, typed commands, retained-root callback lifetime | 4,057 / 198 / 54 |
|
||||
| 8 G | pre-window/runtime settings ownership, one startup snapshot, inert late target binding | 3,663 / 162 / 37 |
|
||||
|
||||
Slice 8 is an ordered checkpoint campaign rather than another feature-body
|
||||
move. A froze/pruned the shell boundary; B gave all nine native window callback
|
||||
|
|
@ -55,6 +56,22 @@ review also corrected the carried default-combat mismatch: active combat
|
|||
short-circuits directly to peace, and an incompatible Held object prints the
|
||||
exact retail notice without a wire request or local mode mutation.
|
||||
|
||||
G adds `RuntimeSettingsController` as the sole concrete settings-store,
|
||||
current-state, startup-snapshot, resolved-quality, active-toon, and optional
|
||||
Settings-draft owner. It is constructed before `Window.Create`; startup applies
|
||||
monitor pacing, window state, saved FOV, and audio in order once, with
|
||||
substep-granular retry after failure. Complete runtime targets bind only after
|
||||
UI/terrain/dispatcher/render-range/streaming exist and binding performs no
|
||||
replay. The Settings save order and five-step quality application order remain
|
||||
frozen. Combat mutations preserve unrelated unsaved Gameplay draft fields, and
|
||||
successful external gameplay commands advance only their fields in the
|
||||
SettingsVM persisted baseline so Cancel cannot resurrect stale command state.
|
||||
UI-lock target, persistence, and baseline publication share an explicit
|
||||
convergence flag so target/save failures remain retryable for the same value.
|
||||
Saved FOV now applies without devtools, fixing the former accidental
|
||||
SettingsVM gate. AP-121 records the intentional modern persistence added to
|
||||
the named-retail `/framerate` live toggle/notice.
|
||||
|
||||
Slice 6 implementation commits are `99a3e819`, `4e4aac2c`, `0bc9fda9`,
|
||||
`c5570383`, `eeb0f6b4`, `947c61d2`, and production cutover `e91f3102`.
|
||||
Slice 7 implementation commits are `7e4cfb37`, `733126a2`, `bc6f09f9`,
|
||||
|
|
@ -111,6 +128,12 @@ review rule live in `docs/architecture/code-structure.md`.
|
|||
|
||||
## Accepted verification
|
||||
|
||||
- Slice 8 Checkpoint G Release suite: 7,553 passed / 5 fixture or environment
|
||||
skips; App 3,183/3 skips, UI Abstractions 534/0, 35 focused App
|
||||
settings/boundary tests, and all 43 `SettingsVMTests` pass. The production App
|
||||
build has zero warnings/errors; the complete solution retains the 17 existing
|
||||
test-project warnings tracked by #228. All three independent corrected-diff
|
||||
reviews are clean.
|
||||
- Slice 8 Checkpoint F Release suite: 7,524 passed / 5 fixture or environment
|
||||
skips; App 3,155/3 skips, 54 focused App ownership tests and 20 Core combat
|
||||
conformance tests pass, and all three independent corrected-diff reviews are
|
||||
|
|
@ -147,8 +170,8 @@ review rule live in `docs/architecture/code-structure.md`.
|
|||
|
||||
## Next work
|
||||
|
||||
Slice 8 checkpoints G–L group the remaining settings, resource ownership,
|
||||
startup, and shutdown wiring and reduce Silk callbacks to
|
||||
Slice 8 checkpoints H–L group the remaining resource ownership, ordered
|
||||
startup composition, and shutdown wiring and reduce Silk callbacks to
|
||||
narrow calls into input, update, render, resize, focus, and shutdown owners.
|
||||
It removes leftover feature state only where Slices 1–7 already established a
|
||||
canonical owner; it does not redesign gameplay, rendering, or resource lifetime.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue