mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-25 03:45:46 -06:00
2ef92d0bbe
* feat(browser): sync system cookies to a remote gateway profile Add `openclaw browser cookie-sync`: decrypt allowlisted macOS Chrome-family cookies locally and push them into a managed profile on a possibly-remote Gateway over the existing operator channel. --watch re-syncs on cookie-DB changes with a single Keychain prompt per session. - New POST /cookies/set-many batch route (mirrors /cookies/set) - Extract one canonical readSystemProfileCookies reused by import + sync - Mandatory domain allowlist (never syncs an unrestricted cookie jar) - Decryption stays host-local (macOS); no cookie values are logged * feat(macos): cookie sync checkbox and configuration UI Add an off-by-default 'Cookie sync' section (Settings > General): a toggle, an editable domain allowlist editor, and a target-profile field, actionable only in remote-gateway mode. CookieSyncManager supervises `openclaw browser cookie-sync --watch` against the connected Gateway when enabled, resolving a LOCAL CLI (never the SSH-redirect path, since decryption is host-local) and injecting gateway URL + token/password via environment, never argv. A status row surfaces running/stopped/error and the last sync summary. * fix(macos): satisfy cookie sync lint gates * chore(i18n): register cookie sync native source strings Regenerate apps/.i18n/native-source.json baseline for the new macOS Cookie sync settings strings (additive only). Satisfies the native:i18n:verify gate; generated locale artifacts are refreshed separately by the locale-refresh job.
43 lines
1.6 KiB
Swift
43 lines
1.6 KiB
Swift
import Foundation
|
|
|
|
extension AppState {
|
|
static var preview: AppState {
|
|
let state = AppState(preview: true)
|
|
state.isPaused = false
|
|
state.launchAtLogin = true
|
|
state.onboardingSeen = true
|
|
state.debugPaneEnabled = true
|
|
state.nativeSettingsPanesEnabled = true
|
|
state.swabbleEnabled = true
|
|
state.swabbleTriggerWords = ["Claude", "Computer", "Jarvis"]
|
|
state.voiceWakeTriggerChime = .system(name: "Glass")
|
|
state.voiceWakeSendChime = .system(name: "Ping")
|
|
state.iconAnimationsEnabled = true
|
|
state.showDockIcon = true
|
|
state.voiceWakeMicID = "BuiltInMic"
|
|
state.voiceWakeMicName = "Built-in Microphone"
|
|
state.voiceWakeLocaleID = Locale.current.identifier
|
|
state.voiceWakeAdditionalLocaleIDs = ["en-US", "de-DE"]
|
|
state.voicePushToTalkEnabled = false
|
|
state.talkEnabled = false
|
|
state.talkPhaseSoundsEnabled = true
|
|
state.talkShiftToStopEnabled = true
|
|
state.iconOverride = .system
|
|
state.heartbeatsEnabled = true
|
|
state.connectionMode = .local
|
|
state.remoteTransport = .ssh
|
|
state.canvasEnabled = true
|
|
state.quickChatEnabled = true
|
|
state.cookieSyncEnabled = false
|
|
state.cookieSyncIntoProfile = "imported"
|
|
state.cookieSyncDomains = []
|
|
state.remoteTarget = "user@example.com"
|
|
state.remoteUrl = "wss://gateway.example.ts.net"
|
|
state.remoteToken = "example-token"
|
|
state.remoteIdentity = "~/.ssh/id_ed25519"
|
|
state.remoteProjectRoot = "~/Projects/openclaw"
|
|
state.remoteCliPath = ""
|
|
return state
|
|
}
|
|
}
|