zarzet
eed48a5fec
fix(a11y): improve compact control readability
2026-07-29 17:12:30 +07:00
zarzet
1443be6a4f
feat(details): add adaptive cover palettes
2026-07-29 17:12:15 +07:00
zarzet
dc4c75363c
refactor(extensions): share extension rows
2026-07-29 17:11:51 +07:00
zarzet
309777cc71
refactor(settings): unify settings components
2026-07-29 17:11:34 +07:00
zarzet
d765320f10
refactor(selection): share bottom bar behavior
2026-07-29 17:11:21 +07:00
zarzet
40034d184f
refactor(library): unify track cards
2026-07-29 17:10:57 +07:00
zarzet
dbdbf0ca41
refactor(ui): standardize modal sheets
2026-07-29 17:10:42 +07:00
zarzet
fa0c7b20b5
refactor(ui): unify sliver page headers
2026-07-29 17:10:24 +07:00
zarzet
c6f7b22e43
feat(theme): add shared design tokens
2026-07-29 17:10:07 +07:00
zarzet
834a8dde89
chore(repo): improve contributor experience
2026-07-29 14:16:10 +07:00
zarzet
1e973d5ecb
style(dart): apply repository formatting
2026-07-29 14:14:42 +07:00
zarzet
5b45ef80bf
fix(android): stop forcing display mode at startup
2026-07-29 13:48:41 +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
452d9a76cb
fix(metadata): verify maximum cover candidates
2026-07-29 02:42:46 +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
1bf61884cd
chore(deps): update FFmpeg and notifications
2026-07-28 20:52:57 +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
385afe290a
fix(download): reject mismatched provider tracks
2026-07-28 14:15:44 +07:00
zarzet
b4f239c692
fix(download): honor explicitly selected provider
2026-07-28 14:11:14 +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
ad08b95c0f
perf(android): skip unused download widget work
2026-07-28 00:50:00 +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