zarzet
611f7377f6
fix(metadata): keep header details legible in light theme
2026-08-01 16:10:31 +07:00
zarzet
645a324a5f
feat(navigation): add go to album actions
2026-08-01 16:06:08 +07:00
zarzet
6a3a85f7c9
fix(player): refresh lyrics after automatic track changes
2026-08-01 15:38:40 +07:00
zarzet
15b1b757fd
fix(analysis): guard unsupported AC-4 codec
2026-08-01 15:02:20 +07:00
zarzet
dc58353c07
fix(lyrics): reject empty embedded payloads
2026-08-01 15:02:03 +07:00
zarzet
3e41aa0eee
fix(metadata): support extension custom search
2026-07-30 15:36:31 +07:00
zarzet
5357e14b06
fix(ui): refine track action spacing
2026-07-30 14:42:26 +07:00
zarzet
5228b0030b
fix(player): restore lyrics after cold start
2026-07-30 13:48:05 +07:00
zarzet
76f7b9c025
fix(selection): keep modal sheets above selection bar
2026-07-30 11:22:59 +07:00
zarzet
12f2b12570
style(settings): restore connected group layout
2026-07-29 21:03:24 +07:00
zarzet
04a8700a65
fix(player): restore playback position reliably
2026-07-29 21:03:11 +07:00
zarzet
d4bed9c643
feat(player): polish actions and synced lyrics
2026-07-29 19:29:59 +07:00
zarzet
24b9d7ba80
fix(player): preserve audio quality across track changes
2026-07-29 19:29:19 +07:00
zarzet
cc93c5020d
feat(settings): polish search and navigation layout
2026-07-29 19:27:30 +07:00
zarzet
6e60f33fd0
feat(settings): add searchable settings index
2026-07-29 17:13:33 +07:00
zarzet
4ee7558bca
feat(collections): unify selection-aware screens
2026-07-29 17:13:21 +07:00
zarzet
7230dd3df8
refactor(ui): standardize error and empty states
2026-07-29 17:12:46 +07:00
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
1e973d5ecb
style(dart): apply repository formatting
2026-07-29 14:14:42 +07:00
zarzet
1f55523b64
fix(metadata): fetch maximum cover for online autofill
2026-07-29 02:42:57 +07:00
zarzet
662558e3e6
fix(ui): sanitize user-facing errors
2026-07-29 01:43:04 +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
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
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
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
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