daniel
580a41b5ba
Merge the undo-span work: one Ctrl-Z per Design View mode switch, and a single undo-block opener for the tree
2026-08-09 14:08:22 -04:00
daniel
258b1b6b85
Remove the temporary undo-span tracing now that the mid-drain Ctrl-Z fix has landed
...
Deletes the ring-buffer tracer and its diagnostic action; reverts the span
entry points to their pre-tracing no-parameter signatures.
2026-08-09 13:53:56 -04:00
daniel
f6f09d983c
Close the FX reclaim span when REAPER's own Undo/Redo is dispatched, so the switch's point mints first
...
Both command hooks intercept Edit: Undo (40029) and Edit: Redo (40030) and consume
nothing. Undo routes that never dispatch an action remain uncovered.
2026-08-09 13:40:28 -04:00
daniel
e423bf6502
Buffer undo trace to a ring, add dump action, stop per-tick loadSaveProj spam
...
Trace lines fill a 4096-line ring instead of hitting the console per line;
DUMP_UNDO_TRACE drains it in one ShowConsoleMsg call. Overflow is marked, not silent.
2026-08-09 13:16:05 -04:00
daniel
b782fb2731
Add temporary undo-span tracing for the mid-drain Ctrl-Z bug
...
One switch (REASAMPLER_UNDO_TRACE) gates every line. Traces span open/close
reasons, FX writes, UndoBlock depth, timer standoffs, and load-state hooks.
2026-08-09 12:28:50 -04:00
daniel
d5ff476a19
Make Design View membership edits undoable: the view_state write moves inside the block
...
All four actions share one body; the point turns on a model diff, so a no-op
leaves history and the Undo button alone. The Save-As prompt stays outside.
2026-08-07 19:51:37 -04:00
daniel
20fef2a3bf
Keep the extension's tick out of REAPER's own project load, and re-earn the park holds across one load
2026-08-07 18:03:58 -04:00
daniel
3d95eb715c
Undo-block review fixes: exception-safe depth, corrected docs, real test teeth
...
Fixes ctor exception safety, a ValidatePtr2 guard, false SDK-citation and
enforcement claims, the span-depth invariant, and vacuous fx_reclaim tests.
2026-08-07 17:07:56 -04:00
daniel
b7b93a7ac3
One undo-block opener for the whole tree: fourteen sites route through it, and the reclaim span can no longer swallow a user's act
...
The drain refuses a tick inside a foreign block; applyMode wakes the reclaimer
before it opens the span.
2026-08-07 16:38:11 -04:00
daniel
b2f6b3f1d0
Design View: no undo block may open over the reclaim span, and a reapply closes none
...
Every opener ends the span first, so a tag fired mid-drain no longer hijacks the
switch's point. One stated criterion governs both lane sites; no-op actions discard.
2026-08-07 15:13:52 -04:00
daniel
39529a5ac4
Design View: drop the undo blocks around writes that mint nothing; the membership actions own theirs
...
Flag writes are silent from a timer, so a block around a reapply or the reconcile
repair could only manufacture a point. The real switch's span is unchanged.
2026-08-07 14:41:17 -04:00
daniel
67d9ec3da9
Put the FX reclaimer to sleep on a project-state load instead of waking it
...
abandon() clears the wakeup where invalidate() raises it, so File > Revert
cannot converge FX or spend park records against a model nothing re-read.
2026-08-07 14:23:56 -04:00
daniel
39b995e824
Terminate the FX reclaimer's undo span on EVERY project-state load, not just undo
...
BeginLoadProjectState now routes unbranched through fxReclaimAbandonForStateLoad;
only the session's deferred reload stays undo-only.
2026-08-07 13:57:06 -04:00
daniel
9b6f725747
Close the FX reclaimer's undo span at the state-load hook, and expose the drain's direction
...
A Ctrl-Z mid-span used to close the pre-undo block over post-undo state; it now
terminates at BeginLoadProjectState and stops the drain where it stands.
fxReclaimActivity reports Online/Offline/Idle; fxReclaimPending is unchanged.
2026-08-07 13:45:58 -04:00
daniel
86aa8dabba
Collapse a Design View mode switch and its background FX parking to ONE undo point
...
applyMode now returns with its undo block open; the reclaimer closes it when the drain
settles. A transport deferral or a tab switch ends it early -- two points, never a leak.
2026-08-07 12:53:42 -04:00
daniel
2173263bb9
Docs: reflect the Design View redesign — EXPOSE replaces the park refusal, FX offlining moved to the reclaimer, undo repair is ours
2026-08-06 23:56:50 -04:00
daniel
c9c957a3da
Merge Wave 3: the FX reclaimer (per-track atomic drain, generation-owned queue, transport-gated offline, save-time release flush)
2026-08-06 23:35:27 -04:00
daniel
4f6cf60740
Narrow the FX reclaimer's transport gate to defer offline work only; let online drain through, and always run the park clock's observe
2026-08-06 23:04:02 -04:00
daniel
c95203718a
fx_reclaim: use GetCurrentProjectInLoadSave for the save hook, stop disarming ReleaseFlush on one write, validate project before cached-track lookup
2026-08-06 22:52:57 -04:00
daniel
02790f1270
Gate the FX reclaimer on the transport, both directions; move the release's persist off the drain and onto the project save
...
The drain no longer dirties a project on its own initiative — a spent park record rides the user's next save via OnSaveExtensionConfig.
2026-08-06 22:31:47 -04:00
daniel
224dcf84df
Fix the reclaimer stranding a tab-switched-into project: lift the pin and wakeup into FxReclaimQueue, retarget instead of going idle
...
Also validate the cached track in its project, and stop a drop-free tick resetting the report memo.
2026-08-06 22:16:41 -04:00
daniel
35fdfca805
Harden fx_reclaim against project closure mid-drain; cache resolved track per item; correct two stale budget comments
2026-08-06 21:36:08 -04:00
daniel
7687ea76fc
Persist the reclaimer's FX release so a reload cannot re-drive a spent record, and report the FX-restore drops it was swallowing
2026-08-06 21:26:55 -04:00
daniel
5dcfd3a53f
Reclaim drain owns its work: invalidation only bumps a generation, and a generation that moved aborts the tick's commit and its release.
2026-08-06 21:08:34 -04:00
daniel
f04c704353
Make an FX reclaim step one whole track's chain: drop the resume cursor, yield only between tracks
2026-08-06 20:48:17 -04:00
daniel
5a35b71dc0
Add the FX reclaimer: a debounced, time-boxed convergence loop that offlines parked chains and restores returning ones off the switch path
2026-08-06 19:07:17 -04:00
daniel
a9d2397586
Merge Wave 2: Design View shell restructure (FX off the switch, park/lanes/reconcile/tracks split, record-scoped repair, expose-on-lost-record)
2026-08-06 18:38:40 -04:00
daniel
0f6df5fd6d
Design View: expose a park-shaped no-record track visible instead of adopting or refusing it
...
Adopting silently wipes hand repairs or hides untouched tracks forever; refusing was rejected too. EXPOSE hands the track back and self-heals on the next apply.
2026-08-06 18:35:24 -04:00
daniel
024c619884
Fix Wave-2 review findings: FX union on re-park, per-project reconcile memo, shared undo mask, decayed test oracle
2026-08-06 17:50:49 -04:00
daniel
c4038a9e9c
Strip FX writes from the Design View mode switch; split view.cpp into park/lanes/reconcile/tracks and add the record-scoped undo repair pass
2026-08-06 17:19:43 -04:00
daniel
d455b9a2fa
Merge Wave 1: Design View pure-layer split (flag-only park plans, derived FX work list, two-half record, applied-state fingerprint)
2026-08-06 16:54:43 -04:00
daniel
b064081a3c
Fix five Wave-1 pure-layer FX/park review findings: resume-point stall, stale doc comments, implicit mode read, keying reset
2026-08-06 16:50:43 -04:00
daniel
2423225f0c
Split FX out of the park plan: flag-only plans, derived online-first FX work list, two-half record release, applied-state fingerprint
2026-08-06 16:31:59 -04:00
daniel
3eae942625
1.7.5
2026-08-06 09:50:21 -04:00
daniel
03f7fb5081
Merge branch 'omega-w3-t3-undo-collapse' into dev
2026-08-06 09:49:22 -04:00
daniel
ab14ae769f
Guard poll() against a mode-apply mid-flight; two doc corrections
...
Extends the OnTimer guard to skip session.poll() itself while modeApplyInProgress(), preventing an undo/redo or project-switch reload from replacing the view model under an in-flight applyMode.
2026-08-06 05:23:58 -04:00
daniel
2269fd80b6
Close the collapse's two dropped guarantees: latch applyMode against re-entrancy, pin its project once; correct three overclaiming doc lines
2026-08-06 05:07:31 -04:00
daniel
8c06383fe7
Collapse a Design View mode switch to ONE undo point: FX writes run inline in applyMode's block, deferred park queue deleted
2026-08-06 04:32:26 -04:00
daniel
8a7056d19d
Fix undo-label misnomer, tighten drain-nesting/abort-path docs, mark inferred undo behavior as unverified
...
Renamed the drain's undo point to "Design View FX state" (it restores as often as it parks). Extended the nesting audit to cover a block opening inside the drain's own block. Marked post-fix undo behavior as inference pending DAW checks.
2026-08-05 20:54:31 -04:00
daniel
13c824c63d
Collapse the FX-park drain's writes into one undo point instead of one per TrackFX_SetOffline
2026-08-05 20:40:45 -04:00
daniel
bd86ede5b3
Merge FX-park snapshot guard: refuse to park when the pre-park truth is gone
...
A snapshot is never taken from a chain a park has touched, on either
half -- flags or per-FX offline. Stranded tracks are refused, named
once in the console, and left recoverable by hand.
2026-08-05 20:17:00 -04:00
daniel
4b306dd436
Name refused tracks before Undo_EndBlock2, not after; tighten the route-list doc; pin the refusal memo's gate
...
Fixes D (handle lifetime), C (ASCII dashes), G (comment compression), I (shouldReport extracted + tested); CLAUDE.md route list corrected per A/B/H. E pushed back -- cross-module GUID plumbing is architectural, not a targeted fix.
2026-08-05 17:34:49 -04:00
daniel
5376ab085c
Extend the park trust test to the FX chain, name the refused tracks, and stop reprinting an unchanged refusal
2026-08-05 17:10:19 -04:00
daniel
67524206fb
2nd Pass Render
2026-08-05 16:21:17 -04:00
daniel
203961f41c
Refuse to park a track whose pre-park snapshot is gone, rather than re-snapshotting the already-parked chain as the user's state
2026-08-03 18:30:40 -04:00
daniel
2f96dd3da5
Revert Ω-W2-T4: FX-park state stranded across save/reopen
...
Backs out the deferred park drain split. Forced synchronous FX-park
drains return, and with them the mode-switch hitch, until the
re-snapshot-after-discard fix lands.
2026-08-03 18:05:04 -04:00
daniel
098727e464
Merge panel polish: crosshair arrange-drop cue, Re-capture and Insert Conform to the overflow menu
2026-08-03 17:50:09 -04:00
daniel
0e6a0d3618
fix: use crosshair cursor for arrange-drop cue instead of I-beam
...
The I-beam read as a text-editing cursor rather than a timeline placement point.
2026-08-03 17:49:18 -04:00
daniel
8487833342
Revert "Merge Ω-W2-T4: split the deferred FX-park drain by kind"
...
This reverts commit 70bd29dc89 , reversing
changes made to 84afd1b545 .
2026-08-03 17:46:17 -04:00
daniel
d22446ef7d
Move Re-Capture and Insert Conform from the panel top bar to the overflow menu; re-pin action_bar width test to the new 4-button top bar.
2026-08-03 17:44:00 -04:00