feat(mac): show relay run indicator in menu
This commit is contained in:
@@ -631,10 +631,14 @@ struct ClawdisApp: App {
|
||||
|
||||
private struct MenuContent: View {
|
||||
@ObservedObject var state: AppState
|
||||
@ObservedObject private var relayManager = RelayProcessManager.shared
|
||||
@Environment(\.openSettings) private var openSettings
|
||||
|
||||
var body: some View {
|
||||
Toggle(isOn: self.activeBinding) { Text("Clawdis Active") }
|
||||
VStack(alignment: .leading, spacing: 8) {
|
||||
self.relayStatusRow
|
||||
Toggle(isOn: self.activeBinding) { Text("Clawdis Active") }
|
||||
}
|
||||
Toggle(isOn: self.$state.swabbleEnabled) { Text("Voice Wake") }
|
||||
.disabled(!voiceWakeSupported)
|
||||
.opacity(voiceWakeSupported ? 1 : 0.5)
|
||||
@@ -654,6 +658,28 @@ private struct MenuContent: View {
|
||||
NotificationCenter.default.post(name: .clawdisSelectSettingsTab, object: tab)
|
||||
}
|
||||
|
||||
private var relayStatusRow: some View {
|
||||
let status = self.relayManager.status
|
||||
return HStack(spacing: 8) {
|
||||
Circle()
|
||||
.fill(self.statusColor(status))
|
||||
.frame(width: 8, height: 8)
|
||||
Text(status.label)
|
||||
.font(.caption.weight(.semibold))
|
||||
.foregroundStyle(.primary)
|
||||
}
|
||||
.padding(.vertical, 4)
|
||||
}
|
||||
|
||||
private func statusColor(_ status: RelayProcessManager.Status) -> Color {
|
||||
switch status {
|
||||
case .running: return .green
|
||||
case .starting, .restarting: return .orange
|
||||
case .failed: return .red
|
||||
case .stopped: return .secondary
|
||||
}
|
||||
}
|
||||
|
||||
private var activeBinding: Binding<Bool> {
|
||||
Binding(get: { !self.state.isPaused }, set: { self.state.isPaused = !$0 })
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user