Skip to content

chore(main): release 1.8.0 - #486

Open
github-actions[bot] wants to merge 1 commit into
mainfrom
release-please--branches--main--components--waveflow
Open

chore(main): release 1.8.0#486
github-actions[bot] wants to merge 1 commit into
mainfrom
release-please--branches--main--components--waveflow

Conversation

@github-actions

@github-actions github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

πŸ€– I have created a release beep boop

1.8.0 (2026-09-14)

Features

  • analysis: measure loudness per itu-r bs.1770-4 (5598a3d)
  • artist: spotify-style hero backdrop on the artist page (#482) (4b3f120)
  • audio: add audio.dsd_dop setting command + hydration (#495) (98207d8)
  • audio: add DSD-over-PCM (DoP) encoder core module (3d03b43)
  • audio: add wasapi exclusive dop output backend (#495) (81c068e)
  • audio: exclusive output on Linux and macOS, and a name that is not WASAPI's (fd61a63)
  • audio: expose dop toggle, pipeline pill and i18n (#495) (7f98bd5)
  • audio: follow the os default output device when nothing is pinned (d9024fc)
  • audio: give macos exclusive output for ordinary playback too (c0d6f3f)
  • audio: keep ALSA's routing layers out of the output device list (6da6199)
  • audio: let linux own the sound card for ordinary playback, not just dsd (28e86e8)
  • audio: native DSD via DoP (DSD over PCM) on WASAPI Exclusive (db340d1)
  • audio: native dsd via dop on linux (raw hw: alsa) (#495) (e20aa16)
  • audio: native dsd via dop on macos (coreaudio hog mode) (#495) (8b80c9c)
  • audio: output device batch β€” rebuild, device loss, capabilities and rate matching (f8eb7b7)
  • audio: play each track at its own sample rate, when asked to (f87d33f)
  • audio: say when playback quietly falls back instead of only logging it (518fe66)
  • audio: show what each output device actually accepts (f1b4df2)
  • audio: wire dop into the decoder and per-track output switch (#495) (41b17db)
  • canvas: opt-in local cache for plugin Canvases (#473) (70cd206)
  • canvas: opt-in local cache for plugin Canvases (#473) (8ce04be)
  • canvas: waveflow:canvas/v1 world for per-track canvas plugins (#473) (fcdc1e5)
  • canvas: waveflow:canvas/v1 world for per-track Canvas plugins (#473) (de01b35)
  • library: browse both sources from one album list (aa1d476)
  • library: browse both sources from one artist list (d0dc2db)
  • library: browse both sources from one playlist list (c83e67d)
  • library: browse both sources from one track list (ecfc61d)
  • library: browse by folder, and find Chinese titles by pinyin (2731a1e)
  • library: browse the library by folder, not just by library root (ec81e93)
  • library: one album view, not a poorer copy for the server's (9bc65b1)
  • library: one artist page, not a poorer copy for the server's (436a645)
  • lyrics: progressive fill on the word being sung (8965f09)
  • lyrics: progressive fill on the word being sung (917b331)
  • maintenance: one-time cleanup of cached album covers for art-having albums (#493) (d9db659)
  • mini-player: volume slider and mute in the cover overlay (850556d)
  • mini-player: volume slider and mute in the cover overlay (45faadb)
  • player: bring ReplayGain up to the standard (882200b)
  • player: give replaygain a pre-amp, a fallback and clipping prevention (78eb484)
  • player: user-selectable spectrum visualizer colors (#468) (b5ef338)
  • player: user-selectable spectrum visualizer colors (#468) (904b652)
  • playlist: one playlist page, not a poorer copy for the server's (4147e1d)
  • playlist: one playlist page, not a poorer copy for the server's (cb16e6f)
  • plugins: disclose ui library.read_artists permission in the store (afe2d62)
  • plugins: disclose ui library.read_artists permission in the store (92fada3)
  • plugins: render ui-world plugin views + dynamic sidebar (#443 Part 2) (d4c44eb)
  • plugins: render ui-world plugin views + dynamic sidebar (#443 Part 2) (7b8cd27)
  • plugins: support direct download_url in registry entries (c6d4bc7)
  • plugins: support direct download_url in registry entries (cd54eb8)
  • plugins: waveflow:ui/v1 world host surface + redacted library read (#443 Part 1) (5885099)
  • reconciliation: add exact track linking (cc533aa)
  • reconciliation: add exact track linking (d8f6212)
  • reconciliation: add explicit playlist conversion (d96cba2)
  • reconciliation: add explicit playlist conversion (60359d5)
  • reconciliation: copy linked user data explicitly (ec6a190)
  • reconciliation: copy linked user data explicitly (96e8bc8)
  • reconciliation: progress + cancellation and true-schema tests (9baf895)
  • reconciliation: scan progress, cancellation and true-schema tests (63129a7)
  • release: embed AppImage update information and ship a .zsync (8868743), closes #527
  • remote-playback: prefer confirmed local links (5548cea)
  • remote-playback: prefer confirmed local links (97e6d16)
  • remote: 1:1 parity for the remote playlist view (b16deb8)
  • remote: a diagnostics card so the protocol can be watched by a human (f0e78ef)
  • remote: add tracks to a remote playlist via catalogue search (d581ab4)
  • remote: artist photo, hero background and bio by name (9697deb)
  • remote: ask the server to transcode, and never be refused for it (3fa6125)
  • remote: ask the server to transcode, and never be refused for it (7c3e3cd)
  • remote: auto-generate the remote playlist cover from track art (24b343e)
  • remote: bootstrap from a snapshot and walk the journal (faa608d)
  • remote: bounded progress bar for remote tracks (1e1f473)
  • remote: bring remote playlist view to 1:1 with local (d250a08)
  • remote: cache a remote stream from the bytes playback already reads (f2a8b7d)
  • remote: cache a remote stream from the bytes playback already reads (d221b64)
  • remote: cache the server's cover art on disk instead of inlining it (c60cbc7)
  • remote: cache the server's cover art on disk instead of inlining it (ed278e3)
  • remote: capture the server's content fingerprint, unread (74f5063)
  • remote: clickable albums with a remote album view (c305351)
  • remote: clickable remote artist + heal stale artist_id cache (90b4c8d)
  • remote: columned track table on the remote playlist view (2034a83)
  • remote: complete the write surface with scrobbles, queue and shares (9b1157e)
  • remote: correct a server track, and read the feed that reports it (abee3f9)
  • remote: correct a server track's tags without touching a file (68ed8ec)
  • remote: finish native remote-source integration (aa39ee0)
  • remote: foundations for the remote source and sync v2 (e2d6627)
  • remote: import a server track into a scanned folder, linked for free (#562) (76b2750)
  • remote: keep a server track on disk, and play one whose file is gone (#561) (6bd60b6)
  • remote: let the changes a server refused be dismissed (0d19a96)
  • remote: localize the sync_v2 remote surface across all 17 locales (edebaeb)
  • remote: mirror the server catalogue so both sources share one library (35e8702)
  • remote: one entry per release, and one per person (#571) (1d64eb9)
  • remote: paint the server's Canvas behind a remote track (37cdbf9)
  • remote: paint the server's Canvas behind a remote track (06ec59e)
  • remote: play remote playlists as a native queue (53d4191)
  • remote: queue local changes and push them back as replayable calls (e03756e)
  • remote: read the projection back out for the interface (94bf6fa)
  • remote: read the server's change feed, for what the sweep cannot see (cb736eb)
  • remote: remote music source and user-data sync v2 (RFC-005) (3818b3a)
  • remote: remove a track from a remote playlist (544b834)
  • remote: reorder tracks in a remote playlist (5b50b98)
  • remote: scrub remote tracks via HTTP range seeking (3615319)
  • remote: separate the two 409s and express clearing a field (7b62858)
  • remote: server-first lyrics for remote tracks (5b822ed)
  • remote: share one digest cache, and keep discovery apart from verification (7937356)
  • remote: shares as queued mutations on the v2 endpoints (d321248)
  • remote: show the cover art for a remote track (ba9c470)
  • remote: show the remote play queue in the queue panel (ac10c35)
  • remote: sign in through the browser with authorization code + PKCE (7ce6802)
  • remote: similar artists on the remote artist view + ship sync_v2 (2f76759)
  • remote: stream remote tracks via server stream tickets (3fb3aba)
  • remote: surface the remote source in the sidebar (bbf1130)
  • remote: wake up on the journal socket instead of only polling (e5e65cd)
  • remote: wire user gestures to the queue (f9fdd25)
  • scanner: parse replaygain and r128 tags off the file (2e6c69d)
  • scanner: play AIFF, and say why the other formats are absent (012be48)
  • scanner: play AIFF, and say why the other formats are absent (6a5e36b)
  • scan: store the replaygain a file declares on the track row (81f4ec0)
  • search: find a Chinese title by its pinyin, or by its initials (de3e288)
  • settings: expose the replaygain pre-amp, fallback and clipping switch (ec0d1bd)
  • sidebar: one playlist list, not a server section beside it (bcb5b0b)
  • tags: absorb a FLAC edit into the padding block instead of moving the file (f2276e0)
  • tags: correct a typo in a DSF file instead of refusing to open it (96ba596)
  • tags: never let a rewrite destroy the file it is rewriting (1741791)
  • tags: survive the read-only flag, the scanner and a half-flushed write (81ec10c)
  • tags: write a tag into the padding, survive the interruption, and reach DSD (d101339)
  • tags: write an ID3v2 edit into the padding already in the file (e08adb6)
  • taskbar: add playback buttons under the windows taskbar thumbnail (5bb3467)
  • taskbar: add playback buttons under the windows taskbar thumbnail (36ddf87), closes #583
  • ui: show lyrics in the mini-player (a7af815)

Bug Fixes

  • address the review, and the three tests CI caught (bbf93d2)
  • artist: address review on the hero backdrop (58d8348)
  • artist: clear the read stamp on profile change (da06a78)
  • artist: keep an in-flight read from clobbering an optimistic toggle (4ebc933)
  • artist: reset the hero preference when the profile changes (5ad81f2)
  • artist: scope the hero preference's resolved flag to the profile (d9605ff)
  • audio: a device pick no longer starts a track the user had paused (f7f37b1)
  • audio: a pause the decoder has not reached yet still counts as paused (d9624c5)
  • audio: a track that is still loading is a session a rebuild must stop (717e3cd)
  • audio: ask alsa for a period the ring can feed, and a shallow buffer (cc481d8)
  • audio: ask the sound server for the card before giving up on DoP (bff1ffc)
  • audio: claim the dispatch before a load publishes anything (6fc4a70)
  • audio: claim the dispatch, and follow the OS default output device (d850b4a)
  • audio: compare the analysis version instead of only testing for NULL (5edf248)
  • audio: decide the resume after the device opens, not before (a5a275d)
  • audio: defer a default-device follow instead of dropping it (ae40db9)
  • audio: drop a borrow no ci job was in a position to see (f3090a3)
  • audio: drop a sub-stride DSD remainder instead of decoding it (cb430a6)
  • audio: eight findings from the local review of the device batch (567a379)
  • audio: fail the load when the output switch leaves us with nothing (0514647)
  • audio: finish short DSD block reads before decoding them (c2a5531)
  • audio: gate dop strictly to windows / wasapi exclusive (#495) (16118d4)
  • audio: keep a paused session paused when its output device goes away (7d213ed)
  • audio: keep the ALSA probe guard inside the crate's MSRV (220c9be)
  • audio: keep the DSD seek offset exact (dd70a23)
  • audio: keep the output pin under the lock that replaces the stream (401f51a), closes #630 #629
  • audio: key the DoP speed pin off speed_dirty, not the value (d83d23c)
  • audio: landing at the end of a stream is a position, not a failure (7e58101)
  • audio: left-align 24-bit samples in the 32-bit WASAPI container (7e4c842)
  • audio: left-align 24-bit samples in the 32-bit WASAPI container (2192622)
  • audio: left-align the DoP word in the padded WASAPI container (44fe37d)
  • audio: list the absent pinned device and guard the deliberate reopen (3c62bd2)
  • audio: park only library tracks idle after a paused device loss, on their own profile (f31c880)
  • audio: pass the DoP flag on the remote local-first open (c710a84)
  • audio: pin speed and honour A-B repeat on the DoP path (03d8220)
  • audio: read both device names under one lock (5fb35b4)
  • audio: rebuild the DoP output when the channel count changes (8f8e8bf)
  • audio: refuse the DoP open when the old physical format is unreadable (ad611bb)
  • audio: release the device before reopening it exclusively (7bf3963)
  • audio: release the device before reopening it exclusively (#604) (1d54240)
  • audio: release the old stream before hogging the device on macos (08f3b5f)
  • audio: reopen the previous device when a switch that released first cannot open the new one (3d7b621)
  • audio: report a lost CoreAudio device instead of parking on it (84cf6bd)
  • audio: report the device that opened, not the one that was asked for (2f0fef8)
  • audio: report the device that opened, not the one that was asked for (885e3a7)
  • audio: resolve the ALSA card by name and finish short writes (d6d0879)
  • audio: resolve the rebuild's device under the lock it rebuilds with (d02e590)
  • audio: restore the CoreAudio physical format and watch IsAlive (23ee71f)
  • audio: restore the CoreAudio physical format and watch IsAlive (2c6ce07)
  • audio: restore the PCM output before a remote or URL load (184de8f)
  • audio: resume what the decoder holds after a rebuild, and stay put when the device goes away (5c1d4a3)
  • audio: schedule a rebuild when neither the new nor the previous device reopens (72caf56)
  • audio: six findings from the local review of the device sheet (c07a8cf)
  • audio: stamp the DoP marker from one running counter (0e3d4da)
  • audio: stop a dop rate from becoming the next pcm track's preference (c518dd8)
  • audio: stop trusting a peak measured by the superseded analysis (e6ec4d9)
  • audio: ten findings from the review of the device batch (eb45dd8)
  • audio: try the card before waiting, and name the release reply (ea6e6bd)
  • audio: validate Content-Range start byte on a seek 206 (4b4322e)
  • canvas: re-validate cache-download redirects (SSRF) + doc canvas world (10f904b)
  • canvas: treat an unsafe cache redirect as a hard security failure (8d87e8c)
  • db: explain a downgrade before the event loop, not inside it (a426878)
  • db: explain a downgrade before the event loop, not inside it (dd93ead), closes #529
  • db: explain a downgrade instead of dying on the splash (8e6c739)
  • db: explain the other half of a downgrade instead of panicking (8a46de1)
  • db: stop the pre-flight writing to the database it may refuse (18abf82)
  • deezer: cross-profile-safe cover prune + preserve hash on skipped download (73b4482)
  • deezer: don't let a cover-less cache row block a re-fetch (#493 review) (94badcf)
  • deezer: only disk-cache an album cover when the album lacks local art (#493) (5281d9d)
  • deezer: only disk-cache an album cover when the album lacks local art (#493) (ea14ec5)
  • deezer: read the refusal deezer sends with http 200 (82dd905)
  • deps: force fast-uri >= 3.1.5 and resync the Flatpak sources (e0ee50c)
  • edit: refuse a year no tag can hold instead of clamping it (21d46cd)
  • four defects before the 1.8.0 beta β€” output pin, exclusive-toggle race, splash handoff, motion covers (c65ee6d)
  • keep a paused session paused on device loss, refresh lists after a folder rescan, delete from manage mode (a504dfd)
  • library: a plain click on a server track plays it (e994838)
  • library: a server album never rendered at all (c4b1dfa)
  • library: convert rows to tracks instead of casting their ids (d75bf69)
  • library: five findings from the local review of the folder browser (49ef4cc)
  • library: give the grids a real button instead of a role on the card (01b6544)
  • library: keep the missing-last rule out of the sort direction (bfebc7c)
  • library: keep the source filter reachable when it empties the list (ac5c95f)
  • library: make every reader of the snapshot wait for it, not just the render (a329b1b)
  • library: refresh the lists after rescanning a single folder (59b20e7)
  • library: six findings from the review of the folder browser and pinyin (3c514f7)
  • library: treat another album's snapshot as absent, not as approximate (462013e)
  • locales: drop the plural siblings the dead-key sweep could not see (a3352f0)
  • locales: the turkish progress-bar label named the wrong gesture (32f77af)
  • lyrics: carry the fill across speed changes, stop at a full word (23045ab)
  • lyrics: keep the fill responsive to seeks inside the active word (8dfdc5c)
  • lyrics: re-anchor the fill when playback resumes (15de90c)
  • lyrics: reset lyrics context on remote transitions too (9e353e1)
  • macos: allow unsigned executable memory for the wasmtime host (4bcbb89)
  • maintenance: fail the cover prune if the profile list can't be read (1b12cc6)
  • motion-cache: strip trailing-dot hosts in SSRF guard + allow 10 redirects (fff142d)
  • motion-cache: validate the initial url inside cache_mp4 (defence-in-depth) (198ba47)
  • player: address the replaygain review findings (e7efacf)
  • player: allow only one resume at a time (a748537)
  • player: await mpd's resume and re-check the state before publishing at launch (4d5b2a3)
  • player: broadcast repeat, shuffle and like to the other window (c0d4176)
  • player: broadcast repeat, shuffle and like to the other window (d4129e6)
  • player: claim each load intent at its true origin (2ffadaa)
  • player: claim the remote session's intent before reading its entries (e487979)
  • player: gate visualizer color cycle until the profile's value loads (858b206)
  • player: order playback loads by the intent that started them (ef98272)
  • player: order playback loads by the intent that started them (e356c78), closes #622
  • player: pin the resume point to its profile and write it atomically (cf10169)
  • player: publish loading before handing the resume to the decoder (68033ef)
  • player: publish the restored track to the os media controls at launch (3448aed)
  • player: re-read the pipeline when the stream under it changes (79be05c)
  • player: read the resume point's pool and profile id under one lock (bcd9a63)
  • player: stamp the snapshot with the track the engine reported (5d3aca1)
  • player: start the resume point when play comes from mpd or the os media controls (04f3174)
  • player: start the resume point when play/pause is pressed from idle or ended (f8445fe)
  • player: stop a torn-down read from silencing the live one (f137d44)
  • player: stop badging a shared stream as bit-perfect (fa25d63)
  • player: write the resume point on exit and every ten seconds (ef77f3d)
  • player: write the resume point on exit and every ten seconds (6105e4d)
  • plugins: busy-gate open-url + reject null badge elements (#443) (3a39a0f)
  • plugins: harden ui view β€” separate flow tokens, a11y, text validation (#443) (a00a217)
  • plugins: validate download_url + install redirects with the SSRF guard (977635b)
  • plugins: validate ui descriptor tree + loading states + hi grammar (#443) (808fa09)
  • profile: scope profile_setting reads and writes to a profile (f1438f2)
  • profiles: open the delete confirmation when a profile is tapped in manage mode (b9a3d63)
  • reconciliation: address CodeRabbit review (1c022f3)
  • reconciliation: address playlist conversion review (8318ceb)
  • reconciliation: arbitrate the phase on the empty-remote early return (acf3098)
  • reconciliation: block unavailable local conversions (a77d686)
  • reconciliation: block unavailable playlist tracks (330040d)
  • reconciliation: close scan cancel races and listener leak (be655f2)
  • reconciliation: make cancel-vs-commit an atomic phase transition (2cb5437)
  • reconciliation: revalidate playlist link proofs (42d6a83)
  • reconciliation: roll back reconcile on a cancel during commit phase (eebdbae)
  • reconciliation: signal already-running scans and cover cancellation (07bc8c5)
  • reconciliation: verify playlist snapshot before commit (e2055dd)
  • release: read the section index before trusting readelf's columns (e26c616)
  • release: unbundle libwayland-client from the AppImage (807428b)
  • release: unbundle libwayland-client from the AppImage (d368e42)
  • remote-playback: resume local source after device changes (a1066ee)
  • remote-ui: artwork cache, stale-pass guards, availability hardening (689b758)
  • remote-ui: bound the artwork cache, reset cover on hash change (7a23585)
  • remote-ui: update remote artwork before paint (5b40b36)
  • remote: a cache write must not fail the work it was meant to speed up (2cf2333)
  • remote: a working-file marker its own naming function could produce (2972bc5)
  • remote: address CodeRabbit review β€” correctness batch 1 (51cf286)
  • remote: address deferred CodeRabbit findings from #502 (6221b99)
  • remote: address the review of the metadata push (04a2f33)
  • remote: address the second review round (f2547ab)
  • remote: annotate RemoteClient lifetime in stream.rs (41ce018)
  • remote: back off on socket sync failure, not on a profile switch (ab71fa0)
  • remote: correct counter labels in ar, ja and zh-TW (63249aa)
  • remote: count navigations in the session revision, not just installs (650560a)
  • remote: distinguish remote playback from web radio (c74e3d7)
  • remote: do not install a session whose load is superseded (8603b1d)
  • remote: drop a playlist preview the mirror no longer supports (b550693)
  • remote: end the socket session when a catch-up fails (0f541ad)
  • remote: gate the transcode command on sync_v2 and refuse it offline (5532534)
  • remote: give a server track the right-click menu it never had (7969122)
  • remote: give the account-switch test its NOT NULL cached_at (d649c4a)
  • remote: give the feed's fixture the constraints that ship (977dad9)
  • remote: honour "also create on the server" from every entry point (31ea6fb)
  • remote: idempotent placeholder resolve, FIFO-safe unreadable rows (b84ac59)
  • remote: ignore stray callbacks, bound the cached-id lookup (1900322)
  • remote: judge a working file by its name, not by its whole path (556319a)
  • remote: label an upload candidate with its artist's name (deaeb78)
  • remote: make giving up on a feed actually re-read what it missed (483a846)
  • remote: make the cover cache safe under concurrency and honest on failure (0b57f53)
  • remote: make the server Canvas actually reachable (729d3c3)
  • remote: pin client+pool to one profile, share the rotated token (32ab652)
  • remote: pluralize remote counters and fix flagged translations (56e4be3)
  • remote: profile-aware socket catch-up, case-insensitive range unit (096ca33)
  • remote: read a column the track table actually has (84d42f6)
  • remote: refresh-and-replay on 401, harden the refresh path (248a46e)
  • remote: refuse an unparseable number instead of clearing the field (eaa44ba)
  • remote: review batch 1b β€” clear-after-swap, lyrics fallback (6c3b789)
  • remote: say when a surface is waiting on the catalogue mirror (01b127d)
  • remote: server lyrics synced only when all lines are timestamped (2b09347)
  • remote: show remote track cover in the player bar (8dc4341)
  • remote: six defects in the stream cache, found in review (5c9b8a3)
  • remote: socket idle timeout + coalescing, sync/auth robustness (6d01d24)
  • remote: stamp the cover retry with the identity it was started for (53b6ba4)
  • remote: stop a half-listed album from reading as walked forever (2936046)
  • remote: stricter Content-Range, socket profile pin + cap check (faa498f)
  • remote: strip only the loop newline from server lyrics (c42bf74)
  • review: compare the genre trimmed, and exempt only DoP's rate (0306594)
  • review: send the genre only when it changed, and prove the verdict (bb4a9aa)
  • scan: keep the replaygain backfill pending when a file fails to read (8c6cce8)
  • scanner: judge an .ogg by its stream, not by its extension (9bfd279)
  • scanner: judge an .ogg by its stream, not by its extension (e0ca4fe)
  • scan: report a failed replaygain backfill marker write (3cd90e6)
  • search: count the backfill's written rows from the database (656398a)
  • search: find a track by the middle of its title, not only the start (6cfefc9)
  • settings: locale-aware MB formatting in the cover-prune status (e748c11)
  • settings: tidy the cover-prune status timer + announce it to a11y (848add8)
  • start the resume point when play comes from mpd or the os media controls (5fe3c9f)
  • tags: a DSF tag we cannot read stops the edit instead of being replaced (51e9e56)
  • tags: an ID3v2.2 tag could not be written at all once we touched its year (32627c9)
  • tags: keep a picture out of the FLAC fast path, and decline a truncated file (c1cdea2)
  • tags: keep the fields a tag write never touched (11c0c7e)
  • tags: keep the read-only guard clean under the linter on every platform (e462dbd)
  • tags: leave a DSF header describing less than the file holds, never more (d70255e)
  • tags: make read-only mean the same thing on both write paths (22ee8e8)
  • tags: mirror the year for every pre-2.4 tag, not only 2.3 (bcb2d32)
  • tags: one writer at a time per file, and a module doc that is true again (5e684cc)
  • tags: put the year where an ID3v2.3 reader actually looks for it (cdfb17c)
  • tags: refuse a DSF header that points its tag into the audio (2240bab)
  • tags: stop the year mirror from erasing the year it was added to protect (334e1ad)
  • taskbar: let the play and pause labels go unread outside windows (d3d72b9)
  • test: a non-utf8 directory name cannot be created on apfs (d3e3fa8)
  • the tag editor and audio-path defects found in the audit (c198cf6)
  • ui: a text selection that ends outside a modal must not close it (57e981d)
  • ui: dismiss a modal by where the pointer is, not by what it targets (40f0403)
  • ui: drop inert DSP badges on DoP and harden the toggle (f203eb4)
  • ui: harden the splash handoff and measure both of its halves (031151e)
  • ui: let a motion-cover miss be forgotten, and stop blurring it per frame (6905325), closes #615
  • ui: never fall back to the animated source for the blurred backdrop (05eb8f3)
  • ui: pre-fill the genre the properties dialog was erasing (08b933c)
  • ui: replay liked changes that land during a reload (f547d0f)
  • ui: scope the queued DoP write to the profile that made it (2fd7f9d)
  • ui: subscribe to liked changes before snapshotting the set (eed3254)
  • what the first run against a real server found (a6a3be2)
  • wrapped: give each banner key its own broadcast channel (c74eb48)
  • wrapped: withhold the banner until both keys have been read (c83ebb7)

Performance Improvements

  • remote-ui: virtualize the remote playlist and queue lists (0b26205)

This PR was generated with Release Please. See documentation.

@github-actions
github-actions Bot force-pushed the release-please--branches--main--components--waveflow branch 4 times, most recently from 5ec0476 to 97c63aa Compare August 9, 2026 01:52
@InstaZDLL InstaZDLL self-assigned this Aug 9, 2026
@InstaZDLL InstaZDLL added this to the v1.8.0 milestone Aug 9, 2026
@github-actions
github-actions Bot force-pushed the release-please--branches--main--components--waveflow branch from 97c63aa to 711f476 Compare August 10, 2026 10:15
@ABDALLAH9877

Copy link
Copy Markdown

may i ask when the next update will be added becouse im so exited for animated lyrics or word by word lyrics

@InstaZDLL

Copy link
Copy Markdown
Owner

may i ask when the next update will be added becouse im so exited for animated lyrics or word by word lyrics

Thanks, glad you're excited! 🎢 Word-by-word animated lyrics are landing in v1.8.0, which I'm targeting for around the end of next week (no hard promise, I'd rather ship it right). I'll post here the moment it's out! πŸ™Œ

@InstaZDLL InstaZDLL added scope: backend Rust/Tauri backend (src-tauri/) scope: deps Dependencies scope: docs Docs, README, assets type: chore Maintenance / tooling size: m 50-200 lines labels Aug 15, 2026
@github-actions
github-actions Bot force-pushed the release-please--branches--main--components--waveflow branch 15 times, most recently from 63f4288 to b4b5f42 Compare August 19, 2026 07:44
@github-actions
github-actions Bot force-pushed the release-please--branches--main--components--waveflow branch 5 times, most recently from e7af405 to ee00905 Compare August 27, 2026 07:21
@ABDALLAH9877

Copy link
Copy Markdown

Can I please know when the update will be released please

@InstaZDLL

Copy link
Copy Markdown
Owner

may i ask when the next update will be added becouse im so exited for animated lyrics or word by word lyrics

Hey, thanks for checking in β€” and sorry for the wait. πŸ™

Honest answer : I gave you an estimate a couple of weeks ago and I missed it. My PC had a problem and I couldn’t work on WaveFlow at all during that time, so progress basically stopped.

The good news is that the part you were waiting for is done word-by-word animated lyrics are merged and ready, just waiting for the release.

What’s still holding 1.8.0 back is some bug fixing in the audio engine, mainly a few playback glitches on certain setups. It’s not the kind of thing I want to ship half-finished, so I’d rather take the extra time and get it right.

Realistically, I’m aiming for around two weeks. I’m deliberately not promising an exact date this time, the last estimate didn’t survive contact with reality, and I’d rather hand you something solid than rush it out.

I’ll post right here the moment it’s out. Thanks for your patience! 🎢

@github-actions
github-actions Bot force-pushed the release-please--branches--main--components--waveflow branch 9 times, most recently from 16c7e2a to e8348c7 Compare September 5, 2026 04:31
@github-actions
github-actions Bot force-pushed the release-please--branches--main--components--waveflow branch 10 times, most recently from 523480e to 4ce999d Compare September 9, 2026 20:23
@coderabbitai

coderabbitai Bot commented Sep 9, 2026

Copy link
Copy Markdown

Important

Review skipped

Ignore keyword(s) in the title.

β›” Ignored keywords (5)
  • chore: bump
  • chore(main): release
  • release-please
  • dependabot
  • [bot]

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

βš™οΈ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 2af27449-4861-4405-ae89-fe092706ea91

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • πŸ” Trigger review

Comment @coderabbitai help to get the list of available commands.

@github-actions
github-actions Bot force-pushed the release-please--branches--main--components--waveflow branch from 4ce999d to 490970e Compare September 10, 2026 12:57
@ABDALLAH9877

Copy link
Copy Markdown

Damn, every time I see the progress you've made, I think: "This is someone who really cares about his project and works on it with passion." Keep up the great work! By the way, I have a feeling an update is coming very soon. Am I right? πŸ˜„

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment