WaveFlow

InstaZDLL · InstaZDLL.WaveFlow

Local-first music player with a Spotify-inspired UI.

WaveFlow is a local music player desktop app built with Tauri 2 and React 19. It scans your local audio folders, organizes tracks by album/artist/genre, and plays them with a real-time audio engine β€” no streaming, no cloud, your music stays on your machine. Features include smart playlists, BPM analysis, LRCLIB lyrics fetch, Last.fm scrobbling, Discord Rich Presence, DLNA streaming, a 6-band equalizer, A-B loop, sleep timer, mood radio, year-in-review Wrapped, and more.

winget install --id InstaZDLL.WaveFlow --exact --source winget

Latest 1.4.0

Release Notes

1.4.0 (2026-05-28) ✨ What's new in v1.4.0 WaveFlow 1.4.0 is the foundations & polish release β€” under the hood it lays the groundwork for the upcoming waveflow-server, on the surface it cleans up the rough edges you've been reporting against 1.3.0. No flashy new view this time, but the app is steadier, more correct, and Flathub-ready. 🧱 Architecture β€” waveflow-core workspace extraction (RFC-001 Phase 1.a) The Rust backend split into a Cargo workspace with two crates:

  • waveflow-core β€” portable business logic (domain types, repository traits + SQLite implementations, scanner helpers, smart-playlist engine, audio analysis, DSD format conversion, HTTP clients for Deezer / Last.fm / LRCLIB, artwork pipeline). Zero Tauri, zero cpal β€” designed to be reusable from the future waveflow-server.
  • waveflow β€” the Tauri 2 desktop app. Keeps the #[tauri::command] handlers, the real-time cpal + rtrb audio engine, the DLNA / OS media-controls / Discord RPC integrations, the watcher, tray, profile pool wiring. End-users won't notice anything different β€” the desktop app behaves identically. What changes is the future shape of the project: 1.5.0 will start hooking waveflow-server on top of the same waveflow-core crate so the desktop app and a future browser / mobile client can share scanning, repositories, and metadata enrichment without rewriting them. πŸŽ›οΈ Equalizer β€” popup ↔ Settings stay in sync (#166) The player-bar EQ popover and the Settings β†’ Playback EQ card now share live state through a new player:eq broadcast. Toggling the master switch, changing presets or nudging a band from either surface updates the other instantly β€” no more "popup says EQ is on, Settings says off". The popup bypass thumb also lands flush-left when OFF and flush-right when ON instead of looking drifted on Windows. As a bonus, picking an unknown preset key now surfaces an actual error instead of silently no-op'ing. 🎀 Lyrics editor β€” footer always reachable (#172) The Save / Cancel bar at the bottom of the lyrics editor could be pushed off-screen on 1920Γ—1080 displays with Windows scaling at 125% or higher. The modal now sizes itself like the onboarding wizard (calc(100vh - 2rem) + flex-1 body), so the action bar stays pinned at any zoom level. πŸ“š Library β€” "No cover" filter removed (#170) The albums-tab "No cover" checkbox was ambiguous enough that several users read it as "hide no-cover albums" and concluded their artwork had vanished. The legitimate use case (find missing covers to backfill) is already covered by RΓ©cupΓ©rer toutes les pochettes manquantes and the per-album cover picker, so the filter is gone for good β€” one less footgun. 🎨 Theming β€” topbar toggle preserves your family Picking Lavender Light and then clicking the sun/moon toggle now switches to Lavender (dark) instead of resetting to the global Γ‰meraude default β€” and vice-versa for every paired preset (Midnight, Sunset, Lavender, Crimson, Ocean). Themes without a counterpart (OLED, Neon) keep falling back to the global default swap so the toggle still does something sensible. πŸ“¦ Packaging β€” Flathub manifest (#164) A Flatpak manifest landed in tree, ready for submission to Flathub. The build uses the no-default-features path (no in-app updater, since Flatpak owns updates), and the script permissions in the bundle are now correctly non-executable per Flathub's review checklist. 🩹 Quality pass
  • Theme-pair fix and EQ broadcast cover the visible regressions from 1.3.0 that you reported.
  • Phase 1.a went through four rounds of CodeRabbit review before merge β€” dozens of edge cases caught and fixed (Windows path canonicalisation in playlists, DSD bit-depth ranking in browse SQL, transactional cleanup on profile init failure, file hash recomputation propagation, …).
  • release-please config updated to the post-workspace-split manifest paths so future minor bumps land in one shot without manual catch-up.
  • TypeScript-ESLint upgraded to the latest stable. πŸ“¦ Recommended install Use your distro's package manager so updates flow through the same tool you already use for the rest of your system. Windows winget install InstaZDLL.WaveFlow Arch / Manjaro / EndeavourOS / CachyOS yay -S waveflow-bin

