Skip to content

Releases: stemdeckapp/stemdeck

v0.7.0-alpha.2

Choose a tag to compare

@thcp thcp released this 29 May 14:05
bfa41c1

Important

macOS ÔÇö first launch is blocked by Gatekeeper (no code signing yet). After dragging StemDeck into Applications, run once:

xattr -dr com.apple.quarantine /Applications/StemDeck.app

Optional ÔÇö clean slate for a true first-run
ÔÜá´©Å rm -rf is permanent and cannot be undone. If you're not comfortable running terminal commands, use Finder instead: open each path via Go ÔåÆ Go to Folder (ÔçºÔîÿG) and move the folders to Trash manually.

rm -rf ~/Library/Application\ Support/StemDeck
rm -rf ~/Library/WebKit/app.stemdeck.desktop
rm -f  ~/Library/Preferences/app.stemdeck.desktop.plist
rm -rf ~/Library/Caches/stemdeck ~/Library/Caches/app.stemdeck.desktop

This is optional ÔÇö the app will work without it.

What's new in 0.7.0 Alpha 2

Export (#160)

  • Export All Stems in one click ÔÇö no more clicking six download buttons. Bundles the active stems into a single .zip named after the song, with a WAV/MP3 toggle.
  • Footer export consolidated into one Export Mix dropdown: Mix ┬À All Stems ┬À Current Region (with descriptions + keyboard nav).
  • Export Mix and Export Stems operate on the active (selected) stems only.
  • Individual stem-mix downloads are named after the song.
  • Desktop: exporting all stems is now a single save dialog instead of six.

Workspace & waveform (#159)

  • Stem lanes are now scrollable on short windows ÔÇö the mixer and waveforms scroll together, so every stem is reachable.
  • Responsive waveform ÔÇö stretches to fill the window, keeps a readable minimum width, and scrolls horizontally below it; the timeline ruler and playhead stay aligned.
  • Cleaner scrollbars ÔÇö thin, auto-hiding bars in the library, mixer, and waveform replace the chunky default ones.
  • Fixed a stray white bar that appeared under the waveform while resizing.

Installing

Drop the .app into Applications and launch.

Artifact scan

  • Windows portable packages were scanned with ClamAV in CI before upload.

Artifact build

  • macOS arm64 and x64 DMGs and runtime packs were built and inspected on a macOS Woodpecker agent before upload.

v0.7.0-alpha.1

Choose a tag to compare

@thcp thcp released this 28 May 15:11
0830246

Important

macOS users run this after installing:

xattr -dr com.apple.quarantine /Applications/StemDeck.app

macOS Gatekeeper will block the app on launch without this step. Proper code signing is planned for a future release.

Optional: clean up a previous install before running

⚠️ rm -rf is permanent and cannot be undone. If you're not comfortable running terminal commands, use Finder instead: open each path in Finder via Go → Go to Folder (⇧⌘G) and move the folders to Trash manually.

If you want a fully fresh start (clears stored library, runtime cache, and preferences):

rm -rf ~/Library/Application\ Support/StemDeck
rm -rf ~/Library/WebKit/app.stemdeck.desktop
rm -f  ~/Library/Preferences/app.stemdeck.desktop.plist
rm -rf ~/Library/Caches/stemdeck ~/Library/Caches/app.stemdeck.desktop

This is optional — the app will work without it.


What's new in 0.7.0 Alpha 1

SoundCloud support, instant waveform rendering, and smarter library track handling.

New Features

  • SoundCloud support — paste any soundcloud.com, www.soundcloud.com, or on.soundcloud.com link and StemDeck will download and separate it just like a YouTube track. Tracks are labelled "SoundCloud" with "Compressed (MP3)" quality in the library.
  • Instant waveform rendering from pre-computed peaks — waveforms now appear immediately when you click a library track, before any audio is ready to play. The pipeline pre-computes 1500 [min, max] peak pairs per stem at the end of separation and caches them as peaks.json. The frontend fetches this small file on load and renders overview and footer waveforms in milliseconds. Old library tracks without peaks.json fall back gracefully to the previous client-side decode path.
  • Unavailable tracks shown clearly in library — if a track's audio files are no longer on the server (after a reinstall, data migration, or fresh dev server), the library item is now greyed out with a grey status dot. Clicking it surfaces a clear message: "This track's audio is no longer available. Re-upload to restore it." Previously the UI would silently do nothing.

Setup UX

  • Connectivity feedback during setup — warns after 30 s of no download progress; escalates after 60 s with an actionable message.
  • Fix: PowerShell resolved by absolute path on Windows — setup no longer fails when PowerShell is not on PATH. Closes #130.
  • Fix: friendlier error messages for known setup failures — maps CUDA install failure patterns to user-friendly guidance. Closes #132.

Installing

Drop the new .app into your Applications folder and launch. No manual migration steps required.

Artifact scan

  • Windows portable packages were scanned with ClamAV in CI before upload.

Artifact build

  • macOS arm64 and x64 DMGs and runtime packs were built and inspected before upload.
  • macOS arm64 and x64 DMGs and runtime packs were built and inspected on a macOS Woodpecker agent before upload.

v0.6.0-alpha.6

Choose a tag to compare

@thcp thcp released this 26 May 10:28

Important

macOS users run this after installing:

xattr -dr com.apple.quarantine /Applications/StemDeck.app

macOS Gatekeeper will block the app on launch without this step. Proper code signing is planned for a future release.

Optional: clean up a previous install before running

⚠️ rm -rf is permanent and cannot be undone. If you're not comfortable running terminal commands, use Finder instead: open each path in Finder via Go → Go to Folder (⇧⌘G) and move the folders to Trash manually.

If you want a fully fresh start (clears stored library, runtime cache, and preferences):

rm -rf ~/Library/Application\ Support/StemDeck
rm -rf ~/Library/WebKit/app.stemdeck.desktop
rm -f  ~/Library/Preferences/app.stemdeck.desktop.plist
rm -rf ~/Library/Caches/stemdeck ~/Library/Caches/app.stemdeck.desktop

This is optional — the app will work without it.


What's new in 0.6.0 Alpha 6

Security hardening, reliability fixes, and setup UX improvements across the desktop shell.

Security

  • Windows FFmpeg download verified with SHA256 — the gyan.dev companion .sha256 file is downloaded and checked before the archive is extracted; a corrupt or tampered download is rejected and removed. macOS FFmpeg checksum verification is not available in this release (evermeet.cx does not expose SHA256 checksums).
  • Excluded fastapi 0.136.3 (MAL-2026-4750) — that release injected an undocumented fastar typosquat dependency via its [standard] optional group. The version is pinned out; resolution falls back to 0.136.1.
  • file:// and bare filesystem paths gated to debug builds — the download helpers no longer accept local file paths in release builds, closing a path-bypass vector.
  • save_audio_file restricted to localhost URLs — the command now rejects any URL that isn't 127.0.0.1 or localhost, preventing SSRF from a compromised WebView.
  • STEMDECK_PYTHON env var gated to debug builds — the override is no longer accepted in release builds.

Reliability

  • Fix: save_audio_file now streams audio to disk with a timeout — previously the entire file was buffered in memory with no timeout. Large WAV files no longer risk OOM; hung responses no longer stall the async executor.
  • Fix: pip subprocess tracked and killed on window close — if the window is closed during CUDA install, the pip child process is now terminated cleanly instead of being orphaned.
  • Fix: runtime swap is now recoverable after a crash — if StemDeck is killed between the two rename steps of a runtime update, the old runtime is automatically restored on next launch instead of leaving a broken install.
  • Fix: update_setup_config writes atomically — config.json is now written via a temp file + rename, preventing corruption on crash.
  • Fix: download_file_with_progress calls sync_all() before rename on Windows — prevents corrupt archives after power loss.
  • Fix: stop_backend no longer called twice on window close — removed the duplicate call from the ExitRequested handler.
  • Fix: backend shutdown no longer blocks the main thread — stop_backend now drains the child process on a background thread, eliminating the "app not responding" heuristic on macOS/Windows.
  • Fix: start_backend guards against concurrent invocations — a second call while startup is in progress now returns an error immediately instead of racing with the first.
  • Fix: SSE listener deduplication on retry — rapid retries during runtime download no longer stack duplicate progress listeners, which caused incorrect progress bar values.
  • Fix: stall timer no longer fires during local archive verification — the stall warning is now only active during network downloads.
  • Fix: stall timer and progress status messages no longer write concurrently — when a stall is detected, the progress rotation is stopped before the stall message is written.

Architecture

  • BackendState consolidated into a single Mutex — child and url are now co-located in a single Mutex<BackendStateInner>, enforcing the both-Some/both-None invariant atomically.
  • Path override logic centralized — python_path, ffmpeg_path, and ffprobe_path now share a single env_path_override helper instead of duplicating the env-var + fallback pattern.

Setup UX

  • Stall detection for slow or unreachable downloads — warns after 30s of no progress; escalates after 60s.
  • Time-based progress messages during runtime download — rotates informational messages as time passes (30s, 90s milestones).
  • Fix: Windows FFmpeg download no longer depends on PowerShell — uses a direct HTTP client. Closes #130.
  • Fix: CUDA install errors show actionable messages — maps known failure patterns to user-friendly guidance. Closes #132.

Docs

  • Fixed stale thcp/stemdeck repo URLs in README (3 locations).
  • Updated CUDA manual-install example from cu121 to cu124.
  • Fixed inconsistent Discord invite link.
  • Added Environment Variables reference section to README.
  • Added doc comments to all 14 Tauri command functions.

Installing

Drop the new .app into your Applications folder and launch. No manual migration steps required.

Artifact scan

  • Windows portable packages were scanned with ClamAV in CI before upload.

Artifact build

  • macOS arm64 DMG built locally and verified before upload.
  • macOS arm64 and x64 DMGs and runtime packs were built and inspected on a macOS Woodpecker agent before upload.

v0.6.0-alpha.5

Choose a tag to compare

@thcp thcp released this 24 May 15:15
ec292f8

Important

macOS users run this after installing:

xattr -dr com.apple.quarantine /Applications/StemDeck.app

macOS Gatekeeper will block the app on launch without this step. Proper code signing is planned for a future release.


What's new in 0.6.0 Alpha 5

Loading experience improvements for file uploads.

Backend

No changes.

Frontend

  • Fix: loading overlay scoped to waveform area -- the processing overlay no longer covers the full screen when uploading an MP3 or WAV file. It now overlays only the waveform panel, matching the visual footprint of all other UI states.
  • Unified loading UI -- file uploads and YouTube links now use the same animated wave bars overlay with rotating phrases. Previously, file uploads showed a bare dark card; now both paths show the animated logo and processing messages consistently.
  • Fix: animated bars and phrases fully visible during processing -- the logo and phrase text were incorrectly dimmed by the no-track opacity rule while a job was in progress. Both are now rendered at full opacity.

Desktop setup

No changes.


Installing

Drop the new .app into your Applications folder and launch. No manual migration steps required.

Artifact scan

  • Windows portable packages were scanned with ClamAV in CI before upload.

Artifact build

  • macOS arm64 and x64 DMGs and runtime packs were built and inspected on a macOS Woodpecker agent before upload.

v0.6.0-alpha.4

Choose a tag to compare

@thcp thcp released this 24 May 14:35

Important

macOS users run this after installing:

xattr -dr com.apple.quarantine /Applications/StemDeck.app

macOS Gatekeeper will block the app on launch without this step. Proper code signing is planned for a future release.


What's new in 0.6.0 Alpha 4

UI polish and a file upload re-submit fix.

Backend

No changes.

Frontend

  • Fix: settings tooltip -- "More features coming soon" now appears on hover and reliably disappears when the mouse leaves the button. Uses CSS :hover on the button itself, eliminating WKWebView event delivery quirks.
  • Fix: waveform resize -- resizing the app window now correctly updates the waveform zoom. A requestAnimationFrame debounce on the ResizeObserver ensures zoom is applied after layout settles.
  • Single-click track loading -- clicking a track in the library now loads it into the studio immediately. Double-click is no longer needed.
  • About dialog hover -- Website, GitHub, and all social icon buttons only turn yellow on hover instead of being permanently highlighted.
  • Fix: file upload re-submit -- uploading the same file a second time (without re-selecting it) no longer shows "URL is required". The File object is now cached on the input element and survives the browser clearing fileInput.files after a fetch() submission.

Desktop setup

No changes.


Installing

Drop the new .app into your Applications folder and launch. No manual migration steps required.

Artifact scan

  • Windows portable packages were scanned with ClamAV in CI before upload.

Artifact build

  • macOS arm64 and x64 DMGs and runtime packs were built and inspected on a macOS Woodpecker agent before upload.

v0.6.0-alpha.3

Choose a tag to compare

@thcp thcp released this 24 May 13:28
bcc3156

Important

macOS users run this after installing:

xattr -dr com.apple.quarantine /Applications/StemDeck.app

macOS Gatekeeper will block the app on launch without this step. Proper code signing is planned for a future release.


What's new in 0.6.0 Alpha 3

Bug fixes, live update notifications, and a redesigned About dialog.

Backend

No changes.

Frontend

  • Live update notifications -- the bell now checks GitHub on startup and shows a release card only when a newer version is available. Badge dot lights up when there is something new. Dismissing persists per version.
  • Redesigned About dialog -- waveform logo, tagline, Website and GitHub buttons, social links for Discord, Reddit, Instagram, and X.
  • Settings button -- clicking the gear icon now shows a "More features coming soon" tooltip.
  • Fix: all-stems-muted recovery -- if a saved session had every loaded stem muted, stems now unmute automatically on restore. Partial mutes are preserved.
  • Fix: stale track load race -- switching tracks quickly no longer wires up the wrong track.
  • Fix: mix state timing -- the audio engine now waits for saved mix state to resolve from storage before applying it.

Desktop setup

No changes.


Installing

Drop the new .app into your Applications folder and launch. No manual migration steps required.


Special thanks to @omglazrgunpewpew for reporting the playback issues and putting together a thoughtful analysis. Your work directly shaped how we fixed this. Hope you are having a good Sunday!

Artifact scan

  • Windows portable packages were scanned with ClamAV in CI before upload.

Artifact build

  • macOS arm64 and x64 DMGs and runtime packs were built and inspected on a macOS Woodpecker agent before upload.

0.6.0 Alpha 2

Choose a tag to compare

@thcp thcp released this 23 May 20:50
62b7f82

Important

macOS users run this after installing:

xattr -dr com.apple.quarantine /Applications/StemDeck.app

macOS Gatekeeper will block the app on launch without this step. Proper code signing is planned for a future release.


What's new in 0.6.0 Alpha 2

Collapsible library sidebar

The library panel can now be collapsed and expanded with the hamburger button (Ôëí) at the top of the left rail. Collapsing slides the panel closed with a smooth 280ms animation, leaving only the icon rail visible. The state persists across sessions so the sidebar remembers your preference on next launch.

Redesigned export controls

The footer export controls have been reorganised for clarity:

  • Export Region is now stacked directly below Export Mix as a pair of equal-width buttons, making the relationship between the two explicit.
  • The Speed button has been removed from the footer.

VU meters fixed

The stem VU meters (the animated level bars on each track) were not animating during playback in certain conditions. The issue was in how decoded audio buffers were retrieved after wavesurfer's decode event fires -- the event argument is a duration number, not the buffer itself. The fix calls getDecodedData() directly, matching the fast path that was already working for cached audio.

Runtime auto-updates on upgrade

Installing a new version over an existing one now automatically re-downloads the Python backend runtime when the version changes. Previously, the old runtime was reused and the About dialog would show the previous version number. No manual cleanup required from this release onwards.


Installing

Drop the new .app into your Applications folder and launch. No manual migration steps required.

Artifact scan

  • Windows portable packages were scanned with ClamAV in CI before upload.

Artifact build

  • macOS arm64 and x64 DMGs and runtime packs were built and inspected on a macOS Woodpecker agent before upload.

v0.6.0 Alpha 1

Choose a tag to compare

@thcp thcp released this 23 May 17:45
ed66792

Important

macOS users run this after installing:

xattr -dr com.apple.quarantine /Applications/StemDeck.app

macOS Gatekeeper will block the app on launch without this step. Proper code signing is planned for a future release.

Note

Upgrading from a previous alpha? One manual cleanup recommended.
If you experienced stale library state or broken UI after a previous upgrade, delete the old WebKit cache before launching.

Option A -- Finder (recommended):

  1. Open Finder
  2. In the menu bar choose Go > Go to Folder... (or press Shift + Cmd + G)
  3. Paste ~/Library/WebKit and press Enter
  4. Find the folder named app.stemdeck.desktop and move it to Trash
  5. Empty the Trash

Option B -- Terminal (advanced users only):

cd ~/Library/WebKit
rm -rf app.stemdeck.desktop

This is a one-time step. From this release onwards, the app clears it automatically on every upgrade.
Your library is safe -- it now lives in ~/Documents/StemDeck/ and is untouched by this cleanup.


What's new in 0.6.0 Alpha 1

Export Region

A new Export Region button sits in the footer transport bar, to the left of Export Mix. When a loop region is active, it trims and downloads the mix for that exact time range as WAV or MP3. The button is always visible but grayed out until a loop region is set, so it is easy to discover without cluttering the interface when not in use.

Windows: export loop no longer truncates query parameters

On Windows, the previous Export Region implementation opened download URLs via cmd /c start, which interprets & as a shell command separator. This silently dropped the end parameter from the URL, causing the backend to reject the request. The URL is now passed directly to explorer.exe, bypassing the shell entirely.

Library and stems now saved to ~/Documents/StemDeck

Your entire library (metadata, folders, mix state, stem preferences, and extracted audio files) now lives in ~/Documents/StemDeck/. This makes it visible in Finder, eligible for iCloud Drive backup, and means it survives any app reinstall or upgrade without any action on your part.

Previous versions stored everything inside ~/Library/Application Support/ which is hidden from Finder and wiped on reinstall.

WebKit stale-data eliminated automatically on macOS

Every upgrade used to leave stale cached state in ~/Library/WebKit/app.stemdeck.desktop, causing inconsistent behavior that required manually deleting three system folders. That folder is now cleared automatically on version change. No user action needed, ever.

Docker: permission error and silent stems fixed

  • PermissionError on job creation -- Docker was creating the jobs/ bind-mount directory as root, blocking the app user from writing. Fixed with a gosu-based entrypoint that re-chowns the directory before dropping privileges.
  • Silent stems from WAV uploads -- Professional WAVs (24-bit, 32-bit float, high sample rate) were passed directly to Demucs without normalisation, producing silent output. All uploads now go through ffmpeg normalisation to 16-bit 44.1 kHz stereo before separation.
  • MP3 stem export crash -- Every MP3 stem download was crashing with an internal error. Fixed.

Ubuntu 26.04 / Python 3.14 compatibility

Ubuntu 26.04 ships Python 3.14 by default, but PyTorch 2.6.0 does not have wheels for it yet. run.sh now explicitly targets Python 3.12, and pyproject.toml enforces <3.14 so the installer never selects an incompatible interpreter.

Security hardening

  • Stored XSS fixed -- YouTube titles, channel names, and tags are now HTML-escaped before being injected into the DOM. Previously a crafted video title could execute arbitrary JavaScript in the app.
  • open_url restricted to http/https -- The Tauri command used to open external links now blocks file:///, ms-msdt:, and other non-web schemes.
  • SSE endpoint now validates job IDs -- The /events endpoint was the only one missing the JOB_ID_RE check; it now returns 404 for malformed IDs.

Reliability fixes

  • Background tasks held strongly -- The sweep loop and desktop parent watchdog are now kept in a reference set so the garbage collector cannot silently discard them mid-run.
  • Pipeline errors clean up job directory -- A failed pipeline now deletes the partial job directory, the same cleanup already done on cancellation.
  • Atomic job capacity check -- The capacity check and job registration now happen under the registry lock, closing a race that could let one extra job slip past the limit.
  • Registry persistence serialises under lock -- Concurrent job removal no longer risks writing a stale snapshot to disk.

Desktop: audio playback fixed (macOS)

  • On first load -- The waveform renderer was downloading every stem WAV twice (once for visuals, once for playback), saturating WKWebView's connection pool and causing audio to chop. The renderer now reuses wavesurfer's already-decoded buffers instead.
  • After seeking -- Pressing play immediately after moving the playhead caused choppiness because WKWebView had not yet buffered audio at the new position. Playback now waits for all audio elements to signal readiness before starting.

Test coverage (+16 tests)

New tests cover: sections endpoint (happy path, 404, 422 invalid color/id), file upload (extension rejection, empty file, mp3, wav), 503 capacity for both YouTube and upload paths, SSE job ID validation, and SSE connection cap.


Installing

Drop the new .app into your Applications folder and launch. Your library will be migrated automatically on first launch. No manual steps required.

Artifact scan

  • Windows portable packages will be scanned with ClamAV in CI before upload.
  • Windows portable packages were scanned with ClamAV in CI before upload.

Artifact build

  • macOS arm64 and x64 DMGs and runtime packs will be built and inspected on a macOS Woodpecker agent before upload.
  • macOS arm64 and x64 DMGs and runtime packs were built and inspected on a macOS Woodpecker agent before upload.

v0.5.0 Alpha 3

Choose a tag to compare

@thcp thcp released this 20 May 11:49
c474d52

Important

macOS users run this after installing:

xattr -dr com.apple.quarantine /Applications/StemDeck.app

macOS Gatekeeper will block the app on launch without this step. Proper code signing is planned for a future release.

Note

Upgrading from a previous alpha? One manual cleanup recommended.
If you experienced stale library state or broken UI after a previous upgrade, delete the old WebKit cache before launching.

Option A — Finder (recommended):

  1. Open Finder
  2. In the menu bar choose Go > Go to Folder... (or press Shift + Cmd + G)
  3. Paste ~/Library/WebKit and press Enter
  4. Find the folder named app.stemdeck.desktop and move it to Trash
  5. Empty the Trash

Option B — Terminal (advanced users only):

cd ~/Library/WebKit
rm -rf app.stemdeck.desktop

This is a one-time step. From this release onwards, the app clears it automatically on every upgrade.
Your library is safe -- it now lives in ~/Documents/StemDeck/ and is untouched by this cleanup.


What's new in 0.5.0 Alpha 3

Export Region

A new Export Region button sits in the footer transport bar, to the left of Export Mix. When a loop region is active, it trims and downloads the mix for that exact time range as WAV or MP3. The button is always visible but grayed out until a loop region is set, so it is easy to discover without cluttering the interface when not in use.

Library and stems now saved to ~/Documents/StemDeck

Your entire library (metadata, folders, mix state, stem preferences, and extracted audio files) now lives in ~/Documents/StemDeck/. This makes it visible in Finder, eligible for iCloud Drive backup, and means it survives any app reinstall or upgrade without any action on your part.

Previous versions stored everything inside ~/Library/Application Support/ which is hidden from Finder and wiped on reinstall.

WebKit stale-data eliminated automatically on macOS

Every upgrade used to leave stale cached state in ~/Library/WebKit/app.stemdeck.desktop, causing inconsistent behavior that required manually deleting three system folders. That folder is now cleared automatically on version change. No user action needed, ever.

Docker: permission error and silent stems fixed

  • PermissionError on job creation -- Docker was creating the jobs/ bind-mount directory as root, blocking the app user from writing. Fixed with a gosu-based entrypoint that re-chowns the directory before dropping privileges.
  • Silent stems from WAV uploads -- Professional WAVs (24-bit, 32-bit float, high sample rate) were passed directly to Demucs without normalisation, producing silent output. All uploads now go through ffmpeg normalisation to 16-bit 44.1 kHz stereo before separation.
  • MP3 stem export crash -- Every MP3 stem download was crashing with an internal error. Fixed.

Ubuntu 26.04 / Python 3.14 compatibility

Ubuntu 26.04 ships Python 3.14 by default, but PyTorch 2.6.0 does not have wheels for it yet. run.sh now explicitly targets Python 3.12, and pyproject.toml enforces <3.14 so the installer never selects an incompatible interpreter.

Security hardening

  • Stored XSS fixed -- YouTube titles, channel names, and tags are now HTML-escaped before being injected into the DOM. Previously a crafted video title could execute arbitrary JavaScript in the app.
  • open_url restricted to http/https -- The Tauri command used to open external links now blocks file:///, ms-msdt:, and other non-web schemes.
  • SSE endpoint now validates job IDs -- The /events endpoint was the only one missing the JOB_ID_RE check; it now returns 404 for malformed IDs.

Reliability fixes

  • Background tasks held strongly -- The sweep loop and desktop parent watchdog are now kept in a reference set so the garbage collector cannot silently discard them mid-run.
  • Pipeline errors clean up job directory -- A failed pipeline now deletes the partial job directory, the same cleanup already done on cancellation.
  • Atomic job capacity check -- The capacity check and job registration now happen under the registry lock, closing a race that could let one extra job slip past the limit.
  • Registry persistence serialises under lock -- Concurrent job removal no longer risks writing a stale snapshot to disk.

Desktop: audio playback fixed (macOS)

  • On first load -- The waveform renderer was downloading every stem WAV twice (once for visuals, once for playback), saturating WKWebView's connection pool and causing audio to chop. The renderer now reuses wavesurfer's already-decoded buffers instead.
  • After seeking -- Pressing play immediately after moving the playhead caused choppiness because WKWebView had not yet buffered audio at the new position. Playback now waits for all audio elements to signal readiness before starting.

Test coverage (+16 tests)

New tests cover: sections endpoint (happy path, 404, 422 invalid color/id), file upload (extension rejection, empty file, mp3, wav), 503 capacity for both YouTube and upload paths, SSE job ID validation, and SSE connection cap.


Installing

Drop the new .app into your Applications folder and launch. Your library will be migrated automatically on first launch. No manual steps required.

Artifact scan

  • Windows portable packages were scanned with ClamAV in CI before upload.

Artifact build

  • macOS arm64 and x64 DMGs and runtime packs were built and inspected on a macOS Woodpecker agent before upload.

v0.5.0 Alpha 2

Choose a tag to compare

@thcp thcp released this 19 May 22:27
76ef8a9

What's new in 0.5.0 Alpha 2

FFmpeg download timeout extended

The FFmpeg download timeout has been raised from 5 minutes to 30 minutes on both macOS and Windows. Users on slow, metered, or throttled connections were hitting the previous limit before the download could complete, leaving setup stuck. This should eliminate that failure for all but the most severely constrained connections.


Installing

Drop the new .app into your Applications folder and launch it. No manual cleanup needed.

Artifact scan

  • Windows portable packages were scanned with ClamAV in CI before upload.

Artifact build

  • macOS arm64 and x64 DMGs and runtime packs were built and inspected on a macOS Woodpecker agent before upload.