What's Changed
- docs: drop references to competing commercial software by @dylanmtaylor in #743
- ci: configure Dependabot for Cargo and GitHub Actions by @dylanmtaylor in #759
- fix(mcp): reject oversized batches before execution by @euisuh in #497
- Open a plugin when it's inserted (#486) by @mikkelkonyher in #530
- Add an editor screenshot to AppStream metadata by @IanHollow in #583
- Reject CLAP port layouts beyond host limits instead of truncating by @Silvertree2010 in #606
- VST3: show the plugin's own text for identity-mapped parameters by @marcoarnulfo in #680
- ci: switch to shared nix workflow from craft-common-actions by @dylanmtaylor in #660
- docs: add SonarCloud and CodeRabbit badges to README by @dylanmtaylor in #755
- Apply the punch range before placing a recorded take by @Silvertree2010 in #567
- Saturate midi.notes_move tick and pitch arithmetic by @Silvertree2010 in #577
- Fix Min:Secs showing 1 ms early at exact millisecond positions by @Silvertree2010 in #588
- Clamp retrospective record start_ticks to stay within MAX_POSITION by @Silvertree2010 in #608
- Drop out-of-range tempo and meter events when sanitizing a session by @Silvertree2010 in #629
- Fix step_input extending a MIDI clip over the adjacent next clip by @Silvertree2010 in #630
- Make markers.edit apply its documented color parameter by @Silvertree2010 in #633
- Shift controller events by Delay in track.write_midi_rtp by @Silvertree2010 in #645
- Track › Instrument: choose an instrument from the menu bar (#374) by @justinjohn0306 in #425
- Portable mode: portable.txt beside the executable keeps settings next to it (#268) by @justinjohn0306 in #479
- fix(ui): add Fedora font paths so DejaVu and Liberation load on Fedora (#45) by @rollroyces in #495
- Drag automation breakpoints and Alt-click to delete them in the Edit window by @marcoarnulfo in #620
- Ask before a session opened in the browser replaces a modified one by @marcoarnulfo in #646
- Contributors: add Marco Arnulfo by @marcoarnulfo in #647
- Modify Group: edit a group's name, tracks and Edit/Mix linking by @Audiosyncrasy in #655
- Tracks and Groups list rows publish their names to AccessKit by @marcoarnulfo in #657
- MIDI writer: clamp out-of-range pitches and controller numbers (#472) by @justinjohn0306 in #483
- Reject invalid numeric prereleases and restore Cargo.toml when version update fails (#471) by @MarekSpodBiedry in #504
- Count the partial quartet in the base64 decoded-size cap (#468) by @MarekSpodBiedry in #507
- Return TooLarge when the WAV header size overflows u64 (#467) by @MarekSpodBiedry in #508
- Keep audio-io stream test limits as u64 so it compiles on 32-bit targets (#462) by @MarekSpodBiedry in #510
- Do not retry remote-control commands that may already have run (#458) by @MarekSpodBiedry in #512
- fix(audio-io): poison stream encoders after a failed write so later calls cannot claim success (#464) by @saadkhantareen in #537
- fix(routing): remove folder bus on delete by @Jafz2001 in #494
- Keep controller-only tracks when importing MIDI (#454) by @MarekSpodBiedry in #513
- Scale fades, sync point and gain envelope when importing a clip group at another sample rate (#453) by @MarekSpodBiedry in #514
- Reset clip stretch after AudioSuite bakes it into the new source (#451) by @MarekSpodBiedry in #516
- Fix bundle opening losing audio for sources that share one file (#446) by @MarekSpodBiedry in #520
- Create session backups exclusively and stop when backup numbers run out (#426) by @MarekSpodBiedry in #524
- Clip > Remove Sync Point takes the sync point off the selected clips by @marcoarnulfo in #666
- Keep mute changes in place when thinning automation by @webdevtodayjason in #423
- Reset clip effect EQ/compressor state on stop and seek (#442) by @MarekSpodBiedry in #523
- fix(playback): retry the next output config when a stream won't start (#440) by @nanox333 in #532
- Reject invalid slot in mix.insert and mix.send by @Silvertree2010 in #602
- Keep merging fader gestures once the undo history is full by @Silvertree2010 in #696
- Reject missing or non-numeric values in mix.pan and mix.trim by @Silvertree2010 in #703
- Reject invalid send slot in automation.copy_to_send by @Silvertree2010 in #578
- Keep overlapping clips of a clip group when importing it (#452) by @MarekSpodBiedry in #515
- Apply mix.volume once to each member of a targeted mix group by @Silvertree2010 in #693
- Reject unknown param in automation.clear instead of clearing all lanes by @Silvertree2010 in #695
- Fix master fader automation leaking across render-block boundaries by @reoniazx in #667
- WAV: an empty data chunk followed by metadata has no frames (#466) by @Silvertree2010 in #498
- Decode and probe zero-frame FLAC files written by our encoder by @Silvertree2010 in #628
- Honour start or end given alone in markers.add by @Silvertree2010 in #683
- Saturate note tick addition in event.extract_chords by @Silvertree2010 in #705
- Sampler: a ping-pong loop keeps its phase for steps wider than the loop (#463) by @Silvertree2010 in #500
- Fix stale aux and master latency after insert failures by @reoniazx in #672
- Fix mono device playback dropping right-channel audio by @reoniazx in #719
- Fix main: rustfmt the clip group overlap test by @echelon in #779
New Contributors
- @euisuh made their first contribution in #497
- @IanHollow made their first contribution in #583
- @justinjohn0306 made their first contribution in #425
- @Audiosyncrasy made their first contribution in #655
- @saadkhantareen made their first contribution in #537
- @nanox333 made their first contribution in #532
Full Changelog: v0.8.0...v0.10.0