From 980863ce1fcdbb529082155e481d801e19497893 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 19 Aug 2026 18:18:19 +0000 Subject: [PATCH] chore(main): release 1.8.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 216 +++++++++++++++++++++++++++ README.md | 2 +- package.json | 2 +- src-tauri/crates/app/Cargo.toml | 2 +- src-tauri/crates/app/tauri.conf.json | 2 +- src-tauri/crates/core/Cargo.toml | 2 +- 7 files changed, 222 insertions(+), 6 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 64e0684f..099626f4 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "1.7.0" + ".": "1.8.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index de4f9694..02ae5be9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,221 @@ # Changelog +## [1.8.0](https://github.com/InstaZDLL/WaveFlow/compare/v1.7.0...v1.8.0) (2026-08-19) + + +### Features + +* **artist:** spotify-style hero backdrop on the artist page ([#482](https://github.com/InstaZDLL/WaveFlow/issues/482)) ([4b3f120](https://github.com/InstaZDLL/WaveFlow/commit/4b3f120e455f93e70559582d4aede4b977b67dbd)) +* **audio:** add audio.dsd_dop setting command + hydration ([#495](https://github.com/InstaZDLL/WaveFlow/issues/495)) ([98207d8](https://github.com/InstaZDLL/WaveFlow/commit/98207d8e65fafe8982af61a5633cdd3cefa48875)) +* **audio:** add DSD-over-PCM (DoP) encoder core module ([3d03b43](https://github.com/InstaZDLL/WaveFlow/commit/3d03b43794a8448389307ea68243a7de5504fd26)) +* **audio:** add wasapi exclusive dop output backend ([#495](https://github.com/InstaZDLL/WaveFlow/issues/495)) ([81c068e](https://github.com/InstaZDLL/WaveFlow/commit/81c068e151e93518ebf45794b7bc8fe3c3754d73)) +* **audio:** expose dop toggle, pipeline pill and i18n ([#495](https://github.com/InstaZDLL/WaveFlow/issues/495)) ([7f98bd5](https://github.com/InstaZDLL/WaveFlow/commit/7f98bd5c2669a765ddb1aee52cb6757b7e1b636b)) +* **audio:** native DSD via DoP (DSD over PCM) on WASAPI Exclusive ([db340d1](https://github.com/InstaZDLL/WaveFlow/commit/db340d190fbb297231c00d234a366831f01c2dc7)) +* **audio:** native dsd via dop on linux (raw hw: alsa) ([#495](https://github.com/InstaZDLL/WaveFlow/issues/495)) ([e20aa16](https://github.com/InstaZDLL/WaveFlow/commit/e20aa1682cfd516b0432d2d3cb52904fd8e089dd)) +* **audio:** native dsd via dop on macos (coreaudio hog mode) ([#495](https://github.com/InstaZDLL/WaveFlow/issues/495)) ([8b80c9c](https://github.com/InstaZDLL/WaveFlow/commit/8b80c9cba3c269d7fdd43ced115c10f9513bc08c)) +* **audio:** wire dop into the decoder and per-track output switch ([#495](https://github.com/InstaZDLL/WaveFlow/issues/495)) ([41b17db](https://github.com/InstaZDLL/WaveFlow/commit/41b17dbf8309a1acfea36fd162fd51f9669d97bd)) +* **canvas:** opt-in local cache for plugin Canvases ([#473](https://github.com/InstaZDLL/WaveFlow/issues/473)) ([70cd206](https://github.com/InstaZDLL/WaveFlow/commit/70cd2064e4d0309b31d42ebfb285cd702764c595)) +* **canvas:** opt-in local cache for plugin Canvases ([#473](https://github.com/InstaZDLL/WaveFlow/issues/473)) ([8ce04be](https://github.com/InstaZDLL/WaveFlow/commit/8ce04be0bab0f117e4b19f93ea3fd73124a5313c)) +* **canvas:** per-track looping Canvas behind the now-playing view ([#442](https://github.com/InstaZDLL/WaveFlow/issues/442)) ([b5a8909](https://github.com/InstaZDLL/WaveFlow/commit/b5a89095fbb1abfa8c8a11e62453af64a4b9e2c1)) +* **canvas:** per-track looping Canvas behind the now-playing view ([#442](https://github.com/InstaZDLL/WaveFlow/issues/442)) ([f57d162](https://github.com/InstaZDLL/WaveFlow/commit/f57d162728e7163d6938522fee7e6a25219e4cf9)) +* **canvas:** waveflow:canvas/v1 world for per-track canvas plugins ([#473](https://github.com/InstaZDLL/WaveFlow/issues/473)) ([fcdc1e5](https://github.com/InstaZDLL/WaveFlow/commit/fcdc1e5de77eb1fb7f7bd398f48bf41634a952d5)) +* **canvas:** waveflow:canvas/v1 world for per-track Canvas plugins ([#473](https://github.com/InstaZDLL/WaveFlow/issues/473)) ([de01b35](https://github.com/InstaZDLL/WaveFlow/commit/de01b35b083d1929114d0ed46e3f21a1ac91f97c)) +* **context-menu:** open the track menu from the keyboard everywhere ([fc554b3](https://github.com/InstaZDLL/WaveFlow/commit/fc554b35f8a0fa06f2d870fbeb5d1e1e0055e756)) +* **context-menu:** open the track menu from the keyboard everywhere ([0fb44c3](https://github.com/InstaZDLL/WaveFlow/commit/0fb44c393d4070a72347a3a45b440b5251cb3cd6)), closes [#436](https://github.com/InstaZDLL/WaveFlow/issues/436) +* **library:** deep rescan for the whole library, not just one folder ([c4f25ac](https://github.com/InstaZDLL/WaveFlow/commit/c4f25acbbd02f01e1b13c62d0d88e2624b423fa0)), closes [#457](https://github.com/InstaZDLL/WaveFlow/issues/457) +* **library:** grid tab for user playlists ([542a0ff](https://github.com/InstaZDLL/WaveFlow/commit/542a0ff7178a4f5cf71821ec82d2d22ea5b23f54)), closes [#461](https://github.com/InstaZDLL/WaveFlow/issues/461) +* **lyrics:** progressive fill on the word being sung ([8965f09](https://github.com/InstaZDLL/WaveFlow/commit/8965f097618c12e6941ced0c6a2504afa7289c70)) +* **lyrics:** progressive fill on the word being sung ([917b331](https://github.com/InstaZDLL/WaveFlow/commit/917b3311a7276aa5cac9478c519c58075a94fa20)) +* **maintenance:** one-time cleanup of cached album covers for art-having albums ([#493](https://github.com/InstaZDLL/WaveFlow/issues/493)) ([d9db659](https://github.com/InstaZDLL/WaveFlow/commit/d9db65939cf767a31481b3ee766577a519f8c3cf)) +* **mini-player:** volume slider and mute in the cover overlay ([850556d](https://github.com/InstaZDLL/WaveFlow/commit/850556da24d97db54fb14af96dfd650fcc946d49)) +* **mini-player:** volume slider and mute in the cover overlay ([45faadb](https://github.com/InstaZDLL/WaveFlow/commit/45faadbe2beb6a03051bdc5c92e5fec5728dbc29)) +* **mpd:** serve the MPD protocol so existing clients can drive playback ([b250be6](https://github.com/InstaZDLL/WaveFlow/commit/b250be6c253b7bd31d304c384f4d6e4de6bd170f)) +* **mpd:** serve the MPD protocol so existing clients can drive playback ([0bae7ad](https://github.com/InstaZDLL/WaveFlow/commit/0bae7ad2c996cdc55620e9197ed1b56ef685061f)), closes [#471](https://github.com/InstaZDLL/WaveFlow/issues/471) +* **now-playing:** cover ↔ artist crossfade slideshow ([#466](https://github.com/InstaZDLL/WaveFlow/issues/466)) ([62b33ed](https://github.com/InstaZDLL/WaveFlow/commit/62b33ed666e1b0e5dc91740844ef326a0e5a81d0)) +* **now-playing:** cover ↔ artist crossfade slideshow ([#466](https://github.com/InstaZDLL/WaveFlow/issues/466)) ([fd90186](https://github.com/InstaZDLL/WaveFlow/commit/fd901869d0d2ef6c79cbe7b53d338de475727216)) +* **player:** user-selectable spectrum visualizer colors ([#468](https://github.com/InstaZDLL/WaveFlow/issues/468)) ([b5ef338](https://github.com/InstaZDLL/WaveFlow/commit/b5ef338a25b73d6ce3ff1b8ada818ff9b7181214)) +* **player:** user-selectable spectrum visualizer colors ([#468](https://github.com/InstaZDLL/WaveFlow/issues/468)) ([904b652](https://github.com/InstaZDLL/WaveFlow/commit/904b6525890037f8883e6c8068001679e147617c)) +* **plugins:** add waveflow:ui/v1 world host surface + redacted library read ([#443](https://github.com/InstaZDLL/WaveFlow/issues/443)) ([a48cab8](https://github.com/InstaZDLL/WaveFlow/commit/a48cab8c9b18f73d261b16bca9648a849cb15cc1)) +* **plugins:** disclose ui library.read_artists permission in the store ([afe2d62](https://github.com/InstaZDLL/WaveFlow/commit/afe2d6297e1d3a0b664cf9e5e5ee32e61dca3b6a)) +* **plugins:** disclose ui library.read_artists permission in the store ([92fada3](https://github.com/InstaZDLL/WaveFlow/commit/92fada310646e1031b613a9387d8077e44280f48)) +* **plugins:** localized manifest descriptions & option labels ([a39e1cf](https://github.com/InstaZDLL/WaveFlow/commit/a39e1cf24b468e94f43e9465e400d822459c84c6)), closes [#440](https://github.com/InstaZDLL/WaveFlow/issues/440) +* **plugins:** publish-safe `*_i18n` sibling for localized strings ([e76b70f](https://github.com/InstaZDLL/WaveFlow/commit/e76b70fb519ea981e9854425d2f3ebd2bf1c3c35)), closes [#440](https://github.com/InstaZDLL/WaveFlow/issues/440) +* **plugins:** render ui-world plugin views + dynamic sidebar ([#443](https://github.com/InstaZDLL/WaveFlow/issues/443) Part 2) ([d4c44eb](https://github.com/InstaZDLL/WaveFlow/commit/d4c44eb5024a7b8e3aa42170c0ab5bd693788297)) +* **plugins:** render ui-world plugin views + dynamic sidebar ([#443](https://github.com/InstaZDLL/WaveFlow/issues/443) Part 2) ([7b8cd27](https://github.com/InstaZDLL/WaveFlow/commit/7b8cd278b79e001b8f3eb6bb123023d98340edf2)) +* **plugins:** support direct download_url in registry entries ([c6d4bc7](https://github.com/InstaZDLL/WaveFlow/commit/c6d4bc74757d45c8581aefb55d3f13eccf8b34c0)) +* **plugins:** support direct download_url in registry entries ([cd54eb8](https://github.com/InstaZDLL/WaveFlow/commit/cd54eb8c62f0092914222b5609f3d2cc8429f4c6)) +* **plugins:** waveflow:ui/v1 world host surface + redacted library read ([#443](https://github.com/InstaZDLL/WaveFlow/issues/443) Part 1) ([5885099](https://github.com/InstaZDLL/WaveFlow/commit/58850991d5943d5e9eade539705ff5399c7ebabf)) +* **reconciliation:** add exact track linking ([cc533aa](https://github.com/InstaZDLL/WaveFlow/commit/cc533aaabc52e3ba7ae6ac4664ae584aebd46ec8)) +* **reconciliation:** add exact track linking ([d8f6212](https://github.com/InstaZDLL/WaveFlow/commit/d8f62122b53bcfad736fae510d5f09f4bb566511)) +* **reconciliation:** add explicit playlist conversion ([d96cba2](https://github.com/InstaZDLL/WaveFlow/commit/d96cba272aafced3785c20579cd76317481bb39c)) +* **reconciliation:** add explicit playlist conversion ([60359d5](https://github.com/InstaZDLL/WaveFlow/commit/60359d57bf843076c2c38705919c752de57268eb)) +* **reconciliation:** copy linked user data explicitly ([ec6a190](https://github.com/InstaZDLL/WaveFlow/commit/ec6a1907adee58fe0d63ca73693b8b645f3df155)) +* **reconciliation:** copy linked user data explicitly ([96e8bc8](https://github.com/InstaZDLL/WaveFlow/commit/96e8bc8851174135d24ed5a7738d054defba31b3)) +* **reconciliation:** progress + cancellation and true-schema tests ([9baf895](https://github.com/InstaZDLL/WaveFlow/commit/9baf8950a43b1df56425f9f07845bcefcc34ae16)) +* **reconciliation:** scan progress, cancellation and true-schema tests ([63129a7](https://github.com/InstaZDLL/WaveFlow/commit/63129a7c89e15958c635f6b554a8242dc318e4a0)) +* **remote-playback:** prefer confirmed local links ([5548cea](https://github.com/InstaZDLL/WaveFlow/commit/5548ceacdbd5edeaedc5521024cd362b6bdf1443)) +* **remote-playback:** prefer confirmed local links ([97e6d16](https://github.com/InstaZDLL/WaveFlow/commit/97e6d167f20eac449ee11ebc9a86bf06ccd41d54)) +* **remote:** 1:1 parity for the remote playlist view ([b16deb8](https://github.com/InstaZDLL/WaveFlow/commit/b16deb89eccf26316e772b0be757289e491f1cc3)) +* **remote:** a diagnostics card so the protocol can be watched by a human ([f0e78ef](https://github.com/InstaZDLL/WaveFlow/commit/f0e78ef611f19b2232b6c273162126d09aef00fe)) +* **remote:** add tracks to a remote playlist via catalogue search ([d581ab4](https://github.com/InstaZDLL/WaveFlow/commit/d581ab4b4a34e67fde19d65223ea39dc8254fad7)) +* **remote:** artist photo, hero background and bio by name ([9697deb](https://github.com/InstaZDLL/WaveFlow/commit/9697deb2812a9d7bcc301eecd3922406b2b4d603)) +* **remote:** auto-generate the remote playlist cover from track art ([24b343e](https://github.com/InstaZDLL/WaveFlow/commit/24b343e80ed35a0a9dea6817f62062b64726b086)) +* **remote:** bootstrap from a snapshot and walk the journal ([faa608d](https://github.com/InstaZDLL/WaveFlow/commit/faa608dfb1410e5630e14f70a219d559ff5e23b6)) +* **remote:** bounded progress bar for remote tracks ([1e1f473](https://github.com/InstaZDLL/WaveFlow/commit/1e1f4731cfd74e601832c6f0461dbb4c3da6f40e)) +* **remote:** bring remote playlist view to 1:1 with local ([d250a08](https://github.com/InstaZDLL/WaveFlow/commit/d250a087a1f4a94c5f181c807bdd6d0c4c8a80f0)) +* **remote:** capture the server's content fingerprint, unread ([74f5063](https://github.com/InstaZDLL/WaveFlow/commit/74f50630b9ddc2d6e74e25c62fa2c1565225b297)) +* **remote:** clickable albums with a remote album view ([c305351](https://github.com/InstaZDLL/WaveFlow/commit/c3053510f0d566f2af432b127beebf8dd2780aeb)) +* **remote:** clickable remote artist + heal stale artist_id cache ([90b4c8d](https://github.com/InstaZDLL/WaveFlow/commit/90b4c8de01b63ce45a99ec3c9de2b364234f970f)) +* **remote:** columned track table on the remote playlist view ([2034a83](https://github.com/InstaZDLL/WaveFlow/commit/2034a8338cc5c063bd1e292c531eea060d350ab8)) +* **remote:** complete the write surface with scrobbles, queue and shares ([9b1157e](https://github.com/InstaZDLL/WaveFlow/commit/9b1157eef1d2e0ac06ee1022b3b4bfbe7f62c3d5)) +* **remote:** finish native remote-source integration ([aa39ee0](https://github.com/InstaZDLL/WaveFlow/commit/aa39ee0c8e83e3aa6691386e9e73c331f9fdce1d)) +* **remote:** foundations for the remote source and sync v2 ([e2d6627](https://github.com/InstaZDLL/WaveFlow/commit/e2d66270454ac42eac09db7d36fdaa92f8248104)) +* **remote:** localize the sync_v2 remote surface across all 17 locales ([edebaeb](https://github.com/InstaZDLL/WaveFlow/commit/edebaebbd91bc1404b6ab4786ec1ac33a7ee1c89)) +* **remote:** play remote playlists as a native queue ([53d4191](https://github.com/InstaZDLL/WaveFlow/commit/53d41915be61ffefc65f2c2d7976125d1f0d39db)) +* **remote:** queue local changes and push them back as replayable calls ([e03756e](https://github.com/InstaZDLL/WaveFlow/commit/e03756e575015bc9d5c5d68ac6272de0c8fc4b55)) +* **remote:** read the projection back out for the interface ([94bf6fa](https://github.com/InstaZDLL/WaveFlow/commit/94bf6fae9861d11c4329874c130e8189ce89828b)) +* **remote:** remote music source and user-data sync v2 (RFC-005) ([3818b3a](https://github.com/InstaZDLL/WaveFlow/commit/3818b3a4978866dd6ab6382e3605389d15192181)) +* **remote:** remove a track from a remote playlist ([544b834](https://github.com/InstaZDLL/WaveFlow/commit/544b83425d321b299108ef3c690dd373ed25f6f5)) +* **remote:** reorder tracks in a remote playlist ([5b50b98](https://github.com/InstaZDLL/WaveFlow/commit/5b50b9894e7462d3179d25e3fec7fd61710121b1)) +* **remote:** scrub remote tracks via HTTP range seeking ([3615319](https://github.com/InstaZDLL/WaveFlow/commit/36153192ac627c68fd6179abd46bc7471e55817f)) +* **remote:** separate the two 409s and express clearing a field ([7b62858](https://github.com/InstaZDLL/WaveFlow/commit/7b62858deb8ff5827d8e0be9a8c50ec5507f48d6)) +* **remote:** server-first lyrics for remote tracks ([5b822ed](https://github.com/InstaZDLL/WaveFlow/commit/5b822ed6d7f886ddc6ade533c2e7c945ea311fac)) +* **remote:** shares as queued mutations on the v2 endpoints ([d321248](https://github.com/InstaZDLL/WaveFlow/commit/d32124825729d2c2c902ea466ee35270d9161549)) +* **remote:** show the cover art for a remote track ([ba9c470](https://github.com/InstaZDLL/WaveFlow/commit/ba9c470a4072a224805008452549d3745e372690)) +* **remote:** show the remote play queue in the queue panel ([ac10c35](https://github.com/InstaZDLL/WaveFlow/commit/ac10c35f3405b933ea1fad6279d9fc3b3411d6cd)) +* **remote:** sign in through the browser with authorization code + PKCE ([7ce6802](https://github.com/InstaZDLL/WaveFlow/commit/7ce6802cc2ef095071591a81447366c30e4ea949)) +* **remote:** similar artists on the remote artist view + ship sync_v2 ([2f76759](https://github.com/InstaZDLL/WaveFlow/commit/2f76759c8bd0345965830b8d21db52c20f726acf)) +* **remote:** stream remote tracks via server stream tickets ([3fb3aba](https://github.com/InstaZDLL/WaveFlow/commit/3fb3aba88e1747652f289593bc27c0ddd4b69c79)) +* **remote:** surface the remote source in the sidebar ([bbf1130](https://github.com/InstaZDLL/WaveFlow/commit/bbf11304e857cadd6cbb7a79896ba253ad7fa157)) +* **remote:** wake up on the journal socket instead of only polling ([e5e65cd](https://github.com/InstaZDLL/WaveFlow/commit/e5e65cd003e44ab87e2fd2aff78122a61c069e2b)) +* **remote:** wire user gestures to the queue ([f9fdd25](https://github.com/InstaZDLL/WaveFlow/commit/f9fdd2551dd7c93198354873abe0351ac611306e)) + + +### Bug Fixes + +* **album:** carry the full track row so Properties isn't half empty ([c2515fb](https://github.com/InstaZDLL/WaveFlow/commit/c2515fb5fdd4cf1ea0523001d7d10943cc5f2a5f)), closes [#458](https://github.com/InstaZDLL/WaveFlow/issues/458) +* **artist:** address review on the hero backdrop ([58d8348](https://github.com/InstaZDLL/WaveFlow/commit/58d83486c99ab35ef3878727411a836e5e5655cf)) +* **artist:** clear the read stamp on profile change ([da06a78](https://github.com/InstaZDLL/WaveFlow/commit/da06a78033356380ab9f563f60a4cd27ebb7a7c3)) +* **artist:** keep an in-flight read from clobbering an optimistic toggle ([4ebc933](https://github.com/InstaZDLL/WaveFlow/commit/4ebc9330e126d9a778e20ee35f2ae441b32d69b5)) +* **artist:** reset the hero preference when the profile changes ([5ad81f2](https://github.com/InstaZDLL/WaveFlow/commit/5ad81f2a79c00c51b834127cb12810e143684bcc)) +* **artist:** scope the hero preference's resolved flag to the profile ([d9605ff](https://github.com/InstaZDLL/WaveFlow/commit/d9605ffb917da7e730cd2a9a4394f7172889cce8)) +* **audio:** drop a sub-stride DSD remainder instead of decoding it ([cb430a6](https://github.com/InstaZDLL/WaveFlow/commit/cb430a6b56c2237263c003ad92b96619eed97d3e)) +* **audio:** fail the load when the output switch leaves us with nothing ([0514647](https://github.com/InstaZDLL/WaveFlow/commit/0514647fcccd6e326750a2531e9a639accfdc8de)) +* **audio:** finish short DSD block reads before decoding them ([c2a5531](https://github.com/InstaZDLL/WaveFlow/commit/c2a55315e30e2c418d582b7d8984bd33ae9a4a01)) +* **audio:** gate dop strictly to windows / wasapi exclusive ([#495](https://github.com/InstaZDLL/WaveFlow/issues/495)) ([16118d4](https://github.com/InstaZDLL/WaveFlow/commit/16118d46bfec17acb89fe55ae34a079492e7e070)) +* **audio:** keep the DSD seek offset exact ([dd70a23](https://github.com/InstaZDLL/WaveFlow/commit/dd70a23ba1269bc4455aff1628cc781077aeb5c6)) +* **audio:** key the DoP speed pin off speed_dirty, not the value ([d83d23c](https://github.com/InstaZDLL/WaveFlow/commit/d83d23c0f8e25f87212d8708d8be2a21cb2ff44c)) +* **audio:** left-align 24-bit samples in the 32-bit WASAPI container ([7e4c842](https://github.com/InstaZDLL/WaveFlow/commit/7e4c84273e80b54e6b7e63efb9cffc4e96415b44)) +* **audio:** left-align 24-bit samples in the 32-bit WASAPI container ([2192622](https://github.com/InstaZDLL/WaveFlow/commit/21926222293e46d27588a82c7cfc2079c0b74fb4)) +* **audio:** left-align the DoP word in the padded WASAPI container ([44fe37d](https://github.com/InstaZDLL/WaveFlow/commit/44fe37d8f53e8a32c97e71ac34ae5da179cbf282)) +* **audio:** pass the DoP flag on the remote local-first open ([c710a84](https://github.com/InstaZDLL/WaveFlow/commit/c710a8484a0b84380d660cbe5ac6a5a42e9c04ee)) +* **audio:** pin speed and honour A-B repeat on the DoP path ([03d8220](https://github.com/InstaZDLL/WaveFlow/commit/03d822067a4d050209d2d0a8d12583a54c7e963a)) +* **audio:** rebuild the DoP output when the channel count changes ([8f8e8bf](https://github.com/InstaZDLL/WaveFlow/commit/8f8e8bff75094889da8a7a1304bc5fbd3b49fc58)) +* **audio:** refuse the DoP open when the old physical format is unreadable ([ad611bb](https://github.com/InstaZDLL/WaveFlow/commit/ad611bb29a5beb018240b0487620cfea2a9439ca)) +* **audio:** report a lost CoreAudio device instead of parking on it ([84cf6bd](https://github.com/InstaZDLL/WaveFlow/commit/84cf6bd8c4a253cb0be2074eda20126ac7a6f3ff)) +* **audio:** resolve the ALSA card by name and finish short writes ([d6d0879](https://github.com/InstaZDLL/WaveFlow/commit/d6d08796a582f4373903d7ea5df71ce2f45ea027)) +* **audio:** restore the CoreAudio physical format and watch IsAlive ([23ee71f](https://github.com/InstaZDLL/WaveFlow/commit/23ee71f2675d140d50341d26761c65a97ed3168a)) +* **audio:** restore the CoreAudio physical format and watch IsAlive ([2c6ce07](https://github.com/InstaZDLL/WaveFlow/commit/2c6ce0732c5d4f4be64db802ec216d535596dd00)) +* **audio:** restore the PCM output before a remote or URL load ([184de8f](https://github.com/InstaZDLL/WaveFlow/commit/184de8f503cdeab6e27a416ba47de78cc2c7ade8)) +* **audio:** stamp the DoP marker from one running counter ([0e3d4da](https://github.com/InstaZDLL/WaveFlow/commit/0e3d4da37d17ddc57bba27380afd9d4be2977856)) +* **audio:** validate Content-Range start byte on a seek 206 ([4b4322e](https://github.com/InstaZDLL/WaveFlow/commit/4b4322e3c89110fbc5a548c144709518bfd699cb)) +* **canvas:** atomic mp4 publish + profile-scoped Canvas cache ([fe909ff](https://github.com/InstaZDLL/WaveFlow/commit/fe909ff9838870dd5a285c8ca83672a48eebcbba)) +* **canvas:** harden Canvas cache profile isolation + atomic mp4 publish ([d07be8f](https://github.com/InstaZDLL/WaveFlow/commit/d07be8f866cc1e13b9fe2a97554fb7d3b1b8f611)) +* **canvas:** re-validate cache-download redirects (SSRF) + doc canvas world ([10f904b](https://github.com/InstaZDLL/WaveFlow/commit/10f904b2e0ad99a840100dd3ae6184bd17ed4d35)) +* **canvas:** treat an unsafe cache redirect as a hard security failure ([8d87e8c](https://github.com/InstaZDLL/WaveFlow/commit/8d87e8c24e26f416e5acb844ac412d72f5eb3553)) +* **context-menu:** drop a dead tab stop and a mislabelled row ([db09a80](https://github.com/InstaZDLL/WaveFlow/commit/db09a803bbe511b3f1d8fe71aa7700196f5fc497)), closes [#436](https://github.com/InstaZDLL/WaveFlow/issues/436) +* **db:** explain a downgrade instead of dying on the splash ([8e6c739](https://github.com/InstaZDLL/WaveFlow/commit/8e6c7398a5664dc4a03e88470b7791fc4d2bbc76)) +* **deezer:** cross-profile-safe cover prune + preserve hash on skipped download ([73b4482](https://github.com/InstaZDLL/WaveFlow/commit/73b44822658dd228433ed509eb3f11b446c55c51)) +* **deezer:** don't let a cover-less cache row block a re-fetch ([#493](https://github.com/InstaZDLL/WaveFlow/issues/493) review) ([94badcf](https://github.com/InstaZDLL/WaveFlow/commit/94badcf728943e0cd46c94fb911ca48b09821401)) +* **deezer:** only disk-cache an album cover when the album lacks local art ([#493](https://github.com/InstaZDLL/WaveFlow/issues/493)) ([5281d9d](https://github.com/InstaZDLL/WaveFlow/commit/5281d9d2ed9e356e63974dc45f68b0dd68ba3656)) +* **deezer:** only disk-cache an album cover when the album lacks local art ([#493](https://github.com/InstaZDLL/WaveFlow/issues/493)) ([ea14ec5](https://github.com/InstaZDLL/WaveFlow/commit/ea14ec579934a2ac5d1db409407cf5d146120685)) +* **deps:** force fast-uri >= 3.1.5 and resync the Flatpak sources ([e0ee50c](https://github.com/InstaZDLL/WaveFlow/commit/e0ee50ced6092a9c174c2aee4f8ab503f10af885)) +* **library:** one shared lock for every rescan control ([bca21df](https://github.com/InstaZDLL/WaveFlow/commit/bca21dfaebdcf996e1a53006eb89075961bea175)), closes [#457](https://github.com/InstaZDLL/WaveFlow/issues/457) +* **library:** reach the playlists empty state instead of a missing key ([83ea6b2](https://github.com/InstaZDLL/WaveFlow/commit/83ea6b279955e541545c52ef443dcbf67c8c9b77)), closes [#461](https://github.com/InstaZDLL/WaveFlow/issues/461) +* **library:** surface scan failures instead of silently succeeding ([0f867fe](https://github.com/InstaZDLL/WaveFlow/commit/0f867feee24748fc8e44c95102c2799a85e411cd)), closes [#457](https://github.com/InstaZDLL/WaveFlow/issues/457) +* **lyrics:** carry the fill across speed changes, stop at a full word ([23045ab](https://github.com/InstaZDLL/WaveFlow/commit/23045ab1f3e53da669e3a4b1421e89abd2124ab9)) +* **lyrics:** keep the fill responsive to seeks inside the active word ([8dfdc5c](https://github.com/InstaZDLL/WaveFlow/commit/8dfdc5ce12ca23f7a230df3c87c3185473186d53)) +* **lyrics:** re-anchor the fill when playback resumes ([15de90c](https://github.com/InstaZDLL/WaveFlow/commit/15de90cec35665aa8cfc094e2c56840d2bf4c492)) +* **lyrics:** reset lyrics context on remote transitions too ([9e353e1](https://github.com/InstaZDLL/WaveFlow/commit/9e353e1b3735a2dadad6f9110837ee7b72924f0c)) +* **lyrics:** retry LRCLIB fuzzily before the catch-all providers ([b733769](https://github.com/InstaZDLL/WaveFlow/commit/b733769f552d3bc03e9e136ef6165598d621b946)), closes [#463](https://github.com/InstaZDLL/WaveFlow/issues/463) +* **maintenance:** fail the cover prune if the profile list can't be read ([1b12cc6](https://github.com/InstaZDLL/WaveFlow/commit/1b12cc6829235b70364acc04933729660ceb109c)) +* **motion-cache:** strip trailing-dot hosts in SSRF guard + allow 10 redirects ([fff142d](https://github.com/InstaZDLL/WaveFlow/commit/fff142d4e8228de620a3d93db20b2b5903b341dc)) +* **motion-cache:** validate the initial url inside cache_mp4 (defence-in-depth) ([198ba47](https://github.com/InstaZDLL/WaveFlow/commit/198ba47591e55da1352fb4e97ba8fa955df4b8f4)) +* **mpd:** address CodeRabbit review — protocol conformance + robustness ([#471](https://github.com/InstaZDLL/WaveFlow/issues/471)) ([35c768d](https://github.com/InstaZDLL/WaveFlow/commit/35c768d51bd8180a808ee2c61bc5a71c8b919a78)) +* **mpd:** consistent snapshots + atomic writes + hardened MPD settings UI ([#471](https://github.com/InstaZDLL/WaveFlow/issues/471)) ([e654ec0](https://github.com/InstaZDLL/WaveFlow/commit/e654ec0d2931f4ad40f3134b8abb542079d7dba2)) +* **mpd:** reject `single oneshot` instead of persisting it as durable ([#471](https://github.com/InstaZDLL/WaveFlow/issues/471)) ([4d0b9fe](https://github.com/InstaZDLL/WaveFlow/commit/4d0b9fe3096f6d7faefc2a3e1b9ecdd03fb79343)) +* **mpd:** seek-in-place + serialized settings saves + UI options sync ([#471](https://github.com/InstaZDLL/WaveFlow/issues/471)) ([473837d](https://github.com/InstaZDLL/WaveFlow/commit/473837dacb23a3ba2cd0de984821b97557ea7df0)) +* **now-playing:** dedupe artist enrichment + gate slideshow fetch ([#466](https://github.com/InstaZDLL/WaveFlow/issues/466)) ([1d04cce](https://github.com/InstaZDLL/WaveFlow/commit/1d04cce92e5c78a6a5c79652225f15fb6124eb0b)) +* **now-playing:** exclude radio/Spotify tracks from the cover slideshow ([#466](https://github.com/InstaZDLL/WaveFlow/issues/466)) ([ec41261](https://github.com/InstaZDLL/WaveFlow/commit/ec41261bdc2b61fc72428d83d5840a753e708a70)) +* **now-playing:** tag panel artist image by artist id to avoid a stale flash ([#466](https://github.com/InstaZDLL/WaveFlow/issues/466)) ([c2dc991](https://github.com/InstaZDLL/WaveFlow/commit/c2dc991a3aca50cda32aae971a7b039f017e021d)) +* **player:** broadcast repeat, shuffle and like to the other window ([c0d4176](https://github.com/InstaZDLL/WaveFlow/commit/c0d4176bbbccdbaa80d6ad0b0b45292ffd791c7d)) +* **player:** broadcast repeat, shuffle and like to the other window ([d4129e6](https://github.com/InstaZDLL/WaveFlow/commit/d4129e62a6fe688d06cbd9dda4a8433754b83011)) +* **player:** gate visualizer color cycle until the profile's value loads ([858b206](https://github.com/InstaZDLL/WaveFlow/commit/858b20679ab60c5a391d3810de9f839b936e38f1)) +* **plugin-host:** dedup a cause against its parent, not the whole buffer ([5a7bff7](https://github.com/InstaZDLL/WaveFlow/commit/5a7bff7be30e2e1014d5a9ce27378ffa9850d5ad)), closes [#452](https://github.com/InstaZDLL/WaveFlow/issues/452) +* **plugin-host:** surface the cause chain behind an http error ([8546324](https://github.com/InstaZDLL/WaveFlow/commit/854632449a6c989464bcb898350c2c3dd6abcf2f)), closes [#452](https://github.com/InstaZDLL/WaveFlow/issues/452) +* **plugins:** busy-gate open-url + reject null badge elements ([#443](https://github.com/InstaZDLL/WaveFlow/issues/443)) ([3a39a0f](https://github.com/InstaZDLL/WaveFlow/commit/3a39a0f04922bdaf253e7e4a79a6ada61f760ecc)) +* **plugins:** clamp track_count to u32 range before narrowing ([#443](https://github.com/InstaZDLL/WaveFlow/issues/443)) ([241e46d](https://github.com/InstaZDLL/WaveFlow/commit/241e46d6a7654313c06bc5d73706913658a3ebb1)) +* **plugins:** gate artist snapshot on permission + validate descriptor JSON ([#443](https://github.com/InstaZDLL/WaveFlow/issues/443)) ([12bba19](https://github.com/InstaZDLL/WaveFlow/commit/12bba19a9efd5e4fec062961ffa6f197fe45e9eb)) +* **plugins:** harden ui view — separate flow tokens, a11y, text validation ([#443](https://github.com/InstaZDLL/WaveFlow/issues/443)) ([a00a217](https://github.com/InstaZDLL/WaveFlow/commit/a00a2173479a2bcd55c74ca96f9e32a9847a22c9)) +* **plugins:** skip blank entries when resolving a localized string ([4784b4a](https://github.com/InstaZDLL/WaveFlow/commit/4784b4af9be9fc00521f88e8b4b6055a8c2cbcd0)), closes [#440](https://github.com/InstaZDLL/WaveFlow/issues/440) +* **plugins:** validate download_url + install redirects with the SSRF guard ([977635b](https://github.com/InstaZDLL/WaveFlow/commit/977635bdec80d4f1b6ea1d10482c0e71a3b59447)) +* **plugins:** validate ui descriptor tree + loading states + hi grammar ([#443](https://github.com/InstaZDLL/WaveFlow/issues/443)) ([808fa09](https://github.com/InstaZDLL/WaveFlow/commit/808fa09b600a7ee52a589b5956ba814e7d5335b2)) +* **profile:** scope profile_setting reads and writes to a profile ([f1438f2](https://github.com/InstaZDLL/WaveFlow/commit/f1438f29cc6aacfa505b4355a7f25f8dd3d744cf)) +* **reconciliation:** address CodeRabbit review ([1c022f3](https://github.com/InstaZDLL/WaveFlow/commit/1c022f327a61df2534609bf7e9dce4d013ce6743)) +* **reconciliation:** address playlist conversion review ([8318ceb](https://github.com/InstaZDLL/WaveFlow/commit/8318ceb48bdcea1855dd0d4d7681a3823b4d4415)) +* **reconciliation:** arbitrate the phase on the empty-remote early return ([acf3098](https://github.com/InstaZDLL/WaveFlow/commit/acf30987f7cde885fe47337ed36398a8188dff70)) +* **reconciliation:** block unavailable local conversions ([a77d686](https://github.com/InstaZDLL/WaveFlow/commit/a77d686cb9ae5931e39290be94309594dc9775f4)) +* **reconciliation:** block unavailable playlist tracks ([330040d](https://github.com/InstaZDLL/WaveFlow/commit/330040d88dffdd196621c4e65dec7bd8d7051142)) +* **reconciliation:** close scan cancel races and listener leak ([be655f2](https://github.com/InstaZDLL/WaveFlow/commit/be655f2b5ebc8a92aaee71fa0f4da3299c09645d)) +* **reconciliation:** make cancel-vs-commit an atomic phase transition ([2cb5437](https://github.com/InstaZDLL/WaveFlow/commit/2cb54377e91226abbc7a9ceb14cf48444a1db7e6)) +* **reconciliation:** revalidate playlist link proofs ([42d6a83](https://github.com/InstaZDLL/WaveFlow/commit/42d6a83ac776429348cf047f3503828d2cf23774)) +* **reconciliation:** roll back reconcile on a cancel during commit phase ([eebdbae](https://github.com/InstaZDLL/WaveFlow/commit/eebdbae484e6df770136df97ad20ac9a48f459db)) +* **reconciliation:** signal already-running scans and cover cancellation ([07bc8c5](https://github.com/InstaZDLL/WaveFlow/commit/07bc8c5fc8879fe1cf4c393c859213a7346b4d0c)) +* **reconciliation:** verify playlist snapshot before commit ([e2055dd](https://github.com/InstaZDLL/WaveFlow/commit/e2055ddcc929c24e64d2f0e47dd1f5f456a8c1a8)) +* **release:** unbundle libwayland-client from the AppImage ([807428b](https://github.com/InstaZDLL/WaveFlow/commit/807428bb7467faed0a4b23820ca43ef83191b088)) +* **release:** unbundle libwayland-client from the AppImage ([d368e42](https://github.com/InstaZDLL/WaveFlow/commit/d368e425f957b2b1e3f32cfe6199d8b3606d7a41)) +* **remote-playback:** resume local source after device changes ([a1066ee](https://github.com/InstaZDLL/WaveFlow/commit/a1066eea99311a245f726783a162978c9c9de4b7)) +* **remote-ui:** artwork cache, stale-pass guards, availability hardening ([689b758](https://github.com/InstaZDLL/WaveFlow/commit/689b758870122b96ee6590220eb59069013679eb)) +* **remote-ui:** bound the artwork cache, reset cover on hash change ([7a23585](https://github.com/InstaZDLL/WaveFlow/commit/7a23585f951fabfae34c321a7311493f00d52788)) +* **remote-ui:** update remote artwork before paint ([5b40b36](https://github.com/InstaZDLL/WaveFlow/commit/5b40b3659e4b4222c0087a18d5d2a95cdb4e7441)) +* **remote:** address CodeRabbit review — correctness batch 1 ([51cf286](https://github.com/InstaZDLL/WaveFlow/commit/51cf286bdad181da3504e1de3c652ce1e8241a28)) +* **remote:** address deferred CodeRabbit findings from [#502](https://github.com/InstaZDLL/WaveFlow/issues/502) ([6221b99](https://github.com/InstaZDLL/WaveFlow/commit/6221b99fc864ac6545b1faeb41b7fac52773a60a)) +* **remote:** annotate RemoteClient lifetime in stream.rs ([41ce018](https://github.com/InstaZDLL/WaveFlow/commit/41ce018d98898650cdc441eeebc174fb3d1b9336)) +* **remote:** back off on socket sync failure, not on a profile switch ([ab71fa0](https://github.com/InstaZDLL/WaveFlow/commit/ab71fa0084b14656486569b4ad77024e400f303c)) +* **remote:** correct counter labels in ar, ja and zh-TW ([63249aa](https://github.com/InstaZDLL/WaveFlow/commit/63249aa947c36ad00307278c2764bce383e9b2aa)) +* **remote:** distinguish remote playback from web radio ([c74e3d7](https://github.com/InstaZDLL/WaveFlow/commit/c74e3d7beee27458e2f9d73763f27c222344c720)) +* **remote:** end the socket session when a catch-up fails ([0f541ad](https://github.com/InstaZDLL/WaveFlow/commit/0f541adb34a993896ec8973abc6ba97518670c12)) +* **remote:** give the account-switch test its NOT NULL cached_at ([d649c4a](https://github.com/InstaZDLL/WaveFlow/commit/d649c4ad0bd5d023316db47a78d6678497f19d58)) +* **remote:** idempotent placeholder resolve, FIFO-safe unreadable rows ([b84ac59](https://github.com/InstaZDLL/WaveFlow/commit/b84ac59b74e2be7a83fa6e53b5c74fd37cc5a468)) +* **remote:** ignore stray callbacks, bound the cached-id lookup ([1900322](https://github.com/InstaZDLL/WaveFlow/commit/1900322aee8ab0e373d3f1a551c7b526da8199fd)) +* **remote:** pin client+pool to one profile, share the rotated token ([32ab652](https://github.com/InstaZDLL/WaveFlow/commit/32ab65294d666311ed7a27d1f8909a6f45e45595)) +* **remote:** pluralize remote counters and fix flagged translations ([56e4be3](https://github.com/InstaZDLL/WaveFlow/commit/56e4be32fbf5b46d7e7ad884f2d608ed569fb934)) +* **remote:** profile-aware socket catch-up, case-insensitive range unit ([096ca33](https://github.com/InstaZDLL/WaveFlow/commit/096ca336610e51614873a273e2eeacc1c620f2d3)) +* **remote:** refresh-and-replay on 401, harden the refresh path ([248a46e](https://github.com/InstaZDLL/WaveFlow/commit/248a46e570fe9e0d80d8fc0b313394ed211026ac)) +* **remote:** review batch 1b — clear-after-swap, lyrics fallback ([6c3b789](https://github.com/InstaZDLL/WaveFlow/commit/6c3b7896cbb61bd7dff48789bf405eb5c57b27a4)) +* **remote:** server lyrics synced only when all lines are timestamped ([2b09347](https://github.com/InstaZDLL/WaveFlow/commit/2b09347bcfeee2a5269e6b30a688da5dbaf75455)) +* **remote:** show remote track cover in the player bar ([8dc4341](https://github.com/InstaZDLL/WaveFlow/commit/8dc43417876cf4bf70c4855462438561791f2a6e)) +* **remote:** socket idle timeout + coalescing, sync/auth robustness ([6d01d24](https://github.com/InstaZDLL/WaveFlow/commit/6d01d244442e8d79c58568c0170a9c4d7bdd9b77)) +* **remote:** stricter Content-Range, socket profile pin + cap check ([faa498f](https://github.com/InstaZDLL/WaveFlow/commit/faa498f03afd95e03db11d306a045cbaec1e486a)) +* **remote:** strip only the loop newline from server lyrics ([c42bf74](https://github.com/InstaZDLL/WaveFlow/commit/c42bf74b1a825f80589d6d54e5221340068b243b)) +* **scan-toast:** a scan that hit errors no longer reads as a success ([7b9d39f](https://github.com/InstaZDLL/WaveFlow/commit/7b9d39f051952e88f97b6d5a51ec53fc3f442acb)), closes [#457](https://github.com/InstaZDLL/WaveFlow/issues/457) +* **settings:** locale-aware MB formatting in the cover-prune status ([e748c11](https://github.com/InstaZDLL/WaveFlow/commit/e748c11da3dc0f39648ec1b1c797a256e4f17c36)) +* **settings:** tidy the cover-prune status timer + announce it to a11y ([848add8](https://github.com/InstaZDLL/WaveFlow/commit/848add8215031868278bd47924ec852e5d869f68)) +* **stats:** local artist images, ragged KPI row, clipped hour labels ([e6d1000](https://github.com/InstaZDLL/WaveFlow/commit/e6d10002d7a35303e1b96372ea06a656fafd9760)), closes [#453](https://github.com/InstaZDLL/WaveFlow/issues/453) +* **ui:** drop inert DSP badges on DoP and harden the toggle ([f203eb4](https://github.com/InstaZDLL/WaveFlow/commit/f203eb45a170773495e3d417e26d75a410a626b0)) +* **ui:** replay liked changes that land during a reload ([f547d0f](https://github.com/InstaZDLL/WaveFlow/commit/f547d0fbd5419d260deee97955e2af1e6efc242a)) +* **ui:** scope the queued DoP write to the profile that made it ([2fd7f9d](https://github.com/InstaZDLL/WaveFlow/commit/2fd7f9d9a774260b24a3e8a91516515e16d012d8)) +* **ui:** subscribe to liked changes before snapshotting the set ([eed3254](https://github.com/InstaZDLL/WaveFlow/commit/eed325469211871b93254784994e31d11305c160)) +* **web-radio:** let a 429 fall through to the next host ([cb8a31c](https://github.com/InstaZDLL/WaveFlow/commit/cb8a31c4da733bb380fc59bfa4979ea376cf8926)), closes [#452](https://github.com/InstaZDLL/WaveFlow/issues/452) +* **web-radio:** try the round-robin host, and retry, before failing ([4a20483](https://github.com/InstaZDLL/WaveFlow/commit/4a20483e6cbfdf6e39e6778b20ccc54003d191a3)), closes [#452](https://github.com/InstaZDLL/WaveFlow/issues/452) +* **wrapped:** give each banner key its own broadcast channel ([c74eb48](https://github.com/InstaZDLL/WaveFlow/commit/c74eb484e1eb9ee6b06ae5ec442004a588b3f8b5)) +* **wrapped:** withhold the banner until both keys have been read ([c83ebb7](https://github.com/InstaZDLL/WaveFlow/commit/c83ebb75e10d9c2a33b1a174536194a79a228787)) + + +### Performance Improvements + +* **remote-ui:** virtualize the remote playlist and queue lists ([0b26205](https://github.com/InstaZDLL/WaveFlow/commit/0b26205c792b9a5d7cb5c27e63dde79f240b288c)) + ## [1.7.0](https://github.com/InstaZDLL/WaveFlow/compare/v1.6.0...v1.7.0) (2026-07-26) diff --git a/README.md b/README.md index be7ea033..08f934a2 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@
-
+
diff --git a/package.json b/package.json
index ef67fda1..510b3e90 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "waveflow",
"private": true,
- "version": "1.7.0",
+ "version": "1.8.0",
"type": "module",
"license": "GPL-3.0",
"scripts": {
diff --git a/src-tauri/crates/app/Cargo.toml b/src-tauri/crates/app/Cargo.toml
index e0e09116..8a84437c 100644
--- a/src-tauri/crates/app/Cargo.toml
+++ b/src-tauri/crates/app/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "waveflow"
-version = "1.7.0"
+version = "1.8.0"
description = "Local music player for desktop — Spotify-inspired UI, real-time audio engine, your files stay on your machine."
authors = ["InstaZDLL