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

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-18)

Features

  • add the reviewed Japanese wording (2d9429d)
  • add the reviewed Korean wording (04f44d1)
  • add the reviewed Simplified Chinese wording (4f9004f)
  • add the reviewed Traditional Chinese wording (7089e24)
  • analysis: measure loudness per itu-r bs.1770-4 (5598a3d)
  • audio: exclusive output on Linux and macOS, and a name that is not WASAPI's (fd61a63)
  • 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: 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)
  • library: a "needs attention" inventory of the library (ba2c72b)
  • 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: choose, reorder and resize the columns in track lists (f054da4)
  • library: columns, an inventory, a task bar, high contrast and a cache location (12fa8c5)
  • library: hide the columns that do not fit instead of scrolling sideways (e9959b5)
  • 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: a floating desktop lyrics window (b0b26fb)
  • lyrics: show apple romanization and translation under each line (507472c)
  • lyrics: show apple romanization and translation under each line (407ae48)
  • playback: album gain, album shuffle, and Opus (2fcd041)
  • playback: apply album gain when a record is playing through (c19da12)
  • playback: play Opus (a3ee5cf)
  • playback: shuffle whole records, and build sessions out of them (ce1d4ae)
  • player: bring ReplayGain up to the standard (882200b)
  • player: give replaygain a pre-amp, a fallback and clipping prevention (78eb484)
  • 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: a plugin world that can carry word-level lyrics (fd3abb6)
  • plugins: a plugin world that can carry word-level lyrics (3aa6982)
  • plugins: rewrite Web Radio's description for the user, and translate it (2384750)
  • radio, tags: rank mood radio by fit, and fetch album tags for review (93e6190)
  • radio, tags: rank mood radio by fit, and fetch album tags for review (d80b78f)
  • release: embed AppImage update information and ship a .zsync (8868743), closes #527
  • 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: 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: 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: 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: 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: read the server's change feed, for what the sweep cannot see (cb736eb)
  • remote: share one digest cache, and keep discovery apart from verification (7937356)
  • 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)
  • settings: organize settings with searchable sidebar navigation (b9cd7a7)
  • settings: organize settings with searchable sidebar navigation (6e60305)
  • sidebar: one playlist list, not a server section beside it (bcb5b0b)
  • smart-playlists: more rule fields, a live count, templates and a rule summary (26ca002)
  • smart-playlists: more rule fields, a live match count, templates and a plain-language summary (972e949)
  • startup: fall back to software rendering after a launch that never painted (7aea681)
  • startup: fall back to software rendering after a launch that never painted (3a28447)
  • storage: choose where artwork and the rebuildable caches are stored (3e65f2d)
  • 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: a high-contrast mode across every theme and skin (8745d06)
  • ui: one status bar for long-running tasks, with cancellation (78e3513)
  • ui: show lyrics in the mini-player (a7af815)

