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
1f55523b64
fix(metadata): fetch maximum cover for online autofill
2026-07-29 02:42:57 +07:00
zarzet
8dcf7fa998
fix(storage): recover from unwritable download folders
2026-07-29 02:03:09 +07:00
zarzet
662558e3e6
fix(ui): sanitize user-facing errors
2026-07-29 01:43:04 +07:00
zarzet
b1c18b95e7
fix(analysis): detect effective spectral cutoff
2026-07-28 21:15:06 +07:00
zarzet
d7710e2a38
chore(release): bump version to 4.8.1
2026-07-28 20:23:46 +07:00
zarzet
b2e4548204
fix(library): retain history during active downloads
2026-07-28 18:12:55 +07:00
zarzet
7eb0ed2fdb
fix(metadata): dismiss autofill preview and surface feedback
2026-07-28 17:39:58 +07:00
zarzet
1390376f09
fix(album): overlay selection bar above navbar
2026-07-28 17:25:14 +07:00
zarzet
650c360eb9
fix(metadata): align source picker with edit sheet
2026-07-28 17:15:27 +07:00
zarzet
d1db2cdcc5
fix(analysis): isolate metrics from active downloads
2026-07-28 16:04:44 +07:00
zarzet
6c89a1e177
feat(album): batch download selected tracks
2026-07-28 15:48:45 +07:00
zarzet
fb538e9517
feat(metadata): choose extension for online autofill
2026-07-28 15:18:10 +07:00
zarzet
209eb5f10e
fix(download): always alert for verification pauses
2026-07-28 14:21:42 +07:00
zarzet
7bf6f32802
fix(extensions): serialize verification callbacks
2026-07-28 14:09:06 +07:00
zarzet
6368d1feee
fix(library): retain cached rows across refresh
2026-07-28 12:51:50 +07:00
zarzet
7f277f7a88
fix(library): backfill local audio bitrates
2026-07-28 12:51:28 +07:00
zarzet
4c33f112ad
fix(library): keep rows visible during refresh
2026-07-28 01:50:54 +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
e4cd52f29f
feat(library): highlight high-bitrate quality badges
2026-07-27 16:58:58 +07:00
zarzet
af6ca12e85
fix(download): swap local track variant actions
2026-07-27 14:31:39 +07:00
zarzet
9b4a960324
fix(home): keep search visible during provider changes
2026-07-27 14:24:57 +07:00
zarzet
1cdf4b4547
fix(library): retain records when deletion fails
2026-07-27 14:24:39 +07:00
zarzet
73846c40ca
fix(download): complete quality variants reliably
2026-07-27 14:22:24 +07:00
zarzet
856e2cbb9e
fix(audio): wait for complete analyzer metrics
2026-07-27 14:19:52 +07:00
zarzet
3b901461f6
feat(library): show a trailing fade on the filter chips row
...
Extend ScrollEdgeFade with a horizontal axis and wrap the All/Albums/
Singles/Playlists chips so a right-edge fade signals the row scrolls
when chips overflow the screen.
2026-07-27 02:34:13 +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
eaafeef1bb
fix(library): keep track count readable next to filter actions
...
Share one count header row: count text keeps its intrinsic width and the
Filters/Create playlist buttons scale down on narrow widths instead of
truncating the count to an ellipsis.
2026-07-27 01:50:49 +07:00
zarzet
50375b751e
feat(player): animate track changes and open queue with a swipe up
...
Crossfade+scale the artwork and fade+slide title/artist on track change.
Make the player page non-scrollable and route vertical gestures instead:
swipe up on the content or bottom tab strip opens the queue sheet, swipe
down still forwards to the route's drag-to-dismiss.
2026-07-27 01:50:47 +07:00
zarzet
2a1c9e0904
fix(store): center add-repository state and keep submit button above keyboard
...
Use SliverFillRemaining(hasScrollBody: false) so the page scrolls as one
unit when the keyboard opens, pad for the nav bar so the form is centered
in the visible area, and set scrollPadding so focusing the URL field also
reveals the Add Repository button.
2026-07-27 01:50:33 +07:00
zarzet
0278fad278
feat(tutorial): fit pages on short viewports and fix page indicator visibility
...
Scale vertical gaps and icon by viewport height so pages fit with little
or no scrolling, add ScrollEdgeFade as a scroll cue when they still
overflow, and use onSurfaceVariant for inactive page dots (the previous
surfaceContainerHighest was invisible on AMOLED black).
2026-07-27 01:50:31 +07:00
zarzet
efe703d60d
feat(setup): make language list scrollability obvious and center step content
...
Add ScrollEdgeFade (bottom gradient while more content remains) plus an
always-visible scrollbar on the language list, and bias step centering
upward by the header height so content sits at the optical screen center.
2026-07-27 01:50:17 +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
c42a1be76c
feat(tablet): cap wide-layout margins at 80dp so content uses the screen
2026-07-27 01:39:22 +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
e8a3fc58c7
feat(metadata): show average bitrate for lossless files in the track screen
2026-07-27 01:20:38 +07:00
zarzet
52b1147275
feat(library): add missing-ISRC metadata filter
2026-07-27 01:15:51 +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
23f18ab276
fix(queue): give completion-bridge cells swipe navigation into the library list
2026-07-27 01:08:32 +07:00
zarzet
c9b1898cc0
refactor(metadata): split cover cache, display helpers, and options menu into part files
2026-07-27 00:39:44 +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
d0dca1a101
refactor(library): split row models and queue union SQL into part files
2026-07-27 00:32:42 +07:00
zarzet
5ee7f733cf
refactor(analysis): split models, info card, and spectrogram into part files
2026-07-27 00:30:25 +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