From cd8c34efe0e5e12ba5abe3277ffe477b10ea6aac Mon Sep 17 00:00:00 2001 From: Haitao Pan Date: Sat, 2 May 2026 21:46:01 +0800 Subject: [PATCH] fix: clarify openclaw gateway offline error --- .../app_controller_desktop_runtime_helpers.dart | 6 ++++++ .../runtime/assistant_connection_state_test.dart | 16 ++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/lib/app/app_controller_desktop_runtime_helpers.dart b/lib/app/app_controller_desktop_runtime_helpers.dart index ed57c237..df8b1fbf 100644 --- a/lib/app/app_controller_desktop_runtime_helpers.dart +++ b/lib/app/app_controller_desktop_runtime_helpers.dart @@ -230,6 +230,12 @@ extension AppControllerDesktopRuntimeHelpers on AppController { if (lowered.contains('gateway not connected') || lowered.contains('code: offline') || lowered.contains('offlin') && lowered.contains('gateway')) { + if (target.isGateway) { + return appText( + 'OpenClaw Gateway 当前未连接。请确认 xworkmate-bridge 节点本机 127.0.0.1:18789 可用后重试。', + 'OpenClaw Gateway is not connected. Confirm the xworkmate-bridge host can reach 127.0.0.1:18789, then try again.', + ); + } final profile = gatewayProfileForAssistantExecutionTargetInternal(target); final address = gatewayAddressLabelInternal(profile); return address == appText('未连接目标', 'No target') diff --git a/test/runtime/assistant_connection_state_test.dart b/test/runtime/assistant_connection_state_test.dart index 5f852ceb..82994394 100644 --- a/test/runtime/assistant_connection_state_test.dart +++ b/test/runtime/assistant_connection_state_test.dart @@ -122,6 +122,22 @@ void main() { }, ); + test( + 'labels gateway offline errors as OpenClaw runtime failures', + () async { + final controller = await _isolatedController(); + addTearDown(controller.dispose); + + final label = controller.gatewayExecutionErrorLabelInternal( + 'gateway not connected', + target: AssistantExecutionTarget.gateway, + ); + + expect(label, contains('OpenClaw Gateway 当前未连接')); + expect(label, isNot(contains('xworkmate-bridge 未连接'))); + }, + ); + test('keeps signed-out generic runtime failures disconnected', () async { final controller = await _isolatedController(); addTearDown(controller.dispose);