Commit Graph
561 Commits
Author SHA1 Message Date
zarzet bf8ae854dd feat(forms): adopt expressive inputs with consistent form state 2026-10-15 16:00:15 +07:00
zarzet c5491302a7 feat(ui): add themed menus and adaptive checkbox rows 2026-10-15 16:00:02 +07:00
zarzet 33dca89f28 feat(ui): unify content cards and preserve press behavior 2026-10-15 15:59:38 +07:00
zarzet d28e3f65b1 fix(headers): fit artwork and unify toolbar controls 2026-10-15 02:52:23 +07:00
zarzet bd0b4a50c3 feat(layout): adapt tablet navigation and center wide content 2026-10-15 02:51:53 +07:00
zarzet 9495a6bf66 fix(metadata): align separator picker with Settings components 2026-10-15 01:14:54 +07:00
zarzet 1cc233bdc1 fix(settings): unify adaptive sheet layout and drag behavior 2026-10-15 01:14:54 +07:00
zarzet c42b314042 fix(player): expose favorites and shuffle in Material notifications 2026-10-15 00:28:17 +07:00
zarzet 3fd1588154 fix(library): align filter and sort sheet sizing and dismissal 2026-10-15 00:28:16 +07:00
zarzet 08266c7369 feat(listening): add Rewind highlights and refresh statistics 2026-10-14 23:05:26 +07:00
zarzet 97d8ee3695 fix(player): prevent overlapping titles during rapid skips 2026-10-14 23:05:08 +07:00
zarzet 83a55fb80b feat(library): add sectioned browsing and adaptive fast scrolling 2026-10-14 23:04:46 +07:00
zarzet 9bac4a6efb feat(material): unify progress and surface transitions 2026-10-14 23:04:27 +07:00
zarzet 56e2eb8589 feat(material): animate header action groups and collapse 2026-10-14 23:04:07 +07:00
zarzet 8f6aa00152 feat(settings): connect standard Material settings rows 2026-10-14 20:20:44 +07:00
zarzet 5e6afc7a32 feat(ui): add Material Expressive spring motion 2026-10-14 20:20:44 +07:00
zarzet 62ce404390 feat(ui): extend Material Expressive surfaces and playback controls 2026-10-13 22:58:00 +07:00
zarzet 186c66aeb8 fix(lyrics): refresh LRC sidecars in their actual SAF folder
Resolve opaque SAF document ancestry before writing adjacent lyrics. Propagate failed requested LRC writes and cover native word-synced refresh in regression tests.
2026-10-13 19:38:00 +07:00
zarzet 0b3b9c21c9 feat(theme): show a check on selected expressive switches
M3ESwitch does not read the Flutter switch theme, so selected switches
lost the check thumb icon that the standard Material switch shows.
2026-10-13 18:27:38 +07:00
zarzet e56d59c798 feat(theme): adopt Material Symbols and expressive components
The Material theme now draws its main surfaces with rounded Material
Symbols: navigation, player, mini player, queue, settings, sheets,
dialogs and shared controls. AppIcon maps legacy Icons to their symbol
and keeps outlined glyphs unfilled. Mornye keeps its original icons.

