Skip to content

v0.2.0-alpha.3

Choose a tag to compare

@thcp thcp released this 09 May 00:37
· 370 commits to main since this release

This release is a major UI overhaul — new DAW-style mixer, song catalog panel, collapsible appbar, and a large number of UX fixes across the player, transport, and import flow.

What's new

DAW-style mixer

The stem mixer has been completely redesigned. Each stem row now uses a horizontal DAW layout: waveform icon → stem name → fader → VU meter → dB value → Mute → Solo → Download.

  • Fader renders as a styled range input with stem-colored fill and a circular thumb. Boost above 0 dB works — each stem routes through a Web Audio GainNode instead of HTMLAudioElement.volume, which is capped at 1.0 by the browser.
  • VU meter shows a real-time level bar driven by a pre-computed RMS envelope — no AnalyserNode or requestAnimationFrame needed. The bar fills left-to-right with a gradient that tips into red on loud passages.
  • Solo button lights up gold when active; soloing any stem silences the rest.
  • Mute button turns red and stays fully visible when active (previously it faded out along with the dimmed row, making it hard to see the muted state).
  • Download button opens the stem file in the system browser, including in the Tauri desktop app where native <a download> was previously silently blocked.

Song catalog

A new catalog panel on the left sidebar shows the history of processed tracks.

  • Tracks are listed with thumbnail, title, duration, and stem count.
  • Click any entry to instantly reload that track into the player without re-processing.
  • Tracks can be organised into colour-coded folders via drag-and-drop.
  • A search bar filters by title.
  • The panel collapses to a thumbnail strip to save space.

Collapsible appbar

The import bar at the top now collapses to a compact icon strip on double-click, using the same grid-template-rows: 0fr ↔ 1fr animation as the widget sections. It auto-collapses when a track finishes processing so the waveform gets full vertical space.

The collapsed strip contains:

  • SD monogram — expands the appbar
  • URL icon — expands the appbar
  • Per-stem coloured squares — show active/inactive state; click to toggle stem selection without expanding
  • Process button — submits the job if a URL or file is set; otherwise expands the appbar

Version badge and update chip

The brand area now shows the current version. If a newer release is available on GitHub, a green "New release available" chip appears next to the version and links to the releases page.

Transport improvements

  • AudioContext.resume() fires before multitrack.play() in the same gesture handler (Safari requires this to unblock autoplay).
  • Loop region and playhead state reset cleanly on new track load; playhead snaps to loop start on play.
  • Keyboard shortcut L toggles loop; I/O set loop in/out points at the current playhead position.

Import flow

  • File drop onto the URL bar — drag an MP3 or WAV directly onto the input area. A pill shows the filename and size; a clear button removes it.
  • Stem choice chips use Spotify-style filter semantics: first click on a chip while all are selected switches to "only this stem"; subsequent clicks add to the selection; deselecting the last chip wraps back to "all selected".

Diagnostics

  • Global window.error and unhandledrejection handlers log to the console with file, line, and stack trace.
  • Per-stem <audio> elements attach an error listener that logs the MediaError code and message.

CI

  • Fixed: all pipeline steps now carry backend: kubernetes, ensuring they run on the k3s agent and not the local Windows agent on main-branch pushes and releases.

Setup (macOS / Linux)

Unchanged — ./run.sh setup && ./run.sh start.

Known limitations

Same as previous alphas. The Windows app is ALPHA — expect rough edges.