Commit Graph
2411 Commits
Author SHA1 Message Date
Abelardo Ramirez 555fd77cc8 fix(ios): stop dropping the security-scoped download folder bookmark
Fixes #439, likely also #302.

Reported: on iOS, the download folder silently reverts to the default
SpotiFLAC folder after starting a download (and stays reverted after
closing and reopening the app).

_processQueue ran an iCloud/writable-path shape check against the
persisted downloadDirectory string and, if it looked like iCloud Drive
or failed the structural writable-path check, called
setDownloadDirectory() to reset it to the default folder. That call
passes no iosBookmark argument, so it also wipes the user's
security-scoped bookmark in the persisted settings - permanently, not
just for the current run.

This check ran unconditionally, even when a bookmark was already
present for that folder. A folder picked from Files can legitimately
have a persisted path that looks like iCloud Drive, or that fails this
generic structural check, while the bookmark itself still grants real
write access - the bookmark is the actual source of truth, and the
queue already has a separate, correct bookmark-resolution step right
after this one (StartAccessingIosBookmark, with its own proper
failure handling that fails the queued items with a clear message
instead of destroying the setting). The earlier path-shape check just
never deferred to it.

lib/utils/file_access.dart: extract the run/skip decision into
shouldValidateIosOutputDir(isIOS, isSafMode, outputDir,
downloadDirectoryBookmark) - skips whenever a bookmark is present -
and use it in download_queue_provider.dart in place of the inline
condition. Kept as a plain function taking isIOS as a parameter since
Platform.isIOS itself can't be exercised from a host test run.

