zarzet
e87f7a1177
feat: add skip_fallback capability for extension availability results
2026-04-16 20:21:06 +07:00
zarzet
bcd8a05352
feat: propagate download cancellation through entire pipeline, add MusicBrainz album artist fallback, and allow disabling home feed
...
- Add reference-counted cancel entries to prevent premature cleanup when multiple operations share the same itemID
- Propagate cancellation to DownloadTrack, DownloadWithFallback, DownloadWithExtensionsJSON, extension providers, and ISRC search
- Fetch album artist from MusicBrainz when missing during download and re-enrich
- Make ALBUMARTIST tag nullable to avoid writing artistName as album artist
- Add home feed 'Off' option in extension settings
- Skip deezer in download provider priority sanitization
2026-04-16 02:55:40 +07:00
zarzet
57051bd649
fix: handle .mp4 as alias for .m4a throughout download pipeline
v4.3.1
2026-04-14 21:12:14 +07:00
zarzet
d6fca6ca55
feat: carry extension download metadata through host pipeline and avoid FLAC-only genre/label pre-embed on non-FLAC files
2026-04-14 21:12:14 +07:00
zarzet
153ec2d9e5
chore: bump version to 4.3.1+126
2026-04-14 21:12:14 +07:00
zarzet
be90e85d94
fix: show filter button in all/singles modes when tracks are empty but filters are active
2026-04-14 21:12:14 +07:00
zarzet
4af089f56c
feat: improve Tidal metadata (copyright, album artist), remove Qobuz metadata search fallback, fix DATE/YAR tag sync
2026-04-14 21:12:14 +07:00
zarzet
62519d2d1c
feat: add preserveNativeOutputExtensions capability for extensions
2026-04-14 21:12:14 +07:00
zarzet
27c0880e87
feat: convert M4A to FLAC when extension doesn't prefer native M4A output
...
When an extension's preferred output isn't .m4a, downloaded M4A streams
are now automatically converted to FLAC via FFmpeg instead of being
preserved. This applies to both SAF and non-SAF download paths.
2026-04-14 21:12:14 +07:00
zarzet
f312b74b30
fix: ensure non-null search provider fallback and update default labels to Tidal
...
- Add monochrome.tf and samidy.com Tidal API mirrors
- Guarantee resolvedProvider is never null by defaulting to 'tidal'
- Replace stale 'Deezer' default label with 'Tidal' (Deezer moved to extension)
- Show dynamic provider target in auto label for search dropdown
2026-04-14 21:12:14 +07:00
zarzet
bd49e307ef
fix: reset OutputExt on extension→extension fallback too
2026-04-14 21:12:14 +07:00
zarzet
e904a836c1
fix: reset OutputExt on extension→built-in fallback
2026-04-14 21:12:14 +07:00
zarzet
763c9478f1
fix: normalize extension codec for built-in fallback, remove dead Tidal ISRC
2026-04-14 21:12:13 +07:00
zarzet
427bdf74dc
chore: reduce Gradle memory, add extension network timeout, fix tr locale
2026-04-14 21:12:13 +07:00
zarzet
373a276c54
fix: respect user provider choice over source extension priority
2026-04-14 21:12:13 +07:00
github-actions[bot]
dccadf1f87
chore: update AltStore source to v4.3.1
2026-04-14 13:58:11 +00:00
github-actions[bot]
d9933fe038
chore: update AltStore source to v4.3.0
2026-04-13 16:39:57 +00:00
zarzet
d47ac0934d
chore: bump version to 4.3.0 and fix SAF document file race condition
...
- Bump app version to 4.3.0 (build 125)
- Extract createOrReuseDocumentFile() to handle SAF auto-rename races
between findFile() and createFile(), preferring the exact-named sibling
and discarding duplicate documents
2026-04-13 23:35:03 +07:00
zarzet
dbba4d6630
feat: propagate download cancel to extension HTTP requests and fix SAF filename extension mismatch
...
- Bind cancel context to all extension HTTP calls (fetch, httpGet, httpPost,
httpRequest, fileDownload, authExchangeCodeWithPKCE) so in-flight requests
are aborted when user cancels a download
- Make initDownloadCancel idempotent: return existing context if entry already
exists and preserve pre-cancelled state
- Force SAF output filename to match actual file extension when extension
returns a different format than requested (e.g. FLAC requested but M4A produced)
- Map ALAC/AAC quality to .m4a instead of falling through to default .flac
2026-04-13 23:35:03 +07:00
zarzet
7405855e01
fix: handle extension oauth callback on ios
2026-04-13 23:35:03 +07:00
zarzet
ed020c9303
feat: native M4A ReplayGain tag writing and SAF picker error handling
2026-04-13 23:35:03 +07:00
zarzet
378742e37a
refactor: remove author field from extension manifest and UI
2026-04-13 23:35:03 +07:00
zarzet
c79bee534e
fix: align default search tab layout with primary provider selector using Row+Expanded
2026-04-13 23:35:03 +07:00
zarzet
1d6df75829
fix: preserve existing M4A metadata during embed and enable BuildConfig generation
2026-04-13 23:35:03 +07:00
zarzet
b7f51b5f14
feat: expose extension utils, preserve M4A native container, and bump to v4.2.3+124
2026-04-13 23:35:03 +07:00
zarzet
1c8e9df727
feat: add artist search filter and normalize search filter handling
2026-04-13 23:35:03 +07:00
zarzet
01540fe3fc
fix: improve ALAC M4A quality parsing
2026-04-13 23:35:03 +07:00
zarzet
071db2f109
refactor: move deezer search flow to extension
2026-04-13 23:35:02 +07:00
zarzet
e097d3f605
fix: stabilize shared extension link handling
2026-04-13 23:35:02 +07:00
zarzet
277f783f62
feat: add default search tab preference
2026-04-13 23:35:02 +07:00
zarzet
7637aaf168
fix: fallback extra metadata genre
2026-04-13 23:35:02 +07:00
zarzet
c4878470bf
chore: thank Ldav Nico and Feuerstern on donate page
2026-04-13 23:35:02 +07:00
zarzet
a3725e8c48
feat: add keep android open link
2026-04-13 23:35:02 +07:00
zarzet
917ba842f5
fix: align metadata sanitization and lyrics editing
2026-04-13 23:32:19 +07:00
zarzet
dac17ead33
chore: bump app to v4.2.2
2026-04-13 23:32:19 +07:00
zarzet
6845ebe04c
refactor: move deezer to extension
2026-04-13 23:32:18 +07:00
zarzet
eff709480d
fix: preserve flat singles output for extension releases
2026-04-13 23:32:18 +07:00
zarzet
67833424cc
fix: align re-enrich matching with autofill metadata
2026-04-13 23:32:18 +07:00
zarzet
5c48e1b476
fix: persist downloaded metadata and refine metadata navigation
2026-04-13 23:32:18 +07:00
zarzet
5e17c9f238
feat: add configurable extension download fallback
2026-04-13 23:32:18 +07:00
zarzet
7d330fb2ec
fix: preserve composer metadata across qobuz and history
2026-04-13 23:32:18 +07:00
zarzet
cd6a4594fa
chore: bump app version to v4.2.1
2026-04-13 23:32:17 +07:00
zarzet
bcf727f4ec
fix: remove stale audio service manifest entries causing crashes on some devices
2026-04-13 23:32:17 +07:00
zarzet
4c4553913f
fix: harden gomobile extension bindings and m4a cover retention
2026-04-13 23:32:17 +07:00
zarzet
f0013fac16
fix: preserve local convert format and library entries
2026-04-13 23:32:17 +07:00
zarzet
ce4be0ba97
feat: enrich composer and track totals metadata
2026-04-13 23:32:17 +07:00
zarzet
4bac38ef2a
fix: preserve embedded metadata details
2026-04-13 23:32:17 +07:00
zarzet
4b213f47d9
ci: pin iOS release builds to macOS 15 and Xcode 26.1.1
2026-04-13 23:32:16 +07:00
zarzet
a1010f72f2
fix: patch device_info_plus iOS build for older Xcode SDKs
2026-04-13 23:32:16 +07:00
zarzet
21077a26d0
feat: add additional search/metadata API with separate rate limiting
2026-04-13 23:32:16 +07:00