Commit Graph
235 Commits
Author SHA1 Message Date
zarzet 2adcdf0768 fix(artwork): preserve cover colors and readable player contrast 2026-09-25 01:20:11 +07:00
zarzet a470ed8d7c Merge remote-tracking branch 'origin/main' 2026-09-25 01:03:00 +07:00
zarzet f639e4cc6b fix(player): loop marquee forward with longer reading pauses 2026-09-24 11:03:09 +07:00
Bartolo 14ce4bc868 Add Hi-Res authenticity check
Introduce a per-file Hi-Res authenticity checker and optional auto re-download for flagged fake Hi-Res downloads. Adds Rust checker modules (fft, evidence, FLAC/WAV decoding, tests) and a mobile API (check_hires_authenticity). Wire platform bindings for Android/iOS and PlatformBridge. Add Dart HiResCheckService, UI HiResCheckCard, settings toggle (redownloadFakeHiRes) and integration in the download pipeline to quarantine and replace suspicious files with LOSSLESS when safe. Adds claxon FLAC dependency.
2026-09-23 22:29:15 +02:00
zarzet d56396f90e feat(player): scroll overflowing mini player titles and artists 2026-09-24 00:44:48 +07:00
zarzet 146b2acd4d refactor(ui): unify theme styling and enlarge profile button
Centralize existing Material and Mornye layout metrics in AppTokens and share adaptive icon selection. Enlarge the Home profile avatar to 44 dp with a 56 dp touch target.
2026-09-23 21:53:15 +07:00
zarzet ba44bafa92 fix: sync lyric romanization and clear stale selection menus
Preserve romanization and translation metadata through Rust exports and cache, match rounded line times, and retain word endings. Highlight romanization with the main lyric clock in Material and Mornye.

Clear selection overlay ownership safely when collection screens are disposed. Add parser, rendering, cache and overlay lifecycle regression coverage.
2026-09-23 12:42:08 +07:00
zarzet c594c493dd fix(metadata): remove nested barcode card background 2026-09-22 00:57:36 +07:00
zarzet 4283126381 fix(mornye): preserve icon meaning and use consistent settings accents 2026-09-21 23:27:42 +07:00
zarzet c87c9ff848 feat(library): add Mornye browsing and contextual compact navigation
Add category browsing, a two-column Recently Added grid, and a dedicated download queue. Keep compact navigation icons and their animations aligned with the active tab.

Keep profile avatars circular and report lyric enrichment outcomes accurately, preserving existing lyrics and supporting instrumental markers.
2026-09-21 23:02:52 +07:00
zarzet 4c5af08cdd fix(ui): resolve album titles and show Home explicit badges
Hide the profile setup hint once a name or photo is saved.
2026-09-21 19:02:13 +07:00
zarzet 5958fe2719 feat(home): add large featured cards for extension feeds 2026-09-21 18:38:04 +07:00
zarzet ed80d3e8bb feat(mornye): separate Search into a circular navigation button
Keep Home, Library, and Repo in the glass capsule while Search remains accessible on the right. Preserve compact transitions and allow returning to Home when Search is active.
2026-09-21 18:15:52 +07:00
zarzet 1c535b493c fix(ui): align local lyrics and refine Mornye selection
Read embedded lyrics through the playback metadata fallback when the lyrics reader misses them. Restore edge icon highlighting during navbar drags, tune selection contrast, and blend the profile name field into its card.
2026-09-21 18:07:15 +07:00
zarzet d8d46108bc feat(profile): add local profiles with backup and restore
Move Mornye Settings to the Home avatar and keep search above the profile card. Center the metadata artwork and actions, and make artist names clickable in the Material player.
2026-09-21 17:28:18 +07:00
zarzet 5b519070a3 feat(player): add beat-matched AutoMix and refine Mornye navigation
Add default-off local beat analysis, pitch-preserving tempo matching, crossfade fallback, and cancellation-safe two-deck playback. Expose AutoMix in settings and the Mornye queue.

Separate Search from Home, remove the Mornye greeting, and keep Home/Search icons moving continuously between full and compact navigation. Restore expansion on upward Library scrolling.

