From 3a4bf8f2132e29b75f1eebc4723477468a32a048 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 7 Dec 2025 02:32:05 +0100 Subject: [PATCH] VoiceWake: compact SSH test row --- .../Sources/Clawdis/VoiceWakeSettings.swift | 46 ++++++++++--------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/apps/macos/Sources/Clawdis/VoiceWakeSettings.swift b/apps/macos/Sources/Clawdis/VoiceWakeSettings.swift index 3ac1e1521..4ab5920ec 100644 --- a/apps/macos/Sources/Clawdis/VoiceWakeSettings.swift +++ b/apps/macos/Sources/Clawdis/VoiceWakeSettings.swift @@ -738,14 +738,30 @@ struct VoiceWakeSettings: View { } if self.state.voiceWakeForwardEnabled { VStack(alignment: .leading, spacing: 8) { - LabeledContent("SSH target") { + HStack(spacing: 10) { + Text("SSH") + .font(.callout.weight(.semibold)) + .frame(width: 40, alignment: .leading) TextField("steipete@peters-mac-studio-1", text: self.$state.voiceWakeForwardTarget) .textFieldStyle(.roundedBorder) - .frame(width: 280) + .frame(maxWidth: .infinity) .onChange(of: self.state.voiceWakeForwardTarget) { _, _ in self.forwardStatus = .idle } + self.forwardStatusIcon + .frame(width: 16, height: 16, alignment: .center) + Button("Test") { + Task { await self.checkForwardConnection() } + } + .disabled( + self.state.voiceWakeForwardTarget + .trimmingCharacters(in: .whitespacesAndNewlines).isEmpty) } - self.forwardStatusRow + if case let .failed(message) = self.forwardStatus { + Text(message) + .font(.caption) + .foregroundStyle(.secondary) + .lineLimit(5) + } DisclosureGroup(isExpanded: self.$showForwardAdvanced) { VStack(alignment: .leading, spacing: 10) { @@ -790,31 +806,17 @@ struct VoiceWakeSettings: View { } } - private var forwardStatusRow: some View { - HStack(spacing: 10) { + private var forwardStatusIcon: some View { + Group { switch self.forwardStatus { case .idle: - Image(systemName: "circle.dashed") - .foregroundStyle(.secondary) + Image(systemName: "circle.dashed").foregroundStyle(.secondary) case .checking: - ProgressView().controlSize(.small) + ProgressView().controlSize(.mini) case .ok: Image(systemName: "checkmark.circle.fill").foregroundStyle(.green) - case let .failed(message): + case .failed: Image(systemName: "exclamationmark.triangle.fill").foregroundStyle(.yellow) - .help(message) - } - - Button("Check connection") { - Task { await self.checkForwardConnection() } - } - .disabled(self.state.voiceWakeForwardTarget.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty) - - if case let .failed(message) = self.forwardStatus { - Text(message) - .font(.caption) - .foregroundStyle(.secondary) - .lineLimit(5) } } }