openclaw/apps/macos/Sources/Clawdbot
Shiva Prasad fdbaae6a33
macOS: fix trigger word input disappearing when typing and on add (#1506)
Fixed issue where trigger words would disappear when typing or when adding new trigger words. The problem was that `swabbleTriggerWords` changes were triggering `VoiceWakeRuntime.refresh()` which sanitized the array by removing empty strings in real-time.

Solution: Introduced local `@State` buffer `triggerEntries` with stable UUID identifiers for each trigger word entry. User edits now only affect the local state buffer and are synced back to `AppState` on explicit actions (submit, remove, disappear). This prevents premature sanitization during editing.

The local state is loaded on view appear and when the view becomes active, ensuring it stays in sync with `AppState`.
2026-01-23 20:08:12 +00:00
..
Logging chore: lint and format cleanup 2026-01-04 16:24:17 +01:00
NodeMode fix: avoid duplicate exec approval prompts 2026-01-22 09:53:36 +00:00
Resources chore: bump version to 2026.1.21 2026-01-22 01:59:16 +00:00
AboutSettings.swift chore: lint and format cleanup 2026-01-04 16:24:17 +01:00
AgeFormatting.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
AgentEventStore.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
AgentEventsWindow.swift fix(macos): resolve AnyCodable alias conflicts 2026-01-20 17:27:45 +00:00
AgentWorkspace.swift refactor(macos): replace FileManager.default for Swift 6 2026-01-20 07:37:01 +00:00
AnthropicAuthControls.swift refactor(macos): replace FileManager.default for Swift 6 2026-01-20 07:37:01 +00:00
AnthropicOAuth.swift refactor(macos): replace FileManager.default for Swift 6 2026-01-20 07:37:01 +00:00
AnthropicOAuthCodeState.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
AnyCodable+Helpers.swift fix: bridge gateway anycodable payloads 2026-01-20 15:48:52 +00:00
AppState.swift feat: add exec host approvals flow 2026-01-18 04:27:41 +00:00
AudioInputDeviceObserver.swift Voice Wake: preserve mic selection across disconnects 2026-01-08 01:36:15 +00:00
CameraCaptureService.swift refactor(macos): replace FileManager.default for Swift 6 2026-01-20 07:37:01 +00:00
CanvasA2UIActionMessageHandler.swift SwiftFormat: format macOS sources 2026-01-16 01:56:23 +00:00
CanvasChromeContainerView.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
CanvasFileWatcher.swift SwiftFormat: format macOS sources 2026-01-16 01:56:23 +00:00
CanvasManager.swift refactor(macos): replace FileManager.default for Swift 6 2026-01-20 07:37:01 +00:00
CanvasScheme.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
CanvasSchemeHandler.swift refactor(macos): replace FileManager.default for Swift 6 2026-01-20 07:37:01 +00:00
CanvasWindow.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
CanvasWindowController.swift refactor(macos): replace FileManager.default for Swift 6 2026-01-20 07:37:01 +00:00
CanvasWindowController+Helpers.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
CanvasWindowController+Navigation.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
CanvasWindowController+Testing.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
CanvasWindowController+Window.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
ChannelConfigForm.swift style: tidy macOS config UI formatting 2026-01-17 17:22:42 +00:00
ChannelsSettings.swift Config: schema-driven channels and settings 2026-01-17 00:43:05 +00:00
ChannelsSettings+ChannelSections.swift Config: schema-driven channels and settings 2026-01-17 00:43:05 +00:00
ChannelsSettings+ChannelState.swift fix: harden Mattermost plugin gating (#1428) (thanks @damoahdominic) 2026-01-23 01:23:23 +00:00
ChannelsSettings+Helpers.swift Config: schema-driven channels and settings 2026-01-17 00:43:05 +00:00
ChannelsSettings+View.swift Config: schema-driven channels and settings 2026-01-17 00:43:05 +00:00
ChannelsStore.swift fix: harden Mattermost plugin gating (#1428) (thanks @damoahdominic) 2026-01-23 01:23:23 +00:00
ChannelsStore+Config.swift style: tidy macOS config UI formatting 2026-01-17 17:22:42 +00:00
ChannelsStore+Lifecycle.swift Config: schema-driven channels and settings 2026-01-17 00:43:05 +00:00
ClawdbotConfigFile.swift refactor(macos): replace FileManager.default for Swift 6 2026-01-20 07:37:01 +00:00
ClawdbotPaths.swift refactor(macos): replace FileManager.default for Swift 6 2026-01-20 07:37:01 +00:00
CLIInstaller.swift refactor(macos): replace FileManager.default for Swift 6 2026-01-20 07:37:01 +00:00
CLIInstallPrompter.swift fix(macos): restore gateway launch agent build 2026-01-12 04:58:38 +00:00
CommandResolver.swift macOS: allow SSH agents without identity file 2026-01-21 17:19:51 +00:00
ConfigFileWatcher.swift SwiftFormat: format macOS sources 2026-01-16 01:56:23 +00:00
ConfigSchemaSupport.swift style: tidy macOS config UI formatting 2026-01-17 17:22:42 +00:00
ConfigSettings.swift test(macos): cover gateway host resolution 2026-01-21 03:34:51 +00:00
ConfigStore.swift fix: prevent config clobbering 2026-01-15 04:06:11 +00:00
ConnectionModeCoordinator.swift fix(macos): clear stale gateway failures 2026-01-22 01:48:41 +00:00
ConnectionModeResolver.swift test: cover doctor launchctl env overrides (#1037) 2026-01-16 19:40:45 +00:00
Constants.swift feat: mac node exec policy + remote skills hot reload 2026-01-16 03:45:06 +00:00
ContextMenuCardView.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
ContextUsageBar.swift chore: lint and format cleanup 2026-01-04 16:24:17 +01:00
ControlChannel.swift fix: improve gateway ssh auth handling 2026-01-22 06:54:08 +00:00
CostUsageMenuView.swift Usage: add cost summaries to /usage + mac menu 2026-01-19 00:05:06 +00:00
CritterIconRenderer.swift SwiftFormat: format macOS sources 2026-01-16 01:56:23 +00:00
CritterStatusLabel.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
CritterStatusLabel+Behavior.swift SwiftFormat: format macOS sources 2026-01-16 01:56:23 +00:00
CronJobEditor.swift refactor: centralize channel ui metadata 2026-01-20 13:11:49 +00:00
CronJobEditor+Helpers.swift refactor: extend channel plugin boundary 2026-01-20 12:07:54 +00:00
CronJobEditor+Testing.swift refactor: extend channel plugin boundary 2026-01-20 12:07:54 +00:00
CronJobsStore.swift fix(macos): resolve AnyCodable alias conflicts 2026-01-20 17:27:45 +00:00
CronModels.swift SwiftFormat: format macOS sources 2026-01-16 01:56:23 +00:00
CronSettings.swift refactor: extend channel plugin boundary 2026-01-20 12:07:54 +00:00
CronSettings+Actions.swift refactor(macos): drop duplicate AnyCodable 2026-01-07 19:42:49 +00:00
CronSettings+Helpers.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
CronSettings+Layout.swift refactor: extend channel plugin boundary 2026-01-20 12:07:54 +00:00
CronSettings+Rows.swift SwiftFormat: format macOS sources 2026-01-16 01:56:23 +00:00
CronSettings+Testing.swift refactor: extend channel plugin boundary 2026-01-20 12:07:54 +00:00
DebugActions.swift refactor(macos): replace FileManager.default for Swift 6 2026-01-20 07:37:01 +00:00
DebugSettings.swift fix: gateway summary lookup + test browser opens 2026-01-23 05:54:51 +00:00
DeepLinks.swift fix: finish channels rename sweep 2026-01-13 08:40:40 +00:00
DeviceModelCatalog.swift SwiftFormat: format macOS sources 2026-01-16 01:56:23 +00:00
DevicePairingApprovalPrompter.swift fix: pass android lint and swiftformat 2026-01-19 11:14:27 +00:00
DiagnosticsFileLog.swift refactor(macos): replace FileManager.default for Swift 6 2026-01-20 07:37:01 +00:00
DockIconManager.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
ExecApprovals.swift fix(exec-approvals): stabilize allowlist ids (#1521) 2026-01-23 19:00:45 +00:00
ExecApprovalsGatewayPrompter.swift test: cover exec approval prompt gating 2026-01-22 10:00:55 +00:00
ExecApprovalsSocket.swift fix: avoid duplicate exec approval prompts 2026-01-22 09:53:36 +00:00
FileHandle+SafeRead.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
GatewayAutostartPolicy.swift refactor: remove mac attach-only setting 2026-01-12 04:58:38 +00:00
GatewayConnection.swift fix: harden Mattermost plugin gating (#1428) (thanks @damoahdominic) 2026-01-23 01:23:23 +00:00
GatewayConnectivityCoordinator.swift refactor: unify gateway connectivity state 2026-01-21 05:01:32 +00:00
GatewayDiscoveryMenu.swift refactor: remove bridge protocol 2026-01-19 10:08:29 +00:00
GatewayDiscoveryPreferences.swift refactor: remove bridge protocol 2026-01-19 10:08:29 +00:00
GatewayEndpointStore.swift test: cover exec approval prompt gating 2026-01-22 10:00:55 +00:00
GatewayEnvironment.swift fix: pass android lint and swiftformat 2026-01-19 11:14:27 +00:00
GatewayLaunchAgentManager.swift feat(macos): add attach-only launchd override 2026-01-22 23:08:56 +00:00
GatewayProcessManager.swift fix: gateway summary lookup + test browser opens 2026-01-23 05:54:51 +00:00
GeneralSettings.swift fix: improve gateway ssh auth handling 2026-01-22 06:54:08 +00:00
HealthStore.swift fix(macos): prefer linked channel in health summaries 2026-01-22 23:09:28 +00:00
HeartbeatStore.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
HoverHUD.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
IconState.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
InstancesSettings.swift feat: render native chat markdown via Textual 2026-01-16 09:02:27 +00:00
InstancesStore.swift refactor: migrate iOS gateway to unified ws 2026-01-19 10:08:33 +00:00
LaunchAgentManager.swift refactor(macos): replace FileManager.default for Swift 6 2026-01-20 07:37:01 +00:00
Launchctl.swift refactor(macos): centralize process pipe draining 2026-01-17 08:53:10 +00:00
LaunchdManager.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
LogLocator.swift refactor(macos): replace FileManager.default for Swift 6 2026-01-20 07:37:01 +00:00
MenuBar.swift feat(macos): add attach-only launchd override 2026-01-22 23:08:56 +00:00
MenuContentView.swift feat: unify device auth + pairing 2026-01-19 10:07:56 +00:00
MenuContextCardInjector.swift SwiftFormat: format macOS sources 2026-01-16 01:56:23 +00:00
MenuHighlightedHostView.swift chore: lint and format cleanup 2026-01-04 16:24:17 +01:00
MenuHostedItem.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
MenuSessionsHeaderView.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
MenuSessionsInjector.swift feat: add sessions preview rpc and menu prewarm 2026-01-22 10:21:50 +00:00
MenuUsageHeaderView.swift fix(macos): wrap usage errors in menu 2026-01-11 02:04:27 +01:00
MicLevelMonitor.swift Voice Wake: preserve mic selection across disconnects 2026-01-08 01:36:15 +00:00
ModelCatalogLoader.swift fix: bundle mac model catalog 2026-01-21 19:58:19 +00:00
NodePairingApprovalPrompter.swift refactor: migrate iOS gateway to unified ws 2026-01-19 10:08:33 +00:00
NodeServiceManager.swift feat(mac): manage node service in remote mode 2026-01-18 22:50:02 +00:00
NodesMenu.swift feat: surface node core/ui versions in macOS 2026-01-18 16:00:36 +00:00
NodesStore.swift feat: surface node core/ui versions in macOS 2026-01-18 16:00:36 +00:00
NotificationManager.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
NotifyOverlay.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
NSAttributedString+VoiceWake.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
Onboarding.swift macos: keep CLI install build suffix 2026-01-17 17:45:04 +00:00
OnboardingView+Actions.swift refactor: remove bridge protocol 2026-01-19 10:08:29 +00:00
OnboardingView+Chat.swift fix: hide onboarding chat when configured 2026-01-11 10:34:23 +00:00
OnboardingView+Layout.swift refactor: remove bridge protocol 2026-01-19 10:08:29 +00:00
OnboardingView+Monitoring.swift Move provider to a plugin-architecture (#661) 2026-01-11 11:45:25 +00:00
OnboardingView+Pages.swift refactor: remove bridge protocol 2026-01-19 10:08:29 +00:00
OnboardingView+Testing.swift refactor: remove bridge protocol 2026-01-19 10:08:29 +00:00
OnboardingView+Wizard.swift fix: macOS Swift cleanup 2026-01-04 17:57:53 +01:00
OnboardingView+Workspace.swift feat: wire multi-agent config and routing 2026-01-09 12:48:42 +00:00
OnboardingWidgets.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
OnboardingWizard.swift fix(macos): resolve AnyCodable alias conflicts 2026-01-20 17:27:45 +00:00
PeekabooBridgeHostCoordinator.swift SwiftFormat: format macOS sources 2026-01-16 01:56:23 +00:00
PermissionManager.swift Move provider to a plugin-architecture (#661) 2026-01-11 11:45:25 +00:00
PermissionsSettings.swift feat(macos): move location access to permissions tab 2026-01-22 04:50:03 +00:00
PointingHandCursor.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
PortGuardian.swift fix: improve gateway ssh auth handling 2026-01-22 06:54:08 +00:00
PresenceReporter.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
Process+PipeRead.swift refactor(macos): centralize process pipe draining 2026-01-17 08:53:10 +00:00
ProcessInfo+Clawdbot.swift test(macos): isolate env + defaults 2026-01-07 20:32:15 +00:00
RemotePortTunnel.swift macOS: allow SSH agents without identity file 2026-01-21 17:19:51 +00:00
RemoteTunnelManager.swift fix: improve gateway ssh auth handling 2026-01-22 06:54:08 +00:00
RuntimeLocator.swift refactor(macos): replace FileManager.default for Swift 6 2026-01-20 07:37:01 +00:00
ScreenRecordService.swift refactor(macos): replace FileManager.default for Swift 6 2026-01-20 07:37:01 +00:00
ScreenshotSize.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
SessionActions.swift refactor(macos): replace FileManager.default for Swift 6 2026-01-20 07:37:01 +00:00
SessionData.swift refactor(macos): replace FileManager.default for Swift 6 2026-01-20 07:37:01 +00:00
SessionMenuLabelView.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
SessionMenuPreviewView.swift feat: add sessions preview rpc and menu prewarm 2026-01-22 10:21:50 +00:00
SessionsSettings.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
SettingsComponents.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
SettingsRootView.swift Config: schema-driven channels and settings 2026-01-17 00:43:05 +00:00
SettingsWindowOpener.swift Move provider to a plugin-architecture (#661) 2026-01-11 11:45:25 +00:00
ShellExecutor.swift fix(macos): stabilize bridge tunnels 2026-01-10 22:26:47 +01:00
SkillsModels.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
SkillsSettings.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
SoundEffects.swift refactor(macos): replace FileManager.default for Swift 6 2026-01-20 07:37:01 +00:00
StatusPill.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
String+NonEmpty.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
SystemRunSettingsView.swift fix(exec-approvals): stabilize allowlist ids (#1521) 2026-01-23 19:00:45 +00:00
TailscaleIntegrationSection.swift chore: lint and format cleanup 2026-01-04 16:24:17 +01:00
TailscaleService.swift refactor: satisfy swiftlint 2026-01-22 00:59:41 +00:00
TalkAudioPlayer.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
TalkModeController.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
TalkModeRuntime.swift SwiftFormat: format macOS sources 2026-01-16 01:56:23 +00:00
TalkModeTypes.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
TalkOverlay.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
TalkOverlayView.swift chore: lint and format cleanup 2026-01-04 16:24:17 +01:00
TerminationSignalWatcher.swift feat: unify device auth + pairing 2026-01-19 10:07:56 +00:00
UsageCostData.swift Usage: add cost summaries to /usage + mac menu 2026-01-19 00:05:06 +00:00
UsageData.swift fix: hide menubar usage errors 2026-01-18 23:18:10 +00:00
UsageMenuLabelView.swift fix: pass android lint and swiftformat 2026-01-19 11:14:27 +00:00
ViewMetrics.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
VisualEffectView.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
VoicePushToTalk.swift refactor(macos): replace FileManager.default for Swift 6 2026-01-20 07:37:01 +00:00
VoiceSessionCoordinator.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
VoiceWakeChime.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
VoiceWakeForwarder.swift SwiftFormat: format macOS sources 2026-01-16 01:56:23 +00:00
VoiceWakeGlobalSettingsSync.swift refactor: migrate iOS gateway to unified ws 2026-01-19 10:08:33 +00:00
VoiceWakeHelpers.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
VoiceWakeOverlay.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
VoiceWakeOverlayController+Session.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
VoiceWakeOverlayController+Testing.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
VoiceWakeOverlayController+Window.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
VoiceWakeOverlayTextViews.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
VoiceWakeOverlayView.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
VoiceWakeRuntime.swift SwiftFormat: format macOS sources 2026-01-16 01:56:23 +00:00
VoiceWakeSettings.swift macOS: fix trigger word input disappearing when typing and on add (#1506) 2026-01-23 20:08:12 +00:00
VoiceWakeTestCard.swift Mac: stabilize voice wake test flow 2026-01-08 01:36:15 +00:00
VoiceWakeTester.swift SwiftFormat: format macOS sources 2026-01-16 01:56:23 +00:00
VoiceWakeTextUtils.swift style: align voice wake text utils format 2026-01-08 01:49:29 +00:00
WebChatManager.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
WebChatSwiftUI.swift fix(macos): resolve AnyCodable alias conflicts 2026-01-20 17:27:45 +00:00
WindowPlacement.swift chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
WorkActivityStore.swift fix: use canonical main session keys in apps 2026-01-15 08:59:05 +00:00