Brandon Thomas
ae7155d95f
Merge #300
2026-10-13 04:56:48 -04:00
Brandon Thomas
93181762ee
Merge #368
2026-10-13 04:56:40 -04:00
Brandon Thomas and Claude 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
8d5b38ab3a
Merge pull request #406 from storytold/fix/reachability-ratchet
...
Fix main: drop now-reachable commands from the reachability ratchet
2026-10-13 04:49:40 -04:00
Brandon Thomas and Claude Opus 5.5
391a0aa66c
Drop track.timebase and track.elastic from the unreachable-commands list
...
Both gained a UI path from PRs that landed today, so the reachability
ratchet from #358 now fails on main.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 04:49:31 -04:00
Brandon Thomas and Claude Opus 5.5
3d1a30b61d
Audio device: keep the new choice only once the devices reopen with it
...
ui.audio_device and Playback Engine › Apply wrote ui.audio before
apply_audio_config could refuse (while recording), so the saved choice no
longer matched the open device. apply_audio_config now takes the new
configuration and stores it only after the refusal check. Adds a test for
ui.audio_device: no-op query, a bad rate, refusal while recording, and an
applied change.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 04:43:55 -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
849d1a6b07
Merge pull request #331 from grovebit/corrupt-audio
...
Refuse corrupt audio files instead of crashing
2026-10-13 04:43:37 -04:00
Brandon Thomas
663ccd0004
Merge pull request #330 from grovebit/new-track-button
...
Add tracks from the Tracks list and the empty space below the tracks
2026-10-13 04:43:34 -04:00
Brandon Thomas
061c238e68
Merge pull request #329 from grovebit/record-unarmed
...
Say at the Record button why Record did nothing
2026-10-13 04:43:30 -04:00
Brandon Thomas
50b0f68363
Merge pull request #320 from grovebit/range-shortcuts
...
Make the Zoom Preset, Waveform Zoom and Clip Rating keys work; add Commands Focus 1–5 and N
2026-10-13 04:43:26 -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
ed42ac49f9
Merge pull request #299 from grovebit/marker-rename
...
Rename a marker by double-clicking it in the ruler
2026-10-13 04:43:16 -04:00
Brandon Thomas
1831b4173a
Merge pull request #298 from grovebit/tempo-drag
...
Drag or type the tempo in the toolbar
2026-10-13 04:43:12 -04:00
Brandon Thomas
116ccfac5b
Merge pull request #297 from grovebit/track-list-reorder
...
Reorder tracks by dragging them in the Tracks list
2026-10-13 04:43:05 -04:00
Brandon Thomas
0ef67b795b
Merge pull request #210 from grovebit/realtime-safety
...
Stop allocating and freeing memory on the audio thread
2026-10-13 04:43:00 -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
3d5b4dec8d
Merge pull request #389 from grovebit/tab-focus
...
Keep shortcuts working after Tab
2026-10-13 04:42:51 -04:00
Brandon Thomas
b81bd5e064
Merge pull request #361 from grovebit/track-name-menu
...
Right-click a track's name for the track menu, in Edit and Mix
2026-10-13 04:42:46 -04:00
Brandon Thomas
007e6ab78f
Merge pull request #359 from grovebit/grid-over-clips
...
Draw grid lines over clips in the Edit window
2026-10-13 04:42:42 -04:00
Brandon Thomas
f08581b545
Merge pull request #378 from grovebit/tracks-scroll-bar
...
Mark the Tracks panel's edge with a scroll bar
2026-10-13 04:42:38 -04:00
Brandon Thomas
e5ca24cc3e
Merge pull request #397 from grovebit/mix-narrow-headers
...
Fit the section names in narrow Mix strips
2026-10-13 04:42:33 -04:00
Brandon Thomas
7676de2749
Merge pull request #383 from grovebit/pt-track-headers
...
Lay out Edit window tracks and plugin slots like Pro Tools
2026-10-13 04:42:30 -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 Thomas and Claude Opus 5.5
33a6c3dfbc
Test Mix in a separate window: the toggle and closing it
...
window.mix_separate toggles (and takes a value), Toggle Mix/Edit keeps Edit
in the main window while Mix is separate, a few frames draw both, and
closing the Mix window brings Mix back into the main one. The close handling
moves into mix_window::separate_closed so the test can reach it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 04:38:59 -04:00
Brandon Thomas and Claude Opus 5.5
74b3278a19
control server: cap request lines at about 86 MiB, not 256 MiB
...
256 MiB per line times 16 connections let a peer make the app buffer about
4 GiB. 16 MiB would break a legitimate request: mix.insert_state carries a
plugin's state as base64 inline, and the engine accepts states of up to
b64::MAX_DECODED_BYTES (64 MiB), about 85.3 MiB of base64. Nothing else sent
to the app is that large (screenshots are replies, which this doesn't bound).
So the cap is that base64 length plus 1 MiB for the JSON around it, derived
from the same constant so the two stay in step; a compile-time check keeps it
under 96 MiB, about 1.5 GiB across all 16 connections.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 04:37:04 -04:00
Brandon Thomas and Claude 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
c7a4c544c0
Merge pull request #261 from Silvertree2010/fix/cli-convert-validation
...
Reject invalid --rate and --bit-depth in convert (#256 )
2026-10-13 04:33:02 -04:00
Brandon Thomas
16335b8259
Merge pull request #259 from Silvertree2010/fix/bar-start-tick-overflow
...
Saturate the bar offset for bars before 1 (#249 )
2026-10-13 04:32:58 -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 Thomas
3b7415db90
Merge pull request #291 from marcoarnulfo/fix/tempo-constant-range
...
fix(event): Constant tempo applies only over its range (#238 )
2026-10-13 04:32:45 -04:00
Brandon Thomas and Claude 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 and Claude Opus 5.5
285d9fecd5
Bounce Mix: a session path without a folder starts in the default one
...
A relative session path has an empty parent, which made the default
"/<name> Bounce.wav". Ignore an empty parent so it falls back to the
default folder, as for a session never saved.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 04:31:47 -04:00
Brandon Thomas and Claude Opus 5.5
8222048c10
Pass the Feet+Frames start to parse_position in the bar-offset test (after #294 )
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 04:30:30 -04:00
Brandon Thomas
7c061de737
Merge main into #261
...
# Conflicts:
# ROADMAP.md
2026-10-13 04:30:18 -04:00
Brandon Thomas
f4233dc8f7
Merge main into #259
...
# Conflicts:
# ROADMAP.md
# contributors/people.toml
2026-10-13 04:30:18 -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
12d9f4dde6
Merge pull request #260 from Silvertree2010/fix/timecode-overflow
...
Compute timecode frame counts in i128 and clamp (#248 )
2026-10-13 04:29:45 -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
Brandon Thomas
cd1ddff0c0
Merge pull request #324 from iannitram/fix/gate-on-windows-and-rust-1.95
...
Make cargo xtask ci pass on Windows, and on Rust 1.95
2026-10-13 04:29:32 -04:00
Brandon Thomas
ec67064398
Merge pull request #355 from mroxso/fix/ui-test-palette-lock-323
...
fix(ui-egui): own the test palette lock for every SoundApp lifetime (#323 )
2026-10-13 04:29:27 -04:00
Brandon Thomas
e59f079a02
Merge pull request #342 from mroxso/t3code/76964692
...
fix(mix): mix.insert_params rejects unknown parameter names
2026-10-13 04:29:23 -04:00
Brandon Thomas
b0339a418f
Merge pull request #401 from Claudio911015/fix/273-clip-loop-unloop-consistency
...
Make clip.loop / clip.unloop self-consistent (loop_id tag)
2026-10-13 04:29:19 -04:00
Brandon Thomas
d9b959ed6c
Merge pull request #400 from marcoarnulfo/fix/vst3-set-param-controller-sync
...
VST3: hand host-set parameter values to the controller before saving state
2026-10-13 04:29:15 -04:00