Files
2026-11-09 08:20:57 +00:00

31 lines
1.4 KiB
Swift

import SwiftUI
@main
struct ContainerComposeApp: App {
@StateObject private var compose = ComposeModel()
@StateObject private var monitor = Monitor()
@State private var tab = "compose"
var body: some Scene {
WindowGroup("Container Compose") {
TabView(selection: $tab) {
ContentView().environmentObject(compose).disabled(monitor.demo || monitor.acting)
.tabItem { Label("Compose", systemImage: "square.stack.3d.up") }.tag("compose")
Workspace(model: monitor).disabled(compose.busy)
.tabItem { Label("Monitor & Resources", systemImage: "waveform.path.ecg") }.tag("monitor")
}
.frame(minWidth: 1050, minHeight: 720)
.onChange(of: compose.projectName) { _, name in monitor.project = name }
}.defaultSize(width: 1250, height: 850)
.commands {
CommandGroup(after: .appInfo) { Button("Save Command-Line Tool…") { monitor.exportCLI() } }
CommandMenu("Containers") {
Button("Refresh") { Task { await monitor.refresh() } }.keyboardShortcut("r")
Button("Inspect") { monitor.mode = "Inspect" }.keyboardShortcut("i")
Button("Logs") { monitor.mode = "Logs" }.keyboardShortcut("l")
Button("Stats") { monitor.mode = "Stats" }.keyboardShortcut("s")
}
}
Settings { Preferences(model: monitor) }
}
}