zarzet
a59c749089
fix(download): preserve SAF and defer background starts
2026-08-09 05:23:47 +07:00
zarzet
3e41aa0eee
fix(metadata): support extension custom search
2026-07-30 15:36:31 +07:00
zarzet
04a8700a65
fix(player): restore playback position reliably
2026-07-29 21:03:11 +07:00
zarzet
24b9d7ba80
fix(player): preserve audio quality across track changes
2026-07-29 19:29:19 +07:00
zarzet
1e973d5ecb
style(dart): apply repository formatting
2026-07-29 14:14:42 +07:00
zarzet
e7fbaf7b75
fix(download): suffix only colliding quality variants
2026-07-29 02:43:35 +07:00
zarzet
8dcf7fa998
fix(storage): recover from unwritable download folders
2026-07-29 02:03:09 +07:00
zarzet
209eb5f10e
fix(download): always alert for verification pauses
2026-07-28 14:21:42 +07:00
zarzet
80d9d87870
perf(metadata): avoid SAF copies during quality probes
2026-07-28 01:50:41 +07:00
zarzet
26570792a9
fix(library): persist lossless bitrate metadata
2026-07-28 00:50:20 +07:00
zarzet
454ef53977
feat(library): add quality label display modes
2026-07-27 17:25:39 +07:00
zarzet
73846c40ca
fix(download): complete quality variants reliably
2026-07-27 14:22:24 +07:00
zarzet
ef3e019a3a
feat(library): playlists filter view and configurable default view
...
Add a fourth Playlists chip/page to the Library filter pager, rendered
as an album-style grid of playlist cells (search filters by name, page
provider short-circuits since playlists come from libraryCollections).
Add a defaultLibraryView setting (last used / all / albums / singles /
playlists) in Library settings, applied on startup and whenever the
shell switches back to the Library tab.
2026-07-27 02:12:35 +07:00
zarzet
55be8fc827
fix(download): restore fast SQL-only duplicate check so huge playlists queue again
2026-07-27 01:43:56 +07:00
zarzet
ac56e76b62
feat(appearance): manual toggle to force backdrop blur on lower device tiers
2026-07-27 01:39:16 +07:00
zarzet
9da3607932
feat(queue): long-press menu with move up/down for queued items
2026-07-27 01:24:14 +07:00
zarzet
8fe2662c0a
fix(queue): keep cancelled downloads retryable across every cancel path and app restarts
2026-07-27 01:13:23 +07:00
zarzet
e8290a5eb0
refactor(extensions): split manifest models and provider-priority logic into part files
2026-07-27 00:34:55 +07:00
zarzet
bfd44738e2
refactor(queue): fold duplicated final-embed blocks into one helper
2026-07-27 00:09:50 +07:00
zarzet
0b053d59b1
refactor(queue): decompose single-item god-method into _DownloadRun pipeline class
2026-07-27 00:06:35 +07:00
zarzet
21bc31e0b6
refactor(queue): move single-item download pipeline into a part file
2026-07-26 23:45:22 +07:00
zarzet
b81bd5e8aa
refactor(history): split models and startup maintenance into part files
2026-07-26 22:56:57 +07:00
zarzet
49bfefb750
refactor(queue): split progress, verification, and connectivity into part files
2026-07-26 22:47:15 +07:00
zarzet
cbee637501
perf(history): coalesce index bumps and batch per-row exists lookups
2026-07-26 22:25:04 +07:00
zarzet
74615a60b5
refactor: consolidate lyrics builders, cancel registries, and priority plumbing
2026-07-26 19:08:22 +07:00
zarzet
8d077ae2da
feat(player): add repeat off/all/one modes
...
The internal player handles setRepeatMode: repeat-one replays the
current track, repeat-all wraps the queue (and keeps a single-track
shuffle queue alive). The mode is broadcast in playback state,
persisted with the playback session, and toggleable from the Now
Playing transport row and the up-next sheet; a small shuffle toggle
joins the transport row for symmetry.
2026-07-26 19:00:50 +07:00
zarzet
11fb4365a2
feat(queue): offer one-tap retry when connectivity returns
...
The connectivity listener now stays alive while network-failed items
remain and, on reconnect, shows a debounced snackbar counting them
with a Retry action wired to retryAllFailed scoped to network
failures. Also regenerates localizations for the recent feature
strings.
2026-07-26 19:00:49 +07:00
zarzet
cb8064a317
refactor(dart): consolidate duplicated lookup, filename, and search-provider helpers
2026-07-26 18:52:26 +07:00
zarzet
97758908ca
refactor(library): drop unwired DB pagination providers
2026-07-26 18:44:06 +07:00
zarzet
04a71d0211
refactor: remove orphaned bridge, database, and queue helpers
2026-07-26 18:43:53 +07:00
zarzet
c497449549
feat(library): M3U8 playlist import and export
...
The playlist import picker now also accepts .m3u/.m3u8; EXTINF entries
feed the same Deezer enrichment pipeline as CSV. Collection screens
(wishlist, loved, playlists) gain an export action that resolves each
track to its local file, writes SAF entries relative to the download
tree root so external players and DAP copies resolve them, skips
tracks without a file, and shares the .m3u8 via the system sheet.
2026-07-26 17:56:38 +07:00
zarzet
c9470ef751
feat(queue): add download-next action on queued items
...
Queued rows get a skip-next button that reinserts the item ahead of all
other queued items, so the next free slot picks it up. During an active
native worker run the current batch keeps its order; the new order
applies from the next run.
2026-07-26 17:39:28 +07:00
zarzet
c4abbf8743
fix(verification): recover signed-session bootstrap failures
2026-07-26 11:09:18 +07:00
zarzet
20081b14bd
refactor(dart): extract queue search and media policies
2026-07-26 01:13:52 +07:00
zarzet
4713be02de
chore(settings): graduate native download worker
2026-07-24 12:23:36 +07:00
zarzet
0d8bc7b269
fix(native-worker): harden background queue handling
2026-07-24 12:15:55 +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
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
ac7840c4e5
fix(download): persist and reconcile history reliably
2026-07-22 15:57:39 +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
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
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
6f566a9f03
perf(player): isolate high-frequency playback updates
2026-07-15 22:09:20 +07:00
zarzet
17dbcc1338
perf(library): lazy-load collections and dispose queries
2026-07-15 21:32:43 +07:00