Validate beat analysis, transport handoff and cancellation, settings persistence, and navigation behavior. Flutter analysis and the signed iOS simulator build pass.
2026-09-20 20:36:26 +07:00
zarzet 7691acecef perf(analysis): reuse sorted spectral percentile windows
Reuse sorted windows for related percentiles and reject unsuitable edges before computing expensive tail statistics. Preserve cutoff results with 31 regression fixtures and 400 exact old/new comparisons.
2026-09-20 17:21:11 +07:00
zarzet 5053ed93ee perf(mornye): reuse exact luminance contributions for contrast sampling
Use 6 KiB of lookup tables to avoid repeated Color allocations and exponentiation during frame sampling. Exhaustively verify exact Flutter luminance parity for every 8-bit RGB value.
2026-09-20 17:20:52 +07:00
zarzet 6038ce5777 perf(mornye): release outgoing artwork decoders when replaced
Retain the outgoing decoder only while its frame remains displayed, then release its provider subscription as soon as replacement artwork is ready. Verify decoder disposal while preserving cover transitions.
2026-09-20 17:20:52 +07:00
zarzet 0c930c691f fix(player): preserve offline motion artwork and smooth cover changes 2026-09-20 12:20:24 +07:00
zarzet dc25370350 feat(artists): add branded headers and incremental release loading 2026-09-20 11:46:16 +07:00
zarzet e61ff64adc feat(mornye): cache motion covers and refine player and search
Save album motion videos in app storage during downloads and prefer offline playback with an aspect-aware layout. Add cache management for saved videos.

Center active lyrics on opening, expand lyrics during manual scrolling, and adjust landscape header spacing. Group search rows and skeletons with dividers and remove redundant result icons.

Validation: Flutter analysis clean; 723 tests passed, 4 skipped; iOS simulator build installed.
2026-09-19 17:26:26 +07:00
zarzet 63e1a9b9c8 feat(ui): add Mornye glass theme and adaptive music player
Add a selectable Mornye theme with shared glass controls, dialogs, sheets, notifications, and collection headers while retaining Material components.

Update player artwork, lyrics transitions and highlighting, synchronized rolling time labels, volume controls, and compact navigation. Unify metadata, Library, search, and extension surfaces; preserve restored artwork and report extension load failures.

Validation: full Flutter analyzer clean; 713 tests passed and 4 skipped; pinned Dart formatting and diff checks passed; signed ARM64 and ARM32 release APKs built and verified.
2026-09-19 12:10:10 +07:00
zarzet df87f1e950 perf(images): decode local covers to their fitted display size 2026-09-17 18:25:24 +07:00
zarzet cd4b8ead90 perf(analysis): serialize and cancel owned FFmpeg sessions 2026-09-17 02:59:22 +07:00
zarzet fd777c34d9 perf(player): commit seek gestures once after scrubbing 2026-09-17 02:59:21 +07:00
zarzet a064e96c37 perf(ui): pause motion headers when collapsed 2026-09-17 02:59:21 +07:00
zarzet 650af6e59d fix(download): size quality picker to its content 2026-09-07 00:50:05 +07:00
zarzet 40546f48e6 fix(download): allow dragging the quality picker to dismiss 2026-09-07 00:47:15 +07:00
zarzet ed51b5d6ea revert: remove download size estimates 2026-09-06 22:17:23 +07:00
zarzet 174852b056 fix(download): estimate sizes from track quality metadata 2026-09-06 22:11:37 +07:00
zarzet ba00807786 fix(download): compare size estimates at each quality tier 2026-09-06 21:55:38 +07:00
zarzet c6195bcd10 feat(download): estimate file sizes in quality picker 2026-09-06 21:40:25 +07:00
zarzet a89f786960 perf(ui): retain platform link lookup across rebuilds
Keep the platform lookup Future in widget state and replace it only when track identifiers change. Theme rebuilds retain loaded content without another native call.

Add widget regressions for theme and identifier changes.
2026-09-06 14:04:05 +07:00
zarzet 1d0bb56f9b perf(images): size decoded covers from layout constraints 2026-09-06 02:33:42 +07:00
zarzet 2ef2beb621 fix(ui): resolve collapsed header title overlap 2026-09-04 23:58:14 +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 cbeada208b feat(library): add bulk duplicate cleanup 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 2c9881944d feat(updater): resume and verify APK downloads 2026-08-30 23:19:00 +07:00
zarzet e931d5e2b0 refactor(core): reduce generated and duplicate code 2026-08-30 11:57:47 +07:00
zarzet 7141ca980f fix(library): sync track playback controls 2026-08-30 00:43:13 +07:00
zarzet 686cc25395 fix(library): prevent pinch gesture blocking scroll 2026-08-28 19:57:40 +07:00
zarzet 51f61c9c95 fix(audio-analysis): avoid spectrogram splice noise 2026-08-28 01:48:52 +07:00
zarzet 847fc725b6 fix(analysis): reject false spectral rolloff cutoffs 2026-08-28 00:33:55 +07:00
zarzet 933a3c49e2 fix(library): persist artwork previews and stabilize completion 2026-08-27 21:42:38 +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