Deployment
macOS, web, mobile.
SLUICE runs on the operator's own machine. There is nothing to deploy to a server: you build the console for the platform you work on. Store builds are optional.
01macOS (recommended for operators)
On macOS the Helius key is kept in the Keychain. Before the first build, allow outgoing network connections: the shipped app is sandboxed without com.apple.security.network.client, so macOS blocks its RPC requests. Add these two lines inside <dict> in both macos/Runner/DebugProfile.entitlements and macos/Runner/Release.entitlements:
<key>com.apple.security.network.client</key>
<true/>
Or tick Outgoing Connections (Client) under Runner → Signing & Capabilities → App Sandbox in Xcode. Then:
flutter build macos --release
The app is in build/macos/Build/Products/Release/. To give it to other people, sign and notarise it with your Apple Developer account. The missing entitlement was found by reading the files; the macOS build was not run for these docs.
02Web
flutter build web --release
The result is in build/web/; upload its contents to any static host. This build was run for these docs with Flutter 3.41.4 and finished without errors. --wasm does not build in 0.1.0.
Every visitor gets their own empty console in their own browser; your projects and rounds stay on your machine. On the web the Helius key is kept in browser storage, not an OS keystore. Host it for yourself or your team, and give holders their proofs from the Proof bundle export (why).
03Android and iOS
Both targets build; the console is designed for wide screens and has a compact layout for phones.
flutter build appbundle --release # Android: build/app/outputs/bundle/release/app-release.aab
flutter build ipa --release # iOS: build/ios/ipa/
Android release builds are signed with the debug key until you add your own (android/app/build.gradle.kts; see the Flutter guide). For iOS pick your Team in Xcode. These builds were not run for these docs (unverified on this machine).
04Version numbers
pubspec.yaml has version: 0.1.0+1. The console shows SluiceVersion.number from lib/app/sluice_version.dart; change both together.