zarzet
4df96db809
feat: batch re-enrich for local tracks, SAF FD refactor, Ogg quality fix
...
- Replace batch Share action with batch Re-enrich in local album selection bar
- Full native/FFmpeg re-enrich flow with SAF write-back support
- Triggers incremental local library scan after completion to refresh metadata
- Queue tab: switch first selection action to Re-enrich when all selected items are local-only
- Refactor SAF FD handoff in MainActivity: drop detachFd/dup pattern, pass procfs
path to Go and let Go re-open it to avoid fdsan double-close race conditions
- Handle /proc/self/fd/ path in output_fd.go: re-open via O_WRONLY|O_TRUNC instead
of taking raw FD ownership
- Fix Ogg duration/bitrate calculation in audio_metadata.go:
- Use float64 arithmetic and math.Round for accurate duration
- Compute bitrate from file size / float duration at the source
- Validate Ogg page header fields (version, headerType, segment table) to avoid
false positives from payload bytes during backward scan
- Guard against corrupted granule values (>24h duration, <8kbps bitrate)
- Rename trackReEnrich label from 'Re-enrich Metadata' to 'Re-enrich' across all
13 locales and ARB files
- Update CHANGELOG.md with 3.7.0 entry
2026-02-18 19:29:59 +07:00
zarzet
5605930aef
feat: add multi-select share and batch convert in downloaded/local album screens
...
- Add shareMultipleContentUris native handler in MainActivity for ACTION_SEND_MULTIPLE
- Add shareMultipleContentUris binding in PlatformBridge
- Add _shareSelected and _performBatchConversion methods to DownloadedAlbumScreen and LocalAlbumScreen
- Add batch convert bottom sheet UI with format/bitrate selection (MP3/Opus, 128k-320k)
- Add share & convert action buttons to selection bottom bar in both screens
- Add batch convert with full SAF support: temp copy, write-back, history update
- Add share/convert selection strings to l10n (all supported locales + app_en.arb)
- Add queue tab selection share/convert feature (queue_tab.dart)
- Update donate page
- Update go.sum with bumped dependency hashes
2026-02-18 18:05:48 +07:00
Zarz Eleutherius
85bf3cfa84
New translations app_en.arb (Turkish)
2026-02-18 17:44:35 +07:00
Zarz Eleutherius
8eec73d88c
New translations app_en.arb (Hindi)
2026-02-18 17:44:34 +07:00
Zarz Eleutherius
b63dbbbfd5
New translations app_en.arb (Indonesian)
2026-02-18 17:44:33 +07:00
Zarz Eleutherius
8b16157047
New translations app_en.arb (Chinese Traditional)
2026-02-18 17:44:32 +07:00
Zarz Eleutherius
6628682f97
New translations app_en.arb (Chinese Simplified)
2026-02-18 17:44:31 +07:00
Zarz Eleutherius
5971ffc470
New translations app_en.arb (Russian)
2026-02-18 17:44:30 +07:00
Zarz Eleutherius
baf95ec328
New translations app_en.arb (Portuguese)
2026-02-18 17:44:28 +07:00
Zarz Eleutherius
0a6590fafd
New translations app_en.arb (Dutch)
2026-02-18 17:44:27 +07:00
Zarz Eleutherius
22dd0ee0f6
New translations app_en.arb (Korean)
2026-02-18 17:44:26 +07:00
Zarz Eleutherius
f9ad6046e8
New translations app_en.arb (Japanese)
2026-02-18 17:44:25 +07:00
Zarz Eleutherius
8a21902fa1
New translations app_en.arb (German)
2026-02-18 17:44:24 +07:00
Zarz Eleutherius
016564eda7
New translations app_en.arb (Spanish)
2026-02-18 17:44:23 +07:00
Zarz Eleutherius
5a8ff7db37
New translations app_en.arb (French)
2026-02-18 17:44:22 +07:00
Zarz Eleutherius
cc08596adf
Update source file app_en.arb
2026-02-18 17:44:19 +07:00
zarzet
cdc5836785
fix: rollback Go toolchain to 1.25.7 to fix ARM32 SIGSYS crash
...
Go 1.26.0 runtime uses futex_time64 (syscall 422) which is blocked
by seccomp on Android 10 and older ARM32 devices, causing immediate
SIGSYS (signal 31) crash on app launch.
Downgraded:
- toolchain: go1.26.0 -> go1.25.7
- golang.org/x/sys: v0.41.0 -> v0.40.0
- golang.org/x/crypto: v0.48.0 -> v0.47.0
- golang.org/x/mod: v0.33.0 -> v0.32.0
- golang.org/x/text: v0.34.0 -> v0.33.0
- golang.org/x/tools: v0.42.0 -> v0.41.0
2026-02-18 00:04:32 +07:00
zarzet
813ed79073
refactor: conditionally show lyrics settings only when embed lyrics is enabled
v3.6.9
2026-02-17 20:57:50 +07:00
Zarz Eleutherius
537bab69ab
Merge pull request #151 from zarzet/renovate/go-dependencies
...
fix(deps): update go dependencies
2026-02-17 18:28:44 +07:00
Zarz Eleutherius
b0871ad94b
Merge pull request #158 from zarzet/renovate/actions-checkout-6.x
...
chore(deps): update actions/checkout action to v6
2026-02-17 18:28:31 +07:00
Zarz Eleutherius
0bd7574ab2
Merge pull request #159 from zarzet/renovate/actions-upload-pages-artifact-4.x
...
chore(deps): update actions/upload-pages-artifact action to v4
2026-02-17 18:28:16 +07:00
renovate[bot]
c3f8b48bf7
fix(deps): update go dependencies
2026-02-17 11:28:10 +00:00
zarzet
90f731ac1e
fix: refine launcher icons and settings page presentation
...
Polish generated app icon handling and improve the settings page supporter section layout for better scalability and readability.
2026-02-17 18:26:20 +07:00
Zarz Eleutherius
e83fd66023
New translations app_en.arb (Russian)
2026-02-17 17:43:02 +07:00
Zarz Eleutherius
d49bab403d
New translations app_en.arb (German)
2026-02-17 17:43:01 +07:00
zarzet
8e6cbcbc2a
feat: YouTube customizable bitrate, improved title matching, SpotubeDL engine fallback
...
- Add configurable YouTube Opus (96-256kbps) and MP3 (96-320kbps) bitrates
- Improve title matching with loose normalization for symbol-heavy tracks
- Add SpotubeDL engine v2 fallback for MP3 requests
- Improve filename sanitization in track metadata screen
- Bump version to 3.6.9+82
2026-02-17 17:22:24 +07:00
Zarz Eleutherius
a6bef63aa7
New translations app_en.arb (Indonesian)
2026-02-16 17:38:32 +07:00
Zarz Eleutherius
898e28c40c
New translations app_en.arb (German)
2026-02-15 17:40:51 +07:00
zarzet
9fda7ef596
Merge branch 'dev'
2026-02-14 17:56:33 +07:00
Zarz Eleutherius
17ba1713ad
New translations app_en.arb (Turkish)
2026-02-14 17:37:29 +07:00
Zarz Eleutherius
f4110204b1
New translations app_en.arb (Hindi)
2026-02-14 17:37:28 +07:00
Zarz Eleutherius
d2a183b52d
New translations app_en.arb (Indonesian)
2026-02-14 17:37:27 +07:00
Zarz Eleutherius
a8dcf3113c
New translations app_en.arb (Chinese Traditional)
2026-02-14 17:37:26 +07:00
Zarz Eleutherius
1f52a6c9e0
New translations app_en.arb (Chinese Simplified)
2026-02-14 17:37:25 +07:00
Zarz Eleutherius
adbed63196
New translations app_en.arb (Russian)
2026-02-14 17:37:24 +07:00
Zarz Eleutherius
33e20845f1
New translations app_en.arb (Portuguese)
2026-02-14 17:37:22 +07:00
Zarz Eleutherius
9a7096c301
New translations app_en.arb (Dutch)
2026-02-14 17:37:21 +07:00
Zarz Eleutherius
4c365032ff
New translations app_en.arb (Korean)
2026-02-14 17:37:20 +07:00
Zarz Eleutherius
bbd32d40a6
New translations app_en.arb (Japanese)
2026-02-14 17:37:19 +07:00
Zarz Eleutherius
73f4a91fa1
New translations app_en.arb (German)
2026-02-14 17:37:18 +07:00
Zarz Eleutherius
1e2e383794
New translations app_en.arb (Spanish)
2026-02-14 17:37:17 +07:00
Zarz Eleutherius
3b70b071e3
New translations app_en.arb (French)
2026-02-14 17:37:16 +07:00
Zarz Eleutherius
838c0ea421
Update source file app_en.arb
2026-02-14 17:37:13 +07:00
zarzet
3ac9ff1dd7
docs: update Paxsenix integration to include all supported providers
v3.6.8
2026-02-14 17:26:53 +07:00
zarzet
3e90b29d2b
fix: improve lyrics error detection and add new donor
...
- Detect error JSON payloads from Apple Music and QQMusic proxies
- Add lyricsHasUsableText validation for usable lyrics content
- Skip empty word lines in synced lyrics parsing
- Add ClearAll method to lyrics cache
- Handle TimeoutException properly in track metadata screen
- Add laflame to recent donors list
2026-02-14 17:25:17 +07:00
zarzet
b74186464b
chore: update CHANGELOG for v3.6.8
2026-02-14 02:18:43 +07:00
zarzet
f4934dcb28
feat: add lyrics source tracking, Paxsenix partner, and dedicated lyrics provider settings page
...
- Add getLyricsLRCWithSource to return lyrics with source metadata
- Display lyrics source in track metadata screen
- Improve LRC parsing to preserve background vocal tags
- Add dedicated LyricsProviderPriorityPage for provider configuration
- Add Paxsenix as lyrics proxy partner for Apple Music/QQ Music
- Handle inline timestamps and speaker prefixes in LRC display
2026-02-14 02:15:36 +07:00
zarzet
30973a8e78
feat: lyrics provider extensions, configurable lyrics cascade, and iOS method channel parity
...
Add lyrics_provider as a new extension type alongside metadata_provider and
download_provider. Extensions implementing fetchLyrics() are called before
built-in providers, giving user-installed extensions highest priority.
Built-in lyrics cascade is now configurable from Download Settings:
- Reorderable provider list (LRCLIB, Musixmatch, Netease, Apple Music, QQ Music)
- Per-provider options: Netease translation/romanization, Apple/QQ multi-person
word-by-word speaker tags, Musixmatch language code
- Provider order and options synced to Go backend on app start and on change
Go backend changes:
- New lyrics_provider manifest type with validation (extension_manifest.go)
- ExtensionProviderWrapper.FetchLyrics() with Goja JS bridge (extension_providers.go)
- Configurable SetLyricsProviderOrder/GetLyricsProviderOrder cascade (lyrics.go)
- LyricsFetchOptions struct for per-provider settings (lyrics.go)
- Extracted tryLRCLIB() helper, randomized LRCLIB User-Agent (lyrics.go)
- Refactored msToLRCTimestamp to separate msToLRCTimestampInline (lyrics.go)
- New provider source files: lyrics_apple.go, lyrics_musixmatch.go,
lyrics_netease.go, lyrics_qqmusic.go
- JSON export functions for lyrics settings (exports.go)
- hasLyricsProvider field in extension manager JSON output
Platform channels:
- Android (MainActivity.kt): setLyricsProviders, getLyricsProviders,
getAvailableLyricsProviders, setLyricsFetchOptions, getLyricsFetchOptions
- iOS (AppDelegate.swift): same 5 method channel handlers for iOS parity
Flutter side:
- Extension model: hasLyricsProvider field + Lyrics Provider capability badge
- Settings model: lyricsProviders, lyricsIncludeTranslationNetease,
lyricsIncludeRomanizationNetease, lyricsMultiPersonWordByWord,
musixmatchLanguage fields with generated serialization
- Settings provider: setters + _syncLyricsSettingsToBackend()
- Download settings UI: provider picker, toggle switches, language picker
- Platform bridge: lyrics provider/options methods
Docs: lyrics provider extension documentation in site/docs.html
CHANGELOG: updated with lyrics provider and search feature entries
2026-02-14 01:42:18 +07:00
zarzet
9b89625660
feat(site): add global search modal, search trigger styling, and remove emoji from docs
...
- Add search modal with full keyboard navigation (Ctrl+K, arrows, Enter, Esc) to all pages
- Search opens in-page on every page with static docs index; results navigate to docs#section
- Search trigger in desktop nav styled as bordered pill chip with hover states
- Add Search Docs link in mobile hamburger menus
- Fix nav-links vertical alignment with align-items: center
- Remove all colored emoji from docs.html (checkmarks, crosses, music note)
2026-02-14 00:54:46 +07:00
zarzet
c70ba5962e
feat(site): add copyright and MIT license to all page footers
2026-02-13 22:47:50 +07:00