Commit Graph
886 Commits
Author SHA1 Message Date
zarzet e975cae99f feat(library): expand audio format and ReplayGain filters
Keep format choices available independently of loaded pages, match codec and extension aliases, and add a filter for indexed ReplayGain tags. Preserve source, quality, search, paging, and existing missing-ReplayGain behavior.

Validation: 13 targeted database and widget tests; Flutter localization generation and targeted analysis.
2026-10-08 22:30:04 +07:00
zarzet 9177a683a2 fix(storage): preserve extension encryption keys on read failures
Disable automatic deletion across clients sharing Android secure storage and enable protected migration. Reject replacement keys when encrypted settings exist or the saved key is malformed. Surface preparation failures through extension state and preserve retry behavior.

Validation: targeted Flutter tests, analyzer and Android secure-storage compatibility test passed. The original device key-loss trigger is not established.
2026-10-08 20:30:24 +07:00
zarzet e01ec99c5e perf(downloads): enqueue selected playlists in one update 2026-10-08 09:27:26 +07:00
zarzet e0bdcb5134 perf(collections): delete selected playlists in one transaction 2026-10-08 05:14:44 +07:00
zarzet 3da4126762 perf(downloads): enqueue Wishlist selections in one update 2026-10-08 05:08:24 +07:00
zarzet 8ffd232b35 perf(collections): remove selected tracks in one transaction 2026-10-08 04:58:47 +07:00
zarzet 100999e5f5 perf(library): load bounded browse pages without rereading prefixes 2026-10-07 04:19:14 +07:00
zarzet e7d0d88035 perf(backup): stream encoded collections without cloning model graphs 2026-10-07 04:19:14 +07:00
zarzet 4d7b9d97bc perf(collections): isolate action and track row rebuilds 2026-10-07 03:21:51 +07:00
zarzet a7c17ad316 fix(mornye): use glass for download queue confirmations 2026-10-07 00:16:16 +07:00
zarzet ad674a55ad perf(backup): stream history backup codecs and restore transactions natively
Export, import, and split legacy history backups in Rust while preserving schema 15, all history columns, path keys, and atomic restore behavior. Keep provider refresh and pending history edits intact.
2026-10-06 23:29:59 +07:00
zarzet 56f91f4e6c perf(playlists): import CSV and export M3U through native workers
Move playlist parsing and serialization off the UI isolate, preserving field mapping, identifiers, durations, and export entries. Extend the shared parser contract tests with playlist fixtures.
2026-10-06 23:28:40 +07:00
zarzet 514e229fc8 perf(metadata): parse lyrics and encode ID3 artwork in native workers
Port LRC, enhanced LRC, and TTML parsing plus ID3v2.3 lyrics writing and picture encoding. Keep legacy contracts and deep XML fallback; guard asynchronous player updates against stale track results.
2026-10-06 23:28:20 +07:00
zarzet 92e3fa94ec fix(network): discard stale folder browsing responses 2026-10-06 22:00:14 +07:00
zarzet 7057b0c349 refactor(albums): share immutable track and disc ordering 2026-10-06 22:00:13 +07:00
zarzet 4be1073203 fix(lyrics): hold current line highlight until the next lead 2026-10-06 14:20:54 +07:00
zarzet 4d65b590e1 refactor(metadata): separate file save persistence from editor 2026-10-06 13:08:13 +07:00
zarzet d98ab4852d fix(library): distinguish unavailable storage from missing files 2026-10-06 13:08:12 +07:00
zarzet a6c1409ef5 fix(library): remove deleted files from both library indexes 2026-10-06 00:30:45 +07:00
zarzet 604a485cf1 perf(player): reuse artwork decodes across Mornye transitions 2026-10-05 19:20:04 +07:00
zarzet a8712a44b1 perf(library): defer local providers while the feature is disabled 2026-10-05 17:53:18 +07:00
zarzet e77996ddbd refactor(metadata): separate editor state, autofill and artwork ownership 2026-10-05 03:28:14 +07:00
zarzet 3047d5974c refactor(player): isolate routes, layouts and reactive controls 2026-10-05 03:27:46 +07:00
zarzet c22577eb18 refactor(player): separate metadata state and lyrics rendering 2026-10-05 02:31:55 +07:00
zarzet a363f5a459 refactor(playback): own configuration and dependencies per runtime 2026-10-05 02:31:47 +07:00
zarzet 5194344268 refactor(downloads): separate persistence, progress and feedback 2026-10-05 02:31:01 +07:00
zarzet 1abc45e2bf feat(playback): automate mute and headphone playback controls 2026-10-05 01:55:08 +07:00
zarzet ad3c9c0279 fix(home): anchor track menus to their source cards 2026-10-05 01:55:07 +07:00
zarzet 4a6206c21c perf(search): reduce tab switching lag 2026-10-05 01:42:49 +07:00
zarzet 5c6a0390c2 fix(automix): diagnose crossfade fallback reasons 2026-10-04 04:51:32 +07:00
zarzet e6c7213067 feat(player): show mixing status beside audio quality 2026-10-04 03:55:25 +07:00
zarzet 0ec8c96269 feat(automix): add configurable duration and transition effects 2026-10-04 03:55:24 +07:00
zarzet 60c3e4d857 feat(lyrics): add staggered spring motion to visible rows 2026-10-04 03:33:49 +07:00
zarzet 4ae97ad4f7 refactor(extensions): align settings with Material and Mornye 2026-10-03 19:11:14 +07:00
zarzet 6a4054d75e fix(library): preserve album view when returning from detail screens 2026-10-03 17:57:26 +07:00
zarzet 61708829fd fix(stats): show artwork for top artists 2026-10-03 17:15:49 +07:00
zarzet 6550104df9 chore(release): bump app version to 5.1.0 2026-10-03 16:12:01 +07:00
zarzet 983f1b26a5 feat(settings): default to built-in playback and word-synced lyrics 2026-10-03 13:40:39 +07:00
zarzet b2bba0121b fix(mornye): use liquid glass for Home download and album actions 2026-10-03 12:26:13 +07:00
zarzet 84cac92983 feat(network): add SMB and WebDAV libraries with streaming and uploads 2026-10-03 04:27:47 +07:00
zarzet d97b4bfd2d perf(details): load local albums with skeletons and bound artwork decoding 2026-10-03 04:24:55 +07:00
zarzet a377885e56 feat(statistics): show cover artwork and artists for top tracks 2026-10-03 04:24:55 +07:00
zarzet 0914e7d978 feat(mornye): restore liquid glass with continuous draggable navigation 2026-10-03 04:24:54 +07:00
zarzet d0d85b0e0e fix(artwork): recover missing SAF covers after transient provider failures 2026-10-03 04:24:23 +07:00
zarzet cc3fe42df2 refactor(metadata): flatten track actions and remove similar songs 2026-10-03 03:26:35 +07:00
zarzet 0b2cf0e4e5 feat(discord): add opt-in mobile rich presence with track artwork 2026-10-03 02:14:11 +07:00
zarzet b767bd16d8 fix(playback): refresh notification favorite and shuffle controls 2026-10-03 02:14:01 +07:00
zarzet cd3fb40f2e fix(lyrics): preserve manual scrolling during control transitions 2026-10-03 02:13:57 +07:00
zarzet def4536d0a fix(mornye): keep lyrics scrolling stable when controls fade 2026-10-02 19:38:56 +07:00
zarzet 70f8bd7f35 feat(extensions): support personal account forms and direct downloads 2026-10-02 19:21:58 +07:00