Docs: reflect Phase D5 landing; close out Phase D
Archive D5 (mode switch) to COMPLETED.md and remove the completed Phase D section from PLAN.md; add mode_switch to CLAUDE.md architecture + targets.
This commit is contained in:
@@ -22,7 +22,7 @@ Vendors two submodules (see `.gitmodules`):
|
|||||||
cmake --build build
|
cmake --build build
|
||||||
ctest --test-dir build
|
ctest --test-dir build
|
||||||
|
|
||||||
Six targets:
|
Seven targets:
|
||||||
|
|
||||||
| Target | Kind | Purpose |
|
| Target | Kind | Purpose |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
@@ -31,6 +31,7 @@ Six targets:
|
|||||||
| `capture_paths_tests` | executable | Pure unit tests for `capture_paths` — no REAPER, no DAW. |
|
| `capture_paths_tests` | executable | Pure unit tests for `capture_paths` — no REAPER, no DAW. |
|
||||||
| `view_mode_model_tests` | executable | Pure unit tests for `view_mode_model` — no REAPER, no DAW. |
|
| `view_mode_model_tests` | executable | Pure unit tests for `view_mode_model` — no REAPER, no DAW. |
|
||||||
| `view_tree_tests` | executable | Pure unit tests for `view_tree` — no REAPER, no DAW. |
|
| `view_tree_tests` | executable | Pure unit tests for `view_tree` — no REAPER, no DAW. |
|
||||||
|
| `mode_switch_tests` | executable | Pure unit tests for `mode_switch` — no REAPER, no DAW. |
|
||||||
| `reaper_reasampler` | loadable module | The actual extension binary (`.dll` / `.dylib` / `.so`). |
|
| `reaper_reasampler` | loadable module | The actual extension binary (`.dll` / `.dylib` / `.so`). |
|
||||||
|
|
||||||
### macOS / Linux: SWELL dialog resources
|
### macOS / Linux: SWELL dialog resources
|
||||||
@@ -52,6 +53,7 @@ There is no hot-reload. Copy the built binary into REAPER's `UserPlugins/` folde
|
|||||||
- `peaks` — waveform min/max bin computation from raw PCM. Fed a known signal, asserts envelope. Does not depend on REAPER's peak API.
|
- `peaks` — waveform min/max bin computation from raw PCM. Fed a known signal, asserts envelope. Does not depend on REAPER's peak API.
|
||||||
- `view_mode_model` — Design View mode system: mode registry, GUID-keyed membership, folder-tree-aware visibility derivation, snapshot-based park/restore planner, JSON round-trip. Mirror of `bank_model` for the Design View phase.
|
- `view_mode_model` — Design View mode system: mode registry, GUID-keyed membership, folder-tree-aware visibility derivation, snapshot-based park/restore planner, JSON round-trip. Mirror of `bank_model` for the Design View phase.
|
||||||
- `view_tree` — pure `I_FOLDERDEPTH`→FolderTree helper for the Design View shell; no REAPER types at the boundary.
|
- `view_tree` — pure `I_FOLDERDEPTH`→FolderTree helper for the Design View shell; no REAPER types at the boundary.
|
||||||
|
- `mode_switch` — REAPER-free segment layout + hit-test math for the bank_panel's Design View mode switch; divides a header rectangle into N equal segments and hit-tests a point to a segment. Mirror of `bank_grid`.
|
||||||
|
|
||||||
**REAPER-facing shells:**
|
**REAPER-facing shells:**
|
||||||
- `capture` — `ICaptureBackend` interface; `OfflineRenderBackend` (deterministic default) and `RealtimeRecordBackend`. Input: `CaptureRequest`. Output: finished file + populated `Sample` handed to `bank_model`.
|
- `capture` — `ICaptureBackend` interface; `OfflineRenderBackend` (deterministic default) and `RealtimeRecordBackend`. Input: `CaptureRequest`. Output: finished file + populated `Sample` handed to `bank_model`.
|
||||||
|
|||||||
@@ -239,6 +239,28 @@ toggle + mode-jumps MIDI-bindable; tag/untag acts on the current track selection
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## D5 — in-window toggle affordance (UI)
|
||||||
|
**Goal:** The segmented mode switch in the ReaSampler / bank_panel window header.
|
||||||
|
CONTEXT.md §Design View (UI). **Verify (in DAW):** Segmented control shows current
|
||||||
|
mode (lit segment), one click flips modes via the D4 toggle action, per-mode
|
||||||
|
membership count visible, offlined-FX caveat surfaced as a tooltip.
|
||||||
|
|
||||||
|
- [x] Segmented mode switch `[ Arrange | Design ]` in the window header; active lit.
|
||||||
|
- [x] Wire the switch to the toggle/activate actions from D4.
|
||||||
|
- [x] Per-mode membership count display.
|
||||||
|
- [x] Offlined-FX re-init caveat as a tooltip on the switch.
|
||||||
|
|
||||||
|
**Notes/decisions:**
|
||||||
|
- New PURE module `src/mode_switch.{h,cpp}` — REAPER-free layout math for the
|
||||||
|
Design View mode switch: divides a header rectangle into N equal segments (one per
|
||||||
|
registered mode) and hit-tests a point to a segment. Unit-tested via a new
|
||||||
|
`mode_switch_tests` CTest target. Mirror of `bank_grid`.
|
||||||
|
- `src/bank_panel.cpp` — segmented `[ Arrange | Design ]` control drawn in the panel
|
||||||
|
header (one lit segment per registered mode, click activates that mode via
|
||||||
|
`view::applyMode`), with the grid offset below the header.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Milestone 7 — capture action family
|
## Milestone 7 — capture action family
|
||||||
**Goal:** Bindable capture actions for master / selected tracks / selected items /
|
**Goal:** Bindable capture actions for master / selected tracks / selected items /
|
||||||
razor area, each with wet-dry + tail options. CONTEXT.md §actions, Build order 7.
|
razor area, each with wet-dry + tail options. CONTEXT.md §actions, Build order 7.
|
||||||
|
|||||||
@@ -79,35 +79,3 @@ landed milestone.
|
|||||||
in int64 but exceed `INT_MAX` are implementation-defined. Hardening candidate
|
in int64 but exceed `INT_MAX` are implementation-defined. Hardening candidate
|
||||||
— add bounds check before the cast when integer-field validation is in scope.
|
— add bounds check before the cast when integer-field validation is in scope.
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
# Phase D — Design View (parallel to the M0–M11 capture roadmap)
|
|
||||||
|
|
||||||
> **Separate phase namespace.** The M-numbers belong to the capture pillar
|
|
||||||
> (M0–M11, M4 in flight). Design View is an orthogonal feature on its own track,
|
|
||||||
> so it uses a **lettered** namespace (D1, D2, …) rather than extending the M-line.
|
|
||||||
> This keeps the two roadmaps from colliding on numbering and reads correctly:
|
|
||||||
> Phase D is not "the twelfth capture step," it's a different pillar. Authoritative
|
|
||||||
> spec: **CONTEXT.md §Design View**. Product framing: `docs/product/design-view.md`.
|
|
||||||
> When a point lands, doc-keeper moves it to `COMPLETED.md`.
|
|
||||||
|
|
||||||
## D5 — in-window toggle affordance (UI)
|
|
||||||
**Goal:** The segmented mode switch in the ReaSampler / bank_panel window header.
|
|
||||||
CONTEXT.md §Design View (UI). **Verify (in DAW):** Segmented control shows current
|
|
||||||
mode (lit segment), one click flips modes via the D4 toggle action, per-mode
|
|
||||||
membership count visible, offlined-FX caveat surfaced as a tooltip.
|
|
||||||
|
|
||||||
- [ ] Segmented mode switch `[ Arrange | Design ]` in the window header; active lit.
|
|
||||||
- [ ] Wire the switch to the toggle/activate actions from D4.
|
|
||||||
- [ ] Per-mode membership count display.
|
|
||||||
- [ ] Offlined-FX re-init caveat as a tooltip on the switch.
|
|
||||||
|
|
||||||
## Phase D open questions
|
|
||||||
- **Snapshot durability across save-while-parked** — persisted here by decision;
|
|
||||||
lean alternative is force-restore-to-Arrange on save (product notes item 4).
|
|
||||||
(touches D3)
|
|
||||||
- **Reconcile on delete/restructure** — tagged leaf deleted or folder restructured
|
|
||||||
while parked leaves a stale GUID; ignore-and-prune on next toggle/open.
|
|
||||||
(touches D1/D2)
|
|
||||||
- **Screenset coexistence** — Design View drives the same flags a screenset recall
|
|
||||||
would; confirm last-writer-wins is not surprising. (touches D2)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user