or: paru -S waveflow-bin

Fedora / RHEL / Rocky / Alma / CentOS Stream sudo dnf copr enable instazdll/waveflow sudo dnf install waveflow Debian / Ubuntu / Mint / Pop!_OS The Debian package is wave-flow (kebab-case, required by the Debian naming spec β€” Tauri bundles it that way from the WaveFlow product name). sudo install -d -m 0755 /etc/apt/keyrings curl -fsSL https://packages.buildkite.com/instazdll/waveflow/gpgkey
| sudo gpg --dearmor -o /etc/apt/keyrings/waveflow.gpg echo "deb [signed-by=/etc/apt/keyrings/waveflow.gpg] https://packages.buildkite.com/instazdll/waveflow/any/ any main"
| sudo tee /etc/apt/sources.list.d/waveflow.list sudo apt update && sudo apt install wave-flow macOS No package manager yet β€” grab the .dmg from the assets below. The bundle is not Apple-Developer-signed; right-click β†’ Open the first time, or run xattr -cr /Applications/WaveFlow.app to clear the quarantine flag. Standalone download Everything is also available as a raw bundle in the assets below β€” .AppImage, .deb, .rpm, .exe, .msi, .dmg for users who'd rather skip the repo.

⚠️ Build in progress β€” the desktop bundles (.AppImage, .deb, .rpm, .exe, .msi, .dmg) and the signed updater manifest are still being produced by the release workflow (~15–20 min total). Track progress on actions/runs/26607029021. The package-manager install commands above will start working once the downstream packagers (winget, AUR, Copr, apt) finish their own pipelines β€” usually within the hour after this build turns green.

Installer types: nullsoft , wix

Architecture Scope Type Download SHA256
x64 user nullsoft Download 024A919475DE24E7EA5028E0618D2C0F9048A08EF322FE3015BA2F8825894A72
x64 machine wix Download 3278D68F7F99282B0D65495B5B7CFFE9D577FE8471DC71B2D9B68F02D09D07D4

Details

Homepage
https://waveflow.app/
License
GPL-3.0
Publisher
InstaZDLL
Support
https://github.com/InstaZDLL/WaveFlow/issues
Privacy Policy
https://github.com/InstaZDLL/WaveFlow/blob/main/.github/SECURITY.md
Copyright
Copyright Β© 2026 InstaZDLL. Licensed under GPL-3.0-only.
Moniker
waveflow

Tags

audiodesktopflaclocal-firstlrclibmusicmusic-playerreplaygainspotifytauri

Older versions (5)

1.3.0
Architecture Scope Type Download SHA256
x64 user nullsoft Download A0DFBFB2DB7F22E07A0F962A4A43D2AE3451DA39F5DE44F73DC21F23D3784CBF
x64 machine wix Download 01C9C738F7587FD964ED5CF0B72218A33A128BAAF2D397F15EA32169A80BF4C6
1.2.0
Architecture Scope Type Download SHA256
x64 user nullsoft Download EE1125B3D6A9E14ECE1BF83EE2260F1939057AC55D5977F15CDC7475ADA76FB9
x64 machine wix Download 29EB78E31EBCE1ADD7683EB56635A2CD130ADCAC016F826B142A4C241F73C1BF
1.1.1
Architecture Scope Type Download SHA256
x64 user nullsoft Download 2B0E92CCB260A68FED2FDD561E5F340F7714A7169EC4AF8310766BE245EE4E40
x64 machine wix Download DDF914599C869076114EE28DF0314C53AF96410C24E3FC6FD468162A7F7BBFF2
1.1.0
Architecture Scope Type Download SHA256
x64 user nullsoft Download 44960C29A8338E0EA44DCE25204F2E1D62362F81C67C72D18F8CFA67B119A99C
x64 machine wix Download 7C190FA36DF0D49C29804879A611516AD19C56A8C7107F98882E1C5B115CB302
1.0.0
Architecture Scope Type Download SHA256
x64 user nullsoft Download 0B1D62F7F6AB24382A90E95EB3C219973BC6308F29FFBC798073E3589D8AFADA
x64 machine wix Download D127A3592CC4703593804FA38E727C34147932D3910A1EA7F98CFF8F751BF528