feat: reverse selected sample frames with immutable snapshots and local undo

This commit is contained in:
Johannes Findeisen 2026-11-06 01:04:06 +01:00
commit 9ae2e2a11c
8 changed files with 49 additions and 5 deletions

View file

@ -21,3 +21,7 @@ Trim clip to selection applies source-frame endpoints within the current audible
## Phase 71
Export selected frames writes a new mono float32 WAV of the half-open selection at native rate. Save full copy and relink writes the complete source and relinks only the selected clip after successful preparation. The original source is never overwritten. Full-copy adoption requires matching source frame count/rate. Project undo restores the reference but retains the new file, which may be referenced by redo/history or other projects. Failed adoption removes its owned new file. Export/copy runs synchronously outside audio callbacks.
## Phase 72
Reverse selection changes only the chosen source frames in a new local snapshot. Undo / redo toggles the most recent processing step; selection and view are unchanged. Processing does not affect playback until Save full copy and relink. Close discards unsaved local processing. Sources are bounded to 16 MiB of float samples; preparing a new edit can temporarily retain three snapshots (48 MiB), then two (32 MiB).

View file

@ -1732,12 +1732,12 @@ Implemented: no-clobber mono float32 selection export and full-source copy adopt
Reverse a selected source frame range in an independent sample snapshot, with bounded local undo/redo and save-copy adoption.
### Tasks and acceptance criteria
- [ ] Implement bounded C99 analysis/processing and accessible FLTK controls.
- [ ] Preserve source files, atomic error handling, history and callback safety.
- [ ] Pass meaningful core and GUI checks; document exact behavior and limits.
- [x] Implement bounded C99 analysis/processing and accessible FLTK controls.
- [x] Preserve source files, atomic error handling, history and callback safety.
- [x] Pass meaningful core and GUI checks; document exact behavior and limits.
### Implementation status
Planned.
Implemented: immutable whole-source snapshots reverse only selected frames; the editor provides one-level local undo/redo and save-copy adoption. Exact partial-range and double-reversal tests, unmodified surrounding samples and GUI processing/undo pass.
---