openclaw/apps/macos/Sources/OpenClaw
Seungwoo hong 63fac653ed
fix(talk): Talk Mode TTS improvements for CJK languages (#53553)
* feat(talk): add distinct system sounds for each Talk Mode phase

Play a short system sound on phase transitions to give the user
audible feedback:
- thinking: Tink
- speaking: Pop
- listening (after speech interrupted): Bottle
- listening (after thinking): Submarine

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(talk): add right Shift key to interrupt Talk Mode speech

Add TalkSpeechInterruptMonitor — a dedicated global key monitor that
listens for right Shift (keyCode 60) to interrupt Talk Mode speech.
Independent of Push-to-Talk, so it works even when PTT is disabled.

Stops only the current response; the next conversation cycle
continues normally via sendAndSpeak's resumeListeningIfNeeded flow.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(talk): increase silence detection timeout for CJK locales

Korean, Japanese, and Chinese speakers need longer pauses between
phrases. When the app locale is CJK, enforce a minimum 2000ms
silence window (vs the default 1500ms) to avoid premature
transcript submission.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(talk): remove force-unwraps and log CJK silence clamp in reloadConfig

Replace non-idiomatic force-unwraps (cfg.voiceId!, cfg.modelId!) with
safe flatMap unwrapping, and add an info log when CJK locale clamps the
silence timeout so the override is observable in diagnostics.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(talk): add settings toggle to mute phase-transition sounds

Add a "Play phase-transition sounds" checkbox to Voice Wake settings.
When disabled, Talk Mode phase transitions (Tink/Pop/Bottle/Submarine)
are silent. Defaults to enabled to preserve existing behavior.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(talk): add toggle for Right Option speech interrupt

Add a "Press Right Option to stop speech" checkbox to Voice Wake
settings. Also change the interrupt key from right Shift to right
Option (keyCode 61) to avoid conflicts with typing.
Defaults to enabled to preserve existing behavior.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(talk): disable Push-to-Talk while Talk Mode is active

Talk Mode and Push-to-Talk both use the right Option key (keyCode 61).
Disable PTT when Talk Mode is enabled to prevent conflicting handlers,
and restore PTT when Talk Mode is disabled.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(talk): show info when PTT is paused during Talk Mode

Display a footnote under the Push-to-Talk toggle when both PTT and
Talk Mode are enabled, explaining that PTT is paused while Talk Mode
is active and resumes when Talk Mode is turned off.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fixup: SwiftFormat lint on TalkModeController phase sound switch

Resolves macos-swift CI lint failures introduced by Korean
comment formatting in 'feat(talk): add distinct system sounds for each Talk Mode phase'.
- Collapse consecutive spaces between sound name and comment
- Move floating comments above the listening case expression so
  they're at the correct indent level

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: hongsw <hongsw@hongswui-Macmini.local>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Fabian Williams <fabian@adotob.com>
2026-04-25 17:05:51 -04:00
..
Logging
NodeMode style: fix macos app lint warnings 2026-04-20 14:17:25 +01:00
Resources chore: bump version to 2026.4.25 2026-04-25 10:31:52 +01:00
AboutSettings.swift
AgeFormatting.swift
AgentEventStore.swift
AgentEventsWindow.swift
AgentWorkspace.swift
AgentWorkspaceConfig.swift
AnyCodable+Helpers.swift
AppState.swift fix(talk): Talk Mode TTS improvements for CJK languages (#53553) 2026-04-25 17:05:51 -04:00
AudioInputDeviceObserver.swift
CameraCaptureService.swift
CanvasA2UIActionMessageHandler.swift style: format macos sources for ci 2026-03-22 17:32:30 +00:00
CanvasChromeContainerView.swift
CanvasFileWatcher.swift
CanvasManager.swift
CanvasScheme.swift
CanvasSchemeHandler.swift fix(macos): block canvas symlink escapes 2026-03-16 23:56:35 -07:00
CanvasWindow.swift
CanvasWindowController+Helpers.swift
CanvasWindowController+Navigation.swift
CanvasWindowController+Testing.swift
CanvasWindowController+Window.swift
CanvasWindowController.swift style: format macos sources for ci 2026-03-22 17:32:30 +00:00
ChannelConfigForm.swift
ChannelsSettings+ChannelSections.swift
ChannelsSettings+ChannelState.swift
ChannelsSettings+Helpers.swift
ChannelsSettings+View.swift
ChannelsSettings.swift
ChannelsStore+Config.swift
ChannelsStore+Lifecycle.swift fix(whatsapp): keep QR login state in sync 2026-04-24 15:37:16 -05:00
ChannelsStore.swift fix(whatsapp): keep QR login state in sync 2026-04-24 15:37:16 -05:00
CLIInstaller.swift
CLIInstallPrompter.swift
CoalescingFSEventsWatcher.swift
ColorHexSupport.swift
CommandResolver.swift fix(macos): require trusted SSH host keys (#68199) 2026-04-17 11:11:10 -06:00
ConfigFileWatcher.swift
ConfigSchemaSupport.swift
ConfigSettings.swift feat(ui): Control UI polish — skills revamp, markdown preview, agent workspace, macOS config tree (#53411) thanks @BunsDev 2026-03-24 01:21:13 -05:00
ConfigStore.swift
ConnectionModeCoordinator.swift
ConnectionModeResolver.swift
Constants.swift fix(talk): Talk Mode TTS improvements for CJK languages (#53553) 2026-04-25 17:05:51 -04:00
ContextMenuCardView.swift
ContextUsageBar.swift
ControlChannel.swift
CostUsageMenuView.swift
CritterIconRenderer.swift
CritterStatusLabel+Behavior.swift
CritterStatusLabel.swift
CronJobEditor+Helpers.swift style: format macos sources for ci 2026-03-22 17:32:30 +00:00
CronJobEditor+Testing.swift
CronJobEditor.swift feat(cron): support custom session IDs and auto-bind to current session (#16511) 2026-03-14 16:48:46 +11:00
CronJobsStore.swift
CronModels.swift style: format macos sources for ci 2026-03-22 17:32:30 +00:00
CronSettings+Actions.swift
CronSettings+Helpers.swift
CronSettings+Layout.swift
CronSettings+Rows.swift feat(cron): support custom session IDs and auto-bind to current session (#16511) 2026-03-14 16:48:46 +11:00
CronSettings+Testing.swift
CronSettings.swift
DebugActions.swift
DebugSettings.swift fix: harden config write auditing 2026-03-28 03:54:54 +00:00
DeepLinks.swift
DeviceModelCatalog.swift
DevicePairingApprovalPrompter.swift
DiagnosticsFileLog.swift
DockIconManager.swift
DurationFormattingSupport.swift
ExecAllowlistMatcher.swift fix(macos): SwiftFormat wrapMultilineStatementBraces on 2 main files (#71763) 2026-04-25 17:02:13 -04:00
ExecApprovalCommandDisplaySanitizer.swift fix(exec-approvals): escape control characters in display sanitizers (#68198) 2026-04-17 15:59:08 -06:00
ExecApprovalEvaluation.swift fix(macos): align exec command parity (#50386) 2026-03-19 13:51:17 +02:00
ExecApprovals.swift fix(macos): SwiftFormat wrapMultilineStatementBraces on 2 main files (#71763) 2026-04-25 17:02:13 -04:00
ExecApprovalsGatewayPrompter.swift style: format macos sources for ci 2026-03-22 17:32:30 +00:00
ExecApprovalsSocket.swift style: fix macos app lint warnings 2026-04-20 14:17:25 +01:00
ExecCommandResolution.swift fix(security): harden exec approval boundaries 2026-03-22 09:35:25 -07:00
ExecEnvInvocationUnwrapper.swift fix(security): harden exec approval boundaries 2026-03-22 09:35:25 -07:00
ExecEnvOptions.swift
ExecHostRequestEvaluator.swift fix(macos): align exec command parity (#50386) 2026-03-19 13:51:17 +02:00
ExecShellWrapperParser.swift
ExecSystemRunCommandValidator.swift fix(security): harden exec approval boundaries 2026-03-22 09:35:25 -07:00
FileHandle+SafeRead.swift
GatewayAutostartPolicy.swift
GatewayConnection.swift fix(macos): retry talk tts via gateway 2026-04-25 04:09:43 +01:00
GatewayConnectivityCoordinator.swift
GatewayDiscoveryHelpers.swift
GatewayDiscoveryMenu.swift
GatewayDiscoveryPreferences.swift
GatewayDiscoverySelectionSupport.swift
GatewayEndpointStore.swift
GatewayEnvironment.swift fix(macos): strip commit hash from CLI version output (#61111) 2026-04-06 22:10:40 +10:00
GatewayLaunchAgentManager.swift
GatewayProcessManager.swift fix: harden mac gateway attach smoke 2026-03-29 00:35:40 +00:00
GatewayPushSubscription.swift
GatewayRemoteConfig.swift
GeneralSettings.swift style: fix macos app lint warnings 2026-04-20 14:17:25 +01:00
HealthStore.swift
HeartbeatStore.swift
HostEnvSanitizer.swift fix(infra): expand host env security policy denylist [AI] (#63277) 2026-04-10 11:36:39 +05:30
HostEnvSecurityPolicy.generated.swift fix(infra): expand host env security policy denylist [AI] (#63277) 2026-04-10 11:36:39 +05:30
HoverHUD.swift
IconState.swift
InstancesSettings.swift
InstancesStore.swift
JSONObjectExtractionSupport.swift
LaunchAgentManager.swift fix(macos): stop relaunching the app after quit when launch-at-login is enabled (#40213) 2026-03-17 20:59:56 +11:00
Launchctl.swift
LaunchdManager.swift
LogLocator.swift
MenuBar.swift build(deps): bump the swift-deps group across 1 directory with 3 updates (#60168) 2026-04-21 21:30:14 -07:00
MenuContentView.swift
MenuContextCardInjector.swift
MenuHeaderCard.swift
MenuHighlightedHostView.swift
MenuHostedItem.swift
MenuItemHighlightColors.swift
MenuSessionsHeaderView.swift
MenuSessionsInjector.swift fix(macos): show sessions after controls in tray menu (#38079) 2026-03-18 11:29:11 +11:00
MenuUsageHeaderView.swift
MicLevelMonitor.swift
MicRefreshSupport.swift
ModelCatalogLoader.swift
NodePairingApprovalPrompter.swift fix(macos): require trusted SSH host keys (#68199) 2026-04-17 11:11:10 -06:00
NodeServiceManager.swift fix: update macOS node service to use current CLI command shape (closes #43171) (#46843) 2026-03-17 20:46:54 +11:00
NodesMenu.swift
NodesStore.swift
NotificationManager.swift
NotifyOverlay.swift
NSAttributedString+VoiceWake.swift
Onboarding.swift
OnboardingView+Actions.swift
OnboardingView+Chat.swift
OnboardingView+Layout.swift
OnboardingView+Monitoring.swift
OnboardingView+Pages.swift style: fix macos app lint warnings 2026-04-20 14:17:25 +01:00
OnboardingView+Testing.swift
OnboardingView+Wizard.swift
OnboardingView+Workspace.swift
OnboardingWidgets.swift
OnboardingWizard.swift
OpenClawConfigFile.swift fix: harden config write auditing 2026-03-28 03:54:54 +00:00
OpenClawPaths.swift
OverlayPanelFactory.swift
PairingAlertSupport.swift
PeekabooBridgeHostCoordinator.swift
PermissionManager.swift
PermissionMonitoringSupport.swift
PermissionsSettings.swift
PlatformLabelFormatter.swift
PointingHandCursor.swift
PortGuardian.swift fix: harden mac gateway attach smoke 2026-03-29 00:35:40 +00:00
PresenceReporter.swift
Process+PipeRead.swift
ProcessInfo+OpenClaw.swift
RemoteGatewayProbe.swift style: fix macos app lint warnings 2026-04-20 14:17:25 +01:00
RemotePortTunnel.swift fix(macos): require trusted SSH host keys (#68199) 2026-04-17 11:11:10 -06:00
RemoteTunnelManager.swift
RuntimeLocator.swift fix(macos): align minimum Node.js version with runtime guard (22.16.0) (#45640) 2026-03-14 13:43:21 +11:00
ScreenRecordService.swift
ScreenshotSize.swift
ScreenSnapshotService.swift feat: add macOS screen snapshots for monitor preview (#67954) thanks @BunsDev 2026-04-17 02:58:21 -05:00
SelectableRow.swift
SessionActions.swift
SessionData.swift
SessionMenuLabelView.swift
SessionMenuPreviewView.swift
SessionsSettings.swift
SettingsComponents.swift
SettingsRefreshButton.swift
SettingsRootView.swift
SettingsSidebarCard.swift
SettingsSidebarScroll.swift
SettingsWindowOpener.swift
ShellExecutor.swift fix(macos): harden shell executor timeouts 2026-04-11 03:58:20 +01:00
SimpleFileWatcher.swift
SimpleFileWatcherOwner.swift
SimpleTaskSupport.swift
SkillsModels.swift
SkillsSettings.swift test: introduce planner-backed test runner, stabilize local builds (#54650) 2026-03-25 18:11:58 -05:00
SoundEffects.swift
StatusPill.swift
String+NonEmpty.swift
SystemPresenceInfo.swift
SystemRunSettingsView.swift fix: match bare exec allowlist commands 2026-04-25 04:18:24 +01:00
SystemSettingsURLSupport.swift
TailscaleIntegrationSection.swift
TailscaleService.swift
TalkAudioPlayer.swift
TalkDefaults.swift
TalkMLXSpeechSynthesizer.swift ci: isolate mlx from macos swift checks 2026-04-22 02:12:07 +01:00
TalkModeController.swift fix(talk): Talk Mode TTS improvements for CJK languages (#53553) 2026-04-25 17:05:51 -04:00
TalkModeGatewayConfig.swift fix(talk): honor configured speech locale 2026-04-25 21:05:24 +01:00
TalkModeRuntime.swift fix(talk): Talk Mode TTS improvements for CJK languages (#53553) 2026-04-25 17:05:51 -04:00
TalkModeTypes.swift
TalkOverlay.swift
TalkOverlayView.swift
TalkSpeechInterruptMonitor.swift fix(talk): Talk Mode TTS improvements for CJK languages (#53553) 2026-04-25 17:05:51 -04:00
TerminationSignalWatcher.swift
TextSummarySupport.swift
TrackingAreaSupport.swift
UsageCostData.swift
UsageData.swift
UsageMenuLabelView.swift
UserDefaultsMigration.swift
ViewMetrics.swift
VisualEffectView.swift
VoiceOverlayTextFormatting.swift
VoicePushToTalk.swift fix(talk): Talk Mode TTS improvements for CJK languages (#53553) 2026-04-25 17:05:51 -04:00
VoiceSessionCoordinator.swift
VoiceWakeChime.swift
VoiceWakeForwarder.swift
VoiceWakeGlobalSettingsSync.swift
VoiceWakeHelpers.swift
VoiceWakeOverlay.swift
VoiceWakeOverlayController+Session.swift
VoiceWakeOverlayController+Testing.swift
VoiceWakeOverlayController+Window.swift
VoiceWakeOverlayTextViews.swift
VoiceWakeOverlayView.swift
VoiceWakeRecognitionDebugSupport.swift
VoiceWakeRuntime.swift feat(macos): Voice Wake option to trigger Talk Mode (#58490) 2026-03-31 21:09:36 -04:00
VoiceWakeSettings.swift fix(talk): Talk Mode TTS improvements for CJK languages (#53553) 2026-04-25 17:05:51 -04:00
VoiceWakeTestCard.swift
VoiceWakeTester.swift
VoiceWakeTextUtils.swift
WebChatManager.swift
WebChatSwiftUI.swift Webchat: handle bare /compact as session compaction 2026-03-24 10:58:09 -07:00
WindowPlacement.swift
WorkActivityStore.swift