The web/ dashboard used to ride along inside FTStore Manager as a second tab, hidden behind a developer-mode switch. Hiding was the wrong tool: the Manager is what a normal user installs to get FTStore onto a phone, and the worker controls were one gesture away from it. FTStore Admin (admin/, app.ftstore.admin) is now its own app: - admin/FTStoreAdmin/Console/* is the moved console, unchanged in behaviour — ManagerConfig became AdminConfig, ManagerHomeView.brand became AdminTheme.brand. - It links no Swift package at all, only system frameworks. The three helpers it borrowed from NimbleKit and the engine (User-Agent, share sheet, image resize, AnyCodable) are inlined in Support/, so the IPA stays what it claims to be: a login form and nothing else. - Its Keychain service is app.ftstore.admin and its User-Agent is FTStore-Admin/…, deliberately outside web/'s APP_UA gate — the console only calls session-authenticated routes. - The optional biometric gate now re-arms whenever the app leaves the screen, not just at launch. - Sideloaded on purpose: admin-release.yml cuts a draft release from an admin-v* tag and admin-build.yml compiles every push, but there is no AltStore source and no self-update channel. The Manager loses the console, the developer-mode gate and therefore the tab bar — FTStoreManagerApp shows ManagerHomeView directly. Its camera and Face ID usage strings go with it, and ManagerLegacyConsole.purge() wipes the session an updated install would otherwise still be holding.
7.6 KiB
1024x1024px
7.6 KiB
1024x1024px