Commit Graph
582 Commits
Author SHA1 Message Date
zarzet ad9b2b2ea5 refactor(extensions): share priority settings links 2026-10-18 00:46:52 +07:00
zarzet 12119530a7 refactor(library): share selection action grid layout 2026-10-18 00:46:52 +07:00
zarzet 50368012c0 refactor(settings): share selectable bottom sheet options 2026-10-18 00:46:51 +07:00
zarzet 08bc422634 perf(player): cache adjacent track titles during swipes 2026-10-18 00:46:51 +07:00
zarzet 181900a23a test(library): share re-enrichment settings fixtures 2026-10-18 00:46:10 +07:00
zarzet a396bcf08b refactor(metadata): reuse the platform tag mapper 2026-10-18 00:46:09 +07:00
zarzet 05a5613332 feat(player): add configurable full-screen cover art
Offer default and full-screen artwork in Material and Mornye, retaining landscape layouts and full-screen Mornye motion artwork. Keep the Material header readable over bright covers and normalize invalid saved styles without resetting other settings.

Validation: 144 related Flutter tests, flutter analyze, generated settings, formatter and diff checks.
2026-10-17 22:27:06 +07:00
zarzet 3d11169f21 fix(network): request Android 17 local network access before NAS connections 2026-10-17 16:18:41 +07:00
zarzet 6debfccba2 fix(theme): retain dominant cover colors in player backgrounds 2026-10-17 16:18:39 +07:00
zarzet 161a216bea fix(automix): align effect handoffs and render sufficient source audio 2026-10-17 16:18:38 +07:00
zarzet 11c6cf9915 feat(player): synchronize music haptics with local playback 2026-10-17 16:18:37 +07:00
zarzet 78a5e078cd feat(lyrics): share lyric cards and refine timed vocal transitions 2026-10-17 16:18:35 +07:00
zarzet 40f65d3a4d feat(player): show audio source processing and output details 2026-10-17 16:18:32 +07:00
zarzet ecf594aac2 feat(equalizer): add multiband EQ and per-player native audio processing 2026-10-17 16:18:30 +07:00
zarzet 21fd51d62c feat(autoplay): enable personalization by default and confirm learning resets 2026-10-17 16:18:26 +07:00
zarzet befcd2adec feat(a11y): label controls and improve settings contrast and targets 2026-10-17 16:18:25 +07:00
zarzet 09e07671c7 fix(downloads): recover native queues when their service dies
Check service liveness while monitoring newly started native runs, matching the recovery protection already present during adoption. After three consecutive dead-service probes, reconcile completed results, requeue in-flight items and release the run instead of polling a stale running snapshot indefinitely.

Cover stale snapshots, transient probe failures, paused workers, run isolation, startup timeout and sequential verification reconciliation. Related queue and verification validation: 155 tests passed; scoped analyzer and formatter clean.

Refs #675
2026-10-17 11:45:53 +07:00
zarzet 2bf50ecb30 fix(verification): bound browser handoffs and release expired dialogs
Apply the three-minute deadline to pending-auth lookup, browser launch, manual help and grant waiting. Dismiss owned help dialogs on timeout or cancellation, and prevent late launch failures from opening a fallback browser.

Add regression coverage for stalled steps, cancellation, late responses and successful retry after expiry. Related queue and verification validation: 155 tests passed; scoped analyzer and formatter clean.

Refs #675
2026-10-17 11:45:40 +07:00
zarzet 23fe78f30d feat(loading): align skeletons with collection and extension layouts 2026-10-15 19:16:47 +07:00
zarzet 2111afa468 feat(player): share volume controls across Material and Mornye 2026-10-15 19:16:17 +07:00
zarzet 1d53bf9301 feat(rewind): add yearly highlights and seasonal library banners 2026-10-15 17:15:32 +07:00
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