fix: sync gateway mode via gateway config

main
Peter Steinberger 2026-01-05 06:39:37 +00:00
parent 724354b9f0
commit d9103b387a
1 changed files with 35 additions and 30 deletions

View File

@ -401,11 +401,9 @@ final class AppState {
private func syncGatewayConfigIfNeeded() { private func syncGatewayConfigIfNeeded() {
guard !self.isPreview, !self.isInitializing else { return } guard !self.isPreview, !self.isInitializing else { return }
var root = ClawdbotConfigFile.loadDict() let connectionMode = self.connectionMode
var gateway = root["gateway"] as? [String: Any] ?? [:] let remoteTarget = self.remoteTarget
var changed = false let desiredMode: String? = switch connectionMode {
let desiredMode: String? = switch self.connectionMode {
case .local: case .local:
"local" "local"
case .remote: case .remote:
@ -413,6 +411,14 @@ final class AppState {
case .unconfigured: case .unconfigured:
nil nil
} }
let remoteHost = connectionMode == .remote
? CommandResolver.parseSSHTarget(remoteTarget)?.host
: nil
Task { @MainActor in
var root = await ConfigStore.load()
var gateway = root["gateway"] as? [String: Any] ?? [:]
var changed = false
let currentMode = (gateway["mode"] as? String)?.trimmingCharacters(in: .whitespacesAndNewlines) let currentMode = (gateway["mode"] as? String)?.trimmingCharacters(in: .whitespacesAndNewlines)
if let desiredMode { if let desiredMode {
@ -425,9 +431,7 @@ final class AppState {
changed = true changed = true
} }
if self.connectionMode == .remote, if connectionMode == .remote, let host = remoteHost {
let host = CommandResolver.parseSSHTarget(self.remoteTarget)?.host
{
var remote = gateway["remote"] as? [String: Any] ?? [:] var remote = gateway["remote"] as? [String: Any] ?? [:]
let existingUrl = (remote["url"] as? String)?.trimmingCharacters(in: .whitespacesAndNewlines) ?? "" let existingUrl = (remote["url"] as? String)?.trimmingCharacters(in: .whitespacesAndNewlines) ?? ""
let parsedExisting = existingUrl.isEmpty ? nil : URL(string: existingUrl) let parsedExisting = existingUrl.isEmpty ? nil : URL(string: existingUrl)
@ -443,7 +447,8 @@ final class AppState {
guard changed else { return } guard changed else { return }
root["gateway"] = gateway root["gateway"] = gateway
ClawdbotConfigFile.saveDict(root) try? await ConfigStore.save(root)
}
} }
func triggerVoiceEars(ttl: TimeInterval? = 5) { func triggerVoiceEars(ttl: TimeInterval? = 5) {