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
813ed79073
refactor: conditionally show lyrics settings only when embed lyrics is enabled
2026-02-17 20:57:50 +07: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
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
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
b39ec41255
Merge dev into main: v3.6.7 release
2026-02-13 21:42:02 +07:00
zarzet
1407018d98
feat: advanced filename templates, low-RAM device profiling, responsive artist UI, and project site
...
- Add advanced filename template placeholders: {track_raw}, {disc_raw}, {date},
formatted numbers {track:N}/{disc:N}, and date formatting {date:%Y-%m-%d}
with strftime-to-Go layout conversion and robust date parser
- Pass date/release_date metadata to filename builder in all providers
(Amazon, Qobuz, Tidal, YouTube, extensions) and Flutter download queue
- Detect ARM32-only / low-RAM Android devices at startup and reduce image
cache size and disable overscroll effects for smoother experience
- Make artist screen selection bar responsive: compact stacked layout on
narrow screens or large text scale; add quality picker before track download
- Add advanced tags toggle in download settings filename format editor
- Fix ICU plural syntax in DE/ES/PT/RU translations (one {}=1{...} -> one {...})
- Add filenameShowAdvancedTags l10n strings (EN, ID) and regenerate dart files
- Fix featured-artist regex: remove '&' from split separators
- Add Go filename template tests (filename_test.go)
- Add GitHub Pages workflow and static project site
2026-02-13 21:39:08 +07:00
Zarz Eleutherius
d4d661d6d4
New translations app_en.arb (German)
2026-02-13 17:08:10 +07:00
Zarz Eleutherius
924569aefb
New translations app_en.arb (Russian)
2026-02-12 16:53:01 +07:00
Zarz Eleutherius
a5864e15f8
New translations app_en.arb (German)
2026-02-12 16:53:00 +07:00
zarzet
3c1e9d03a0
fix(ios): recover notification permission and path handling
2026-02-12 02:23:54 +07:00
zarzet
28a082f47a
fix(l10n): fix arb locale mismatch - rename es-ES/pt-PT to underscore format
2026-02-12 01:28:56 +07:00
zarzet
92f408035a
feat: enable library scan notifications on iOS (remove Android-only guard)
2026-02-12 01:14:10 +07:00
zarzet
ee66247bea
Merge remote-tracking branch 'origin/l10n_dev' into dev
...
# Conflicts:
# lib/l10n/arb/app_es-ES.arb
# lib/l10n/arb/app_id.arb
# lib/l10n/arb/app_pt-PT.arb
2026-02-12 01:10:04 +07:00
zarzet
69a9e0cb40
feat: add library scan notifications - progress, complete, failed, cancelled notifications for local library scan - new notification channel for library scan - Android only
2026-02-12 01:06:17 +07:00