{"id":49960293,"url":"https://github.com/instazdll/waveflow","last_synced_at":"2026-05-18T02:13:11.676Z","repository":{"id":350756743,"uuid":"1205659951","full_name":"InstaZDLL/WaveFlow","owner":"InstaZDLL","description":"🌊 WaveFlow — Spotify-style desktop music player for your local library. Lock-free Rust audio (FLAC/MP3/DSD up to DSD1024), 6-band EQ, ReplayGain, gapless, crossfade, synced lyrics (LRCLIB), Last.fm scrobbling, DLNA server.","archived":false,"fork":false,"pushed_at":"2026-05-12T23:31:12.000Z","size":3449,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-13T00:28:35.864Z","etag":null,"topics":["audio-player","desktop-app","dlna","dsd","equalizer","flac","hi-res-audio","lastfm","local-music","lrclib","lyrics","music-player","react","replaygain","rust","scrobbling","spotify-clone","tauri","tauri-app","typescript"],"latest_commit_sha":null,"homepage":"https://www.waveflow.app","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/InstaZDLL.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-09T06:57:56.000Z","updated_at":"2026-05-12T23:31:24.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/InstaZDLL/WaveFlow","commit_stats":null,"previous_names":["instazdll/waveflow"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/InstaZDLL/WaveFlow","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InstaZDLL%2FWaveFlow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InstaZDLL%2FWaveFlow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InstaZDLL%2FWaveFlow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InstaZDLL%2FWaveFlow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/InstaZDLL","download_url":"https://codeload.github.com/InstaZDLL/WaveFlow/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InstaZDLL%2FWaveFlow/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33162448,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-17T22:39:12.733Z","status":"online","status_checked_at":"2026-05-18T02:00:06.436Z","response_time":71,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio-player","desktop-app","dlna","dsd","equalizer","flac","hi-res-audio","lastfm","local-music","lrclib","lyrics","music-player","react","replaygain","rust","scrobbling","spotify-clone","tauri","tauri-app","typescript"],"created_at":"2026-05-18T02:13:10.474Z","updated_at":"2026-05-18T02:13:11.670Z","avatar_url":"https://github.com/InstaZDLL.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/logo.svg\" width=\"80\" alt=\"WaveFlow logo\" /\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eWaveFlow\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eLocal music player for desktop — built with Tauri 2, React 19 \u0026 Rust\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/static/v1?label=version\u0026message=1.1.1\u0026color=emerald\u0026style=flat-square\" alt=\"Version\" /\u003e \u003c!-- x-release-please-version --\u003e\n  \u003cimg src=\"https://img.shields.io/github/downloads/InstaZDLL/WaveFlow/total?style=flat-square\u0026color=emerald\u0026label=downloads\" alt=\"Downloads\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/tauri-2.11-blue?style=flat-square\u0026logo=tauri\" alt=\"Tauri 2\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/react-19-61dafb?style=flat-square\u0026logo=react\" alt=\"React 19\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/rust-stable-orange?style=flat-square\u0026logo=rust\" alt=\"Rust\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/license-GPL--3.0-green?style=flat-square\" alt=\"License\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-lightgrey?style=flat-square\" alt=\"Platform\" /\u003e\n\u003c/p\u003e\n\n---\n\nWaveFlow is a local music player desktop app with a Spotify-inspired 3-panel UI. 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.\n\n## Download\n\nPre-built bundles for every tagged release are on the [GitHub Releases page](https://github.com/InstaZDLL/WaveFlow/releases/latest). Pick the one that matches your environment:\n\n### Linux\n\n**Recommended — use your distro's package manager** so updates flow through the same tool you already use for the rest of your system:\n\n- **Arch / Manjaro / EndeavourOS** — install [`waveflow-bin`](https://aur.archlinux.org/packages/waveflow-bin) from the AUR:\n  ```bash\n  yay -S waveflow-bin   # or paru, etc.\n  ```\n- **Fedora / RHEL / Rocky / Alma / CentOS Stream** — enable the [InstaZDLL/waveflow COPR](https://copr.fedorainfracloud.org/coprs/instazdll/waveflow/) once, then install via `dnf`:\n  ```bash\n  sudo dnf copr enable instazdll/waveflow\n  sudo dnf install waveflow\n  ```\n- **Debian / Ubuntu / Mint / Pop!\\_OS** — add the apt repo once, then install via `apt`. Note the package name is `wave-flow` (kebab-case, required by Debian naming rules — Tauri bundles it that way from the `WaveFlow` product name):\n  ```bash\n  sudo install -d -m 0755 /etc/apt/keyrings\n  curl -fsSL https://packages.buildkite.com/instazdll/waveflow/gpgkey \\\n    | sudo gpg --dearmor -o /etc/apt/keyrings/waveflow.gpg\n  echo \"deb [signed-by=/etc/apt/keyrings/waveflow.gpg] https://packages.buildkite.com/instazdll/waveflow/any/ any main\" \\\n    | sudo tee /etc/apt/sources.list.d/waveflow.list\n  sudo apt update \u0026\u0026 sudo apt install wave-flow\n  ```\n\nStandalone bundles (for everything else, or if you'd rather skip a repo):\n\n- `WaveFlow_\u003cver\u003e_linux-x86_64.deb` — Debian / Ubuntu / Mint / Pop!\\_OS. Native install via `apt`/`dpkg`, integrates with the system menu.\n- `WaveFlow_\u003cver\u003e_linux-x86_64.rpm` — Fedora / RHEL / openSUSE / Rocky / Alma. Native install via `dnf`/`rpm`.\n- `WaveFlow_\u003cver\u003e_linux-x86_64.AppImage` — Anything else (Calculate Linux, Oracle Linux, NixOS, …). `chmod +x` then run; no install required.\n\n### Windows\n\n- **One-liner via [winget](https://github.com/microsoft/winget-cli)** — `winget install InstaZDLL.WaveFlow`. Auto-tracks updates with `winget upgrade`.\n- `WaveFlow_\u003cver\u003e_windows-x86_64-setup.exe` — NSIS installer, **per-user** install under `%LOCALAPPDATA%`, doesn't need admin. This is what the in-app updater patches.\n- `WaveFlow_\u003cver\u003e_windows-x86_64.msi` — MSI installer, **system-wide** install under `Program Files`, suitable for IT deployment via GPO/SCCM. Requires admin.\n\nBoth are Authenticode-signed. SmartScreen may still warn the first few users while a fresh certificate accumulates reputation — click **More info → Run anyway**.\n\n### macOS\n\n- `WaveFlow_\u003cver\u003e_macos-universal.dmg` — Intel + Apple Silicon in one bundle.\n\nThe macOS build is **not Apple-Developer-signed yet**, so Gatekeeper will block the first launch:\n\n- macOS 14 (Sonoma) and earlier: **right-click the app → Open**, confirm the dialog.\n- macOS 15 (Sequoia) and later: launch normally, then go to **System Settings → Privacy \u0026 Security** and click **Open Anyway** next to the blocked app.\n- Terminal escape hatch (any version): `xattr -cr /Applications/WaveFlow.app`\n\n### Auto-updates\n\nOnce installed (any of the above), the in-app updater fetches future versions automatically — but only the AppImage and the NSIS setup are auto-updatable. DEB / RPM / MSI are managed by their respective package managers and stay on the version you installed until you upgrade them externally.\n\n## Features\n\n| Area                | Highlights                                                                                                                                                                                                                                                                                                      | Deep dive                                |\n| ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- |\n| **Playback**        | Symphonia + cpal, lock-free 3-thread engine, real dual-decoder crossfade, ReplayGain, variable playback speed (0.5×–2×), output-device picker, OS media controls (SMTC / MPRIS / MediaRemote), persistent queue with shuffle / repeat / auto-advance                                                            | [docs](docs/features/playback.md)        |\n| **Library**         | Folder scanning + filesystem watcher, on-demand audio analysis (peak, loudness, ReplayGain, BPM), Hi-Res badges, multi-artist split, POPM 5-star ratings, A-Z navigator, multi-select action bar                                                                                                                | [docs](docs/features/library.md)         |\n| **Playlists**       | Drag-and-drop reorder (virtualised), bulk add from any source, M3U import / export with basename-fallback matching, likes, recently-played                                                                                                                                                                      | [docs](docs/features/playlists.md)       |\n| **Smart playlists** | Auto-generated **Daily Mix** family bucketed by tempo, with composite artist-photo covers rendered from your Deezer cache                                                                                                                                                                                       | [docs](docs/features/smart-playlists.md) |\n| **Integrations**    | Deezer (artwork + labels), Last.fm (bios + scrobbling with retry queue), LRCLIB (synchronised lyrics), Discord Rich Presence (\"Listening to WaveFlow\" with cover + progress bar) — all cached locally for offline use                                                                                           | [docs](docs/features/integrations.md)    |\n| **UI \u0026 UX**         | Spotify-style 3-panel layout, system tray, statistics dashboard with JSON export, **WaveFlow Wrapped** year-in-review (story-style overlay), virtual scroll for 6000+ tracks, dark mode (View Transitions API), 17 locales (RTL-aware), per-profile isolated DB with scheduled auto-backup, signed auto-updater | [docs](docs/features/ui.md)              |\n\n## Tech Stack\n\n| Layer                     | Technologies                                                                                                                       |\n| ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |\n| **Desktop shell**         | Tauri 2.10 (tray icon, opener, dialog, updater plugins)                                                                            |\n| **OS media controls**     | souvlaki 0.8 (SMTC / MPRIS / MediaRemote bridge)                                                                                   |\n| **Discord Rich Presence** | discord-rich-presence 1.1 (local IPC named pipe, no auth)                                                                          |\n| **Frontend**              | React 19, TypeScript, Vite 8, Tailwind CSS 4, Lucide icons, `@dnd-kit` (drag-and-drop), `@tanstack/react-virtual` (virtualization) |\n| **Backend**               | Rust, SQLite (sqlx), FTS5 contentless full-text search                                                                             |\n| **Audio**                 | symphonia 0.5 (decode), cpal 0.17 (output), rubato 2.0 (resample), rtrb 0.3 (SPSC ring)                                            |\n| **Metadata extraction**   | lofty 0.24 (tags, embedded art, POPM, INITIALKEY)                                                                                  |\n| **Imaging**               | image 0.25 + fast_image_resize 6 (SIMD thumbnails)                                                                                 |\n| **Filesystem watcher**    | notify 8 (debounced rescans of watched folders)                                                                                    |\n| **External APIs**         | Deezer public API (no auth) + Last.fm (read + signed methods via md-5 + reqwest 0.12 with rustls) + LRCLIB (synchronized lyrics)   |\n| **Package manager**       | Bun                                                                                                                                |\n\n## Getting Started\n\n```bash\n# Install dependencies\nbun install\n\n# Run the desktop app in development mode\nbun run tauri dev\n\n# Build for production\nbun run tauri build\n```\n\n## Development Commands\n\n```bash\nbun run dev          # Vite dev server only (no Tauri shell)\nbun run typecheck    # TypeScript check\nbun run lint         # ESLint\nbun run lint:fix     # ESLint with auto-fix\nbun run format       # Prettier\n\n# Rust backend\ncargo check --manifest-path src-tauri/Cargo.toml --all-targets\ncargo test  --manifest-path src-tauri/Cargo.toml\n```\n\n## Documentation\n\nPer-feature deep dives, architecture and storage layout live under [`docs/`](docs/README.md):\n\n- **Features** — [playback](docs/features/playback.md) · [library](docs/features/library.md) · [playlists](docs/features/playlists.md) · [smart playlists](docs/features/smart-playlists.md) · [integrations](docs/features/integrations.md) · [UI \u0026 UX](docs/features/ui.md)\n- **Architecture** — [audio engine](docs/architecture/audio.md) · [database \u0026 paths](docs/architecture/storage.md)\n- **Contributing** — [CONTRIBUTING.md](CONTRIBUTING.md) · [RELEASING.md](RELEASING.md)\n\n## License\n\n```\nCopyright (C) 2026 InstaZDLL\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program. If not, see \u003chttps://www.gnu.org/licenses/\u003e.\n```\n\nSee [LICENSE](LICENSE) for the full text.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finstazdll%2Fwaveflow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finstazdll%2Fwaveflow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finstazdll%2Fwaveflow/lists"}