mirror of
https://github.com/InstanceBrick/nightcap.git
synced 2026-10-18 05:00:47 +02:00
The coordinator constructed ApkPureProvider directly in three places and rejected every other configuration with "native updater supports only the direct APKPure provider". A single unreachable host therefore failed the whole update with no way to try anything else, and the reported error named neither the provider nor the host: on 2026-08-18 api.pureapk.com answered 503 to every request, including metadata for unrelated packages, and a first launch could only say "Roblox update preflight failed". Introduce an ApkProvider interface and a ProviderChain that consults providers in order, returns the first answer, and reports every failure with the provider that produced it when none answer. Each provider downloads into its own directory, so a failed attempt cannot block the next. Adding a source is now one line in BuildProviderChain instead of a change spread across the coordinator. The chain currently holds APKPure alone. The repository already ships a pinned Uptodown provider as a build script, but it no longer works against Uptodown's current pages, so wiring it in would add a second way to fail rather than a fallback; that is reported separately. Payload receipts now record which provider produced an archive, and updates.source accepts auto alongside apk-pure so existing configuration files keep working.