Bug Fixes

  • a swap mid-rebuild, tag writes that skipped the writer, and album sessions without their gain (81a8945)
  • a11y: stop loading spinners under reduced motion (7af4931)
  • a11y: stop loading spinners under reduced motion (12ea015)
  • address the review, and the three tests CI caught (bbf93d2)
  • 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 ring producer handed over mid-track is installed, not dropped (c84113e)
  • 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: eight findings from the local review of the device batch (567a379)
  • 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 output pin under the lock that replaces the stream (401f51a), closes #630 #629
  • audio: landing at the end of a stream is a position, not a failure (7e58101)
  • 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: read both device names under one lock (5fb35b4)
  • 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 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 rebuild's device under the lock it rebuilds with (d02e590)
  • 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: 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)
  • backup: a pass that failed on some profiles reported only the wins (d728a3f)
  • backup: a settings change during a pass defeated the cancel back-off (5c8fe3e)
  • backup: three findings from the seventh local review pass (bd2257d)
  • 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: read the refusal deezer sends with http 200 (82dd905)
  • deps: hold both windows names, not just windows-core majors (4475bde)
  • deps: hold both windows names, not just windows-core majors (346fd6d)
  • 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)
  • inventory: reach the title flag through a subquery (2f9c441)
  • keep a paused session paused on device loss, refresh lists after a folder rescan, delete from manage mode (a504dfd)
  • library: a half star comes back as the half star it was (975210f)
  • library: a plain click on a server track plays it (e994838)
  • library: a rating is the whole popularimeter shape or it is nothing (421d877)
  • library: a reset left its deletion permission behind (a43b0a7)
  • library: a server album never rendered at all (c4b1dfa)
  • library: a stopped rescan no longer starts the next library (7ca1bf3)
  • library: column edits composed instead of overwriting each other (b243427)
  • library: convert rows to tracks instead of casting their ids (d75bf69)
  • library: dock the track table header and keep the table as wide as its columns (954b465)
  • library: eight findings from the fourth local review pass (0c17210)
  • library: eight findings from the review of 76bdbc4 (a764bef)
  • library: eleven findings from the fifth local review pass (7e5f9b4)
  • library: eleven findings from the tenth local review pass (055f5b1)
  • library: fifteen findings from the review of #648 (a049330)
  • library: five findings from the fifteenth local review pass (c48eb73)
  • library: five findings from the local review of the folder browser (49ef4cc)
  • library: five findings from the review of 6394fe3 (ad6ea6d)
  • library: four findings from the sixteenth local review pass (54dc11d)
  • library: four findings from the sixth local review pass (5e19dbb)
  • library: four findings from the twenty-sixth local review pass (e5a46f1)
  • library: give the grids a real button instead of a role on the card (01b6544)
  • library: keep the column picker on screen and hold onto focus (5bb1826)
  • 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: nine findings from the twelfth local review pass (a88febf)
  • library: nineteen findings from the local review of lot D (84f7bad)
  • library: one unreadable file no longer costs a folder its fast path (8e72c78)
  • library: refresh the lists after rescanning a single folder (59b20e7)
  • library: rescanning an AIFF deleted its custom tags (beb845b)
  • library: seven findings from the twenty-fourth local review pass (6673c60)
  • library: six findings from the eighteenth local review pass (81361f5)
  • library: six findings from the review of the folder browser and pinyin (3c514f7)
  • library: stopping a scan no longer starts the analysis sweep (84e9a43)
  • library: ten findings from the ninth local review pass (cd7f0bf)
  • library: the Added column was tens of thousands of years out (e60c183)
  • library: the same two slips again, in the places they moved to (c313e79)
  • library: the track rows lost their grid when the columns became dynamic (b5dacc6)
  • library: three findings from the fourteenth local review pass (c33c224)
  • library: three findings from the thirteenth local review pass (7964f90)
  • library: three findings from the twentieth local review pass (3b7f1b9)
  • library: three findings from the twenty-second local review pass (8fa4802)
  • library: three small ones the review was right about (bd70709)
  • library: tidy the retry block I just wrote (f73f621)
  • library: treat another album's snapshot as absent, not as approximate (462013e)
  • library: two findings from the eleventh local review pass (6394fe3)
  • library: two findings from the nineteenth local review pass (9b54b44)
  • library: two findings from the review of #648 (8448b38)
  • library: two findings from the seventeenth local review pass (a12821e)
  • library: two findings from the twenty-fifth local review pass (03fb73e)
  • library: two findings from the twenty-first local review pass (ab15382)
  • library: two findings from the twenty-third local review pass (d3240ce)
  • locales: address the reader informally everywhere in turkish (ee9bd53)
  • locales: apply the simplified chinese reviewer's corrections (feb64a9)
  • locales: apply the taiwanese reviewer's two corrections (01befad)
  • locales: call the server catalogue's local copy a copy, in the source (f87f2f1)
  • locales: clear the mainland forms and the faux-amis in traditional chinese (07075c7)
  • locales: drop the plural siblings the dead-key sweep could not see (a3352f0)
  • locales: dutch time windows say afgelopen, like the rest of the file (176cbe2)
  • locales: one word for a biography in japanese, and drop the translationese (cb76742)
  • locales: one word for an artist's biography in korean (26a325c)
  • locales: settle the korean terminology a reviewer called (e008b4e)
  • locales: spell the playlist and the library one way in korean (357218c)
  • locales: the german hint was missing the noun it selects (7a3c713)
  • locales: the last formal German string (e9bd5e1)
  • locales: the turkish progress-bar label named the wrong gesture (32f77af)
  • locales: use one word for "library" in german, and one form of address (ba3cd2a)
  • locales: use one word for "library" in turkish and russian (f4da8de)
  • locales: use one word for "library" in turkish and russian (7e6c3af)
  • locales: use one word for a track in french, and one in english (d347ad5)
  • locales: use one word per thing in simplified chinese (3bf26a4)
  • lyrics: a sidecar the user placed beats a description we guessed at (d450169)
  • lyrics: a TTML document with a malformed attribute is not synced (a130c61)
  • lyrics: clearing the lyrics is not a TTML write (4f7b7b6)
  • lyrics: convert only documents rooted at tt (cc70c56)
  • lyrics: drop the closing flag when the close request itself fails (8183a16)
  • lyrics: fail an open that outlasts the close wait instead of showing the closing window (f6a2093)
  • lyrics: fit desktop lyrics lines, stop clipping descenders, and give the Wayland workaround (3e2e4b5)
  • lyrics: fit desktop lyrics lines, stop clipping descenders, and give the Wayland workaround (8a6a2dc)
  • lyrics: judge synced by what the renderer can follow, not by the format label (65ff84e)
  • lyrics: keep looking for synced lyrics after an unsynced plugin answer (481f86c)
  • lyrics: refit a desktop lyrics line on any text change and never round an overflow away (ec2de7f)
  • lyrics: refit desktop lyrics lines once the fonts have loaded (cb38679)
  • lyrics: serialize desktop lyrics open and close, and trust broadcasts over the first read (fb991b7)
  • lyrics: show a plugin's name on the source badge, not its id (0a93551)
  • lyrics: show a plugin's name on the source badge, not its id (9a65158)
  • lyrics: show untimed TTML as plain lyrics instead of its markup (a1e47d6)
  • lyrics: the returned bundle must match the cached one (2a5df51)
  • lyrics: the source badge must not render a translation key (7a91b44)
  • lyrics: the synced tag follows what was saved, and is written safely (3380e43)
  • lyrics: wait for a closing overlay before reopening, and reach its buttons from the keyboard (511e981)
  • macos: allow unsigned executable memory for the wasmtime host (4bcbb89)
  • playback: a hand-picked track is not part of the record it landed beside (f8ba035)
  • playback: a session built from whole records is given the album gain (be8390d)
  • playback: eight findings from the local review (8af4a6f)
  • playback: five findings from the review of #646 (c3fb3f8)
  • playback: four findings from the seventh local review pass (91de657)
  • playback: four findings from the third local review pass (c1e7c81)
  • playback: six findings from the second local review pass (4e88dc5)
  • playback: two findings from the eighth local review pass (de2d04d)
  • playback: two findings from the fourth local review pass (4483cc5)
  • playback: two findings from the sixth local review pass (f675caf)
  • 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: claim each load intent at its true origin (2ffadaa)
  • player: claim the remote session's intent before reading its entries (e487979)
  • player: never render a video answer from before an invalidation (b8805d1)
  • 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: read the shuffle mode once per state snapshot (d4d53cc)
  • 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: bump web-radio to 0.1.2 for the rewritten description (5abcf31)
  • plugins: five findings from the local review of the v2 world (702deb4)
  • plugins: rewrite web radio's description, translate it, and bump to 0.1.2 (c8d7a7c)
  • profiles: open the delete confirmation when a profile is tapped in manage mode (b9a3d63)
  • queue: every path that builds a queue says what it is made of (dd27a3a)
  • radio, tags: a fetch must not lock the modal, and the coverage line is counted (f1a9e12)
  • radio, tags: four findings from the local review (6779a82)
  • radio: a guess must not take a pool slot from a measured tempo (b3a6f3a)
  • release: read the section index before trusting readelf's columns (e26c616)
  • 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 the review of the metadata push (04a2f33)
  • remote: address the second review round (f2547ab)
  • remote: count navigations in the session revision, not just installs (650560a)
  • remote: do not install a session whose load is superseded (8603b1d)
  • remote: drop a playlist preview the mirror no longer supports (b550693)
  • 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 feed's fixture the constraints that ship (977dad9)
  • remote: honour "also create on the server" from every entry point (31ea6fb)
  • 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: read a column the track table actually has (84d42f6)
  • remote: refuse an unparseable number instead of clearing the field (eaa44ba)
  • remote: say when a surface is waiting on the catalogue mirror (01b127d)
  • remote: six defects in the stream cache, found in review (5c9b8a3)
  • 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)
  • 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: a backup that failed on every profile said nothing at all (943f960)
  • settings: a read claims the token when it commits, not when it starts (8863e28)
  • settings: a rollback must reach the consumer whose state did not move (3637d0b)
  • settings: bump the revision on a failed read too (ab6a729)
  • settings: clear the search target when a settings entry is restored (e6e491d)
  • settings: forget remembered cache paths after clearing a cache (15d9dc1)
  • settings: measure row wrapping on the content column and name subtitles (daffabb)
  • settings: move the video cache controls to Settings > Data (cb45a48)
  • settings: move the video cache controls to Settings > Data (3b3694a)
  • settings: only the read that still owns the value may announce it (76bdbc4)
  • settings: tell every consumer when a write is rolled back (761c756)
  • smart-playlists: a play count cannot be negative, a disc is numbered from one (98d654a)
  • smart-playlists: a tag rule in another casing, and a window of zero days (fe907d8)
  • smart-playlists: drop a COLLATE that was claiming something untrue (78cf70e)
  • smart-playlists: every CLDR plural form, and a summary stamped with its rules (6b801b8)
  • smart-playlists: name every value widget, and offer no tag rule without tags (2ba27e8)
  • smart-playlists: ten findings from the local review (2af386f)
  • smart-playlists: the twin site of the NULL guard, and the windows in nine languages (6d92613)
  • start the resume point when play comes from mpd or the os media controls (5fe3c9f)
  • startup: a duplicate launch cannot erase the fallback it misread (0df23de)
  • startup: a failed retry stays failed, and Settings follows the request (afcfbcb)
  • startup: a refusal to start is not a launch that failed to paint (cec6b06)
  • startup: decide the renderer before the logger owns a thread (dad492e)
  • startup: every fatal start disarms, and the state file is replaced (8ce4f2b)
  • startup: the log line is one line, not a run of spaces (58ebdb3)
  • startup: the marker survives a second launch, and macOS is told the truth (1d8be74)
  • startup: the other deferred warning, and Settings goes back where it was (dc93d74)
  • startup: the retry button tells the truth, and lands on the card it means (126ff38)
  • startup: the retry flag is raised under the lock that made it true (996cfe5)
  • startup: the state writes after the decision take one lock (2e8b67e)
  • startup: the third warning on the pre-logger path is deferred too (39fd87a)
  • storage: eight findings from the second local review pass (9fedbd4)
  • storage: refuse to delete a cache folder WaveFlow did not create (2ebf501)
  • tags: a DSF tag we cannot read stops the edit instead of being replaced (51e9e56)
  • tags: a search cancelled by closing left the reopened modal loading (deb7b70)
  • tags: a write in flight cannot be dismissed, and both reads are tested (22e2626)
  • tags: a write publishes only into the session that started it (26cd94e)
  • tags: an ID3v2.2 tag could not be written at all once we touched its year (32627c9)
  • tags: going back drops the error with the release it belonged to (b6a5a79)
  • 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: ratings and lyrics take the writer that knows every container (e626c4c)
  • tags: refuse a DSF header that points its tag into the audio (2240bab)
  • tags: retire the fetch token when the modal closes (735bb74)
  • tags: route the two remaining close paths through the busy guard (be2b925)
  • tags: stop the year mirror from erasing the year it was added to protect (334e1ad)
  • tags: the disc separates two tracks numbered the same, and both locks release (1a1535d)
  • tags: the star rating reaches an ID3v2 file again (ca87b54)
  • tags: the synced stamp reaches AAC, skips a write it need not make (9caa565)
  • tags: the toggles decide from prev and say their state, and a write owns the screen (193a7a8)
  • 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: 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: settings layout polish, library table header and width, untimed TTML lyrics (7534c5d)
  • what the first run against a real server found (a6a3be2)

Performance Improvements

  • lyrics: the synced pass asks before it copies the file (768fd4b)

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 4 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: 67d5a359-a08f-4645-a041-6d67b9b61b64

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? 😄

@InstaZDLL

Copy link
Copy Markdown
Owner

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? 😄

Thank you so much, I really appreciate that! ❤️ It means a lot to see people this excited about the project.

And yeah… your feeling might be right 😄

I’m hoping to have the 1.8.0 beta available sometime this week. Most of the big pieces are already in place, and I’m currently working through the remaining fixes and polishing things up.

I don’t want to promise an exact day just in case a last-minute blocker shows up, but if everything keeps going smoothly, you shouldn’t have to wait much longer 👀🎶

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