## Clash-Projects/LastWave-Native — 4.2.2…4.2.3

_402+ commits._

### Features
- **feat(player): stretchy artwork fade, addon bit depth/clock extraction, and relocate system audio effects** (5a7fb6c)
- **feat(feed): port quick access section options, styling, and navigation from d6fdc6d (#238)** (64599b8)
- **feat(discord): show what's playing as Discord Rich Presence via pure AIDL IPC (#236)** (7c54ca9)
- **feat(artwork): enforce Spotify -> Apple Music -> Tidal -> Deezer -> YouTube priority and strict metadata matching (#221)** (6640da7)
- **Add draggable sleep timer overlay and playlist toast** (c001db0)
- **feat(diagnostics): split logging into crash and operational channels (#213)** (b76608f)
- **feat(appearance): option to disable rotating background (#180) (#203)** (f77be2a)
- **feat(lyrics): add resizable lyrics font scale with live controls and persistence (#181) (#199)** (bb0b246)
- **feat(playback): race YouTube and lossless streams in parallel with zero-delay playback and background hot-swap** (21edf34)
- **feat: add resizable lyrics (#190)** (4265a83)
- **feat: apply user requested UI fixes and widgets** (93f8403)
- **feat: user requested updates** (0551fe8)
- **feat(widget): obsidian glass widget + pause-safe crossfade handoff** (58bb697)
- **feat(lyrics): drop dead LyricsPlus provider, smarter matching, offset dialog** (5687220)
- **feat(app): system effects mode, settings reorg, playback hardening** (815bead)
- **feat(lyrics): production hardening across the full lyrics pipeline** (d9e02cd)
- **feat(widget): single adaptive widget with premium finish, drop overlay experiment** (6cd4050)
- **feat(player): add dark glassmorphic Now Playing overlay card** (fe28dc9)
- **feat: Implement Animated Album Canvas motion artwork (Apple Music, Tidal, Community) (#171)** (31230ec)
- **feat(widget): rebuild now-playing widgets from scratch on classic RemoteViews** (702324f)
- **feat(addons): show Join @clashprojects TG channel in addon settings** (92e3922)
- **feat(usb): show exclusive open failure reason in signal path (#148)** (fd8df32)
- **feat(ui): add Play next to mini tray (#146)** (55269ca)
- **feat(ui): add Play next to mini tray (#145)** (f43da4c)
- **feat(usb): same-family rate fallback for DACs lacking the source rate (#144)** (e7edc9f)
- **feat(ui): glass headers, floating track sheet, permanent drag reorder** (1634490)
- **feat(yt): support YouTube brand channels via PageId routing (#142)** (e298c9b)
- **feat(ui): restore liquid glass navigation dock, dynamic color, and discord support** (2b85e56)
- **feat(ux): long-press track mini tray, karaoke wrap fix, rounded nav bar, player icon alignment** (8c9fb96)
- **feat(theme): port SimpMusic liquid glass recipe for nav, icons and player (#138)** (83845bf)
- **feat(theme): rebuild liquid glass with Kyant0 Backdrop 2.0.1 and strip trueglass** (b939a5e)
- **feat(diagnostics): add comprehensive logs for lossless resolution, track freeze, and quality pill** (e46dd13)
- **feat(playback): exclusive usbdevfs output on Media3 1.2.1 (#129)** (aa991cd)

### Fixes
- **fix(addon): extract bit type, bit depth, and clock rate from all addon metadata variants** (6339779)
- **fix(player): smooth static artwork fade, eliminate top and bottom cuts** (16e00e3)
- **fix(addon): add missing kotlinx.serialization.json imports in AddonModels** (996521f)
- **fix(player): prevent static cover art from bleeding through translucent canvas (#237)** (e3bec2b)
- **fix(ui): Quick Access order/icons, My Mix playback, lyrics native FPS… (#230)** (63fbf24)
- **Fix/feed author nullability (#235)** (0d642ea)
- **fix(player): restore FLAC bit depth/rate pill on all devices via STREAMINFO fallback (#231)** (97c68d5)
- **fix(player): preserve 24-bit quality badge and resolve seekbar stalls (#228)** (ac19d06)
- **fix(csv-import): verify every match and stop dropping whole playlists (#224)** (1d67649)
- **fix(player): prevent queue preloader and format listeners from clobbering 24-bit Hi-Res quality badge (#226)** (ecd20b4)
- **fix(player): revert cover art and canvas fade changes from e9cf372 while preserving seekbar fix (#223)** (5e17598)
- **fix(artwork): fix compilation return statements and prioritize Apple Music -> Tidal -> Deezer -> Spotify -> YouTube (#222)** (71681e6)
- **fix(player): resolve seekbar freeze, stabilize lyrics sync, and smooth cover canvas fade (#220)** (e9cf372)
- **fix(usb): enhance universal bit-perfect DAC compatibility and eliminate mute traps (#219)** (c00c2ba)
- **Fix compilation errors: add context, Arrangement import, fix pointerInput syntax** (cfff4ff)
- **Fix UI issues: Quick access grid, settings, player layout, widget sizes** (5b709df)
- **fix(player): dissolve full-bleed cover art via offscreen DstIn blend mask (#217)** (bae2ab7)
- **fix(playback): stop a track's duration leaking into the next track (#216)** (0d53ccd)
- **fix(player): never stack static cover under animated canvas, align hero melt to hero height (#215)** (df11b4b)
- **Fix unresolved import references in UI files** (e1dea40)
- **fix(playback): make crossfade survive provider-module FLAC (#212)** (eb9297a)
- **Fix UI, navigation tabs, playlist deletion logic and more** (e009c79)
- **Fix syntax errors and missing imports across UI layer** (f29793e)
- **Fix syntax error in items extension function call for LazyHorizontalGrid** (5307784)
- **Fix missing TextOverflow import** (00aa9e0)
- **Fix UI issues and match kittytune widget layout** (b27e85d)
- **fix: stop playback and remove downloads when clearing data (#208)** (12492ba)
- **fix(quality): the pill describes the song, never the decoder** (c3f42d2)
- **fix(artwork): drop the DstIn mask that underflowed the canvas save stack** (6fd20cd)
- **fix(icon): scale launcher and splash foreground into circular safe zone (#188) (#205)** (d29835e)
- **fix(quality): stop fabricating bit depth - contradicted 16 becomes unknown, decoder upgrades measured depth** (92c76ad)
- **fix(playback): synchronize queue, preload next track, and handle state on playNext / addToQueue (#182) (#198)** (9123c0d)
- **fix(download): harden all tiers - cooling skip, Atmos stereo fallback, DASH truncation fail, YT budget, honest completion** (ec11a43)
- **fix(yt-sync): stop pushing unadded songs to user YouTube playlists** (43a78f5)
- **fix(download): reuse playback YT resolve path with broad search so playable songs download** (a0d60e1)
- **fix(liked): strong song identity, locked YT-liked merge, healing sync** (e19fe40)
- **fix(player): seamless full-bleed cover melt with square-capped hero** (22042f4)
- **Fix FuzzyMatcherTest: update prefix query from removed scrobbler setting to theme** (1bde560)
- **Fix build: empty when branch syntax error** (f4ae961)
- **Fix build: NavGraph syntax and remove Scrobbler search entries** (d87e652)
- **Fix build: Move imports below package declaration** (391762e)
- **Fix build: remove ScrobbleDebugLog from MusicPlaybackService** (41837f5)
- **fix(playback): cascade spatial-to-stereo lossless fallback and tighten end-of-queue resume guard** (3ea8a70)
- **fix(playback): lock stream format, remove mid-track hot-swap, and fix Number regex in download manager** (2ad7ec1)
- **fix(build): restore native library build and resolve compilation errors** (876bb01)
- **fix: add missing brace in HomeScreen.kt** (0155025)
- **fix: resolve hidden syntax errors caused by extra braces and invalid references** (61de661)
- **fix: move package declaration before imports to fix compilation error** (2f2b40f)
- **fix: resolve missing braces and imports causing build failure** (5cd98ca)
- **fix: import dp in MainActivity** (8481c97)
- **fix(lyrics): backing-vocal rows, phrase grouping, faster scroll chase** (da3d33d)
- **fix(download): atmos downloads fall back down, stereo tiers never upscale to dolby** (4333d77)
- **fix(audio): honest hi-res bit-depth inference across the chain** (0945d1b)
- **fix(build): drop try/catch around backdrop composable** (95b0ec8)
- **fix(build): public DSP constants, composable-safe backdrop guard** (6a7d40b)
- **fix(build): resolve playHistory track references in radio builder** (cabab1c)
- **fix(build): resolve compile errors, track addon service** (1222f4f)
- **fix(lyrics): correct inverted sync-offset guidance, tighten highlight tracking** (e848f25)
- **fix(player): advance tail-pinned tracks, honest pill for unprobed local files** (45e4098)
- **fix(yt-login): stop false YouTube-rejected-session on slow devices** (bf74b74)
- **fix(canvas): full-bleed 9:16 edge-to-edge motion artwork with hero bottom fade (#174)** (b70c9fe)
- **fix(lossless): prefer 24-bit masters instead of parking at 16-bit** (8719d1a)
- **fix(player): hold instead of auto-skip on transient 403/throttle errors** (cfd542c)
- **fix(release): v4.2.1 compile errors blocking release build** (c995bb3)
- **fix(usb-audio): true bit-perfect pipeline, dual-crystal UAC2 clock selector, and smart sample-rate fallback (#165)** (f79b6be)
- **fix(player): seekbar buffering clock, repeat-one next/previous, pill white-out, lossless-Dolby upgrade guard** (6672110)
- **fix(usb): correct exclusive output timing to eliminate buzzing (#161)** (d2c7f73)
- **fix(playback): resolve exclusive USB forward-seek cutoff, runaway seekbar, and pause spinner (#153)** (fcc6146)
- **Fix FluidArtworkBackground imports** (3f1bd4b)
- **Fix UI bugs: radius, solid colors, fluid gradient, queue containers, widgets, and floating menu blur** (940da55)
- **Fix widget redeclaration build error** (6716cff)
- **fix: update icon (#141)** (647d705)
- **fix(playback): keep exclusive USB alive across a forward seek (#143)** (f58b981)
- **fix(ui): feed card long-press tray, edge-to-edge karaoke lyrics** (dff7390)
- **fix(playback): bound YouTube resolve so slow tracks fail fast** (e5e9877)
- **fix(ui): restore selected-tab pill wrap in nav dock** (305dbc8)
- **fix(ui): keep Signal Path dialog opaque under liquid glass** (6a6691a)
- **fix(playback): exclusive USB through libusb (#140)** (2c596f5)
- **fix(ui): restore full nav labels and Apple lyrics edge clearance** (a728f73)
- **fix(ui): restore rounded liquid glass nav bar and circular items** (e2ee3a8)
- **fix(ui): resolve lyrics sync and movement, remove nav bar rectangular wrapping, and enable dynamic theme** (5d71260)
- **fix(lossless): cascade Dolby Atmos fallback to Hi-Res, Lossless, and 320k for playback and downloads** (f8aa16b)
- **fix(playback): exclusive USB 88.2-family packets and seek (#139)** (bf489a4)
- **fix(build): resolve trueglass and youtube budget compile errors** (bad9c60)
- **fix(player): quality pill, slider, Atmos, and exclusive USB pause (#136)** (9aa4714)
- **fix(playback): exclusive USB drift and 44.1-family clock lock (#134)** (e143f20)
- **fix(player): publish stream quality in ResolvingDataSource and detect decoder codec** (25a738c)
- **fix(lossless): stop silent match vetoes and unfair cooldowns** (deaf3f8)
- **fix(release): version 4.2.0 identity, verify APK signatures, publish checksums** (8808f84)
- **fix(playback): exclusive USB drift, 44.1-family rates, and plugin volume (#133)** (786a375)
- **fix(player): drop dead resolve/publish code, pill never renders AUDIO N kbps** (8bf0c11)
- **fix(player): honest quality badge, limusic-style fast YouTube resolve, drop QuickJS, trueglass migration** (7f3dec0)
- **fix(playback): exclusive USB gold without tags, faster next track (#132)** (72085af)
- **fix(player): slider freeze/jump — latch-free drag state, true-duration guards, seek settle, hashed tidal manifests** (bbd23d1)
- **fix(lyrics): eliminate jitter with PLL clock, fix scroll crash and line-sync animation** (9c2c0f1)
- **fix(lyrics): avoid SyncedLine property access, fix O(n^2) activeIndex** (7a495fa)
- **fix(lyrics): sync timing, smooth animation, and line-sync end times** (cae60d4)
- **fix(playback): restore lossless badge display - remove isConfigured gate from playback path** (f399139)

### Backend
- **Update widget design to match reference design while preserving functionality** (496b60c)
- **Merge branch 'ui-improvements'** (683dfa6)
- **UI improvements and fixes** (ffab25e)
- **Remove MediaScrobbleListenerService and external scrobbler UI** (cff12dd)
- **Feat/settings search (#187)** (5e7c243)
- **Fixed Notification Issue while Playback (#172)** (fc25a41)
- **wip: sync pending local changes (lossless matching, lyrics, usb, ui, workflows)** (b704751)
- **Merge pull request #160 from Clash-Projects/feature/ui-updates-widgets** (2b9386a)
- **Merge pull request #158 from Clash-Projects/feature/ui-updates-widgets** (99f640c)
- **Merge pull request #157 from Clash-Projects/feature/ui-updates-widgets** (9aeb40b)
- **UI Updates: Kittytune fluid gradient, Widgets, Pill Play/Pause** (e024b1d)
- **revert(ui): drop glass headers, stronger dialog blur, silent-advance watchdog** (88be1ba)

### Chore
- **chore(release): bump version to 4.2.3 (versionCode 23)** (6d9013c)
- **chore: remove leftover app queries and scrobbler log to prevent Play Protect warnings** (4e1bd34)
- **chore: remove lastwave-addon-service from repository and ignore** (6dc0756)
- **chore(release): v4.2.2 — version bump, lyrics veil, adaptive transport** (b7beead)
- **chore(release): v4.2.1 — update documentation, workflows, version references, and download matching** (01f3b0e)
- **chore(secrets): drop dead URL/KEY/provider-module-key code** (7fa74b8)
- **chore(release): v4.2.0 — update documentation, workflows, and version references** (05cfbb8)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/Clash-Projects/LastWave-Native?utm_source=github-action)._