Docs: reflect Phase D2/D3 landing

Archive D2 (view shell) and D3 (persist slice) to COMPLETED.md;
add view/view_tree to CLAUDE.md architecture + view_tree_tests target.
This commit is contained in:
2026-07-22 21:36:11 -04:00
parent 5ff029ba1d
commit 322581227c
3 changed files with 39 additions and 32 deletions
+5 -2
View File
@@ -22,7 +22,7 @@ Vendors two submodules (see `.gitmodules`):
cmake --build build
ctest --test-dir build
Five targets:
Six targets:
| Target | Kind | Purpose |
|---|---|---|
@@ -30,6 +30,7 @@ Five targets:
| `peaks_tests` | executable | Pure unit tests for `peaks` — 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_tree_tests` | executable | Pure unit tests for `view_tree` — no REAPER, no DAW. |
| `reaper_reasampler` | loadable module | The actual extension binary (`.dll` / `.dylib` / `.so`). |
### macOS / Linux: SWELL dialog resources
@@ -50,12 +51,14 @@ There is no hot-reload. Copy the built binary into REAPER's `UserPlugins/` folde
- `bank_model``Sample` metadata struct + `BankIndex` (add/remove/query/tier/dedup-by-hash + JSON round-trip). Test it hard — it is the heart.
- `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_tree` — pure `I_FOLDERDEPTH`→FolderTree helper for the Design View shell; no REAPER types at the boundary.
**REAPER-facing shells:**
- `capture``ICaptureBackend` interface; `OfflineRenderBackend` (deterministic default) and `RealtimeRecordBackend`. Input: `CaptureRequest`. Output: finished file + populated `Sample` handed to `bank_model`.
- `insert` — placement via `InsertMedia`; conform-to-project-tempo is an explicit opt-in flag, never silent stretching.
- `bank_panel` — docked LICE-drawn grid: thumbnails, audition, multi-select, keyboard navigation.
- `persist` — project ext state (`SetProjExtState` / `GetProjExtState`, namespace `"reasampler"`) ↔ `bank_model` JSON; project-relative path resolution.
- `persist` — project ext state (`SetProjExtState` / `GetProjExtState`, namespace `"reasampler"`) ↔ `bank_model` JSON + `ViewModeModel` JSON (`"view_state"` key); project-relative path resolution.
- `view` — Design View shell: reads the folder tree via `view_tree`, snapshots flag values before parking, drives hide + CPU-park on inactive-mode leaves (`B_SHOWINTCP`/`B_SHOWINMIXER`/`B_MAINSEND`/`I_FXEN` + per-FX offline) and derived visibility on parents; restores from snapshot. Never touches master or `B_MUTE`/`I_SOLO`.
- `actions` — registers the capture/placement/slot action family and routes each to the modules above.
## REAPER extension contract (src/main.cpp)