@capgo/capacitor-updater (MPL-2.0) in manual mode: autoUpdate off, stats/update/channel URLs empty (nothing contacts Capgo), appReadyTimeout 15s (auto rollback), resetWhenUpdate (APK update → built-in bundle, venue bundle re-fetched), autoDeletePrevious off (we keep one per venue). src/native/bundles.js syncVenueBundle(): - manifest fetched over the pinned TLS link; zip downloaded natively over the LAN HTTP port with the MANDATORY sha256 check - a tampered zip never runs - applied at once only when nobody is mid-service (after pairing / venue switch, or no one logged in); otherwise staged with next() → applied at the next background/restart; never a mid-service reload - APK too old for the bundle (min_shell_build) → skipped + update banner linking to the venue's /downloads/xenia-waiter.apk - a rolled-back version is blocklisted (attempt tracking + grace window) - without it the app re-applied the still-advertised broken bundle in a loop - server without bundles (404) → built-in UI; bundles no venue needs deleted BundleSync: notifyAppReady on start; sync at start, on resume, every 30 min. saveVenue merges fields (bundleVersion); switchVenue flags immediate apply. E2E (emulator vs two isolated venue stacks): fresh pairing applies the venue bundle and it stays healthy; logged-in update staged, applied after background, session kept; tampered zip refused; shell-too-old banner; broken bundle rolled back automatically and not retried (80s + resume); two venues each run their own bundle, round trips served from cache with 0 downloads, stale bundles cleaned; no *.capgo.app traffic. Step 5/7-era rediscovery + cold-start suites and web modes still pass. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
21 lines
407 B
JSON
21 lines
407 B
JSON
{
|
|
"appId": "gr.bonamin.xenia",
|
|
"appName": "Xenia",
|
|
"webDir": "dist-native",
|
|
"server": {
|
|
"androidScheme": "http"
|
|
},
|
|
"plugins": {
|
|
"CapacitorUpdater": {
|
|
"autoUpdate": false,
|
|
"statsUrl": "",
|
|
"updateUrl": "",
|
|
"channelUrl": "",
|
|
"appReadyTimeout": 15000,
|
|
"resetWhenUpdate": true,
|
|
"autoDeletePrevious": false,
|
|
"autoDeleteFailed": true
|
|
}
|
|
}
|
|
}
|