You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .planning/REQUIREMENTS.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -236,7 +236,7 @@ Added 2026-05-21 when the v1.7.x patch-cycle runway (Phases 999.51–999.56) was
236
236
-[x]**VIEW-INSP-02**_(✓ UAT PASS 2026-05-21 — labels appear; surface-normal artifact traced to a pre-existing renderLabel_ blend-state leak, fixed in 8e14034b9d)_ (Phase 999.51 · v1.7.x-02): same shape for `LabelController::apply()` + a `LabelSection` in the Inspector — _IMPLEMENTATION-COMPLETE / AWAITING GUI HUMAN-VERIFY (Plan 999.51-02 commits 3d2102a5b2/8ad9fc6076/590d7d6b9e; VIEW build green BALL_UI_V2=ON; STUB removed; apply() ports LabelDialog::accept → MODEL_LABEL Representation + LabelModel + MainControl insert/update; legacy LabelDialog untouched). Checkbox flips to [x] after the blocking running-BALLView human-verify confirms the section renders + a label visibly appears._
237
237
- [x] **VIEW-INSP-03** _(✓ UAT PASS 2026-05-21 — Material transparency slider visibly works; closes GH #527)_ (Phase 999.52 · v1.7.x-30 · GH #527): a working transparency control in the Inspector `materialSection`, superseding the broken legacy `MaterialSettings` transparency slider — _IMPLEMENTATION-COMPLETE / AWAITING GUI HUMAN-VERIFY (Plan 999.52-01 commits ce4061a93d/7374d42ae8; libVIEW + BALLView.app green BALL_UI_V2=ON). MaterialController gained an int transparency (0-255) property driving `Representation::setTransparency()` + `rep_->update(false)` — the per-vertex alpha path the interactive GLRenderer honors — NOT the dead `Stage::Material.transparency` field (the #527 bug; grep-verified unwritten). MaterialSection shows a raw 0-255 Transparency slider sharing Representation state with the Model-section slider. Legacy MaterialSettings dialog untouched (Phase 999.53 deletes it). Checkbox flips to [x] after the blocking running-BALLView human-verify confirms the Material-tab slider visibly changes transparency, the Model-section slider reflects the same value, and reset works._
238
238
-[x]**VIEW-CLEAN-02** (Phase 999.57 · prerequisite for 999.53) — _✓ UAT PASS 2026-05-21_: `createModelProcessor`/`createColorProcessor` relocated out of the legacy `modelSettingsDialog`/`coloringSettingsDialog` into headless `ModelProcessorFactory`/`ColorProcessorFactory` (MODELS layer, no QWidget dep); `displayProperties.C:451/487` + `modelController`/`coloringController` repointed onto the factories (grep-proven no legacy reach-throughs); CONFIG-01 compiled-default invariant preserved; render UAT confirmed Model + Coloring representations render correctly. _(scene.C's MaterialSettings/LightSettings/Stage + the remaining displayProperties consumers moved to VIEW-CLEAN-03 / Phase 999.58.)_
239
-
-[]**VIEW-CLEAN-03** (Phase 999.58 · 2nd prerequisite for 999.53): `scene.C` no longer constructs `MaterialSettings`/`LightSettings`/`StageSettings` (lines 141/142/161) — their Preferences-stack + `applyPreferences` + **stereo render-path** (scene.C:2664-3165) responsibilities relocated into Inspector Stage/Light/Material coverage; the Material/Light/Stage Inspector sections drive lights/materials/stereo end-to-end (GUI-verified); tri-OS green
239
+
-[x]**VIEW-CLEAN-03**_(✓ UAT PASS 2026-05-22 — materials/lights/stage render via the Inspector; scene.C dialog-free; stereo defers cleanly; tri-OS CI confirming)_ (Phase 999.58 · 2nd prerequisite for 999.53): `scene.C` no longer constructs `MaterialSettings`/`LightSettings`/`StageSettings` (lines 141/142/161) — their Preferences-stack + `applyPreferences` + **stereo render-path** (scene.C:2664-3165) responsibilities relocated into Inspector Stage/Light/Material coverage; the Material/Light/Stage Inspector sections drive lights/materials/stereo end-to-end (GUI-verified); tri-OS green
240
240
-[ ]**VIEW-CLEAN-01** (Phase 999.53 · v1.7.x-08, depends on VIEW-CLEAN-02 + VIEW-CLEAN-03): the 9 superseded legacy VIEW dialog files (commit `7f56f80d89` breadcrumb) + `displayProperties.{C,h,ui,.sip}` + `lightSettings.sip` + the `Tools › Legacy Settings` submenu / `LegacySettingsHelper` deleted; `grep -r` for all 9 names in `source/`+`include/` returns 0; tri-OS CI green
241
241
-[x]**VIEW-UX-01** (Phase 999.54 · v1.7.x-31 · GH #501): BALLView emits a `Log`/status-bar warning at startup when zero renderer plugins are discovered
242
242
-[~]**BUILD-ACCEL-08** (Phase 999.55 · v1.7.x-09 PCH half): **ATTEMPTED + REVERTED.** Extending PCH to the test build via `REUSE_FROM BALL`/`VIEW` forces test TUs to inherit the SHARED library's compile-definitions (`NDEBUG` etc.), which flipped `Debug_test`'s debug-macro behavior under GCC → Linux runtime failure (CI run 26233705613; macOS never caught it — AppleClang has PCH guarded off). Reverted in `test/CMakeLists.txt`. The **library** PCH (BUILD-ACCEL-01 / 999.16: Windows −35.6% cold, Linux −15%) already delivers the build-time win; test-suite PCH is dropped as not worth the cross-platform fragility. No further action.
Copy file name to clipboardExpand all lines: .planning/ROADMAP.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -30,7 +30,7 @@ This roadmap mirrors the human-authored `/Users/kohlbach/Claude/BALL/ROADMAP-1.6
30
30
-[x]**Phase 999.55: Build acceleration — PCH across BALL + VIEW (v1.7.x)** - Investigated extending PCH to the test build; the library PCH (the real win) already shipped in 999.16. Test-suite `REUSE_FROM` PCH was tried and **reverted** (it injects the library's `NDEBUG` into tests, broke `Debug_test` on GCC). Net outcome: doc reconciliation + dropped the fragile test-PCH. (closed 2026-05-21)
31
31
-[ ]**Phase 999.56: Refresh the PDF tutorial for the modernized stack (#560) (v1.7.x)** - Update tutorial content/screenshots/URLs/build flow to v1.7.x.
32
32
- [x] **Phase 999.57: Complete Inspector controller cut-over — unwire displayProperties.C from the rendering pipeline (v1.7.x) — PREREQUISITE FOR 999.53** - Relocate `createModelProcessor`/`createColorProcessor` (the rendering-path factories at displayProperties.C:451/487) out of the legacy Model/Coloring settings dialogs into the Inspector/Controller layer; and the displayProperties references in mainControl/mainframe. Highest-risk (touches the threaded renderer) — incremental + verifiable per CLAUDE.md. **Planner scope-corrected:** scene.C's MaterialSettings/LightSettings/StageSettings are NOT dead (load-bearing for the Preferences stack + the entire stereo render path) — split out as 999.58. 3 plans created; unblocks deleting the Model/Coloring/displayProperties triples. **Code+build+audit COMPLETE 2026-05-21** (all 3 plans landed; render path grep-proven detached; BALLView.app links clean BALL_UI_V2=ON) — **but Plan 03's BLOCKING running-BALLView render UAT is PENDING**, so VIEW-CLEAN-02 stays PARTIAL and the phase is not yet closed. (completed 2026-05-22)
33
-
-[]**Phase 999.58: scene.C settings-dialog cut-over — Material/Light/Stage incl. the stereo render path (v1.7.x) — 2nd PREREQUISITE FOR 999.53** - Relocate scene.C's `MaterialSettings`/`LightSettings`/`StageSettings` (lines 141/142/161; load-bearing across ~15 sites incl. the Preferences stack, applyPreferences, and the full stereo rendering path scene.C:2664-3165) into Inspector Stage/Light/Material coverage. Independent high-risk threaded-renderer migration, comparable in size to 999.57; own GUI UAT (lights/materials/stereo must still render). Needed before 999.53 deletes those 3 dialog triples.
33
+
-[x]**Phase 999.58: scene.C settings-dialog cut-over — Material/Light/Stage incl. the stereo render path (v1.7.x) — 2nd PREREQUISITE FOR 999.53** - Relocate scene.C's `MaterialSettings`/`LightSettings`/`StageSettings` (lines 141/142/161; load-bearing across ~15 sites incl. the Preferences stack, applyPreferences, and the full stereo rendering path scene.C:2664-3165) into Inspector Stage/Light/Material coverage. Independent high-risk threaded-renderer migration, comparable in size to 999.57; own GUI UAT (lights/materials/stereo must still render). Needed before 999.53 deletes those 3 dialog triples. (completed 2026-05-22)
34
34
35
35
<!-- v1.7.4 milestone — Inspector depth + the contract (ingested from design handover 2026-05-22; renumbered +1 from handover 999.58-999.63 to clear the 999.58 collision) -->
36
36
-[ ]**Phase 999.59: Controller cut-over · command-shaped `apply()` (v1.7.4 · Wave A · GATING)** - Land the command-shaped `Controller::apply()` contract (validate → guard → mutate → notify → invalidate → record reversible payload) on all 8 mutating Controllers + `ApplyGuard`/`ApplyPayload` base types; narrow `Stage`/`Representation` setters to Controller-`friend` scope. Maps to v1.7.x-24. *Depends on 999.57.* See [Phase 999.59 detail](#phase-99959-controller-cut-over--command-shaped-apply-v174--wave-a--gating).
@@ -2545,7 +2545,7 @@ Plans:
2545
2545
**Requirements:** `VIEW-CLEAN-03`.
2546
2546
**Risk:** HIGHEST — independent threaded-renderer migration comparable in size to 999.57, touching the stereo path. Incremental + verifiable against a running GUI (lights/materials/stereo render end-to-end); own GUI UAT.
2547
2547
**Depends on:** 999.57 (builds on the detached render path). **Blocks:** 999.53.
2548
-
**Plans:** 3 plans (sequential; render-touching, each with a blocking GUI human-verify).
2548
+
**Plans:** 3/3 plans complete
2549
2549
Plans:
2550
2550
- [~] 999.58-01-PLAN.md — Material + Light config relocation onto the Inspector MaterialController/LightController; route applyPreferences material+light + the light-refresh sites off the dialogs (wave 1). **Code+build COMPLETE 2026-05-22** (MaterialController owns the full default-material field set incl. the 3 colors + `applyDefaultMaterial()`; LightController owns the full per-light list + `syncFromStage()`; scene.C `applyPreferences` + all 5 light-refresh sites routed through the controllers; no live MaterialSettings/LightSettings reach-throughs remain on Scene's render path; BALLView.app links clean BALL_UI_V2=ON). **BLOCKING running-BALLView render UAT PENDING** (lights + materials must still visibly drive the scene) — VIEW-CLEAN-03 stays incomplete (phase-spanning).
2551
2551
- [~] 999.58-02-PLAN.md — Full non-stereo Stage render config relocation onto StageController (vertex buffers, downsampling, projection, FPS, preview, offscreen, renderer switch, etc.); route applyPreferences stage branch + getGLSettings off stage_settings_ (wave 2). **Code+build COMPLETE 2026-05-22** (StageController grew the full non-stereo render-config field set — projection / show-lights / animation-smoothness / offscreen+factor / capping / FPS / preview / vertex-buffers incl. rep-delete side effect / smooth-lines / downsampling / renderer-switch / mouse+wheel-sensitivity — applied through the same Scene/Stage/Camera/GLRenderer/ClippingPlane backend behind the re-entrancy shield + a new MainControl::isBusy() defer-guard; scene.C `applyPreferences` routed through a transient StageController; non-load-bearing `getGLSettings()` init readback removed; swap-side-by-side left to StereoController; BALLView.app links clean BALL_UI_V2=ON). **BLOCKING running-BALLView render UAT PENDING** (stage controls must still visibly drive the scene; no regression to background/fog/eye/focal) — VIEW-CLEAN-03 stays incomplete (phase-spanning).
0 commit comments