3babe2b3ab
New multiplatform SwiftUI app under apps/zacus-hub/ generated via
XcodeGen (project.yml). Three modes share a HubSession actor that
talks to tools/zacus-gateway over Tailscale-only HTTP/WS.
Game-master: live state stream (WebSocket /v1/state/ws), backend
health badges, hint trigger, journal.
Companion: push-to-talk via AVAudioRecorder (M4A AAC 16 kHz),
fallback file picker, hint request, transcript via voice-bridge
proxy.
Studio: YAML editor with validate/save (existing /v1/studio
routes), plus a Scratch tab hosting a Blockly + zelos-renderer
workspace in WKWebView. 38 custom Zacus block types across 10
categories (Scènes, NPC, Audio, LCD, Hardware ESP32, ESP-NOW,
BOX-3, M5, PLIP, Logique), .sb3 export/import via JSZip (procedure
calls + embedded YAML for lossless round-trip), Flasher sheet that
calls /v1/flash/{board} with auto/hot/cold strategies and shows
per-board step results including the cold-flash idf.py command.
ATS exception domains cover the Tailscale CGNAT range plus the
electron-server / studio / macm1 hostnames so the WebView and
URLSession can hit plain HTTP on the tailnet without TLS.
Token stays in the Keychain (cc.saillant.zacus.hub) — never
committed to source.
67 lines
2.2 KiB
YAML
67 lines
2.2 KiB
YAML
name: ZacusHub
|
|
options:
|
|
bundleIdPrefix: cc.saillant.zacus
|
|
deploymentTarget:
|
|
iOS: "17.0"
|
|
macOS: "14.0"
|
|
createIntermediateGroups: true
|
|
|
|
settings:
|
|
base:
|
|
SWIFT_VERSION: "5.10"
|
|
MARKETING_VERSION: "0.1.0"
|
|
CURRENT_PROJECT_VERSION: "1"
|
|
DEVELOPMENT_TEAM: "JRLQM7V3V5"
|
|
CODE_SIGN_STYLE: Automatic
|
|
SWIFT_STRICT_CONCURRENCY: complete
|
|
|
|
targets:
|
|
ZacusHub:
|
|
type: application
|
|
supportedDestinations: [iOS, macOS, iPadOS]
|
|
sources:
|
|
- path: Sources
|
|
- path: Resources/blockly
|
|
type: folder
|
|
buildPhase: resources
|
|
info:
|
|
path: Resources/Info.plist
|
|
properties:
|
|
CFBundleDisplayName: Zacus Hub
|
|
ITSAppUsesNonExemptEncryption: false
|
|
NSMicrophoneUsageDescription: Push-to-talk avec Zacus dans le mode Companion.
|
|
NSCameraUsageDescription: Scanner les QR codes du jeu.
|
|
NSLocalNetworkUsageDescription: Communication avec le gateway Zacus sur le tailnet.
|
|
NSAppTransportSecurity:
|
|
NSAllowsArbitraryLoads: true
|
|
NSExceptionDomains:
|
|
"100.78.191.52":
|
|
NSExceptionAllowsInsecureHTTPLoads: true
|
|
NSTemporaryExceptionAllowsInsecureHTTPLoads: true
|
|
NSExceptionMinimumTLSVersion: TLSv1.0
|
|
"100.116.92.12":
|
|
NSExceptionAllowsInsecureHTTPLoads: true
|
|
NSTemporaryExceptionAllowsInsecureHTTPLoads: true
|
|
"100.112.121.126":
|
|
NSExceptionAllowsInsecureHTTPLoads: true
|
|
NSTemporaryExceptionAllowsInsecureHTTPLoads: true
|
|
electron-server:
|
|
NSExceptionAllowsInsecureHTTPLoads: true
|
|
NSIncludesSubdomains: true
|
|
macm1:
|
|
NSExceptionAllowsInsecureHTTPLoads: true
|
|
studio:
|
|
NSExceptionAllowsInsecureHTTPLoads: true
|
|
entitlements:
|
|
path: Resources/ZacusHub.entitlements
|
|
properties:
|
|
com.apple.security.app-sandbox: true
|
|
com.apple.security.network.client: true
|
|
com.apple.security.device.audio-input: true
|
|
com.apple.security.device.camera: true
|
|
settings:
|
|
base:
|
|
PRODUCT_BUNDLE_IDENTIFIER: cc.saillant.zacus.hub
|
|
GENERATE_INFOPLIST_FILE: NO
|
|
ENABLE_PREVIEWS: YES
|