zarzet
1705fb2a81
feat(extensions): verify decentralized package integrity
2026-07-26 01:14:35 +07:00
zarzet
a5f2760023
refactor(android): extract native finalization policies
2026-07-26 01:14:14 +07:00
zarzet
20081b14bd
refactor(dart): extract queue search and media policies
2026-07-26 01:13:52 +07:00
zarzet
1cfda41ef2
feat(audio): use VHQ settings for SoXR resampling
2026-07-25 15:58:42 +07:00
zarzet
19787ed461
fix(config): refresh announcements and remote content
2026-07-25 15:43:25 +07:00
zarzet
555f0e8117
fix(ci): download pinned Gradle for native tests
2026-07-25 10:28:26 +07:00
zarzet
cbd8fd0342
style(go): apply Go 1.26 formatting
2026-07-25 10:20:03 +07:00
zarzet
60a74a7e0e
fix(ci): install Android 37 platform package
2026-07-25 10:14:44 +07:00
zarzet
eabafecaeb
fix(navigation): open download queue from snackbar actions
v4.8.0
2026-07-24 22:19:03 +07:00
zarzet
01c08322c1
fix(extensions): preserve explicit track metadata
2026-07-24 21:32:13 +07:00
zarzet
a41074d271
chore(deps): update Flutter, Go, and native dependencies
2026-07-24 20:37:07 +07:00
zarzet
452a15b652
fix(lyrics): reject mismatched search results
2026-07-24 18:48:05 +07:00
zarzet
4713be02de
chore(settings): graduate native download worker
2026-07-24 12:23:36 +07:00
zarzet
89dcef8ffd
test(native-worker): add Android regression gates
2026-07-24 12:16:41 +07:00
zarzet
0d8bc7b269
fix(native-worker): harden background queue handling
2026-07-24 12:15:55 +07:00
zarzet
fa432266f3
chore(settings): graduate backup and restore from beta
2026-07-24 11:40:09 +07:00
zarzet
0cbe51ad19
fix(analysis): render full-track spectrograms
2026-07-23 18:24:14 +07:00
zarzet
5856729e9a
fix(library): persist records before download completion
2026-07-23 18:00:22 +07:00
zarzet
c35b11a155
fix(library): preserve downloaded file records
2026-07-23 17:40:09 +07:00
zarzet
3f487c03cc
chore(release): bump version to 4.8.0
2026-07-23 13:38:48 +07:00
zarzet
5481f8e8cf
feat(ui): smooth download progress updates
2026-07-23 13:36:22 +07:00
zarzet
cdbb0d6bd7
fix(notifications): restore verification alert sound
2026-07-23 13:23:54 +07:00
zarzet
c9114fef01
fix(android): sanitize restored installation state
2026-07-23 10:39:31 +07:00
zarzet
480a96bd0e
fix(queue): clarify and coalesce verification progress
2026-07-23 09:57:02 +07:00
zarzet
685392f073
fix(download): accelerate verified extension resumes
2026-07-23 09:56:39 +07:00
zarzet
0c558fb33b
test(backend): use a valid descriptor in fd coverage
2026-07-23 09:56:22 +07:00
zarzet
ac7840c4e5
fix(download): persist and reconcile history reliably
2026-07-22 15:57:39 +07:00
zarzet
f0988070bf
fix(convert): simplify output names and harden writes
2026-07-22 15:56:07 +07:00
zarzet
87376ee73b
fix(metadata): resolve audio format and local artwork
2026-07-22 15:55:30 +07:00
zarzet
b2726db84a
fix(queue): bridge completed downloads into library
2026-07-22 15:55:07 +07:00
zarzet
4d77a0b178
fix(ui): honor disabled hero animations
2026-07-22 15:54:50 +07:00
zarzet
bd6e2b4472
fix(ui): restore plain loading skeleton on extension album screen
...
The hero-era loading machinery survived the hero-flight revert: the
loading scaffold rendered the real cover, _RouteSettled deferred the
swap until the push transition ended, and SkeletonCrossfade faded
between the two. The loaded header decodes the cover under a different
mem-cache key (viewport-sized vs full-res), so opening an album from
the artist screen flashed the cover: shown, blanked, shown again.
Restore the pre-hero flow: shimmer skeleton while loading, hard cut to
AlbumScreen so the cover appears exactly once. Removes the now-unused
_AlbumLoadingScaffold and three imports that only existed for it.
2026-07-21 07:35:03 +07:00
zarzet
b7e96facbe
fix(logging): keep cursors valid after rollover
2026-07-16 10:56:26 +07:00
zarzet
648f36244b
perf(go): add runtime metrics and benchmarks
2026-07-16 10:53:26 +07:00
zarzet
b5d02da759
perf(dedupe): batch isrc lookups under one lock
2026-07-16 10:48:57 +07:00
zarzet
c13fdcc6e1
perf(library): scan flac and m4a in one pass
2026-07-16 10:47:29 +07:00
zarzet
5846dc2416
perf(extensions): invoke goja providers directly
2026-07-16 10:39:03 +07:00
zarzet
ef89352d09
perf(memory): drop disposable caches on pressure
2026-07-16 10:32:33 +07:00
zarzet
c75139450a
fix(extensions): bound file reads
2026-07-16 10:26:43 +07:00
zarzet
07c9cf034f
fix(extensions): bound cookie runtime state
2026-07-16 10:24:13 +07:00
zarzet
b69f67a786
fix(download): name variants by measured quality
2026-07-16 09:20:35 +07:00
zarzet
0961c09a6d
feat(download): preserve quality variants
2026-07-16 08:45:01 +07:00
zarzet
491998e5c5
feat(convert): optionally retain original files
2026-07-16 08:27:24 +07:00
zarzet
d3d34aaec1
perf(cache): defer cover cache maintenance
2026-07-16 08:09:56 +07:00
zarzet
5763a087c9
perf(queue): persist and index incremental updates
2026-07-16 08:09:28 +07:00
zarzet
efa3ff3d66
perf(playback): batch local playlist resolution
2026-07-16 08:09:12 +07:00
zarzet
ca8a6a8849
perf(shell): gate backdrop blur by device capability
2026-07-16 08:08:49 +07:00
zarzet
5a970ac83d
perf(startup): bootstrap persisted app state
2026-07-16 08:08:27 +07:00
zarzet
10d59bc2b6
perf(library): trim startup lookup index
2026-07-15 22:17:17 +07:00
zarzet
79bb3214ae
perf(library): streamline search and grouped counts
2026-07-15 22:16:10 +07:00