zarzet
1dc4e77f42
refactor(i18n): share supported language choices
...
Use one non-generated language catalog in setup and appearance settings. Filter supported locale codes once and retain the resulting immutable picker list.
2026-09-06 14:05:09 +07:00
zarzet
67440925eb
perf(ui): retain track history lookup snapshots
...
Share the retained history lookup snapshot across albums, playlists, artists, home search results, and library folders. Reuse derived lookups until the track list is replaced.
Test reuse with 4,000 items and invalidation after replacement, sorting, and filtering.
2026-09-06 14:04:05 +07:00
zarzet
09c31d9dba
refactor(batch): share local track actions and phase settings
...
Use shared coordinators for queueing FLAC replacements and batch metadata enrichment from album and queue screens. Keep selection lifecycle handling in each screen and synchronize a settings snapshot once per phase.
Cover cancellation, partial failure, screen disposal, and settings changes between preview and apply.
2026-09-06 14:04:05 +07:00
zarzet
ab21de45c1
perf(library): reuse collection lookups across selection rebuilds
2026-09-06 02:34:49 +07:00
zarzet
856139f908
fix(search): let latest live queries supersede cancelled requests
2026-09-06 02:34:49 +07:00
zarzet
958b79ebca
fix(ui): improve adaptive phone and tablet layouts
2026-09-04 23:44:43 +07:00
zarzet
15ffb3abf5
feat(metadata): add safe batch editing and matching
2026-09-04 16:55:44 +07:00
zarzet
4aba2926f8
fix(conversion): preserve Unicode SAF document names
2026-09-04 12:39:03 +07:00
zarzet
a1ee346f2f
chore(logging): sanitize diagnostics and reduce noise
2026-08-31 01:49:49 +07:00
zarzet
897fb7d523
feat(backup): stream versioned ZIP archives
2026-08-30 23:19:09 +07:00
zarzet
892d152e5c
fix(resolver): retire unavailable resolver endpoints
2026-08-30 18:51:20 +07:00
zarzet
29a86b0dc3
feat(player): add sleep timer
2026-08-30 17:23:16 +07:00
zarzet
d0a9868c2d
feat(resolver): add cross-platform fallback chain
2026-08-30 16:55:16 +07:00
zarzet
e9bb3ae303
feat(l10n): merge Crowdin translation updates ( #531 )
...
Merge Crowdin changes per key so translations from PR #531 are retained without dropping localization keys added on main. Normalize locale filenames for Flutter, keep incomplete languages behind the 70% production threshold, and retain them in Crowdin for continued translation.
2026-08-30 12:59:48 +07:00
zarzet
7141ca980f
fix(library): sync track playback controls
2026-08-30 00:43:13 +07:00
zarzet
29db940d63
fix(security): encrypt extension storage at rest
2026-08-29 18:52:16 +07:00
zarzet
5dac33dfa4
fix(download): preserve finalization metadata and library labels
2026-08-29 00:31:25 +07:00
zarzet
c3b2214e2a
perf: optimize library scans and extension runtime
2026-08-28 21:00:11 +07:00
zarzet
686cc25395
fix(library): prevent pinch gesture blocking scroll
2026-08-28 19:57:40 +07:00
zarzet
887a8ede12
feat(metadata): limit embedded cover resolution
2026-08-28 13:21:05 +07:00
zarzet
433f8ed685
perf: reduce queue and extension runtime overhead
2026-08-28 01:47:51 +07:00
zarzet
a744514e10
fix(library): recover transient file availability
2026-08-28 01:04:04 +07:00
zarzet
933a3c49e2
fix(library): persist artwork previews and stabilize completion
2026-08-27 21:42:38 +07:00
zarzet
fca8e46412
fix(library): show play action for completed batch items
2026-08-27 17:04:58 +07:00
zarzet
2b117415ae
feat: add file format library quality label
2026-08-27 16:50:46 +07:00
zarzet
4609e59806
fix(library): show play actions during batch downloads
2026-08-27 13:56:48 +07:00
zarzet
47deb9f34e
fix(extensions): resume metadata after verification
2026-08-27 13:08:44 +07:00
zarzet
9bbfee25d0
fix(playlists): remove play action from online playlists
2026-08-27 12:15:24 +07:00
zarzet
1a7c20111a
feat(library): add lyrics filtering and metadata actions
2026-08-27 01:44:06 +07:00
zarzet
0de4135966
fix(ui): smooth metadata transitions and refine settings
2026-08-26 22:36:54 +07:00
zarzet
747dea886c
fix(runtime): bound resources and quarantine stalled extensions
2026-08-26 21:09:05 +07:00
zarzet
73051a5feb
fix(player): smooth timed lyrics highlighting
2026-08-23 15:06:46 +07:00
zarzet
c6437d8428
feat(library): add bit depth quality label mode
2026-08-23 11:42:47 +07:00
zarzet
aec7bf7a1b
fix(library): show complete quality labels
2026-08-23 11:36:15 +07:00
zarzet
bc58a28455
fix(metadata): avoid duplicate explicit indicator
2026-08-22 23:28:15 +07:00
zarzet
7557ffbf85
fix(metadata): preserve explicit advisory across conversions
2026-08-22 23:24:56 +07:00
zarzet
19591bdf19
feat(metadata): show explicit badges in track titles
2026-08-22 23:08:40 +07:00
zarzet
75e1cf17b8
fix(home): clear recent activity permanently
2026-08-22 22:45:06 +07:00
zarzet
b1180a70a7
fix(library): restore live folder scan progress
2026-08-22 13:43:06 +07:00
zarzet
b780aae38f
fix(library): open folder actions on row tap
2026-08-22 13:37:06 +07:00
zarzet
60624436a6
feat(library): support multiple storage folders
2026-08-22 11:15:42 +07:00
zarzet
89d39c4074
fix(metadata): show readable SAF file locations
2026-08-21 01:02:02 +07:00
zarzet
ea63291db8
refactor(metadata): move cover resolution to extensions
2026-08-19 13:12:29 +07:00
zarzet
bdb10a2ae6
chore(deps): update Flutter and Go dependencies
2026-08-19 11:59:28 +07:00
zarzet
6d97151ee7
fix(ui): align metadata and wrap track badges
2026-08-18 20:50:31 +07:00
zarzet
2cb5993d6e
fix(ui): update tutorial copy and library play button
2026-08-18 19:49:41 +07:00
zarzet
a7423b7f89
feat(metadata): edit release tags and render UPC barcodes
2026-08-18 19:29:12 +07:00
zarzet
7fc27e8314
perf(library): stream scans and optimize queue queries
2026-08-18 11:03:05 +07:00
zarzet
29609b6084
refactor(extensions): prioritize configurable settings
2026-08-17 21:04:53 +07:00
zarzet
2e115308b7
feat(filename): add provider traceability tags
2026-08-17 20:51:27 +07:00