diff --git a/desktop/src/components/chat/MessageList.test.tsx b/desktop/src/components/chat/MessageList.test.tsx index 603ee9a2..ca1e83d2 100644 --- a/desktop/src/components/chat/MessageList.test.tsx +++ b/desktop/src/components/chat/MessageList.test.tsx @@ -281,4 +281,32 @@ describe('MessageList nested tool calls', () => { '先看 CLI 和服务端入口。\n再看 desktop 前后端边界。' ) }) + + it('shows raw startup details under translated CLI startup errors', () => { + useChatStore.setState({ + sessions: { + [ACTIVE_TAB]: makeSessionState({ + messages: [ + { + id: 'error-1', + type: 'error', + code: 'CLI_START_FAILED', + message: + 'CLI exited during startup (code 1): Claude Code on Windows requires git-bash (https://git-scm.com/downloads/win).', + timestamp: 1, + }, + ], + }), + }, + }) + + render() + + expect(screen.getByText('Failed to start CLI process.')).toBeTruthy() + expect( + screen.getByText( + 'CLI exited during startup (code 1): Claude Code on Windows requires git-bash (https://git-scm.com/downloads/win).', + ), + ).toBeTruthy() + }) }) diff --git a/desktop/src/components/chat/MessageList.tsx b/desktop/src/components/chat/MessageList.tsx index 4ee13c6b..a50286ea 100644 --- a/desktop/src/components/chat/MessageList.tsx +++ b/desktop/src/components/chat/MessageList.tsx @@ -222,9 +222,18 @@ export const MessageBlock = memo(function MessageBlock({ const errorKey = message.code ? `error.${message.code}` as TranslationKey : null const errorText = errorKey ? t(errorKey) : null const displayMessage = (errorText && errorText !== errorKey) ? errorText : message.message + const showRawDetail = + Boolean(message.message) && + message.message.trim() !== '' && + message.message !== displayMessage return (
Error: {displayMessage} + {showRawDetail && ( +
+ {message.message} +
+ )}
) }