openclaw/apps/macos/Sources/OpenClaw
Tyler Yust d90cac990c
fix: cron scheduler reliability, store hardening, and UX improvements (#10776)
* refactor: update cron job wake mode and run mode handling

- Changed default wake mode from 'next-heartbeat' to 'now' in CronJobEditor and related CLI commands.
- Updated cron-tool tests to reflect changes in run mode, introducing 'due' and 'force' options.
- Enhanced cron-tool logic to handle new run modes and ensure compatibility with existing job structures.
- Added new tests for delivery plan consistency and job execution behavior under various conditions.
- Improved normalization functions to handle wake mode and session target casing.

This refactor aims to streamline cron job configurations and enhance the overall user experience with clearer defaults and improved functionality.

* test: enhance cron job functionality and UI

- Added tests to ensure the isolated agent correctly announces the final payload text when delivering messages via Telegram.
- Implemented a new function to pick the last deliverable payload from a list of delivery payloads.
- Enhanced the cron service to maintain legacy "every" jobs while minute cron jobs recompute schedules.
- Updated the cron store migration tests to verify the addition of anchorMs to legacy every schedules.
- Improved the UI for displaying cron job details, including job state and delivery information, with new styles and layout adjustments.

These changes aim to improve the reliability and user experience of the cron job system.

* test: enhance sessions thinking level handling

- Added tests to verify that the correct thinking levels are applied during session spawning.
- Updated the sessions-spawn-tool to include a new parameter for overriding thinking levels.
- Enhanced the UI to support additional thinking levels, including "xhigh" and "full", and improved the handling of current options in dropdowns.

These changes aim to improve the flexibility and accuracy of thinking level configurations in session management.

* feat: enhance session management and cron job functionality

- Introduced passthrough arguments in the test-parallel script to allow for flexible command-line options.
- Updated session handling to hide cron run alias session keys from the sessions list, improving clarity.
- Enhanced the cron service to accurately record job start times and durations, ensuring better tracking of job execution.
- Added tests to verify the correct behavior of the cron service under various conditions, including zero-delay timers.

These changes aim to improve the usability and reliability of session and cron job management.

* feat: implement job running state checks in cron service

- Added functionality to prevent manual job runs if a job is already in progress, enhancing job management.
- Updated the `isJobDue` function to include checks for running jobs, ensuring accurate scheduling.
- Enhanced the `run` function to return a specific reason when a job is already running.
- Introduced a new test case to verify the behavior of forced manual runs during active job execution.

These changes aim to improve the reliability and clarity of cron job execution and management.

* feat: add session ID and key to CronRunLogEntry model

- Introduced `sessionid` and `sessionkey` properties to the `CronRunLogEntry` struct for enhanced tracking of session-related information.
- Updated the initializer and Codable conformance to accommodate the new properties, ensuring proper serialization and deserialization.

These changes aim to improve the granularity of logging and session management within the cron job system.

* fix: improve session display name resolution

- Updated the `resolveSessionDisplayName` function to ensure that both label and displayName are trimmed and default to an empty string if not present.
- Enhanced the logic to prevent returning the key if it matches the label or displayName, improving clarity in session naming.

These changes aim to enhance the accuracy and usability of session display names in the UI.

* perf: skip cron store persist when idle timer tick produces no changes

recomputeNextRuns now returns a boolean indicating whether any job
state was mutated. The idle path in onTimer only persists when the
return value is true, eliminating unnecessary file writes every 60s
for far-future or idle schedules.

* fix: prep for merge - explicit delivery mode migration, docs + changelog (#10776) (thanks @tyler6204)
2026-02-06 18:03:03 -08:00
..
Logging
NodeMode
Resources chore(release): bump version to 2026.2.6 2026-02-06 15:37:31 -08:00
AboutSettings.swift
AgeFormatting.swift
AgentEventStore.swift
AgentEventsWindow.swift
AgentWorkspace.swift
AnthropicAuthControls.swift
AnthropicOAuth.swift
AnthropicOAuthCodeState.swift
AnyCodable+Helpers.swift
AppState.swift
AudioInputDeviceObserver.swift
CLIInstallPrompter.swift
CLIInstaller.swift
CameraCaptureService.swift
CanvasA2UIActionMessageHandler.swift
CanvasChromeContainerView.swift
CanvasFileWatcher.swift
CanvasManager.swift
CanvasScheme.swift
CanvasSchemeHandler.swift
CanvasWindow.swift
CanvasWindowController+Helpers.swift
CanvasWindowController+Navigation.swift
CanvasWindowController+Testing.swift
CanvasWindowController+Window.swift
CanvasWindowController.swift
ChannelConfigForm.swift
ChannelsSettings+ChannelSections.swift
ChannelsSettings+ChannelState.swift
ChannelsSettings+Helpers.swift
ChannelsSettings+View.swift
ChannelsSettings.swift
ChannelsStore+Config.swift
ChannelsStore+Lifecycle.swift
ChannelsStore.swift
CommandResolver.swift revert: Switch back to `tsc` for compiling. 2026-01-31 18:31:49 +09:00
ConfigFileWatcher.swift
ConfigSchemaSupport.swift
ConfigSettings.swift
ConfigStore.swift
ConnectionModeCoordinator.swift
ConnectionModeResolver.swift
Constants.swift
ContextMenuCardView.swift
ContextUsageBar.swift
ControlChannel.swift
CostUsageMenuView.swift
CritterIconRenderer.swift
CritterStatusLabel+Behavior.swift
CritterStatusLabel.swift
CronJobEditor+Helpers.swift refactor(cron): improve delivery configuration handling in CronJobEditor and CLI 2026-02-04 01:03:59 -08:00
CronJobEditor+Testing.swift feat(cron): enhance delivery modes and job configuration 2026-02-04 01:03:59 -08:00
CronJobEditor.swift fix: cron scheduler reliability, store hardening, and UX improvements (#10776) 2026-02-06 18:03:03 -08:00
CronJobsStore.swift
CronModels.swift fix(mac): resolve cron schedule formatters 2026-02-04 17:55:13 -08:00
CronSettings+Actions.swift
CronSettings+Helpers.swift feat(cron): enhance delivery modes and job configuration 2026-02-04 01:03:59 -08:00
CronSettings+Layout.swift
CronSettings+Rows.swift fix(mac): resolve cron schedule formatters 2026-02-04 17:55:13 -08:00
CronSettings+Testing.swift feat(cron): enhance delivery modes and job configuration 2026-02-04 01:03:59 -08:00
CronSettings.swift
DebugActions.swift
DebugSettings.swift
DeepLinks.swift
DeviceModelCatalog.swift
DevicePairingApprovalPrompter.swift
DiagnosticsFileLog.swift
DockIconManager.swift
ExecApprovals.swift
ExecApprovalsGatewayPrompter.swift
ExecApprovalsSocket.swift
FileHandle+SafeRead.swift
GatewayAutostartPolicy.swift
GatewayConnection.swift Revert "iOS: wire node services and tests" 2026-02-02 17:36:49 +00:00
GatewayConnectivityCoordinator.swift
GatewayDiscoveryHelpers.swift
GatewayDiscoveryMenu.swift
GatewayDiscoveryPreferences.swift
GatewayEndpointStore.swift
GatewayEnvironment.swift
GatewayLaunchAgentManager.swift
GatewayProcessManager.swift
GatewayRemoteConfig.swift
GeneralSettings.swift
HealthStore.swift
HeartbeatStore.swift
HoverHUD.swift
IconState.swift
InstancesSettings.swift
InstancesStore.swift
LaunchAgentManager.swift
Launchctl.swift
LaunchdManager.swift
LogLocator.swift
MenuBar.swift
MenuContentView.swift
MenuContextCardInjector.swift
MenuHighlightedHostView.swift
MenuHostedItem.swift
MenuSessionsHeaderView.swift
MenuSessionsInjector.swift
MenuUsageHeaderView.swift
MicLevelMonitor.swift
ModelCatalogLoader.swift
NSAttributedString+VoiceWake.swift
NodePairingApprovalPrompter.swift
NodeServiceManager.swift
NodesMenu.swift
NodesStore.swift
NotificationManager.swift
NotifyOverlay.swift
Onboarding.swift
OnboardingView+Actions.swift
OnboardingView+Chat.swift
OnboardingView+Layout.swift
OnboardingView+Monitoring.swift
OnboardingView+Pages.swift chore: apply local workspace updates (#9911) 2026-02-05 16:54:44 -05:00
OnboardingView+Testing.swift
OnboardingView+Wizard.swift
OnboardingView+Workspace.swift
OnboardingWidgets.swift
OnboardingWizard.swift
OpenClawConfigFile.swift
OpenClawPaths.swift
PeekabooBridgeHostCoordinator.swift
PermissionManager.swift
PermissionsSettings.swift
PointingHandCursor.swift
PortGuardian.swift
PresenceReporter.swift
Process+PipeRead.swift
ProcessInfo+OpenClaw.swift
RemotePortTunnel.swift
RemoteTunnelManager.swift
RuntimeLocator.swift
ScreenRecordService.swift
ScreenshotSize.swift
SessionActions.swift
SessionData.swift chore: apply local workspace updates (#9911) 2026-02-05 16:54:44 -05:00
SessionMenuLabelView.swift
SessionMenuPreviewView.swift
SessionsSettings.swift
SettingsComponents.swift
SettingsRootView.swift
SettingsWindowOpener.swift
ShellExecutor.swift
SkillsModels.swift
SkillsSettings.swift
SoundEffects.swift
StatusPill.swift
String+NonEmpty.swift
SystemRunSettingsView.swift
TailscaleIntegrationSection.swift
TailscaleService.swift
TalkAudioPlayer.swift
TalkModeController.swift
TalkModeRuntime.swift
TalkModeTypes.swift
TalkOverlay.swift
TalkOverlayView.swift
TerminationSignalWatcher.swift
UsageCostData.swift
UsageData.swift
UsageMenuLabelView.swift
UserDefaultsMigration.swift
ViewMetrics.swift
VisualEffectView.swift
VoicePushToTalk.swift
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
VoiceWakeRuntime.swift
VoiceWakeSettings.swift
VoiceWakeTestCard.swift
VoiceWakeTester.swift
VoiceWakeTextUtils.swift
WebChatManager.swift
WebChatSwiftUI.swift
WindowPlacement.swift
WorkActivityStore.swift