chahinebrini c1edef8abd feat(magic): RebreakMagic device-binding + DNS profile
- backend: /api/magic/{register,devices,profile,release} + AdGuard provisioning + 24h cooldown
- prisma: magic_binding_fields migration (additive on UserDevice)
- mac-app: Phase 2 - Login + MacRegistration + Profile install
- marketing: landing section + /download/rebreakmagic + DMG
- lyra: forbidden phrases + RebreakMagic coach guidance
2026-06-02 09:15:19 +02:00

56 lines
2.0 KiB
Swift

import SwiftUI
@main
struct RebreakMagicApp: App {
@State private var model = WizardModel()
var body: some Scene {
WindowGroup("Rebreak Magic") {
ContentView()
.environment(model)
.frame(minWidth: 720, idealWidth: 800, minHeight: 600, idealHeight: 720)
}
.windowResizability(.contentSize)
.windowStyle(.titleBar)
.commands {
CommandMenu("Account") {
Button("Abmelden") {
Task { await model.handleLogout() }
}
.keyboardShortcut("l", modifiers: [.command, .shift])
.disabled(model.authSession == nil)
}
CommandMenu("Aktionen") {
Menu("Debug Supervision Mode") {
Button(DebugSupervisionMode.none.title) {
model.supervisionMode = .none
}
Button(DebugSupervisionMode.forceSupervised.title) {
model.supervisionMode = .forceSupervised
}
Button(DebugSupervisionMode.forceUnsupervised.title) {
model.supervisionMode = .forceUnsupervised
}
}
Toggle("Profile + App entfernen", isOn: $model.resetAll)
Toggle("MDM Enrollment-Profil", isOn: $model.resetEnrollmentProfile)
.disabled(model.resetAll)
Toggle("Lock-Profil", isOn: $model.resetLockProfile)
.disabled(model.resetAll)
Toggle("ReBreak-App", isOn: $model.resetApp)
.disabled(model.resetAll)
Divider()
Button("Debug-Reset ausführen") {
model.startDebugReset()
}
.keyboardShortcut("r", modifiers: [.command, .shift, .option])
.disabled(model.device == nil || model.resetRunning)
}
}
}
}