Commit Graph
838 Commits
Author SHA1 Message Date
grovebit 42d08558ab Clear clips and audio files from the Clip List
Nothing in the Clip List could be removed: neither its files nor its clips
had a delete action, so everything stayed listed.

- New `clip.clear` (Cmd+Shift+B, the Clip List Clear shortcut in Pro Tools),
  also offered as Clear… on every Clip List row's right-click menu. A clip
  leaves its track; a file leaves the session with its decoded audio and is
  never deleted from disk. One undo step brings everything back.
- As in Pro Tools, Clear asks first. The dialog names what goes, including
  the clips on any track or playlist that still play a file being removed:
  they are removed too. Programmatic calls never open it; they pass
  `with_clips: true` to remove a file still in use, and fail without
  changing anything otherwise.
- File rows can be selected now (`edit.select {sources}`, kept in
  `EditState::selected_sources`); with no ids, `clip.clear` acts on the
  Clip List selection.
- Remove Warp and re-warping ignore a stored original whose file has been
  cleared, so they never point a clip at a missing file.
2026-10-10 02:07:51 +01:00
Brandon ThomasandClaude Opus 5.5 522e59f8f5 Bump version to 0.4.0 (from 0.3.0) for release; refresh contributors
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.4.0
2026-10-09 21:02:26 -04:00
Brandon Thomas caa4872df2 Merge pull request #76 from grovebit/clip-gain
Change clip gain with Ctrl+Shift+Up/Down and a fader on the clip
2026-10-09 20:52:40 -04:00
Brandon ThomasandClaude Opus 5.5 ff2bd2d3f8 Clip gain fader popup: use the current theme tokens
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 20:50:08 -04:00
Brandon Thomas 53e1d3c624 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-09 20:49:56 -04:00
Brandon Thomas ac2435e18e Merge pull request #54 from vbasky/feature/session-audio-health
Report session audio health without changing the session
2026-10-09 20:49:44 -04:00
Brandon ThomasandClaude Opus 5.5 50f885e16b Merge origin/main into feature/session-audio-health
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 20:48:05 -04:00
Brandon Thomas 7c8d339a8f Merge pull request #66 from MarekSpodBiedry/issue-62
Show Ctrl instead of Cmd in shortcut text off macOS (#62)
2026-10-09 20:46:12 -04:00
Brandon ThomasandClaude Opus 5.5 4216d4f1be Merge origin/main into issue-62
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 20:41:26 -04:00
Brandon Thomas 504b293814 Merge pull request #65 from salignatmoandal/feat/inspect-source-loaded
inspect: report `sources[].loaded` for agents
2026-10-09 20:41:00 -04:00
Brandon ThomasandClaude Opus 5.5 e2bfdd5b73 Merge origin/main into feat/inspect-source-loaded
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 20:37:45 -04:00
Brandon Thomas d7fc5dc383 Merge pull request #61 from salignatmoandal/fix/import-audio-new-tracks
Honor `file.import_audio new_tracks` (#60)
2026-10-09 20:37:13 -04:00
Brandon ThomasandClaude Opus 5.5 66a682fba1 Merge origin/main into fix/import-audio-new-tracks
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 20:35:14 -04:00
Brandon Thomas e172fef323 Merge pull request #53 from MarekSpodBiedry/issue-47
convert and bounce: refuse output extensions the encoder cannot write instead of saving WAV data (#47)
2026-10-09 20:34:53 -04:00
Brandon ThomasandClaude Opus 5.5 45e32b9781 Merge origin/main into issue-47
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 20:32:52 -04:00
Brandon Thomas eb340fcc4a Merge pull request #58 from MarekSpodBiedry/issue-57
Warn about missing media when opening a session (#57)
2026-10-09 20:32:32 -04:00
Brandon ThomasandClaude Opus 5.5 3a3c447904 Merge origin/main into issue-57
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 20:30:26 -04:00
Brandon Thomas 7e966a3d54 Merge pull request #52 from MarekSpodBiedry/issue-50
CLI: run --cmd and app reject malformed JSON instead of using empty params (#50)
2026-10-09 20:30:04 -04:00
Brandon ThomasandClaude Opus 5.5 7f258b28a7 Merge origin/main into issue-50
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 20:26:37 -04:00
Brandon Thomas 6ff36097d9 Merge pull request #51 from MarekSpodBiedry/issue-48
soundcraft-cli --help: stop at the closing code fence, no Rust source lines (#48)
2026-10-09 20:25:43 -04:00
21f9b07074 Add a selectable Light theme (#32)
* Add a selectable Light theme

* Apply the active theme to the menu bar

* Use the system theme by default

* Expose Appearance in the Setup menu

* Add Light theme screenshot

* Remove the Light theme screenshot

Repo policy keeps large binary assets out of the tree, and the PNG had no
ATTRIBUTION row.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Appearance: ui.theme command, Dark default, non-blocking system lookup

- ThemeMode derives Default with Dark as the default (fixes clippy's
  derivable_impls); System and Light are opt-in. LIGHT_THEME starts false.
- New UI command `ui.theme {"mode": "system|light|dark"}` (label
  "Appearance") in UI_COMMANDS; with no mode it reports the current one.
  The UI Customization combo box dispatches it instead of writing state.
- The choice lives in UiState.theme, so it persists with the existing UI
  prefs (ui.json) and is exposed through ui.set / ui.inspect. Restoring a
  window configuration keeps the current theme.
- dark_light::detect() is only called in System mode, on a background
  thread (an AtomicU8 holds the answer; dark until it arrives, then a
  repaint). On the web it is the synchronous matchMedia lookup.
- theme::apply runs only when the effective palette changes, not every
  frame.
- window.ui_customization keeps its catalog path (Window > UI
  Customization) so parity is unchanged; Setup > Appearance still opens
  it. The combo row is labelled "Theme" so it no longer repeats the title.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Light theme: move hard-coded colours to theme tokens

The Light palette left dark islands and unreadable text where colours
were Color32 literals. New tokens (Dark values are the old literals, so
the Dark theme renders pixel-identical to main):

- menu bar; toolbar group outline; edit-mode cells (no more dark block
  around Shuffle/Spot/Slip/Grid); counter panel outlines, dividers and
  off toggles; Smart-tool bracket
- selected rows in the Tracks/Groups/Clips lists, track-visible dot,
  selected Edit track header, selected Mix strip
- marker names, alternate-playlist lanes, Universe background/outline,
  Big Counter background
- meter background and clip lamp, pan knob body/ring/pointer, Mix insert
  and send slots, Mix section captions

In Light, clip bodies are a paler tint and waveforms a deep shade of the
clip colour instead of black.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Light theme: instrument slot and plugin window text use the current tokens

The instrument picker (#23) landed with Tokens::DARK literals.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: t <t@t>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Brandon Thomas <echelon@gmail.com>
2026-10-09 18:37:04 -04:00
Brandon Thomas 5f2ce943a6 Merge pull request #10 from reoniazx/fix/macos-native-menu-bar
macOS: move application menus to the system menu bar
2026-10-09 18:27:25 -04:00
Brandon Thomas 03972e20ca Merge pull request #34 from DWAA1660/fix/windows-dx12-startup
Default Windows startup to DirectX 12
2026-10-09 18:27:19 -04:00
Brandon Thomas c9f94e0249 Merge pull request #23 from ebbicott/feature/plugin-menus-instruments
Plugin menus by vendor (scrollable), Audio Units inserts, and an instrument picker
2026-10-09 18:25:06 -04:00
Brandon ThomasandClaude Opus 5.5 a867f05177 Merge origin/main into feature/plugin-menus-instruments
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 18:23:33 -04:00
Brandon Thomas 5a0ea9d35d Merge pull request #17 from ebbicott/fix/vst3-module-exit
Fix the crash on quit after a VST3 scan: run module exits on the entry thread
2026-10-09 18:23:18 -04:00
Brandon ThomasandClaude Opus 5.5 acf3237bed Merge origin/main into fix/macos-native-menu-bar
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 18:15:50 -04:00
Brandon ThomasandClaude Opus 5.5 6e55d9e04f Merge origin/main into fix/windows-dx12-startup
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 18:15:02 -04:00
Brandon ThomasandClaude Opus 5.5 2e2220c64d Merge origin/main into fix/vst3-module-exit
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 18:13:17 -04:00
Brandon Thomas 92b4d07a7c Merge pull request #11 from switch87/desktop-log-file
Desktop: write log records to standard error and a rotating log file
2026-10-09 18:12:57 -04:00
Brandon ThomasandClaude Opus 5.5 5824042856 Merge origin/main into desktop-log-file
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 18:12:03 -04:00
Brandon Thomas 2c495aa473 Merge pull request #31 from vbasky/feat/fontconfig-system-fonts
Use fontconfig for Linux system fonts
2026-10-09 18:11:45 -04:00
Brandon Thomas 7083a58500 Merge pull request #29 from Garygunn94/claude/track-delete-menu-disappear-9456d6
Keep the clip context menu open while moving onto it
2026-10-09 18:11:39 -04:00
Brandon Thomas e9820fac30 Merge pull request #28 from Garygunn94/claude/recording-audio-playback-b2db9a
Fix input monitoring pitch and dropouts when input and session rates differ
2026-10-09 18:11:35 -04:00
Brandon Thomas 4bb041ad5c Merge pull request #26 from Garygunn94/feat/metronome-click
Make the Click option audible: metronome in live playback
2026-10-09 18:11:29 -04:00
Brandon Thomas d4a20130f0 Merge pull request #25 from Garygunn94/claude/tempo-value-not-saving-12cc98
Fix tempo change from the tempo ruler not saving
2026-10-09 18:11:16 -04:00
Brandon Thomas 30dd2c84d1 Merge pull request #36 from reoniazx/fix/timeline-follow-hold
Pause playhead follow when the timeline is moved away during playback
2026-10-09 18:11:11 -04:00
Brandon Thomas 286ac34e26 Merge pull request #20 from MarekSpodBiedry/issue-15
Fix keyboard shortcuts on Windows and Linux: Ctrl is the Cmd key (#15)
2026-10-09 18:11:06 -04:00
Brandon Thomas 6fbb68f5e1 Merge pull request #39 from hamada147/fix/no-audio
fix(Play Audio): Resume the web AudioContext on the first user gesture
2026-10-09 18:11:01 -04:00
Brandon Thomas 886278fa21 Merge pull request #37 from reoniazx/fix/automation-first-pass-overflow
Fix debug overflow panic on the first automation-write pass
2026-10-09 18:10:56 -04:00
Brandon Thomas 8958059cd9 Merge pull request #44 from storytold/ci/freebsd-editor-test
Fix FreeBSD CI: VST3 editor tests expect 'unsupported' off macOS
2026-10-09 18:10:32 -04:00
grovebit 1720fc7ea1 Change clip gain with Ctrl+Shift+Up/Down and a fader on the clip
There was no way to change a clip's gain from the UI (#2): clip gain is
stored, drawn and settable through `clip.gain`, but no menu item, key or
gesture reached it. This adds the two ways Pro Tools offers.

Keyboard: Pro Tools nudges the selected clips' gain with
Control+Shift+Up/Down, 1 dB a step by default. Two new commands, Nudge
Clip Gain Up and Down, do the same through `clip.gain`'s relative
`delta_db`, so its -144..+36 dB range holds and each nudge is one undo
step. Control+Up/Down extended the edit selection whether or not Shift
was held, which swallowed the new keys; it now leaves the Shift variants
to the command registry.

Fader: in Pro Tools, Clip Gain Info puts a fader icon and the gain value
in the bottom-left of each clip, and pressing the icon pops up a small
fader. With View > Clip > Clip Gain Info on, or once a clip has gain,
audio clips now show the icon and the value, and dragging the icon moves
the clip's gain from -144 to +36 dB (Cmd for fine moves), one undo step
per drag. The icon is drawn in code. The fader follows the pointer from
where it was pressed rather than adding up per-frame deltas, which lose
the first few pixels while egui decides between a click and a drag and
leave the fader out of step with the pointer once it hits an end (it
would stick, then jump).

Clip Gain Info no longer depends on Clip Gain Line being shown, since
the two are separate views in Pro Tools, and the value moved from the
clip's bottom-right to beside the icon. Dragging the icon of a clip when
nothing is selected selects that clip first, because `clip.gain` needs a
selection.
2026-10-09 22:45:39 +01:00
MarekSpodBiedry 7324e24fae Show Ctrl instead of Cmd in shortcut text off macOS (#62) 2026-10-09 21:27:11 +02:00
Mawen Salignat-Moandal 822b320d1a Report whether each inspect source has decoded audio loaded.
Agents using session.inspect / inspect_session can tell missing media from metadata alone, complementing open_session missing lists and audio_health. Also credit Mawen in people.toml.
2026-10-09 21:24:17 +02:00
Mawen Salignat-Moandal ff4d8910fa Credit Mawen Salignat-Moandal in the About contributors list. 2026-10-09 21:22:24 +02:00
Mawen Salignat-Moandal 8a1c82733c Honor file.import_audio new_tracks instead of silently ignoring it.
Explicit track still wins; new_tracks:false uses the selected audio track or errors clearly. Fixes #60.
2026-10-09 21:03:36 +02:00
MarekSpodBiedry f8a156d255 Warn about missing media when opening a session (#57) 2026-10-09 20:28:46 +02:00
Vikram Bhaskaran 42e6b96734 Report session audio health without changing the session.
The window checks every playlist, including inactive takes, for missing audio, rate mismatches, empty buffers, and clips that extend past their source.
2026-10-10 04:37:45 +11:00
MarekSpodBiedry 43f1fb5681 convert and bounce: refuse output extensions the encoder cannot write instead of saving WAV data (#47) 2026-10-09 19:30:25 +02:00
MarekSpodBiedry 258c63930e CLI: run --cmd and app reject malformed JSON instead of using empty params (#50) 2026-10-09 19:29:46 +02:00