mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-21 10:01:37 -06:00
b886eed3de
* fix(macos): surface concrete Gateway start failure reason in onboarding GatewayProcessManager already retains the specific registration/readiness failure (e.g. "launchd disabled", a launchd enable error, a readiness timeout) in lastFailureReason, and Settings/menu bar UI already read it. Onboarding discarded it: LocalGatewayActivation.failed collapses every cause to the same generic "Retry setup" message, so a missing LaunchAgent registration is indistinguishable from any other startup failure. Surface the retained reason in the onboarding status text so the failure is diagnosable without going through Settings. * fix(macos): record command-resolution failures in lastFailureReason GatewayProcessManager set status but not lastFailureReason when GatewayEnvironment.resolveGatewayCommand() returns no command (missing runtime/CLI), unlike the launchd-disabled and launchd-enable-error branches a few lines below. Onboarding's new failure message therefore rendered the generic text or a stale reason from an earlier attempt for this failure class. Mirror the sibling branches and record resolution.status.message. Also fixes the macos-swift SwiftFormat lint failure: the comment block directly above gatewayStartFailureMessage needed to be a doc comment (///), matching the repo's existing convention for declaration-adjacent comments. * fix(macos): bind Gateway start failure reason to its activation attempt LocalGatewayActivation.failed carried no data, so both onboarding call sites reread the mutable GatewayProcessManager.shared.lastFailureReason singleton after activateLocalGateway() returned. A later gateway-start attempt can overwrite that singleton before the caller gets around to reading it, so a stale wait could surface a newer attempt's reason (or vice versa) attributed to the wrong onboarding attempt. Widen LocalGatewayActivation.failed to carry reason: String?, captured inside activateLocalGateway() the instant waitUntilReady() resolves to false, and have both onboarding call sites map that bound value instead of rereading the singleton. CLIInstallPrompter's two `!= .failed` comparisons become `if case .failed = activation` pattern matches since `.failed` is no longer a payload-free value; its existing `case .failed:` message switch is unaffected, since bare-case patterns still match regardless of associated data. * fix(macos): satisfy SwiftFormat lint on CLIInstaller.swift Converts the LocalGatewayActivation.failed declaration comment to a doc comment and wraps activateLocalGateway's closing signature per config/swiftformat, matching the same docComments convention already applied elsewhere in this PR. No behavior change.