test/file_access_ios_test.dart covers: runs for a plain app-folder
path, skips when a bookmark is present (the exact #439 case), skips
off iOS, skips in SAF mode, and skips when there's no output dir yet.

Verification: flutter analyze and flutter test (224 tests, all green,
including the 5 new ones) both clean.
2026-08-11 17:28:56 +07:00
zarzet 95f2879110 fix(download): recover queue after worker timeout (#524) 2026-08-11 17:23:29 +07:00
zarzet 1d363d5166 fix(playlist): ignore container title during album verification #519 2026-08-11 17:02:17 +07:00
zarzet f7439c6793 feat(library): add combined quality label #511 2026-08-11 16:56:12 +07:00
zarzet 6dbca64a80 perf(history): batch SAF orphan inspection #511 2026-08-11 16:50:35 +07:00
zarzet bec9e33c94 feat(metadata): review batch tag enrichment #511 2026-08-11 16:40:06 +07:00
zarzet 28538395c2 fix(metadata): match by primary artist and review results #511 2026-08-11 16:20:03 +07:00
zarzet dacc5abde0 feat(logs): copy selected entries #511 2026-08-11 16:12:05 +07:00
zarzet e750c195ca feat(search): save max-quality cover on long press #511 2026-08-11 16:01:39 +07:00
zarzet f189687e08 feat(metadata): show cover dimensions and size #511 2026-08-11 15:53:55 +07:00
zarzet 6ad993e27d fix(lyrics): respect extension provider selection #511 2026-08-11 15:46:33 +07:00
zarzet 8cf1f1f517 fix(metadata): honor provider priority in autofill #511 2026-08-11 15:40:16 +07:00
zarzet d5bfc1e365 fix(metadata): prompt verification during autofill #511 2026-08-11 15:38:39 +07:00
zarzet 33db0cf297 fix(queue): restore user-paused downloads #511 2026-08-11 15:23:21 +07:00
zarzet cd9f43f5a0 fix(cover): preserve best max-quality candidate #511 2026-08-11 15:20:57 +07:00
zarzet 5237aed25e feat(download): add automatic lossy conversion 2026-08-11 15:19:45 +07:00
Zarz Eleutherius c9d8eb20e4 New translations app_en.arb (Spanish)
[ci skip]
2026-08-10 05:32:21 +07:00
Zarz Eleutherius 7bd0b82783 New translations app_en.arb (Spanish)
[ci skip]
2026-08-10 04:33:47 +07:00
zarzet a59c749089 fix(download): preserve SAF and defer background starts 2026-08-09 05:23:47 +07:00
Zarz Eleutherius bb083a0659 New translations app_en.arb (Hindi)
[ci skip]
2026-08-09 01:29:56 +07:00
Zarz Eleutherius 00d0e95734 New translations app_en.arb (Hindi)
[ci skip]
2026-08-09 00:29:59 +07:00
zarzet 2612da81c3 fix(db): prevent concurrent startup locks 2026-08-08 00:01:00 +07:00
zarzet 6742fe886f fix(a11y): label interactive controls 2026-08-04 16:40:48 +07:00
Zarz Eleutherius 9e71e1cc33 New translations app_en.arb (Korean)
[ci skip]
2026-08-03 17:13:24 +07:00
Zarz Eleutherius ea9d0c3125 New translations app_en.arb (Korean)
[ci skip]
2026-08-03 15:08:06 +07:00
Zarz Eleutherius 46d50be8ff New translations app_en.arb (Korean)
[ci skip]
2026-08-03 11:48:27 +07:00
Zarz Eleutherius 45df6733af New translations app_en.arb (Korean)
[ci skip]
2026-08-03 09:55:42 +07:00
Zarz Eleutherius 29bb1405ad New translations app_en.arb (Korean)
[ci skip]
2026-08-03 01:05:05 +07:00
Zarz Eleutherius 7c07f245ad New translations app_en.arb (Korean)
[ci skip]
2026-08-02 23:54:00 +07:00
Zarz Eleutherius 4b6c77fd50 New translations app_en.arb (Korean)
[ci skip]
2026-08-02 22:35:57 +07:00
Zarz Eleutherius 15cda358f7 New translations app_en.arb (Korean)
[ci skip]
2026-08-02 21:36:50 +07:00
Zarz Eleutherius 5b6aafdf1f New translations app_en.arb (Korean)
[ci skip]
2026-08-02 20:13:12 +07:00
Zarz Eleutherius f8d4351d9e New translations app_en.arb (Korean)
[ci skip]
2026-08-02 05:56:00 +07:00
Zarz Eleutherius fad1c45550 New translations app_en.arb (French)
[ci skip]
2026-08-02 02:54:15 +07:00
github-actions[bot] f3d13c8b9b chore: update AltStore source to v4.8.5 2026-08-01 18:55:20 +00:00
Zarz Eleutherius f200cf6e3b New translations app_en.arb (French)
[ci skip]
2026-08-02 01:52:53 +07:00
zarzet d3f9388ba8 fix(ci): align APK targets with supported ABIs v4.8.5 2026-08-02 01:42:50 +07:00
Zarz Eleutherius d0f7f1b3c4 New translations app_en.arb (Hindi)
[ci skip]
2026-08-02 00:55:08 +07:00
Zarz Eleutherius 2da814d1ee New translations app_en.arb (Chinese Traditional)
[ci skip]
2026-08-02 00:55:07 +07:00
Zarz Eleutherius dd674f6fe3 New translations app_en.arb (Chinese Simplified)
[ci skip]
2026-08-02 00:55:06 +07:00
Zarz Eleutherius 786872bda1 New translations app_en.arb (Ukrainian)
[ci skip]
2026-08-02 00:55:04 +07:00
Zarz Eleutherius cf8774645a New translations app_en.arb (Turkish)
[ci skip]
2026-08-02 00:55:03 +07:00
Zarz Eleutherius b9d55b0231 New translations app_en.arb (Russian)
[ci skip]
2026-08-02 00:55:01 +07:00
Zarz Eleutherius 1a268780ac New translations app_en.arb (Dutch)
[ci skip]
2026-08-02 00:55:00 +07:00
Zarz Eleutherius 67396f3f78 New translations app_en.arb (Japanese)
[ci skip]
2026-08-02 00:54:59 +07:00
Zarz Eleutherius 8b3944f11b New translations app_en.arb (German)
[ci skip]
2026-08-02 00:54:57 +07:00
Zarz Eleutherius 6bfa1cb0d0 New translations app_en.arb (Arabic)
[ci skip]
2026-08-02 00:54:56 +07:00
Zarz Eleutherius f26a285e23 New translations app_en.arb (Spanish)
[ci skip]
2026-08-02 00:54:54 +07:00
Zarz Eleutherius 965b897b57 New translations app_en.arb (French)
[ci skip]
2026-08-02 00:54:53 +07:00
Zarz Eleutherius 30dd4d1317 New translations app_en.arb (Indonesian)
[ci skip]
2026-08-02 00:54:51 +07:00