zarzet
42f15018ae
v3.6.5: audio format conversion, PC v7.0.8 backend merge, Amazon re-enabled
2026-02-11 12:43:49 +07:00
zarzet
3554a7b5b9
chore: remove Buy Me a Coffee references (account suspended)
2026-02-11 12:43:49 +07:00
zarzet
f2941939b7
refactor: preserve extension ID case in DownloadByStrategy, only lowercase built-in providers
2026-02-11 12:43:49 +07:00
zarzet
1a77ded997
refactor: remove deprecated download methods from PlatformBridge and MainActivity
2026-02-11 12:43:49 +07:00
zarzet
05d25d4d7c
v3.6.1: fix lyrics_mode, notification v20, SAF duplicate, primary artist setting, unified download strategy
2026-02-11 12:43:49 +07:00
zarzet
7cc1fef989
feat: primary artist only folders, fix notifications v20, fix SAF duplicate dirs
...
- Add 'Use Primary Artist Only' setting to strip featured artists from folder names
- Fix flutter_local_notifications v20 breaking changes (positional params)
- Fix SAF duplicate folder bug: synchronized ensureDocumentDir to prevent race condition creating empty folders with (1), (2) suffixes during concurrent downloads
2026-02-11 12:43:49 +07:00
zarzet
abc599d7f9
refactor: migrate queue_tab cover resolver to shared service, add supporter
v3.6.5
2026-02-11 12:31:47 +07:00
renovate[bot]
eefbb63299
fix(deps): update go dependencies
2026-02-11 05:31:18 +00:00
renovate[bot]
fdbb474763
chore(deps): update dependency go to 1.26
2026-02-11 05:30:57 +00:00
zarzet
6a7eef6956
chore: add Elias el Autentico to supporters list
2026-02-11 12:28:50 +07:00
zarzet
9b27e86e0f
fix: show library filter buttons while downloads are active
...
Previously filter/sort headers in All, Albums, and Singles tabs
were hidden when queue items existed, preventing users from
filtering their library (e.g. find MP3 tracks to re-download
as FLAC) during active downloads.
2026-02-11 08:01:11 +07:00
zarzet
dbe8f5d814
docs: add batch 3 performance entries to changelog, fix device ID entry
2026-02-11 02:41:32 +07:00
zarzet
9847594ca1
perf: parallel I/O, caching, and chunked DB operations (batch 3)
...
- Orphan cleanup: parallel file existence checks (chunk 16)
- LocalLibraryState: O(1) findByTrackAndArtist via _byTrackKey map
- Local library load: parallel DB + SharedPreferences fetch
- Legacy mod-time backfill: chunked parallel File.stat (chunk 24)
- Downloaded album screen: cache disc groups, quality, cover path
- Local album screen: cache common quality, map-based batch delete
- Cache management: parallel async init, chunked directory cleanup
- Cover resolver: throttled preview exists check (2.2s interval)
- History/Library DB: chunked SQL DELETE (500 per batch)
- Batch delete screens: O(1) item lookup via tracksById map
2026-02-11 02:40:09 +07:00
Zarz Eleutherius
4a966e5e52
Update README
2026-02-11 02:23:38 +07:00
Zarz Eleutherius
d8ba4549aa
Merge pull request #144 from Amonoman/main
...
Update Screenshots
2026-02-11 02:21:09 +07:00
zarzet
986f5eafc8
docs: add performance, security, and UI sections to v3.6.5 changelog
2026-02-11 02:10:28 +07:00
zarzet
84df64fcfe
perf+security: polling guards, sensitive data redaction, SAF path sanitization
...
Go backend:
- Add sensitive data redaction in log buffer (tokens, keys, passwords)
- Validate extension auth URLs (HTTPS only, no private IPs, no embedded creds)
- Block embedded credentials in extension HTTP requests
- Tighten extension storage file permissions (0644 -> 0600)
- Sanitize extension ID in store download path
- Summarize auth URLs in logs to prevent token leakage
Android (Kotlin):
- Add sanitizeRelativeDir to prevent path traversal in SAF operations
- Apply sanitizeFilename to all user-provided file names in SAF
Flutter:
- Add sensitive data redaction in Dart logger (mirrors Go patterns)
- Mask device ID in log exports
- Add in-flight guard to progress polling (download queue + local library)
- Remove redundant _downloadedSpotifyIds Set, use _bySpotifyId map
- Remove redundant _isrcSet, use _byIsrc map
- Expand DownloadQueueLookup with byItemId and itemIds
- Lazy search index building in queue tab
- Bound embedded cover cache in queue tab (max 180)
- Coalesce embedded cover refresh callbacks via postFrameCallback
- Cache album track filtering in downloaded album screen
- Cache thumbnail sizes by extension ID in home tab
- Simplify recent access aggregation (single-pass)
- Remove unused _isTyping state in home tab
- Cap pre-warm track batch size to 80
- Skip setShowingRecentAccess if value unchanged
- Use downloadQueueLookupProvider for granular queue selectors
- Move grouped album filtering before content data computation
2026-02-11 02:02:03 +07:00
zarzet
a9150b85b9
perf: memory and rebuild optimizations across app
...
- Bound Deezer cache with LRU eviction and periodic cleanup
- Configure Flutter image cache limits (240 entries / 60 MiB)
- Add ResizeImage wrapper for precacheImage calls
- Add memCacheWidth/cacheWidth to cover images across screens
- Add DownloadedEmbeddedCoverResolver as centralized cover service
- Throttle download progress notifications with dedup checks
- Normalize progress/speed/bytes values to reduce UI rebuilds
- Optimize queue list with per-item ConsumerWidget and RepaintBoundary
- Preserve derived indexes in LocalLibraryState.copyWith
- Skip non-error logs when detailed logging disabled
- Use async file stat and early-break loops in queue filters
2026-02-11 01:44:05 +07:00
zarzet
68e6c8be35
ui: improve cover preview in edit metadata sheet and user changes
...
- Cover preview enlarged from 120x120 to 160x160 with shadow and better styling
- Layout changed from Wrap to Row with Expanded for side-by-side covers
- Label moved below image with labelMedium typography
- Cover editor section moved to top of edit form
- Added embedded cover preview cache with LRU eviction in metadata screen
- Added current cover extraction and preview in edit metadata sheet
- Added metadata sync to download history after edits
- Added embedded cover extraction cache in queue tab for downloaded items
- Added SAF mod-time tracking for cover refresh after metadata changes
2026-02-11 01:13:24 +07:00
zarzet
bd42655c0e
fix: various improvements and fixes
2026-02-11 00:22:48 +07:00
zarzet
fe1c96ea12
v3.6.5: audio format conversion, PC v7.0.8 backend merge, Amazon re-enabled
2026-02-10 23:35:41 +07:00
zarzet
bae2bf63eb
chore: remove Buy Me a Coffee references (account suspended)
2026-02-10 20:46:45 +07:00
Zarz Eleutherius
803e0dc5a3
New translations app_en.arb (Turkish)
2026-02-10 19:46:50 +07:00
Zarz Eleutherius
474c37ec8e
New translations app_en.arb (Hindi)
2026-02-10 19:46:46 +07:00
Zarz Eleutherius
eb7726263a
New translations app_en.arb (Indonesian)
2026-02-10 19:46:45 +07:00
Zarz Eleutherius
f87ccc51c5
New translations app_en.arb (Chinese Traditional)
2026-02-10 19:46:43 +07:00
Zarz Eleutherius
b0b4e7803c
New translations app_en.arb (Chinese Simplified)
2026-02-10 19:46:42 +07:00
Zarz Eleutherius
450f19c656
New translations app_en.arb (Russian)
2026-02-10 19:46:41 +07:00
Zarz Eleutherius
55b9c08f99
New translations app_en.arb (Portuguese)
2026-02-10 19:46:39 +07:00
Zarz Eleutherius
a5f3aab775
New translations app_en.arb (Dutch)
2026-02-10 19:46:38 +07:00
Zarz Eleutherius
7442c9b106
New translations app_en.arb (Korean)
2026-02-10 19:46:37 +07:00
Zarz Eleutherius
ae66cb478b
New translations app_en.arb (Japanese)
2026-02-10 19:46:35 +07:00
Zarz Eleutherius
2516c3e618
New translations app_en.arb (German)
2026-02-10 19:46:34 +07:00
Zarz Eleutherius
02a5893279
New translations app_en.arb (Spanish)
2026-02-10 19:46:33 +07:00
Zarz Eleutherius
bd0d653210
New translations app_en.arb (French)
2026-02-10 19:46:31 +07:00
Zarz Eleutherius
62626ddc08
Update source file app_en.arb
2026-02-10 19:46:29 +07:00
zarzet
b6574f0097
refactor: preserve extension ID case in DownloadByStrategy, only lowercase built-in providers
2026-02-10 12:30:38 +07:00
zarzet
c35a8dd803
refactor: remove deprecated download methods from PlatformBridge and MainActivity
2026-02-10 10:16:55 +07:00
zarzet
d54b2249b6
v3.6.1: fix lyrics_mode, notification v20, SAF duplicate, primary artist setting, unified download strategy
2026-02-10 10:11:02 +07:00
zarzet
f7be2c1e12
feat: primary artist only folders, fix notifications v20, fix SAF duplicate dirs
...
- Add 'Use Primary Artist Only' setting to strip featured artists from folder names
- Fix flutter_local_notifications v20 breaking changes (positional params)
- Fix SAF duplicate folder bug: synchronized ensureDocumentDir to prevent race condition creating empty folders with (1), (2) suffixes during concurrent downloads
2026-02-10 09:07:18 +07:00
Amonoman
309568becc
Readd Screenshots
2026-02-09 20:35:15 +01:00
Amonoman
dd9b6dbfe3
Delete assets/images/4.jpg
2026-02-09 20:29:39 +01:00
Amonoman
4692b48174
Delete assets/images/3.jpg
2026-02-09 20:29:29 +01:00
Amonoman
db82fa3ae1
Delete assets/images/2.jpg
2026-02-09 20:29:21 +01:00
Amonoman
5c42507b12
Delete assets/images/1.jpg
2026-02-09 20:29:12 +01:00
zarzet
ebe7d87da7
docs: update VirusTotal hash for v3.6.0
2026-02-10 01:03:58 +07:00
zarzet
3a6b7eed59
perf: swap SpotubeDL as primary YouTube provider, Cobalt as fallback
v3.6.0
2026-02-10 00:47:44 +07:00
zarzet
51d02d7764
chore: bump app_info version to 3.6.0+77
2026-02-09 23:36:34 +07:00
zarzet
df39d61ed4
feat: save cover art, save lyrics, re-enrich metadata with full SAF support + YouTube Cobalt provider with SpotubeDL fallback + metadata summary logging
2026-02-09 23:07:18 +07:00
Zarz Eleutherius
9cd2b1d8c5
New translations app_en.arb (Russian)
2026-02-09 19:41:00 +07:00