Repository navigation
Releases: NatuneGroup/Natune
Release list
N20261103
Nightly build
Automated nightly build from the dev branch. Not intended for production use.
Commits
- fix(lyrics): match the library's interlude threshold for line-synced rows (f4ebdde)
- fix(lyrics): draw Enhanced with the library view again on Android 10+ (5e19935)
- fix(startup): dedupe journaled and last attempts by identity (41ffc32)
- fix(startup): honour acknowledgement and healthy completion in the crash-loop gate (1647a64)
- fix(lyrics): fall back to the plain sweep when per-letter shaping would change glyphs (07460a1)
- fix(startup): only show launch report after a real startup crash loop (1654375)
- feat(acoustics): simpler, smoother acoustic graph (5d71aff)
- fix(lyrics): default word-synced priority on, gate menu on appearance (4f9a5a7)
- fix(logging): keep Timber tags consistent and chunk release logcat (473dc2d)
- fix(lyrics): keep canonical provider branding in the attribution label (96972a7)
- fix(lyrics): draw emphasised graphemes as isolated shaped runs (e9f5b78)
- perf(logging): gate debug logging out of release builds (9f50ceb)
- fix(lyrics): resolve band overshoot against layout density (81819f3)
- fix(lyrics): readable source names, proper menu icons and item gating (969f986)
- fix(lyrics): keep sweep clip bands from slicing glyph edges (50dea23)
- fix(ios): import the cinterop ptr and value extensions (31e5503)
- fix(ios): build the outputVolume signature from obj-C types (e39c480)
- fix(ios): read output volume without NSInvocation (6340fe3)
- fix(integ): repair the second round of batch-13 ios-compile and test failures (836ff3a)
- fix(integ): repair the batch-13 ios-compile and unit test failures (79ce659)
- test(pool): drop nullable sort in recovery flight test (1edf2a6)
- fix(pool): address review on batch 12 pool follow-ups (e0a1f19)
- fix(desktop): use RequestedShuffleEnabled in windows smtc (6015198)
- fix(desktop): avoid nested generic lambdas in windows smtc handlers (0bf2bee)
- fix(spotify): import native Volatile in ios librespot (173c014)
- fix(spotify): harden desktop librespot sign-in (a8af304)
- feat(spotify): add ios librespot OAuth sign-in (a9f4678)
- fix(ios): name the shipped Text.Layout.Run in the lyric sweep (1d8f3e8)
- feat(spotify): add desktop librespot OAuth sign-in (ecb769b)
- fix(integ): repair the shared-ui and test failures from batch 12 (bb33ad2)
- fix(playback,lyrics): address review on study improvements (3868f5a)
- fix(spotify): guard premium recheck against catalog change (639618c)
- fix(spotify): bind librespot tokens to catalog identity (7c1d240)
- fix(spotify): harden librespot OAuth slice (a676af4)
- feat(playback): show -30/+30s seek actions on long content (941d909)
- fix(integ): repair the two batch-12 CI compile errors (a892114)
- refactor(playback): move the player-cache trim into its own file (09fd43d)
- feat(playback): hold a low-latency Wi-Fi lock while playing (56ca2c1)
- feat(playback): debounce the buffering flag by 150ms (82edabc)
- feat(spotify): librespot PKCE OAuth sign-in for the Android slice (0cd29b1)
- feat(player): settle the Apple artwork a little smaller on pause (4bdbe54)
- feat(lyrics): dim passed lines less and resume on tap-to-seek (26b733d)
- refactor(ios): share the pooled-account recovery helper (2ea15a8)
- fix(pool): cache discovery and back off pool auth failures (fb38d55)
- fix(pool): classify tidal racing 401s through the dead-report policy (85d210a)
- fix(ios-playback): advance observed intent generation on the policy actor (bc7fe6e)
- fix(presence): beat every 15 minutes with jitter (29159ff)
- fix(ios-playback): tag mute policy commands with the processed intent generation (0ca527d)
- fix(ios-playback): serialize mute policy commands with user intent (49b5646)
- feat(ios-playback): pause on mute with explicit command origin (8349c36)
- revert(ios-playback): defer pause-on-mute to its own branch (7da5211)
- fix(ios-playback): drive output-mute policy through a pure reducer (1c0ac9e)
- test(ios-lyrics): probe reduced-motion sweep before the word starts (e2053bf)
- fix(ios-lyrics): address Sol review on native lyric view (d7495a7)
- fix(ios-playback): keep sampling volume behind a policy mute pause (97e3257)
- fix(pool): adopt typed recovery outcomes across pooled report hosts (8adca81)
- fix(ios-playback): sample the output volume instead of KVO (d6e995c)
- feat(ios): bring native lyric view to Enhanced parity (a319c5a)
- fix(ios-playback): resolve review findings on parity batch (8fd3e65)
- fix(pool): explicit recovery outcome gates the dead report (26942d8)
- fix(playback): probe the itag-scoped slot for offline cold-start replay (1803a3e)
- fix(ios): uuid-bound block ids and manifest-driven dead detection (8409e64)
- fix(ios): bind and pin the restore-resolution journal (76aeb3e)
- fix(playback): scope YouTube byte-cache keys by the resolved itag (c79b16d)
- fix(playback): rendition-scoped cache keys and a working stop hook (a2b6a7b)
- fix(integ): align the song.db export test and Lyprio endpoint canonical form (f54b26d)
- fix(ios): make restore resolutions resumable through a journaled choice (d895ca6)
- fix(pool): stop report failover on unknown delivery; classify before decode (28c49ec)
- fix(playback): cancel pending recovery on stop and key LOW cache separately (12ed529)
- fix(lyrics): expose feed re-anchors to the iOS lyric view (fc5f29a)
- fix(integ): keep tempo-pitch preset upserts keyed on the id alone (8b7f668)
- fix(integ): resolve PR #70 CI round-6 shared-module test errors (7b219d0)
- fix(pool): configurable ArchivePool base URL with vercel fallback (2a444dc)
- fix(lyrics): keep feed jumps from counting as discontinuities and reveal published readings (a035e13)
- fix(playback): bound recovery-seek marks, defer cache retirement, pause kills retry (c589dc4)
- fix(integ): resolve PR #70 batch review blockers (5c89589)
- fix(integ): cover Metrolist sleeve hiding in PlayerStyleSettingsTest (d2b12d2)
- fix(pool): refresh-or-re-lease before reporting pooled accounts dead (a137509)
- fix(playback): reject stale prepares, seed gapless state, harden codec budget (da411eb)
- fix(ios): gate the app root on restore recovery mode (c529887)
- fix(integ): resolve PR #70 CI round-4 test and iOS canvas errors (db14000)
- fix(ios): persist the joint abort before recovery and block on incomplete rollback (35538a5)
- feat(spotify): dual-playback account roles, engine preference and premium gating (27d49ce)
- fix(playback): own pending retries, feed seeks/pauses, snapshot monitor state (e5c25a3)
- fix(ios): require a persisted abort before restore undo (b05722d)
- feat(ios-playback): mount the shared tempo and pitch dialog (51a12f4)
- feat(ios-playback): pause on device mute (e32b29a)
- feat(ios-playback): bind the remote skip interval commands (9996b11)
- feat(ios-playback): recover a stalled engine once per load (d1991d1)
- feat(ios-playback): mark blend requests that can be re-prepared (aada983)
- fix(integ): resolve PR #70 CI round-3 app/desktopApp/iOS compile errors (5bd8156)
- feat(playback): unify recovery backoff and freeze on repeated rebuffering (845390d)
- feat(provider): race Tidal pool accounts on desktop and iOS (2a8ac62)
- build(deps): align kotlinx-serialization to 1.12.0 (519c384)
- feat(ios): mount the hidden playlists settings page (9f32b95)
- fix(integ): resolve PR #70 CI round-2 shared-ui compile errors (b746964)
- fix(ios): recover jointly and hold a blocked marker for unresolvable restores (3c6c521)
- fix(integ): resolve batch-11 compile errors (0c62536)
- fix(backup): tolerate runtime sidecars and retryable rollbacks in recovery (5ae3984)
- ci(release): skip the Android SDK on non-Android release jobs (a66856f)
N20261102
Nightly build
Automated nightly build from the dev branch. Not intended for production use.
Commits
- fix(ios): import the cinterop ptr and value extensions (31e5503)
- fix(ios): build the outputVolume signature from obj-C types (e39c480)
- fix(ios): read output volume without NSInvocation (6340fe3)
- fix(integ): repair the second round of batch-13 ios-compile and test failures (836ff3a)
- fix(integ): repair the batch-13 ios-compile and unit test failures (79ce659)
- test(pool): drop nullable sort in recovery flight test (1edf2a6)
- fix(pool): address review on batch 12 pool follow-ups (e0a1f19)
- fix(desktop): use RequestedShuffleEnabled in windows smtc (6015198)
- fix(desktop): avoid nested generic lambdas in windows smtc handlers (0bf2bee)
- fix(spotify): import native Volatile in ios librespot (173c014)
- fix(spotify): harden desktop librespot sign-in (a8af304)
- feat(spotify): add ios librespot OAuth sign-in (a9f4678)
- fix(ios): name the shipped Text.Layout.Run in the lyric sweep (1d8f3e8)
- feat(spotify): add desktop librespot OAuth sign-in (ecb769b)
- fix(integ): repair the shared-ui and test failures from batch 12 (bb33ad2)
- fix(playback,lyrics): address review on study improvements (3868f5a)
- fix(spotify): guard premium recheck against catalog change (639618c)
- fix(spotify): bind librespot tokens to catalog identity (7c1d240)
- fix(spotify): harden librespot OAuth slice (a676af4)
- feat(playback): show -30/+30s seek actions on long content (941d909)
- fix(integ): repair the two batch-12 CI compile errors (a892114)
- refactor(playback): move the player-cache trim into its own file (09fd43d)
- feat(playback): hold a low-latency Wi-Fi lock while playing (56ca2c1)
- feat(playback): debounce the buffering flag by 150ms (82edabc)
- feat(spotify): librespot PKCE OAuth sign-in for the Android slice (0cd29b1)
- feat(player): settle the Apple artwork a little smaller on pause (4bdbe54)
- feat(lyrics): dim passed lines less and resume on tap-to-seek (26b733d)
- refactor(ios): share the pooled-account recovery helper (2ea15a8)
- fix(pool): cache discovery and back off pool auth failures (fb38d55)
- fix(pool): classify tidal racing 401s through the dead-report policy (85d210a)
- fix(ios-playback): advance observed intent generation on the policy actor (bc7fe6e)
- fix(presence): beat every 15 minutes with jitter (29159ff)
- fix(ios-playback): tag mute policy commands with the processed intent generation (0ca527d)
- fix(ios-playback): serialize mute policy commands with user intent (49b5646)
- feat(ios-playback): pause on mute with explicit command origin (8349c36)
- revert(ios-playback): defer pause-on-mute to its own branch (7da5211)
- fix(ios-playback): drive output-mute policy through a pure reducer (1c0ac9e)
- test(ios-lyrics): probe reduced-motion sweep before the word starts (e2053bf)
- fix(ios-lyrics): address Sol review on native lyric view (d7495a7)
- fix(ios-playback): keep sampling volume behind a policy mute pause (97e3257)
- fix(pool): adopt typed recovery outcomes across pooled report hosts (8adca81)
- fix(ios-playback): sample the output volume instead of KVO (d6e995c)
- feat(ios): bring native lyric view to Enhanced parity (a319c5a)
- fix(ios-playback): resolve review findings on parity batch (8fd3e65)
- fix(pool): explicit recovery outcome gates the dead report (26942d8)
- fix(playback): probe the itag-scoped slot for offline cold-start replay (1803a3e)
- fix(ios): uuid-bound block ids and manifest-driven dead detection (8409e64)
- fix(ios): bind and pin the restore-resolution journal (76aeb3e)
- fix(playback): scope YouTube byte-cache keys by the resolved itag (c79b16d)
- fix(playback): rendition-scoped cache keys and a working stop hook (a2b6a7b)
- fix(integ): align the song.db export test and Lyprio endpoint canonical form (f54b26d)
- fix(ios): make restore resolutions resumable through a journaled choice (d895ca6)
- fix(pool): stop report failover on unknown delivery; classify before decode (28c49ec)
- fix(playback): cancel pending recovery on stop and key LOW cache separately (12ed529)
- fix(lyrics): expose feed re-anchors to the iOS lyric view (fc5f29a)
- fix(integ): keep tempo-pitch preset upserts keyed on the id alone (8b7f668)
- fix(integ): resolve PR #70 CI round-6 shared-module test errors (7b219d0)
- fix(pool): configurable ArchivePool base URL with vercel fallback (2a444dc)
- fix(lyrics): keep feed jumps from counting as discontinuities and reveal published readings (a035e13)
- fix(playback): bound recovery-seek marks, defer cache retirement, pause kills retry (c589dc4)
- fix(integ): resolve PR #70 batch review blockers (5c89589)
- fix(integ): cover Metrolist sleeve hiding in PlayerStyleSettingsTest (d2b12d2)
- fix(pool): refresh-or-re-lease before reporting pooled accounts dead (a137509)
- fix(playback): reject stale prepares, seed gapless state, harden codec budget (da411eb)
- fix(ios): gate the app root on restore recovery mode (c529887)
- fix(integ): resolve PR #70 CI round-4 test and iOS canvas errors (db14000)
- fix(ios): persist the joint abort before recovery and block on incomplete rollback (35538a5)
- feat(spotify): dual-playback account roles, engine preference and premium gating (27d49ce)
- fix(playback): own pending retries, feed seeks/pauses, snapshot monitor state (e5c25a3)
- fix(ios): require a persisted abort before restore undo (b05722d)
- feat(ios-playback): mount the shared tempo and pitch dialog (51a12f4)
- feat(ios-playback): pause on device mute (e32b29a)
- feat(ios-playback): bind the remote skip interval commands (9996b11)
- feat(ios-playback): recover a stalled engine once per load (d1991d1)
- feat(ios-playback): mark blend requests that can be re-prepared (aada983)
- fix(integ): resolve PR #70 CI round-3 app/desktopApp/iOS compile errors (5bd8156)
- feat(playback): unify recovery backoff and freeze on repeated rebuffering (845390d)
- feat(provider): race Tidal pool accounts on desktop and iOS (2a8ac62)
- build(deps): align kotlinx-serialization to 1.12.0 (519c384)
- feat(ios): mount the hidden playlists settings page (9f32b95)
- fix(integ): resolve PR #70 CI round-2 shared-ui compile errors (b746964)
- fix(ios): recover jointly and hold a blocked marker for unresolvable restores (3c6c521)
- fix(integ): resolve batch-11 compile errors (0c62536)
- fix(backup): tolerate runtime sidecars and retryable rollbacks in recovery (5ae3984)
- ci(release): skip the Android SDK on non-Android release jobs (a66856f)
- feat(ios): wire the two-phase restore transaction into startup (0b4c4eb)
- fix(lyrics): make Lyprio a built-in provider (c1b94d1)
- fix(about): surface the bundled notices without plugin config (d700bd3)
- feat(backup): two-phase restore commit for joint settings apply (3a390ff)
- fix(startup): compare install stamps only when both sides recorded one (7fc5e2c)
- feat(about): show the bundled pinyin-data notices on every host (2695762)
- fix(lyrics): require every sung source row for the verbatim shortcut (2c6e4ee)
- feat(ios): posix file ops for the restore transaction (7403fb0)
- fix(ios): bundle the Apache-2.0 text the QuickJS notice names (8ccf49f)
- fix(potoken): close a created runtime when creation is cancelled (8b79603)
- fix(startup): key stale-attempt detection on recorded install identity (ff0e6c4)
- feat(backup): crash-safe restore recovery state machine (a351d42)
- feat(lyrics): wire built-in Lyprio server defaults from build credentials (89a4f5f)
- docs(credits): ship the mozillazg pinyin-data MIT license texts (60e7b7b)
- fix(lyrics): stop re-merging already-bilingual translation results (0d80800)
local-N20261101 (signed nightly, 12dcaaa7)
Nightly N20261101 (12dcaaa) Android APKs re-signed locally with the persistent debug key (cert SHA-256 6db8326a…f9d9) so they install over earlier local builds. Not signed with the release keystore; CI signing secrets are still not configured.
N20261101
Nightly build
Automated nightly build from the dev branch. Not intended for production use.
Commits
- feat(app): port ENHANCED sweep, depth, glide and interludes (c478db9)
- fix(shared-ui): drop the invalid lazy item import from the queue panel (200e149)
- fix(shared-ui): keep the queue selection actions reachable after scrolling (9b3d4c1)
- perf(player): read the sleep pill from the shared countdown (83ee6cb)
- feat(shared-ui): collapse the playback queue header into a compact row (55fbfad)
- feat(audio): show live compressor gain reduction in the audio chain (5433f04)
- docs: record crash logs routes and recovery acknowledgement (8243de4)
- feat(startup): add the Developer crash logs page and detail (5e6b434)
- perf(desktop): close the fullscreen video when the window is hidden (dae47b9)
- perf(ui): gate the SimpMusic lyrics gradient on the started lifecycle (48f15a4)
- perf(desktop): sleep the position checkpoint loop while paused (16bb23c)
- perf(playback): stop the widget progress timer with the screen (887c832)
- fix(settings): let the Apple menus toggle write only its own key (68b5627)
- fix(settings): keep the fresh-install indicator on the default style (fd67648)
- feat(startup): restyle the crash report screen and acknowledge shown crashes (e65ca3f)
- revert(about): restore the unused SukiSU About background files (c96d1a8)
- feat(startup): restyle the startup recovery screen in Material 3 (8fea251)
- docs(agents): record the Apple Music default for the player menu (281a232)
- docs(settings): document the player menu style and About surfaces (f180dd3)
- fix(player): place the caret at the end of the prefilled source search (dbc5376)
- fix(settings): derive the Apple menus surface from the effective menu style (15197e2)
- chore(about): remove the unused SukiSU About background (d6b0978)
- feat(startup): keep crash and exit records in one bounded store (077fddc)
- fix(ui): share marquee phase and fades with app titles (4a85db0)
- fix(shared-ui): keep the first followed line from gliding in (6316dfe)
- docs(sponsorblock): describe the paused-state polling (823c542)
- perf(ui): pause shimmer sweeps while the app is not started (b4b927d)
- feat(desktop): read ENHANCED depth on the desktop host (1832442)
- feat(shared-ui): glide ENHANCED rows into place on a line change (5aa1852)
- fix(ui): read typing-dot phase inside the dot loops (004038a)
- fix(playback): wake paused loops on track and timeline changes (a595da3)
- fix(ui): default settings marquee to the motion policy (c7311c3)
- fix(player): prefill switch-source search with the track (e76c79f)
- fix(queue): import scrollBy and drop the invalid item import (0140450)
- fix(playback): refresh the resume file when the volume changes (c543030)
- fix(ui): restore marquee fades and phase persistence; let list titles wrap (be0a93b)
- feat(player): add a player menu style choice (38d4e70)
- style(ui): use upper snake case for the Bit Chord idle bar scale (5741c63)
- fix(playback): honor the persistent queue setting on paused saves (5f11461)
- perf(ui): pause decorative loops while the app is not started (7280b6e)
- perf(shared-ui): stop idle motion and checkpoint loops when hidden (48c1e9b)
- feat(shared-ui): refine ENHANCED lyrics toward Apple Music motion (db943d1)
- perf(playback): sleep service loops while playback is paused (993780a)
- feat(desktop): set an 800x600 minimum window size (329db2d)
- feat(queue): fold the queue extras into one row for Apple Music and SimpMusic (c3a9b47)
- feat(queue): compact the queue header and share the sleep countdown (bf4f82a)
- fix(player): keep the last cover on screen while the next one loads (25ec298)
- fix(about): replace the glass background with tonal surfaces (c2e2bb2)
- fix(settings): hide tab bar, rail and mini player on settings (201e65b)
- fix(ci): clean staging hand-offs and keep the newest five nightlies (ad5b264)
- feat(desktop): mount the equalizer graph and persist band levels (d92b953)
- refactor(shared): remove uncalled pre-cache and silence skipper files (88d0412)
- feat(shared-ui): compact the player queue header card (4d2a4d4)
- feat(queue): compact the player queue header and rows (d5f5c62)
- fix(ui): let list rows and action dialogs grow with font scale (1848a88)
- test(settings): pin the registry at 648 after the two rc6 keys (50a0a3c)
- docs(credits): credit Metrolist 14.0.0-rc6 behavior re-implementations (ceefd98)
- fix(player): keep the previous cover on screen while the next one loads (72a92ad)
- feat(settings): add the mobile-data animated artwork switch on Android (8d9ee6b)
- fix(lyrics): read the saved lyrics text size in shared player slots (09cb763)
- refactor(sleep-timer): derive sheet countdowns from the timer deadline (0653888)
- fix(playback): keep the paused state on widget next and previous (05e3c07)
- fix(equalizer): import the generated graph string accessors (09eca01)
- fix(canvas): declare the cellular flag on the app connectivity model (01a12e2)
- feat(settings): add a palette style row to the appearance page (cb71e5c)
- feat(theme): build a saved palette color with its style (49e2809)
- fix(player): opt in to the foundation marquee spacing API (c34e745)
- build(shared-ui): add material-kolor for saved-color schemes (7c7bdef)
- fix(dsp): smooth the gain-reduction readout (38aa92d)
- feat(equalizer): add a stable graph for band gain drags (c0580b2)
- fix(equalizer): keep a 0 dB band in the cascade (f5514c6)
- feat(player): keep the cover on screen while the next artwork loads (eb7efe1)
- fix(sleep-timer): wake countdown sheets once per displayed second (297097b)
- feat(playback): add a bounded prefix pre-cache for direct files (1f7a6f3)
- fix(desktop): check Discord heartbeat acks and drop a dead gateway (ab75aaf)
- feat(player): apply swipe sensitivity to artwork snap threshold (0183af0)
- feat(canvas): hold animated artwork back on cellular when requested (d98b9db)
- feat(dsp): add the pure silence skipper and instant detector (8e1fc24)
- fix(lyrics): report a rejected manual AI translation (c635b4c)
- perf(ios): start the Telegram session off the main thread (6681e51)
- perf(player): stop ambient background motion while paused (484c320)
- feat(lyrics): take the saved text size and bound the list inset (491dba8)
- perf(desktop): open the session graph off the launch thread (1f121f4)
- perf(android): defer the source refresh schedule and optional downloads (abfd788)
- feat(settings): add contract keys for animated artwork and palette style (46313ab)
- feat(player): play track titles once per track (e13493e)
- feat(android): keep the play state on Next and Previous (f5c1d26)
- feat(playback): keep the paused state on manual next and previous (6310e09)
- fix(ios): pass the NSURLCredentialPersistence enum entry (cdbdef4)
- fix(integ): repair PR #63 iOS, desktop and parser CI failures (a1cdd77)
- fix(integ): reconcile lanes A-D after merge (91d86b6)
- fix(android): recover startup crashes before heavy initialization (32036ba)
- fix(android): preserve legacy settings and nullable migration values (ecbedd6)
- test: add iOS downloads and local songs unit tests (95a14e1)
- docs(desktop): name Android's BuildConfig credentials in build comments (23748e9)
- docs(ios): correct the Last.fm key-pair note in the iOS build settings (cf049e0)
- docs(desktop): record Amazon, SpatialFlow, YouTube OAuth and hidden playlist routes (f147e48)
- feat(shared-ui): leave hidden playlists out of the library list (3513f5f)
- feat(desktop): install the SpatialFlow typeface and draw the player title in it (e2c2b8e)
- feat(desktop): authorize Amazon Music in a native Turnstile window (0797e5f)
Android APKs are unsigned because one or more Android signing secrets are missing.
N20261031
Nightly build
Automated nightly build from the dev branch. Not intended for production use.
Commits
- fix(shared-ui): drop the invalid lazy item import from the queue panel (200e149)
- fix(shared-ui): keep the queue selection actions reachable after scrolling (9b3d4c1)
- perf(player): read the sleep pill from the shared countdown (83ee6cb)
- feat(shared-ui): collapse the playback queue header into a compact row (55fbfad)
- feat(audio): show live compressor gain reduction in the audio chain (5433f04)
- docs: record crash logs routes and recovery acknowledgement (8243de4)
- feat(startup): add the Developer crash logs page and detail (5e6b434)
- perf(desktop): close the fullscreen video when the window is hidden (dae47b9)
- perf(ui): gate the SimpMusic lyrics gradient on the started lifecycle (48f15a4)
- perf(desktop): sleep the position checkpoint loop while paused (16bb23c)
- perf(playback): stop the widget progress timer with the screen (887c832)
- fix(settings): let the Apple menus toggle write only its own key (68b5627)
- fix(settings): keep the fresh-install indicator on the default style (fd67648)
- feat(startup): restyle the crash report screen and acknowledge shown crashes (e65ca3f)
- revert(about): restore the unused SukiSU About background files (c96d1a8)
- feat(startup): restyle the startup recovery screen in Material 3 (8fea251)
- docs(agents): record the Apple Music default for the player menu (281a232)
- docs(settings): document the player menu style and About surfaces (f180dd3)
- fix(player): place the caret at the end of the prefilled source search (dbc5376)
- fix(settings): derive the Apple menus surface from the effective menu style (15197e2)
- chore(about): remove the unused SukiSU About background (d6b0978)
- feat(startup): keep crash and exit records in one bounded store (077fddc)
- fix(ui): share marquee phase and fades with app titles (4a85db0)
- fix(shared-ui): keep the first followed line from gliding in (6316dfe)
- docs(sponsorblock): describe the paused-state polling (823c542)
- perf(ui): pause shimmer sweeps while the app is not started (b4b927d)
- feat(desktop): read ENHANCED depth on the desktop host (1832442)
- feat(shared-ui): glide ENHANCED rows into place on a line change (5aa1852)
- fix(ui): read typing-dot phase inside the dot loops (004038a)
- fix(playback): wake paused loops on track and timeline changes (a595da3)
- fix(ui): default settings marquee to the motion policy (c7311c3)
- fix(player): prefill switch-source search with the track (e76c79f)
- fix(queue): import scrollBy and drop the invalid item import (0140450)
- fix(playback): refresh the resume file when the volume changes (c543030)
- fix(ui): restore marquee fades and phase persistence; let list titles wrap (be0a93b)
- feat(player): add a player menu style choice (38d4e70)
- style(ui): use upper snake case for the Bit Chord idle bar scale (5741c63)
- fix(playback): honor the persistent queue setting on paused saves (5f11461)
- perf(ui): pause decorative loops while the app is not started (7280b6e)
- perf(shared-ui): stop idle motion and checkpoint loops when hidden (48c1e9b)
- feat(shared-ui): refine ENHANCED lyrics toward Apple Music motion (db943d1)
- perf(playback): sleep service loops while playback is paused (993780a)
- feat(desktop): set an 800x600 minimum window size (329db2d)
- feat(queue): fold the queue extras into one row for Apple Music and SimpMusic (c3a9b47)
- feat(queue): compact the queue header and share the sleep countdown (bf4f82a)
- fix(player): keep the last cover on screen while the next one loads (25ec298)
- fix(about): replace the glass background with tonal surfaces (c2e2bb2)
- fix(settings): hide tab bar, rail and mini player on settings (201e65b)
- fix(ci): clean staging hand-offs and keep the newest five nightlies (ad5b264)
- feat(desktop): mount the equalizer graph and persist band levels (d92b953)
- refactor(shared): remove uncalled pre-cache and silence skipper files (88d0412)
- feat(shared-ui): compact the player queue header card (4d2a4d4)
- feat(queue): compact the player queue header and rows (d5f5c62)
- fix(ui): let list rows and action dialogs grow with font scale (1848a88)
- test(settings): pin the registry at 648 after the two rc6 keys (50a0a3c)
- docs(credits): credit Metrolist 14.0.0-rc6 behavior re-implementations (ceefd98)
- fix(player): keep the previous cover on screen while the next one loads (72a92ad)
- feat(settings): add the mobile-data animated artwork switch on Android (8d9ee6b)
- fix(lyrics): read the saved lyrics text size in shared player slots (09cb763)
- refactor(sleep-timer): derive sheet countdowns from the timer deadline (0653888)
- fix(playback): keep the paused state on widget next and previous (05e3c07)
- fix(equalizer): import the generated graph string accessors (09eca01)
- fix(canvas): declare the cellular flag on the app connectivity model (01a12e2)
- feat(settings): add a palette style row to the appearance page (cb71e5c)
- feat(theme): build a saved palette color with its style (49e2809)
- fix(player): opt in to the foundation marquee spacing API (c34e745)
- build(shared-ui): add material-kolor for saved-color schemes (7c7bdef)
- fix(dsp): smooth the gain-reduction readout (38aa92d)
- feat(equalizer): add a stable graph for band gain drags (c0580b2)
- fix(equalizer): keep a 0 dB band in the cascade (f5514c6)
- feat(player): keep the cover on screen while the next artwork loads (eb7efe1)
- fix(sleep-timer): wake countdown sheets once per displayed second (297097b)
- feat(playback): add a bounded prefix pre-cache for direct files (1f7a6f3)
- fix(desktop): check Discord heartbeat acks and drop a dead gateway (ab75aaf)
- feat(player): apply swipe sensitivity to artwork snap threshold (0183af0)
- feat(canvas): hold animated artwork back on cellular when requested (d98b9db)
- feat(dsp): add the pure silence skipper and instant detector (8e1fc24)
- fix(lyrics): report a rejected manual AI translation (c635b4c)
- perf(ios): start the Telegram session off the main thread (6681e51)
- perf(player): stop ambient background motion while paused (484c320)
- feat(lyrics): take the saved text size and bound the list inset (491dba8)
- perf(desktop): open the session graph off the launch thread (1f121f4)
- perf(android): defer the source refresh schedule and optional downloads (abfd788)
- feat(settings): add contract keys for animated artwork and palette style (46313ab)
- feat(player): play track titles once per track (e13493e)
- feat(android): keep the play state on Next and Previous (f5c1d26)
- feat(playback): keep the paused state on manual next and previous (6310e09)
- fix(ios): pass the NSURLCredentialPersistence enum entry (cdbdef4)
- fix(integ): repair PR #63 iOS, desktop and parser CI failures (a1cdd77)
- fix(integ): reconcile lanes A-D after merge (91d86b6)
- fix(android): recover startup crashes before heavy initialization (32036ba)
- fix(android): preserve legacy settings and nullable migration values (ecbedd6)
- test: add iOS downloads and local songs unit tests (95a14e1)
- docs(desktop): name Android's BuildConfig credentials in build comments (23748e9)
- docs(ios): correct the Last.fm key-pair note in the iOS build settings (cf049e0)
- docs(desktop): record Amazon, SpatialFlow, YouTube OAuth and hidden playlist routes (f147e48)
- feat(shared-ui): leave hidden playlists out of the library list (3513f5f)
- feat(desktop): install the SpatialFlow typeface and draw the player title in it (e2c2b8e)
- feat(desktop): authorize Amazon Music in a native Turnstile window (0797e5f)
- feat(desktop): read YouTube OAuth and Amazon Turnstile credentials at build time (845cf7c)
Android APKs are unsigned because one or more Android signing secrets are missing.
Update feed (do not delete)
Holds the nightly.json and stable.json manifests used by the in-app updater.
N20261030
Nightly build
Automated nightly build from the dev branch. Not intended for production use.
Commits
- fix(nightly): fetch appimagetool 1.9.1 from its own repository (5118897)
- fix(nightly): deb extraction parent, MinGW toolchain DLL fallback (20eb44f)
- fix(nightly): Linux scheme entry, Windows MinGW runtime, iOS link heap (36876a0)
- fix(nightly): desktop native builds and Xcode patch release (ada9495)
- fix(ios): disambiguate the route picker tint colour and drop a member import (1bd62cd)
- test(release): create fixture build-tools and stop step blocks at job boundaries (4f272e8)
- fix(release): keep the configured Android SDK root authoritative (52e785f)
- fix(integration): align workflow and glass source contracts (751a8db)
- docs: native iOS interface, lyric view and credits (289722e)
- refactor(ios): build the swept lyric text outside the view body (22a376f)
- ci(ios): select Xcode 26 and type-check the Swift app (9b4b1cf)
- feat(ios): native SwiftUI lyrics for the Enhanced look (09447a2)
- docs: credit SukiSU-Ultra, compose-miuix-ui and Kyant for the glass port (5a89642)
- fix(settings): read the Liquid Glass search entry title from resources (b7def0e)
- feat(ios): native Liquid Glass tab bar and mini player (f4c17f8)
- feat(about): add the SukiSU moving background and frosted About rows (0c85da1)
- fix(sponsorblock): refuse malformed persisted lookup origins (5b18c51)
- feat(settings): add the Liquid Glass customisation page (8219fc6)
- feat(lyrics): depth, background vocals and system motion on iOS (4f3194c)
- feat(glass): throttle the app-wide glass source and apply user tuning (9d83917)
- test(ios): accept asset-catalog folder references in the project contract (0f3360d)
- feat(ios): expose AirPlay routing and compensate lyric output delay (bd74eff)
- feat(glass): add persisted liquid glass tuning keys and model (dcdf822)
- fix(glass): delegate layerBackdrop to an aliased Kyant import (88202cb)
- feat(ios): harden Now Playing metadata and artwork publishing (49d5e5d)
- test(shared): refresh settings and podcast compatibility fixtures (e58f0bc)
- fix(ios): align release Xcode selection and host contracts (e98269e)
- ci: pass --rerun per test task and keep artifact uploads non-fatal (c1dfd37)
- fix(desktop): retain the extracted queue metadata model import (b82ff34)
- fix(metadata): export Room 38 and portable state 10 (ea2aed0)
- fix(metadata): keep the download title projection internal (1024c02)
- ci(tests): keep the shared KMP verdict step authoritative (96b7f40)
- fix(shared-ui): tag bottom-bar tabs and follow the expanded-only scroll hide (cc70238)
- test(shared-data): make the live InnerTube smoke tests opt-in (112826d)
- fix(metadata): read the shared-domain override fields into locals before using them (5171ef4)
- docs: record the song metadata schema beside the podcast one (bcf5a13)
- feat(metadata): carry song edits into portable state, queue and every list (1395ec0)
- feat(ui): edit song info dialog with reset (37a190d)
- feat(ui): show song edits across library, home and playlists (1310f58)
- feat(metadata): apply song edits to playback, media items and presence (f93a96d)
- feat(db): add song metadata override table (schema 38) (c6e540f)
- docs(releasing): record the repaired native prerequisites (555b855)
- ci(android): make APK staging and build-tools selection self-diagnosing (bb17fd9)
- test(desktop): name the native dependency regressions with the usual casing (7be4bfa)
- fix(desktop): build the MinGW zlib closure and report failing dependency logs (f3648dc)
- fix(ios): verify the FFmpeg release signature from a short GNUPGHOME (5dcda32)
- fix(desktop): audit macOS dylibs with lipo's documented argument order (f2cc0fd)
- fix(desktop): remove the unresolved merge marker from the playback engine (5eaf388)
- ci: hand release artifacts over through staging releases (1f90808)
- fix(settings): resolve the theme-import palette write through the atomic owner (d00eeb6)
- emulator-qa: open the merged Appearance page by route (5c95e08)
- fix(shared-data): keep the uploads cookie map free of JVM collection APIs (7f62c71)
- ci: retrigger checks (2e8b043)
- fix(history): reuse the shared JsonObject.obj helper in history parsing (b441971)
- test(shared-data): cover the YouTube upload client policy and wire format (d0f8cf2)
- fix(desktop): close the uploads transfer client with the session graph (4f0993f)
- feat(desktop,ios): bind the uploads page on desktop and mark it unavailable on iOS (d2f8664)
- feat(shared-ui): add uploads screen, route and library shortcut (6f68b00)
- feat(app): add uploaded songs screen, delete action and library shortcut (f9e39de)
- fix(app): de-duplicate every uploaded page before listing (b8b0864)
- feat(app): add YouTube Music uploads repository and worker (6f560f7)
- feat(shared-data): add YouTube Music uploads client and shelf parser (f43d8c0)
- docs: record infinite-queue ownership and the queue settings anchor (00de0cc)
- feat(app): service-owned infinite queue and queue actions across player styles (b654db8)
- feat(shared-ui): add common queue panel and wire desktop/iOS hosts (6e22c78)
- feat(shared-data): bound radio paging and undoable edits in the portable queue owner (0a9c553)
- feat(shared-domain): add infinite-queue policy and occurrence-safe queue editing (2be2364)
- fix(settings): resolve cross-setting conflicts with atomic rules (bcf7118)
- fix(settings): keep Apple Music options independent (1ef02b1)
- docs(architecture): record podcast history paging and progress (a27ac26)
- fix(sponsorblock): apply podcast settings live and guard episode seeks (7b10c61)
- feat(podcast): page full YouTube history and track episode progress (2f59bdd)
- docs(sponsorblock): document podcast segment skipping (d9139cf)
- feat(shared-ui): resume podcast episodes from saved progress on desktop and iOS (74dd66a)
- feat(shared-data): store podcast episode progress in portable state v9 (a9083c4)
- feat(shared): skip podcast SponsorBlock segments on desktop and iOS (b61a20d)
- feat(sponsorblock): skip podcast episode segments when opted in (5576c62)
- fix(shared-ui): mirror the per-style player settings answers (c21d5ab)
- fix(player): make player settings match what each style reads (e980810)
- feat(shared-ui): mirror the shared player control motion (07555e6)
- feat(player): animate player controls with one shared transform motion (c210b52)
- ci: run shared KMP module tests on PRs (53ea1da)
- docs: regenerate toolchain table for minSdk 24 (0be6491)
- docs: state API 24 as the runtime minimum in CONTRIBUTING (cc9a40c)
- build: lower minSdk to 24 and enable core library desugaring (ac0ffbc)
- fix(android): guard API 26 platform calls for minSdk 24 (85eecac)
- fix(dsp): load AAudio at runtime so the float DSP library loads below API 26 (cc49997)
- fix(ci): repair nightly release prerequisites and native packaging (c6c5407)
- fix(auth): keep login WebViews readable above the keyboard (4b2c650)
- fix(lyrics): fade the lyrics box edges on every Android surface (5f25518)
- fix(lyrics): add a box edge fade to the shared lyrics renderer (3c9ca43)
- feat(about): enlarge the About header logo to a 112dp hero (7b4555e)
- fix(settings): drop the late edge fade on settings description marquees (8efec83)
- feat(settings): merge Appearance into one page with section headings (aacff41)
- fix(ios): resolve simulator compile errors in the iOS mounts (0a69b0b)
- ci: compile shared modules for the iOS simulator on macOS (79d8b93)
- docs(ios): record the Listen Together and Telegram mounts in the iOS status and route map (PR #28) (0573f67)
- fix(ios): mount Telegram browse and bots over the signed-in client (PR #28) (53be9e1)
- fix(ios): mount Listen Together room, chat and settings over the session graph (PR #28) (ec64540)
- fix(shared-data): selectTracks note no longer claims the signed-in path uses it (12bd232)
Android APKs are unsigned because one or more Android signing secrets are missing.