Repository navigation
Releases: NatuneGroup/ArchiveTune
Release list
15.1.0
Changelog
Features
- feat(appearance): Interface style selector with Material 3 Expressive default; bottom search bar — by @vossgraves
- feat(navbar): hide on scroll with mini player take-over; accent-tinted bar in both schemes — by @vossgraves
- feat(spotify): resolve tapped albums and artists in-app everywhere (#160) — by @t
- feat(ui): rewind/forward on every player style and one pill style for the bottom chrome — by @t
- feat(playback): checkpoint reliable resolution and player refinements — by @usehoplite[bot]
- feat(playback): report source-scoped audio formats in Track Info — by @usehoplite[bot]
- feat(navbar): port 4nx3b BitChord navigation bar (frosted path only) — by @t
- feat(navbar): Enable BitChord navigation bar option with mutual exclusion — by @t
- feat(navbar): host BitChord bar in nav slide box — by @t
- feat(player): port Looper player style from 4nx3b (files, Jost fonts, dispatch, settings entry) — by @t
- feat(player): gate Apple Music pause shrink behind a toggle — by @t
- feat(player): add Apple Music gimmick preference keys and settings toggles — by @t
- feat(player): gate Apple Music backdrop wander behind a toggle — by @t
- feat(player): gate Apple Music pause shrink behind a toggle — by @t
- feat(player): gate Apple Music scrolling titles behind a toggle — by @t
- feat(player): gate Apple Music seek-bar swell behind a toggle — by @t
- feat(lyrics): interval-adaptive lyric scroll spring — by @t
- feat(lyrics): sliding gradient-mask word reveal — by @t
- feat(lyrics): per-character last-word emphasize — by @t
- feat(lyrics): breathing interlude dots — by @t
- feat(player): port Looper and Flamingo, unify the 5s double-tap seek — by @vossgraves
- feat(audio): port 4nx3b's audio pipeline package — by @vossgraves
- feat(audio): port Tryptify DSP core, USB driver and pitch shifter (no routing) — by @vossgraves
- feat(audio): Slice C - LastWave router, engine runtime, home feed, compile fixes — by @vossgraves
- feat(playback): expose currentStreamInfo and liveNormalizeFactor on MusicService — by @vossgraves
- feat(audio): Slice D - port Tryptify DSP update and engine controllers — by @vossgraves
- feat: home custom font, bitchord lyric lift, and source checks — by @vossgraves
- feat(sources): Amazon search in the player menu, Apple Music metadata option — by @vossgraves
- feat(debug): show the active stream source in nerd stats — by @vossgraves
- feat(nav): port 4nx3b's compact bottom controls — by @vossgraves
- feat(miniplayer): port CompactMiniPlayerContent — by @vossgraves
- feat(nav): wire the mini player pill into the compact row — by @vossgraves
- feat(ui): split the Home header into separate round buttons, add stock-colour bottom buttons — by @vossgraves
- feat(ui): one-row compact bottom bar, Apple Music tab style, settings transition — by @vossgraves
- feat(player): wire Flamingo as a selectable player style — by @vossgraves
- feat(audio): wire the Tryptify, LastWave and float DSP engines behind their switches — by @vossgraves
- feat: custom covers and canvas per song (#176) — by @vossgraves
- feat(logs): persist the app's own logcat for reports and the viewer — by @vossgraves
- feat(lastfm): offline scrobble queue, batching and play-time counting — by @vossgraves
- feat(playback): USB exclusive output, YouTube failsafe tiers, source-switch fallback — by @vossgraves
- feat(spotify): experimental streaming source on a separate account — by @vossgraves
- feat(proxy): route every client through the user's proxy — by @vossgraves
- feat(ai-filter): filter the Spotify and QQ home feeds — by @vossgraves
- feat(updater): drop the Canary channel, one build-based channel rule — by @vossgraves
- feat(updates): keyless update-feed manifest first, API fallback with rate-limit backoff — by @vossgraves
- feat(about): rebuild the About page on our settings components — by @vossgraves
- feat(motion): every animation follows the system animator scale — by @vossgraves
- feat(nav): make spam-tapped bottom-nav tabs smooth — by @vossgraves
- feat(nav): SukiSU liquid glass bar as a selectable nav-bar style — by @vossgraves
- feat(back): predictive back gesture with an Original/Predictive switch — by @vossgraves
- feat(player): collapse-and-sheen morph on the seek bars while mixing — by @vossgraves
- feat(flamingo): bake the canvas frost from a still instead of runtime-blurring a live video copy — by @vossgraves
- feat(port): land the small 4nx3b ports, reviewed and rewritten — by @vossgraves
- feat(sources): one ordered, gated source chain for every playback path — by @vossgraves
- feat(player): fade long titles and artists at the edges in every marquee style — by @vossgraves
- feat(blur): one root blur policy that every blur and glass site honours — by @vossgraves
- feat(glass): share Suki optics across refractive surfaces — by @vossgraves
- feat(player): share native settings and optimistic device volume — by @vossgraves
- feat(settings): redesign Canvas settings and dedupe player toggle — by @vossgraves
- feat(acoustics): add bounded read-only audit foundation — by @vossgraves
- feat(acoustics): add shared explicit quality graph UI — by @vossgraves
- feat(lyrics): harden Japanese pack and finish language integration — by @vossgraves
- feat(icons): Natune icon pack for the icon switcher — by @vossgraves
- feat(pool): configurable ArchivePool base URL with vercel failover — by @vossgraves
- feat(presence): opt-in Natune status — by @vossgraves
- feat(news): restore announcements feed behind NATUNE_NEWS_URL — by @vossgraves
Fixes
- fix(crossfade): restore gapless-album skip dropped by the podcast guard — by @vossgraves
- fix(spotify-home): drop the offline snapshot on logout and account change — by @vossgraves
- fix(canvas): read Low data mode with the app-wide default — by @vossgraves
- fix(canvas): keep Save Canvas sources when Apple Music is policy-denied — by @vossgraves
- fix(sponsorblock): skip podcast lookups on attach too — by @vossgraves
- fix(drive-backup): accept custom font entries when validating a downloaded archive — by @vossgraves
- fix(bit-perfect): move user-facing fallback strings into resources — by @vossgraves
- fix(apple): AAC request falls back to the smallest asset, not hi-res — by @vossgraves
- fix(tidal): token expiry check no longer throws on non-JWT tokens — by @vossgraves
- fix(bit-perfect): release the DAC when crossfade, automix or offload turns bit-perfect off — by @vossgraves
- fix(automix): key stored analyses by a SHA-256 digest, not String.hashCode — by @vossgraves
- fix(likes): toast like failures on the main thread in TikTok rail — by @vossgraves
- fix(bitchord): localize lyrics and queue glyph descriptions — by @vossgraves
- fix(spotify-search): restart load-more watcher when the filter changes — by @vossgraves
- fix(appearance): switch interface preferences atomically — by @vossgraves
- fix(backup): keep restored fonts inside the custom font directory — by @vossgraves
- fix(queue): Play next and Add to queue line up behind hand-added songs (#172) — by @t
- fix(downloads): offline reads use the length the cache actually recorded (#177) — by @t
- fix(ci): restore the fi dropped from canary's resolve-variant step — by @t
- fix(platform): support 32-bit TVs and export fork-aware redacted diagnostics — by @usehoplite[bot]
- fix(playback): synchronize fades and expose trustworthy decoded audio specs — by @usehoplite[bot]
- fix(playback): observe local audio through session wrappers — by @usehoplite[bot]
- fix(spotify): bound playlist resolution and retain continuation tracks — by @usehoplite[bot]
- fix(sources): isolate Pool credentials and reject unsupported Discord presence — by @usehoplite[bot]
- fix(spotify): avoid redundant REST requests and propagate throttles — by @usehoplite[bot]
- fix(spotify): distinguish API quota exhaustion and document verified requests — by @usehoplite[bot]
- fix(spotify): preserve explicit metadata and reject malformed identifiers — by @usehoplite[bot]
- fix(ui): bound Listen Together waits and soften Spotify Home glass — by @usehoplite[bot]
- fix(listen-together): serialize requests and surface server rejections — by @usehoplite[bot]
- fix(player): keep overflow menu above maximized player (port 4nx3b c9ff5ed) — by @t
- fix(refresh-rate): apply forced high refresh rate at activity level (port 4nx3b f2bcad2) — by @t
- fix(spotify): compare non-Latin titles so Tamil and other scripts can be mapped — by @t
- fix(spotify): restore REMASTER_PATTERN dropped from the normalizer — by @t
- fix(compile): restore homeSourcesLabel and drop a stray paren from the BitChord row — by @t
- fix(automix): cap crossfade overlap at 12s and time-stretch to 4% (port 4nx3b) — by @t
- fix(player): route LOOPER through the editorial queue/controls, use fork lyrics pattern — by @t
- fix(home): guard home loads against late responses, hangs, and stuck refresh — by @t
- fix(downloads): close DownloadCursor after seeding download index snapshot — by @t
- fix(listen-together): cancel-and-replace initialize() collectors on re-entry — by @t
- fix(build): restore HomeFeedDesign package and imports, spring sqrt/gesture imports, lyrics settings bounce state, Spotify textAlign param — by @t
- fix(build): pass isBackground to SpotifyWord and import the lyric-animation preference keys — by @vossgraves
- fix(discord): restore the gateway presence client that d0e1a65 replaced with an always-failing stub — by @vossgraves
- fix(ui): bound Listen Together waits and soften Spotify Home glass — by @usehoplite[bot]
- fix(listen-together): serialize requests and surface server rejections — by @usehoplite[bot]
- fix(listen-together): drop the onrender server — its WebSocket endpoint answers 404, so picking it hung forever — by @vossgraves
- fix(home): queue home loads instead of dropping them, and let refresh supersede the in-flight load — by @vossgraves
- fix(spotify): drop soundtrack credits from the YouTube query so film songs can be mapped — by @vossgraves
- fi...
N202611030452
Nightly build
Automated Nightly build from the dev branch. Not intended for production use.
Pull requests
Commits
- Merge pull request #215 from NatuneGroup/feat/archivepool-cloudflare (f2f5e26)
- fix(pool): mirror the resolver's effective chain in the rescue gate (dd10afc)
- fix(pool): keep the rescue gate complexity-free at call sites (769ebd0)
- fix(pool): gate the suspend re-lease on the pooled-Tidal branch (3685280)
- style(pool): apply spotless formatting to the releaser (a3f9a45)
- refactor(pool): extract the expiry re-lease into PoolExpiryReleaser (e86c790)
- fix(pool): stamp, persist and cancel cleanly on expiry re-lease (dafdbd0)
- fix(pool): order re-lease params for the trailing-lambda call (945d131)
- style(pool): apply spotless formatting to re-lease sources (dfaf289)
- fix(news): reject HTML shells and non-2xx on content fetches (d113590)
- fix(pool): awaited re-lease for expired Tidal pool tokens (0368163)
- style(pool): reflow PoolEndpoints docs for formatter budget (ab1f006)
- fix(pool): repoint archivepool endpoints to natune workers host (a26a5ed)
- chore(config): repoint presence worker default to natune host (12ee2b7)
- style(news): apply spotless formatting to NewsRepository (98ddfd7)
- feat(news): restore announcements feed behind NATUNE_NEWS_URL (01c4728)
- style(settings): keep shared scaffold block byte-identical in IntegrationScreen (c87373e)
- style(settings): apply spotless formatting to IntegrationScreen (38ea380)
- refactor(pool): finish splitting detekt-flagged functions (6a1c48d)
- style(pool): apply spotless formatting to refactored sources (fc20107)
- refactor(pool): split oversized functions flagged by detekt (d07b1e5)
- style(pool): apply spotless formatting to new and touched sources (8d41abf)
- fix(pool,presence): await backoff load and harden heartbeat transport (f48def1)
- fix(pool): close failover and backoff gaps (bcbc42c)
- feat(presence): opt-in Natune status (8c0c760)
- fix(pool): cut feed request amplification (TTLs, re-lease, 401 backoff) (e4bf833)
- fix(pool): tighten failover correctness and cancellation (761f21b)
- feat(pool): configurable ArchivePool base URL with vercel failover (f7a9e9f)
N202610191717
Nightly build
Automated Nightly build from the dev branch. Not intended for production use.
Pull requests
Commits
- Merge pull request #211 from NatuneGroup/fix/acoustic-graph-clarity (b7e4dd4)
- refactor(acoustics): split heat-graph drawing into axis, cutoff and key helpers (7194fc3)
- fix(acoustics): plain-language graph text, a colour key and a cutoff marker (1e70c28)
- style(acoustics): ktfmt the quality graph UI files (no behaviour change) (a4099f6)
N202610190931
Nightly build
Automated Nightly build from the dev branch. Not intended for production use.
Pull requests
Commits
N202610190750
Nightly build
Automated Nightly build from the dev branch. Not intended for production use.
Pull requests
Commits
N202610190731
Nightly build
Automated Nightly build from the dev branch. Not intended for production use.
Pull requests
Commits
C202610141722
Canary build
Automated Canary build from the canary branch. Not intended for production use.
Final Canary build — this install now follows the Nightly channel.
Pull requests
Commits
- ci(canary): build the final Canary release as Nightly (a1a04ea)
- Merge branch 'cont/docs' into mission/drop-canary (e0ada17)
- test: cover continuation lyrics, volume and settings logic (eb8efcb)
- docs: refresh README and Claude docs for Stable/Nightly and continuation (eb78570)
- Merge branch 'cont/upstream-lyrics' into mission/drop-canary (1c64e08)
- Merge branch 'cont/canvas-settings' into mission/drop-canary (7654559)
- Merge branch 'cont/shared-player-settings' into mission/drop-canary (2e3ad46)
- Merge branch 'cont/shared-glass' into mission/drop-canary (2b6e2c3)
- fix(lyrics): single karaoke scroll owner and TTML JSON envelopes (1bb336e)
- feat(settings): redesign Canvas settings and dedupe player toggle (674138d)
- feat(player): share native settings and optimistic device volume (701eb6b)
- feat(glass): share Suki optics across refractive surfaces (dff34f2)
- fix: import StreamQuality.label at Looper/Immersive badge sites, restore LocalContext import (5274e51)
- fix(lyrics): scroll keeps controls, landscape renderer stays mounted, all badges via StreamQuality (66edadf)
- test(crossfade): drop stale duplicate of CrossfadeFailureTrackerTest (d3b7dec)
- merge: lyrics page fixes (status bar, auto-hide controls, shared codec label, enhanced lyrics) (d9cad02)
- fix(crossfade): transition once per pair, bounded hard cut, no-rewind restore (f47f819)
- fix(lyrics): status bar visible, controls auto-hide, shared codec label, enhanced lyrics (6437b3f)
- fix: settings predictive slides, crossfade exception cleanup, haptics root reads, source docs (0dee550)
- fix(player): inline panels release Back when the player collapses (2144b50)
- fix: BitChord queue owns back; frosted gate follows rail visibility (f89d46e)
- merge: scrutiny fixes (c) (5c77706)
- merge: scrutiny fixes (b) (9ecd48c)
- merge: scrutiny fixes (a) (e3103a8)
- perf(settings): read indirect helper preferences from the page snapshot (dd4f9f1)
- fix(shell): SukiSU solid fallback, stock-colour gate, font search key, frosted recording (bdaa90d)
- fix(about): cap the whole About list to 840dp, centred (0da2745)
- fix(crossfade): keep committed hand-offs, sync emptied ranges, retire the fade loop (52a1bec)
- fix(back): route inline player pages, search anchor, search-result slides, menu fade (8a88c17)
- perf(settings): defer the Discord account avatar until the opening transition ends (d396b10)
- fix(settings): disable blur-overridden mini-player styles and search switches (4d5fdbe)
- fix(sources): keep cache shortcuts and YouTube fallback inside the gated chain (3e69e42)
- fix(nav): serialize root-button taps and keep pending re-select intent (61dba9b)
- fix(playlist): show the plain header when liquid glass is inactive (9a1c939)
- fix(player): own the Flamingo custom-image frame and hard-gate retained blur (cce315a)
- fix(splash): feed scaled time to the integrator in bounded substeps (82bffb1)
- fix(updater): compare stable manifest versionCode strictly (8edb026)
- ci(tests): run the gms-mobile-universal unit-test task, not the first match (bd4daae)
- fix(build): repair the 11 compile errors from the speed-mode passes (0c42c54)
- merge: post-code-tests (parallel branch) (7db5f3a)
- chore: remove dead code (08fabad)
- test: cover blur policy, restart-scoped settings and settings perf decisions (c87239f)
- fix(settings): restart notice on search switches, item prefs from LocalItemPreferences (748f3d9)
- merge: settings-perf-pages + settings-perf-restart (parallel branch) (1b3c721)
- perf(settings): one collector per page, lazy pages, restart-to-apply for global layout settings (26c6107)
- merge: title-fading-edges (parallel branch) (6eb6570)
- feat(blur): one root blur policy that every blur and glass site honours (2d6bf69)
- feat(player): fade long titles and artists at the edges in every marquee style (ff7d6d6)
- feat(sources): one ordered, gated source chain for every playback path (f8e5729)
- fix(playback): crossfade hand-off never restarts the incoming song from 0 (30280f7)
- feat(port): land the small 4nx3b ports, reviewed and rewritten (a5b7c1d)
- feat(flamingo): bake the canvas frost from a still instead of runtime-blurring a live video copy (8c8b1a8)
- feat(player): collapse-and-sheen morph on the seek bars while mixing (435013d)
- feat(back): predictive back gesture with an Original/Predictive switch (2deda40)
- feat(nav): SukiSU liquid glass bar as a selectable nav-bar style (a3e42b8)
- feat(nav): make spam-tapped bottom-nav tabs smooth (7ff18de)
- feat(motion): every animation follows the system animator scale (ebca9b6)
- feat(about): rebuild the About page on our settings components (56d412d)
- ci(updates): publish the update-feed manifests; nightly FOSS links leave /releases/latest (4017dd9)
- feat(updates): keyless update-feed manifest first, API fallback with rate-limit backoff (0b35755)
- feat(updater): drop the Canary channel, one build-based channel rule (587b4d8)
C202610121610
Canary build
Automated Canary build from the canary branch. Not intended for production use.
Pull requests
Commits
C202610121533
Canary build
Automated Canary build from the canary branch. Not intended for production use.
Pull requests
Commits
C202610121343
Canary build
Automated Canary build from the canary branch. Not intended for production use.