From ba0f5945487ef0a8aef3324140b34f8a993f5145 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 7 Dec 2025 16:13:18 +0100 Subject: [PATCH] voice wake: surface ssh failures (missing key/no output) --- apps/macos/Sources/Clawdis/VoiceWakeForwarder.swift | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/apps/macos/Sources/Clawdis/VoiceWakeForwarder.swift b/apps/macos/Sources/Clawdis/VoiceWakeForwarder.swift index d7f77a867..237b0ba8f 100644 --- a/apps/macos/Sources/Clawdis/VoiceWakeForwarder.swift +++ b/apps/macos/Sources/Clawdis/VoiceWakeForwarder.swift @@ -124,7 +124,12 @@ enum VoiceWakeForwarder { ] if parsed.port > 0 { args.append(contentsOf: ["-p", String(parsed.port)]) } if !config.identityPath.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty { - args.append(contentsOf: ["-i", config.identityPath]) + let identity = config.identityPath.trimmingCharacters(in: .whitespacesAndNewlines) + if !FileManager.default.fileExists(atPath: identity) { + self.logger.error("voice wake forward identity missing: \(identity, privacy: .public)") + return .failure(.launchFailed("identity not found: \(identity)")) + } + args.append(contentsOf: ["-i", identity]) } args.append(userHost) @@ -162,7 +167,7 @@ enum VoiceWakeForwarder { } // surface the failure instead of being silent - let clipped = out.prefix(240) + let clipped = out.isEmpty ? "(no output)" : String(out.prefix(240)) self.logger.error( "voice wake forward failed exit=\(process.terminationStatus) host=\(userHost, privacy: .public) out=\(clipped, privacy: .public)") if process.terminationStatus == 127 {