Skip to content

v2.7.4

Latest

Choose a tag to compare

@ggbecker ggbecker released this 12 Aug 20:25
· 41 commits to main since this release

Fixed

  • 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.