Icon buttons, text and filled buttons, dialog actions, sliders, the setup
FAB and indeterminate spinners use the Material 3 Expressive components.
Each wrapper falls back to the standard Flutter widget for Mornye, reduced
motion and custom sizing, so existing layouts and hit areas stay intact.
2026-10-13 18:27:38 +07:00
zarzet e3b69a25ef fix(download): probe M4A streams before preserving requested FLAC
Provider and decryption extensions describe the downloaded container, not
its audio codec. A decrypted M4A/MP4 can still carry FLAC, so a requested
FLAC output now reaches the codec probe instead of being preserved early.
Lossy streams keep their native container and still receive metadata.
2026-10-13 18:27:16 +07:00
zarzet 65dbce27f5 fix(automix): wait for advancing audio before starting fades 2026-10-12 12:11:27 +07:00
zarzet ac8523d789 feat(metadata): add per-field download tag separators 2026-10-12 12:11:06 +07:00
zarzet ef903248c0 feat(network): delete SMB and WebDAV tracks from the library 2026-10-11 16:14:01 +07:00
zarzet 2e170ca298 fix(notifications): show indeterminate scans without false zero percent 2026-10-11 15:38:20 +07:00
zarzet 3ff143f4be fix(library): retire deleted downloads and stale completion cards 2026-10-11 15:38:20 +07:00
zarzet c84fc335ac fix(ios): preserve folder grants and surface picker failures 2026-10-11 14:34:35 +07:00
zarzet 118c42c4ff test(player): cover Previous audio selection and AutoMix handoff 2026-10-11 14:34:28 +07:00
zarzet 40cd1909df test(ui): correct context menu and lyric spacing assertions 2026-10-11 14:34:22 +07:00
zarzet 42207b6fa5 fix(mornye): animate queue removal icon with swipe progress 2026-10-11 14:34:16 +07:00
zarzet d2dcf28622 feat(autoplay): add opt-in on-device recommendation learning 2026-10-11 14:34:11 +07:00
zarzet e22e934525 feat(network): enable audio and hi-res analysis for network tracks 2026-10-11 14:34:04 +07:00
zarzet 5caa2ed588 chore(flutter): update SDK and packages with glass and navigation compatibility 2026-10-11 14:32:03 +07:00
zarzet 5eafd3acc4 perf(library): prefetch network metadata with bounded concurrency
Read up to three WebDAV tracks or two SMB tracks through a scan-owned metadata service while retaining listing order, bounded output, artwork and progress. Keep pause and cancellation independent of playback and add host regressions plus a native Android latency benchmark.
2026-10-10 23:22:41 +07:00
zarzet 0d70e413ed perf(network): reuse HTTP connections for browsing and range reads
Pool bounded read clients by connection credentials and certificate pin, invalidate them after configuration changes, and abort timed-out requests. Verify connection reuse, concurrent range limits, error recovery and credential rotation.
2026-10-10 23:22:32 +07:00
zarzet e9b7e84113 fix(webdav): retain tracks across equivalent parent URI encodings
Match decoded path components once in Dart and Rust while rejecting encoded separators and paths outside the selected folder. Add folder scan diagnostics, shared parser fixtures, a synthetic 1806-track traversal and native Android regression coverage.
2026-10-10 23:22:21 +07:00
zarzet c093120e73 fix(library): collapse selection actions before dismissing
Keep selection active after the first downward swipe, and cancel only on a second swipe from the compact header. Support expansion by dragging or tapping, pin the header while actions scroll, and cover large text and accessibility behavior.
2026-10-10 23:21:52 +07:00
zarzet 58fb7750e5 fix(mornye): honor forced glass with increased system contrast
Apply the explicit blur override consistently to glass surfaces, tab lenses, menus and the clarity slider while preserving text contrast and reduced motion. Update localized guidance and accessibility regression coverage.
2026-10-10 23:21:41 +07:00
zarzet 7066597259 feat(mornye): animate squircle menus from their trigger 2026-10-10 17:19:35 +07:00
zarzet 9ecfb31bc2 fix(automix): ease effects into playback without cutting dry audio 2026-10-10 17:06:41 +07:00
zarzet d273be026d feat(lyrics): customize text size and animate active lines 2026-10-10 17:04:09 +07:00
zarzet b30dd9fed0 feat(appearance): support imported TTF and OTF fonts 2026-10-10 16:59:06 +07:00
zarzet cdceda4585 fix(library): exclude inactive NAS entries and file aliases from duplicates 2026-10-10 02:16:32 +07:00
zarzet 97c63fb38e fix(library): allow choosing duplicate copies and clear stale indexes 2026-10-10 02:16:26 +07:00
zarzet edf575e8fc fix(playlists): preserve repeated tracks during imports 2026-10-10 02:16:22 +07:00
zarzet 829aeb156e fix(playback): reload audio sources when switching tracks 2026-10-10 02:16:15 +07:00
zarzet 00cff9b3c3 fix(ios): restore lock screen controls across app transitions 2026-10-09 18:08:12 +07:00
zarzet 02901a0c91 feat(lyrics): use Apple Music as the default lyrics provider 2026-10-09 18:08:03 +07:00
zarzet 1cae561e6c feat(appearance): make Mornye glass outlines optional 2026-10-09 18:07:55 +07:00
zarzet 1b9c35f322 fix(downloads): preserve browser verification and queues across restarts 2026-10-09 18:07:49 +07:00