Docs: reflect Phase D4 landing

Archive D4 (actions + integration) to COMPLETED.md; add track_guid and
Design View action family to CLAUDE.md architecture.
This commit is contained in:
2026-07-22 22:08:38 -04:00
parent e03728bdf7
commit 39baf28c93
3 changed files with 27 additions and 12 deletions
+25
View File
@@ -175,3 +175,28 @@ guessed "on").
- [x] Reapply active mode on project open (rebuild tree, run the planner).
- [x] Confirm survival across Save / Save As; snapshot durability across
save-while-parked.
---
## D4 — actions
**Goal:** Bindable action set for the mode workflow. CONTEXT.md §Design View
(actions). **Verify (in DAW):** Each action registered (bindable in Actions list);
toggle + mode-jumps MIDI-bindable; tag/untag acts on the current track selection.
- [x] Toggle active mode (cycle; extensible to cycle-all for >2 modes).
- [x] Activate mode: Arrange / Activate mode: Design (direct jumps).
- [x] Tag selected tracks → Design / → Arrange; Untag selected (= → Arrange).
- [x] Show-both for selected tracks (toggle).
- [x] Register each (`command_id`/`gaccel`/`hookcommand`); toggle + jumps MIDI-bindable.
**Notes/decisions:**
- New `src/actions.{h,cpp}` — the Design View action family registered via the
`command_id`/`gaccel`/`hookcommand` contract in `main.cpp`; MIDI-bindable.
- New `src/track_guid.{h,cpp}` — shared `MediaTrack*` → canonical GUID-string
formatter; used by both the view shell and the actions layer (single source of
truth for membership keys).
- Wiring: actions drive the D2 view shell and D3-persisted model; saved active mode
is reapplied on project load via a load-signal seam in `persist` (`loadFromProject`
raises it; `main.cpp`'s timer drains it) — `persist` stays model-only.
- A pure `nextModeId` free function added to `view_mode_model` (the N-mode cycle
decision behind "toggle"), unit-tested in the existing `view_mode_model_tests`.