Commit Graph
221 Commits
Author SHA1 Message Date
Brandon Thomas d67961a402 Merge pull request #655 from Audiosyncrasy/modify-group-dialog
Modify Group: edit a group's name, tracks and Edit/Mix linking
2026-10-19 02:55:00 -04:00
Brandon Thomas 4e932785fe Merge pull request #645 from Silvertree2010/fix/h1875-track-write-midi-rtp-ignores-the
Shift controller events by Delay in track.write_midi_rtp
2026-10-19 02:54:37 -04:00
Brandon Thomas b96379e443 Merge pull request #633 from Silvertree2010/fix/h1763-markers-edit-ignores-its-documen
Make markers.edit apply its documented color parameter
2026-10-19 02:54:34 -04:00
Brandon Thomas 9d474a5388 Merge pull request #630 from Silvertree2010/fix/h1665-event-step-input-at-the-boundary
Fix step_input extending a MIDI clip over the adjacent next clip
2026-10-19 02:54:30 -04:00
Brandon Thomas ef106bff24 Merge pull request #608 from Silvertree2010/fix/h1403-event-retrospective-record-overf
Clamp retrospective record start_ticks to stay within MAX_POSITION
2026-10-19 02:54:23 -04:00
Brandon Thomas 3b3ccbd563 Merge pull request #577 from Silvertree2010/fix/h772-midi-notes-move-overflows-panics
Saturate midi.notes_move tick and pitch arithmetic
2026-10-19 02:54:16 -04:00
Brandon Thomas 2adae474b7 Merge pull request #567 from Silvertree2010/fix/431-audit-punch-recording-overwrites
Apply the punch range before placing a recorded take
2026-10-19 02:54:12 -04:00
Brandon Thomas fdb8acd531 Merge pull request #606 from Silvertree2010/fix/435-audit-clap-preparation-silently
Reject CLAP port layouts beyond host limits instead of truncating
2026-10-19 02:31:25 -04:00
aiongg 86b31e71d3 Sessions: follow stored source paths only on this computer or the session's share
Audio source and movie paths stored in a .scraft session go through
io::stored_path (craft-docpath) before they reach the file system: a
relative path is taken from the session's folder, and paths on other
computers, devices and URLs are refused. A refused source is reported
as missing with the reason; a refused movie is marked offline and the
Video track and Video window show why instead of opening it. Import
Session Data and crash recovery resolve the same way.
2026-10-16 17:32:35 +00:00
Audiosyncrasy 6594badf37 Modify Group: edit a group's name, tracks and Edit/Mix linking
A track group's name, membership and Edit/Mix flags could only be set
when it was created: nothing in the engine or the UI could change them
afterwards, so a typo in a group name was permanent.

Add track.group_modify {group: id|name, name?, tracks?, edit?, mix?}.
Omitted fields keep their value. `tracks` replaces membership only when
it is an array, so a mistyped param cannot silently swap the members for
whatever happens to be selected; it dedupes, rejects an empty group, and
rejects an empty or duplicate name, since find_group resolves by name.
The group's letter is left alone: it is the stable id in the Groups list.

Dialog::Group gains an optional group id. None creates, as before; Some
pre-fills from the group and dispatches track.group_modify, so one dialog
serves both. Reached from Modify Group... in the Groups list context menu.
OK is now disabled while no track is checked, since both commands reject
an empty group and the old OK could only raise an error.

