You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Sharing a preview song on Android sent the raw WAV, which WhatsApp and other
messaging apps silently dropped — the reported "it only shared the text". Audio is
now transcoded before sharing on both mobile platforms, and shares declare an
explicit MIME type so receiving apps route them correctly.
"Start minimized to tray" was ignored on Windows. The Dart side honored the
flag, but the Windows runner showed the window unconditionally from its first-frame
callback, so the setting looked broken.
The dashboard grid kept stale data after replacing a missing preview song. Two
of the three recovery paths never refreshed the row, so the next play re-opened the
same "file not found" dialog instead of playing the file you had just picked. The
row and the player could also disagree about which path was saved.
Zero-byte attachments. The mobile share path could copy a staged file onto
itself and truncate it to nothing; empty output is now treated as a conversion
failure rather than handed to the share sheet.
Four hardcoded English "Preview song" strings are now localized.
Added
Hide DAW-generated date stamps in project names (new setting). Cubase and the
app's own remix-folder naming prefix projects with a creation date —
"2026-08-02 - Massive Attack - Teardrop" — pushing the real title out of the name
column. Handles all three component orderings, compact YYYYMMDD, and optional
trailing clock time, with the year validated to 1990–2099. Two-digit years are
deliberately left alone so track numbers like "01 - Intro" aren't mangled.
"Find automatically" when a preview song is missing — clears the dead reference
and re-runs mixdown detection. Desktop only, where detection actually runs.
iOS now matches Android for preview-song sharing and background audio: audio is
transcoded to AAC/.m4a via AVAssetExportSession, and playback continues with
lock-screen controls when the app loses focus. AVFoundation also reads AIFF, which
Android's extractor cannot.
Mobile long-press opens an action sheet (Play / Share / Details / Select)
instead of jumping straight into multi-select. Once selecting, long-press is a
plain toggle again.
Changed
BPM and key are edited on the detail page, not inline in the grid. Inline
editing put a bordered text field inside the cell — the source of the stray
"selected" highlight — and drag-selection no longer paints a range. Row highlight
and the P/O/D/F/S/Enter shortcuts are unchanged. The bpm.txt / key.txt sidecars
are still written, now from the detail page's autosave.
The title bar version string drops its leading v.
Under the hood
Android download is roughly half the size: a debug arm64 APK goes from
228.5 MB to 112.7 MB. The bundled 97 MB ffmpeg.exe was declared as a Flutter
asset, and that list has no per-platform filter — so it was being copied into the
Android APK, the macOS app, and the Linux tarball and Flatpak, none of which can
run a Windows executable. It now installs only on Windows, with its GPLv3 license
text beside it.
Android transcoding uses the platform's own MediaCodec via a ~200-line Kotlin
converter instead of a bundled ffmpeg plugin. The plugin also declared desktop
targets whose build scripts download a prebuilt ffmpeg at configure time, which
would have broken the network-isolated Flathub build outright.
CI gains an iOS compile check, so Swift, CocoaPods, and Info.plist breakage is
caught from non-Mac machines.