Commit Graph

729 Commits

Author SHA1 Message Date
daniel eb5195edd4 Merge phase-v-versioning: Phase V versioning + beta-in-isolation channel 2026-07-26 16:46:06 -04:00
daniel b950926969 chore: ignore /build-beta/ directory 2026-07-26 16:43:23 -04:00
daniel 5c0e3a8ccf feat(version): V4 beta-in-isolation channel via -DREASAMPLER_CHANNEL
Compile-time channel flag forks a fully isolated reaper_reasampler_beta
(namespace, command-id prefix, action names, dock ident, -beta render) from
one auditable app_version definition. Stable identity byte-unchanged.
2026-07-26 16:43:23 -04:00
daniel 5fabade90c fix(capture): populate contentHash on captured samples to fix always-prompting remove
contentHash was left empty on every capture; hashReferencedElsewhere returns
false for empty hashes, so every remove looked like a last reference. Add
FNV-1a hashBytes to capture_paths, wire into both commit paths. NOTE: this
activates index dedup-by-hash in production — a bit-identical re-capture now
collapses onto the existing entry instead of adding a duplicate (spec-intended).
2026-07-26 16:37:46 -04:00
daniel 0a9d8200c7 fix(cmake): remove duplicate app_version.cpp from module sources
src/app_version.cpp was listed in the reaper_reasampler target_sources
block and also compiled into the app_version static lib that the module
links. One compile via the lib is correct; the duplicate TU in the module
was an ODR/duplicate-symbol hazard on ld.
2026-07-26 16:37:27 -04:00
daniel f6dddbf5a3 feat(version): single-source semver, ext-state stamp, show-version action
Version "0.9.01" sourced once from CMake via configure_file'd header; pure
app_version module (parse/compare/classify) with CTest. Stamp rides the persist
save seam under "reasampler"/"version"; absent stamp reads as pre-versioning.
On-demand "show version" action, no startup print.
2026-07-26 16:35:10 -04:00
daniel 791a9c60eb Merge fixes: UI mojibake (ASCII strings) + whole banks-grid drop zone 2026-07-26 16:15:53 -04:00
daniel 5d1f0336a9 fix(bank_panel): make entire named-banks grid a valid drop target 2026-07-26 16:14:34 -04:00
daniel 7cd1a2588e fix: replace multi-byte UTF-8 in runtime UI strings with ASCII to fix Windows-1252 mojibake 2026-07-26 16:09:13 -04:00
daniel c66f44ba1f docs: archive Phase B (B1-B5, B-cap, R-B) to COMPLETED; reconcile CLAUDE.md 2026-07-26 15:51:13 -04:00
daniel 5a3e6df4c3 Merge Phase B completion: B5 sample-remove, B-cap owned-file manifest, R-B batched undo + reload hook 2026-07-26 15:41:52 -04:00
daniel 8c0ce427e8 Merge dev into phase-b-multibank (m11 console cleanup + Phase S/V docs) before dev promotion
# Conflicts:
#	src/actions.cpp
#	src/main.cpp
2026-07-26 15:41:25 -04:00
daniel 79ed66c4d8 Merge panel-undo pass: panel gestures get R-B undo points 2026-07-26 15:33:34 -04:00
daniel 704a7b5ffc chore(bank_panel): clean up persistBook dead code and stale comment; align transfer switch to explicit enum cases 2026-07-26 15:32:22 -04:00
daniel 3514bb0b6d route bank_panel bank-op persists through persistBankOp so panel gestures get undo points like the bindable actions 2026-07-26 15:25:15 -04:00
daniel 3f3ee94e77 Merge B5: sample-remove verb — this-bank scope, confirm-on-last-reference 2026-07-26 15:14:37 -04:00
daniel 6c1efa0f25 B5: sample-remove verb — index-only drop, this-bank scope, confirm-on-last-reference 2026-07-26 15:07:41 -04:00
daniel 22f07d0654 Merge B-cap: owned-file manifest seam — capture records created files 2026-07-26 14:53:49 -04:00
daniel 363baa108c Merge m11-debug-cleanup: remove routine console chatter 2026-07-26 14:51:35 -04:00
daniel 63f35fa58d feat(persist): owned-file manifest seam — capture records created files (B-cap)
Pure OwnedFileManifest (relative paths, dedup, JSON round-trip) persisted
under sibling owned_files ext-state key; both capture commit paths record;
joins the R-B undo-reload set. Phase R prune consumes it later.
2026-07-26 14:50:18 -04:00
daniel 10ceb95ddd docs: scope MIDI-playback instrument as Phase S (native VST3, second artifact)
Settle forks D-A..D-D: bare Steinberg VST3 SDK + LICE editor; split seam
with root-note/loop-points on Sample now; Tier 0-1 committed; embedded
TCP/MCP UI scheduled. Phase S added to PLAN.md and CONTEXT.md spec.
2026-07-26 14:45:02 -04:00
daniel 0f27fc2e55 Merge R-B: batched undo on bank ops + projectconfig reload-on-undo hook 2026-07-26 14:24:57 -04:00
daniel 0d07d3cbfe docs(product): lock D1/D5/D6 for MIDI-playback instrument; add bare-VST3-vs-JUCE assessment
Native VST3, Windows-only, two-products-but-integrated. Retire the JSFX fork
in place, add grounded assessment of the raw Steinberg VST3 surface without JUCE,
and re-present the residual forks in priority order.
2026-07-26 07:10:04 -04:00
daniel 1bba95a0e8 docs(plan): settle Phase V forks V1-V4
V1 semver via project(VERSION), ext-state version stamp first-wave.
V2 plain -beta suffix. V3 console line + panel readout. V4 reverses
prior rec: beta ships as a separate coexisting binary with isolated
ext-state namespace + command-id prefix.
2026-07-26 07:01:56 -04:00
daniel a07b28fd65 feat(persist): reload book+view on undo/redo via projectconfig hook (R-B)
BeginLoadProjectState(isUndo) requests a deferred reload the timer drains
next tick, once REAPER has restored ext-state. Hook owns undo/redo; identity
poll still owns open/tab-switch/save-as. Fixes copy-collapse over-count
(verb-aware guard) and dangling undo point on unsaved-project bank ops.
2026-07-26 06:59:26 -04:00
daniel 6659c2dbdf docs(product): fold the REAPER VST-host bridge into MIDI-playback framing
A VST hosted in REAPER can call back into REAPER's own API (name-resolved
via audioMaster), so a native ReaSampler instrument reads live project
ext-state directly. Re-frames the seam, D6, and the D1/D2 calculus.
2026-07-26 05:49:47 -04:00
daniel 6d372794f5 feat(actions): batch bank index verbs into single REAPER undo points (R-B)
Wrap each bank verb's persist in Undo_BeginBlock2/EndBlock2 with UNDO_STATE_MISCCFG so one bank op is one Ctrl-Z; ext-state participates in undo per SDK. Rejected/no-op ops open no block.
2026-07-26 05:49:38 -04:00
daniel cce9016279 docs: frame versioning scheme + beta side-channel (Phase V)
Add docs/product/versioning-and-release.md and a PLAN.md Phase V pointer
laying out release versioning and the beta side-channel as decidable
options (V1-V4, unsettled - awaiting Daniel).
2026-07-26 05:48:45 -04:00
daniel 2ee2b37532 chore: remove routine console chatter, keep error reporting
Strip ShowConsoleMsg from all normal-success paths (loaded, captured, bank
create/rename/delete/evacuate/activate, realtime started, insert ok, transfer
summary). Remove dead REAPERAPI_WANT_ShowConsoleMsg in capture.cpp.
Error/failure/malformed-data paths and modal confirms untouched.
2026-07-26 05:48:41 -04:00
daniel 6c6a275234 Add MIDI-playback opportunity & design-space framing note
Frame the option space for a MIDI-triggered sampler consuming ReaSampler
banks: the extension-format ceiling (verified vs. vendored SDK headers),
the bank-as-shared-artifact seam, scope tiers, and the forks for Daniel.
2026-07-26 05:38:06 -04:00
daniel d086294f15 Merge Phase B: multi-bank system (pool + named banks) — B1 bank_book, B2 persist, B3 actions, B4 panel 2026-07-26 05:26:51 -04:00
daniel c33cb50632 Merge dev into phase-b-multibank (integrate parallel M7/8 + Phase D work before dev promotion)
# Conflicts:
#	CLAUDE.md
#	CMakeLists.txt
#	src/actions.cpp
#	src/bank_panel.cpp
#	src/persist.h
2026-07-25 23:30:44 -04:00
daniel cdd572c116 Merge: redraw arrange when inserted item lands on already-split lane 2026-07-25 17:21:12 -04:00
daniel 47721a40c4 fix(view): redraw arrange when inserted item lands on already-split lane
An item inserted onto an already-split folder in Design mode sat on the
correct lane but stayed invisible until a manual toggle: mintManagedLanes
returned on the idempotent no-op path before its UpdateArrange call. Force
the redraw there so the item appears immediately.
2026-07-25 17:16:58 -04:00
daniel bdd4ddc0cf Merge B4 review cleanup — null-guards, focus nudge, dragArmed capture-loss, comment fixes 2026-07-25 17:11:02 -04:00
daniel cca7380777 fix(bank_panel): null-guard uniformity, stale comment/focus nudge on delete, dragArmed on capture-loss, menuAppend comment 2026-07-25 17:10:46 -04:00
daniel 960a649238 Merge B4: vertical-split bank_panel — LICE tab strip, id-keyed bank ops, move/copy drag 2026-07-25 16:55:49 -04:00
daniel a67a2f9479 feat(bank_panel): B4 vertical-split UI — LICE tab strip, id-keyed bank ops, move/copy drag
Pool grid on top, LICE-drawn named-banks tab strip below with overflow-scroll
(new pure tab_strip seam, unit-tested). Full-height toggles, unmistakable
active-bank readout distinct from the shown tab, tab context menu
(activate/rename/delete/evacuate/create) with rich confirm-on-non-empty-delete,
and move/copy via menu + drag with drop-highlighting. Fold-in: deserialize
auto-disambiguates duplicate folded bank names instead of rejecting the book.
2026-07-25 14:37:57 -04:00
daniel a786915451 docs: record D2-W3-B landing; mark Phase D2 complete; preserve deferred panel indicator
Move D2-W3-B (item-level mode actions + W3-A polish) from PLAN.md to COMPLETED.md.
Phase D2 two-canvas sub-phase functionally complete; panel UI indicator explicitly
deferred, not dropped.
2026-07-25 14:12:12 -04:00
daniel 7885d5cf48 Merge: D2 W3-B — item-level Design/Arrange move + untag actions; W3-A polish 2026-07-25 13:53:48 -04:00
daniel 261efe5452 feat(actions): item-level Design/Arrange move + untag actions; W3-A polish
Add three MIDI-bindable item actions mirroring the track tag family, routed
through the shared hookcommand: retag selected items' membership then re-drive
mint/apply so each lands on its mode's managed lane (manual-lane items exempt),
all in one undo block. Extract shared item_read seam, simplify applyMintPlan's
lane-count pass, and guard reconcile against unregistered-mode lanes.
2026-07-25 13:30:07 -04:00
daniel 88af39e036 Merge B3: bindable multi-bank action family + unique bank names 2026-07-25 13:17:57 -04:00
daniel ccf65415c9 fix(banks): enforce unique bank display names in-model + B3 review minors 2026-07-25 01:29:47 -04:00
daniel 22012861c5 Merge: make tool-managed lane splits visually transparent (collapse display + lazy-mint) 2026-07-25 01:22:15 -04:00
daniel 314cd7bf36 Make tool-managed lane splits visually transparent: collapse display + lazy-mint
Drive C_LANESCOLLAPSED=2 and hide lane buttons only on tracks the tool itself splits
(gated on the pre-write I_FREEMODE read, so user comp-lane display prefs are never
stomped). Lazy-mint managed lanes only for modes with own content, never an empty
reserved lane; confinement holds via C_LANEPLAYS on the lone lane.
2026-07-24 05:44:19 -04:00
daniel cbfc13c4e0 feat(banks): bindable multi-bank action family — create/rename/delete/evacuate/activate/move/copy + full-height toggles (B3) 2026-07-24 05:35:16 -04:00
daniel 288c1e44e4 Merge B2: persist BankBook under banks key, retire legacy bank_index, route capture to active bank 2026-07-24 05:17:52 -04:00
daniel ff2c3ebce5 Merge: lane-separate content-bearing folder's own media when derived-visible in >1 mode 2026-07-24 05:14:33 -04:00
daniel 78a31ff215 fix(view): lane-separate a content-bearing folder's own media when it's derived-visible in >1 mode
planLaneMinting now takes the model + folder tree and splits a track visible in
2+ modes that carries own media (own-item span OR folder derived-visibility),
fixing an item dropped on a cross-mode folder leaking into every mode. Show-both
tracks are never force-split.
2026-07-24 05:08:18 -04:00
daniel 878d807b12 docs: settle removal/prune forks R-A..R-E; add owned-file manifest seam
R-A this-bank; R-B batched REAPER undo points (Phase-B-wide, SDK must-verify);
R-C trash-preferred w/ unlink fallback; R-D owned-file manifest, landed early as
new B-cap capture point; R-E manual action + bank_panel button.
2026-07-24 04:59:28 -04:00