The command has no menu path, so it adds no menu leaf and the parity
checklist is unchanged.
2026-10-15 21:37:56 -04:00
p.illmerandClaude Fable 5.1 ba467b2b72 fix(engine): compile Windows tests (#571)
`cargo xtask ci` failed on Windows before any test ran: the `windows_ignores_case_and_refuses_devices` test moved `upper` into `check` and borrowed it afterwards for the assertion message (E0382), and the recovery test's `paths` is only mutated inside its `#[cfg(unix)]` symlink block, so `-D warnings` rejected the `mut` everywhere else. Neither test is compiled on macOS or Linux, which is why CI never saw them.

With this, `cargo xtask ci` passes on Windows 11 (MSVC, Rust 1.99).

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-15 18:34:31 -06:00
NetterSilverandClaude Haiku 5.5 0dfb074820 Shift controller events by Delay in track.write_midi_rtp
Found while testing crates/engine/src/cmd/track_more.rs:370-392 (write_rtp); playback side: crates/mix/src/lib.rs:1526-1527

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-15 23:07:39 +00:00
NetterSilverandClaude Haiku 5.5 eb4e2d21ba Make markers.edit apply its documented color parameter
Found while testing crates/engine/src/cmd/event.rs:338 (edit_marker; params doc at line 97)

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-15 17:54:03 +02:00
NetterSilverandClaude Haiku 5.5 f887489603 Fix step_input extending a MIDI clip over the adjacent next clip
Found while testing crates/engine/src/cmd/event_more.rs:416-445

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-15 16:52:52 +02:00
NetterSilverandClaude Haiku 5.5 fff096876d Clamp retrospective record start_ticks to stay within MAX_POSITION
Found while testing crates/engine/src/cmd/event_more.rs:753

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 06:16:17 +02:00
NetterSilverandClaude Haiku 5.5 0224ca1e24 Reject CLAP port layouts beyond host limits instead of truncating
Fixes #435

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 04:07:58 +02:00
NetterSilverandClaude Haiku 5.5 6125f49ab1 Saturate midi.notes_move tick and pitch arithmetic
Found while testing crates/engine/src/cmd/midi.rs:129-130

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-14 18:54:16 +00:00
NetterSilverandClaude Haiku 5.5 6b4a7da010 Apply the punch range before placing a recorded take
Fixes #431

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-14 17:33:15 +00:00
Brandon Thomas cf755b8cd2 Merge pull request #410 from Silvertree2010/fix/instrument-params-render
Engine: mix.instrument takes the instrument's parameters and refuses unknown fields (#265)
2026-10-13 06:53:58 -04:00
Brandon Thomas c2788c50d4 Merge pull request #415 from grovebit/tab-to-transient
Tab to Transient: every selected track, Alt+Tab back, Shift+Tab extends
2026-10-13 06:53:42 -04:00
Brandon ThomasandClaude Opus 5.5 b32d7bd926 Merge main into #410; put the mix.instrument note in the Instruments row's 'have' cell
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 06:45:33 -04:00
Brandon Thomas 00faedcbd0 Merge main into #334 2026-10-13 06:09:17 -04:00
Brandon Thomas 82eff0f561 Merge main into #219 2026-10-13 06:01:05 -04:00
Brandon Thomas e0deb3f4e5 Merge main into #335 2026-10-13 05:55:06 -04:00
Brandon Thomas 857882c740 Merge main into #332 2026-10-13 05:40:16 -04:00
Brandon Thomas 67f486d4c4 Merge main into #296 2026-10-13 05:34:50 -04:00
Brandon Thomas 056bc288c4 Merge main into #306 2026-10-13 05:31:14 -04:00
Brandon Thomas 468125aaf4 Merge main into #209 2026-10-13 05:27:22 -04:00
Brandon Thomas 3f3f64746f Merge main into #384 2026-10-13 05:21:33 -04:00
Brandon Thomas 2bba5c334d Merge main into #365 2026-10-13 05:17:58 -04:00
NetterSilver 1c2128ec37 Engine: mix.instrument takes the instrument's parameters and refuses unknown fields (#265)
mix.instrument only read `plugin` and `track` and ignored every other field, so a
synth setting written beside `plugin` (cutoff, amp_sustain, level…) came back
as success and the render never changed.

It now takes the built-in instrument's parameters in `params`, validated before
anything is changed (unknown ids and non-numbers are errors, values are
clamped into range), and refuses any other field with a message that points to
`params` and mix.instrument_param.
2026-10-13 11:17:57 +02:00
Brandon Thomas 5051b4a45f Merge main into #393 2026-10-13 05:12:31 -04:00
Brandon Thomas a47135b228 Merge main into #369 2026-10-13 05:08:26 -04:00
Brandon Thomas 0eee82a49c Merge main into #328 2026-10-13 04:59:30 -04:00
Brandon ThomasandClaude Opus 5.5 3cc0dc77cb Fix build after merging main into #368
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 04:56:26 -04:00
Brandon Thomas 46399aa729 Merge main into #368 2026-10-13 04:50:04 -04:00
Brandon Thomas 5495378d7a Merge pull request #309 from isaac-levine/mcp-automation-roots
MCP: confine file access with --automation-read-root and --automation-write-root
2026-10-13 04:43:44 -04:00
Brandon Thomas 9c7e5018b3 Merge pull request #333 from grovebit/strip-silence-long
Stop Strip Silence deleting clips late in long selections
2026-10-13 04:43:41 -04:00
Brandon Thomas 6c836b4389 Merge pull request #308 from grovebit/automation-overwrite
Automation passes replace the automation they play over, in one undo step
2026-10-13 04:43:21 -04:00
Brandon Thomas b764e299bc Merge pull request #326 from grovebit/long-renders
Refuse renders too long to finish instead of cutting the audio short
2026-10-13 04:42:56 -04:00
Brandon Thomas 7347e98e79 Merge pull request #363 from grovebit/more-shortcuts
Pro Tools keys for nudging, Grid and Nudge values, playlists and windows
2026-10-13 04:42:25 -04:00
Brandon ThomasandClaude Opus 5.5 41c8561d51 Signal Generator refuses a selection longer than one render
It cut the new clip at MAX_RENDER_SAMPLES / channels without a word, after
allocating up to 2 GiB for it. Refuse such a selection up front, as #326
does for other renders, before anything is generated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 04:33:35 -04:00
Brandon Thomas bdff15defb Merge pull request #387 from itrycodinganditsbad/fix-250
Keep later meter changes on their bars when an earlier meter is edited
2026-10-13 04:32:53 -04:00
Brandon Thomas aa91e47073 Merge pull request #303 from marcoarnulfo/fix/restore-last-selection
Restore Last Selection brings back the previous selection
2026-10-13 04:32:49 -04:00
Brandon ThomasandClaude Opus 5.5 f4460e1ec7 Merge refs/pr/326 (refuse over-long renders) into fix328
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 04:31:59 -04:00
Brandon Thomas ba4c234344 Merge main into #387
# Conflicts:
#	crates/engine/src/cmd/event.rs
2026-10-13 04:30:17 -04:00
Brandon Thomas 0f6bd8a573 Merge main into #303
# Conflicts:
#	crates/engine/src/cmd/edit.rs
2026-10-13 04:30:17 -04:00
Brandon Thomas 52294bd4a3 Merge main into #291
# Conflicts:
#	crates/engine/src/cmd/event.rs
2026-10-13 04:30:17 -04:00
Brandon Thomas 6dfa00590b Merge pull request #304 from marcoarnulfo/fix/midi-track-offsets
Apply MIDI track offsets when scheduling notes
2026-10-13 04:29:40 -04:00
Brandon Thomas 6bab8365e6 Merge pull request #289 from marcoarnulfo/fix/clear-trim-automation
fix(track): Clear Trim Automation removes the trim lane (#233)
2026-10-13 04:29:36 -04:00