Commit Graph
2988 Commits
Author SHA1 Message Date
zarzet 49aeedbdcf chore(ci): refresh action pins and align Android build toolchains 2026-10-11 14:33:58 +07:00
zarzet d611590039 chore(android): update Gradle Kotlin NDK and native build dependencies 2026-10-11 14:33:52 +07:00
zarzet 08032f1877 chore(rust): update toolchain and dependencies with preserved vendor sources 2026-10-11 14:33:45 +07:00
zarzet 5caa2ed588 chore(flutter): update SDK and packages with glass and navigation compatibility 2026-10-11 14:32:03 +07:00
zarzet 2b7cacd661 fix(l10n): use Indonesian wording for the built-in player 2026-10-11 14:31:43 +07:00
zarzet 83adc03a15 fix(ci): locate Discord license notices inside the iOS plugin framework 2026-10-11 14:31:31 +07:00
zarzet 430893d58e chore(release): bump app to 5.1.1 build 161
Keep the package version and displayed application build number in sync.
2026-10-10 23:23:25 +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
zarzet 37258a6160 fix(setup): recover folder permissions after Android restarts 2026-10-09 18:07:38 +07:00
zarzet f870cafd07 fix(library): bound path-key migration batches
Migrate paths in 250-track pages and retain unchanged aliases to reduce memory use and index rewrites. Cover large libraries and atomic upgrade rollback with regression tests.

Refs #640
2026-10-09 13:49:03 +07:00
zarzet c92e1a61fe fix(library): sync local album play and pause controls 2026-10-09 13:48:53 +07:00
zarzet c7b1d0b0ec fix(metadata): preserve original artwork resolution for SAF files 2026-10-09 10:34:49 +07:00
zarzet 9f2062d495 build(android): verify full APK integrity and publish checksums 2026-10-08 23:54:24 +07:00
zarzet f0e89e0348 fix(ios): audit Discord license in its framework bundle 2026-10-08 23:54:06 +07:00
zarzet d3a4e4d999 docs: move detailed build guidance to contributing guide
Keep the README Development section short and group Android/iOS builds, Full/Lite variants, SDK setup, and crash symbol handling in CONTRIBUTING.md. Replace the stale Discord setup link with the maintained bridge documentation.
2026-10-08 23:16:53 +07:00
zarzet 0d13c9585c Merge remote-tracking branch 'origin/main' v5.1.0 2026-10-08 23:10:20 +07:00
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 61410f29fb chore(l10n): merge Crowdin translation updates from PR #551
Integrate 16 locale updates from 9c32784be4 while preserving translations for newer local features. Resolve duplicate entries, regional locale IDs, placeholder mismatches, and introduced plural conflicts.

Validation: Flutter gen-l10n, flutter analyze lib/l10n, ARB key and placeholder audit, and git diff --check.
2026-10-08 22:09:47 +07:00
zarzet 8251c16ca0 fix(repo): retry initialization before adding a registry
Coalesce repository startup and retry a failed owner initialization before changing the registry URL. Keep the original startup error and avoid rollback calls when initialization never succeeded.

Validation: 56 targeted Flutter tests passed (2 optional skips), analyzer clean; two Android profile integration cases verified unreadable extensions remain visible, the repository initializes, and encrypted settings reopen with their original key.
2026-10-08 20:30:24 +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 461d5325d8 fix(extensions): retain packages with unreadable settings
Keep installed extensions visible with an error and disable execution when their encrypted settings cannot be read. Preserve settings and credentials so restoring the correct key remains possible.

Validation: 80 extension Rust tests passed (2 ignored), Clippy and formatting; Android profile integration verified repository initialization and preservation of encrypted settings.
2026-10-08 20:29:57 +07:00
zarzet 4b07607884 test(progress): keep batch tests after production helpers 2026-10-08 17:53:55 +07:00
zarzet e4b6156249 perf(downloads): index queued positions for scheduling 2026-10-08 17:51:56 +07:00
zarzet 5a4d0716db perf(downloads): stop queue selection when slots fill 2026-10-08 17:25:11 +07:00
zarzet 1df593eb4f perf(downloads): index progress notification candidates 2026-10-08 17:05:13 +07:00
zarzet c6332e77d8 perf(downloads): reuse committed queue snapshots 2026-10-08 16:46:51 +07:00
zarzet a9578b35fa test(downloads): measure selectors after queue removals 2026-10-08 16:28:33 +07:00
zarzet a167021766 perf(downloads): retain queue indexes between item removals 2026-10-08 16:15:15 +07:00
zarzet 4ab9e53e43 fix(downloads): finalize album ReplayGain after history is saved 2026-10-08 15:49:48 +07:00
zarzet 8192441f60 perf(downloads): check album ReplayGain readiness in one pass 2026-10-08 15:22:45 +07:00
zarzet f75593c15a perf(downloads): batch queue failures when folder access is lost 2026-10-08 12:03:29 +07:00
zarzet e01ec99c5e perf(downloads): enqueue selected playlists in one update 2026-10-08 09:27:26 +07:00
zarzet 2ded1cff68 perf(downloads): batch queue cancellation and progress cleanup 2026-10-08 08:47:47 +07:00
zarzet c67d2a2dd2 perf(downloads): batch cancellation resets for retry 2026-10-08 06:55:26 +07:00