Skip to content

Releases: NatuneGroup/ArchiveTune

15.1.0

Choose a tag to compare

@github-actions github-actions released this 03 Nov 11:07
f2f5e26

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...
Read more

N202611030452

N202611030452 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 03 Nov 05:03
f2f5e26

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

N202610191717 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 19 Oct 17:27
b7e4dd4

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

N202610190931 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 19 Oct 09:39
b8a2482

Nightly build

Automated Nightly build from the dev branch. Not intended for production use.

Pull requests

Commits

  • Merge pull request #209 from NatuneGroup/feat/natune-icon-pack (b8a2482)
  • chore(icons): bump IconPack to restore Ids 320974, 539452 and 980484 (0db1701)
  • fix(checks): read submodule pointers without a blob size (35ca1b0)
  • feat(icons): Natune icon pack for the icon switcher (93523e6)

N202610190750

N202610190750 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 19 Oct 07:56
8ea5ed7

Nightly build

Automated Nightly build from the dev branch. Not intended for production use.

Pull requests

Commits

  • Merge pull request #207 from NatuneGroup/fix/settings-fade-timing (8ea5ed7)
  • Merge remote-tracking branch 'natune/dev' into fix/settings-fade-timing (8709007)
  • fix(settings): restore the old settings blur/fade timing (95f3985)

N202610190731

N202610190731 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 19 Oct 07:37
6ceb48a

Nightly build

Automated Nightly build from the dev branch. Not intended for production use.

Pull requests

Commits

  • Merge pull request #208 from NatuneGroup/mission/format-gate-ratchet-20261019 (6ceb48a)
  • fix(quality): fail formatting only when a change adds debt (756b4d9)
  • chore(agents): track shared Claude Code settings and skills [skip ci] (7efa1bf)

C202610141722

C202610141722 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 14 Oct 17:37

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

C202610121610 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 12 Oct 16:54

Canary build

Automated Canary build from the canary branch. Not intended for production use.

Pull requests

Commits

  • ci(signing): sign with apksigner directly, skip the unused v1 block (61fdb27)
  • fix(player): make the audio offload toggle work again (2f9108f)
  • build(size): cut APK by ~3 MB: WebP drawables, locale filters, narrower R8 keeps (8d141ec)

C202610121533

C202610121533 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 12 Oct 15:48

Canary build

Automated Canary build from the canary branch. Not intended for production use.

Pull requests

Commits

  • fix(settings): Additional downloads row on the main settings page (7ea9267)
  • feat(ai-filter): filter the Spotify and QQ home feeds (4c85658)
  • fix(playback): a matched whole-file download outlives the source search budget (ff0a784)
  • feat(proxy): route every client through the user's proxy (6dcbb22)

C202610121343

C202610121343 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 12 Oct 14:01

Canary build

Automated Canary build from the canary branch. Not intended for production use.

Pull requests

Commits

  • feat(spotify): experimental streaming source on a separate account (fbc3c9c)
  • fix(amazon): gen-2 auth, Amazon-only results and a stricter CENC decryptor (bde62aa)
  • fix(qq): stream URLs, ticket refresh and protected-file handling (6d04720)