mirror of
https://github.com/NanmiCoder/cc-haha
synced 2026-07-15 12:53:31 +08:00
Expose raw CLI startup details in desktop error cards so Windows failures are diagnosable
The chat UI translated CLI startup failures to a generic localized string and hid the server-provided detail entirely. That made remote Windows debugging guesswork even when the backend had already captured the real stderr payload. This change keeps the localized summary but renders the raw startup detail underneath when it differs, and adds a regression test covering the Git Bash missing case. Constraint: Windows Server repro is happening remotely, so the immediate value is better diagnostics rather than guessing a root cause locally Rejected: Leave the generic translation only | obscures actionable stderr and slows every remote repro cycle Confidence: high Scope-risk: narrow Reversibility: clean Directive: For translated startup errors, preserve backend detail somewhere visible unless it duplicates the summary Tested: cd desktop && bunx vitest run src/components/chat/MessageList.test.tsx Tested: cd desktop && bun run lint Not-tested: Full desktop interaction flow on Windows Server 2022 Related: GitHub issue #62
This commit is contained in:
parent
e0b74cecae
commit
b7396e4f65
@ -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(<MessageList />)
|
||||
|
||||
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()
|
||||
})
|
||||
})
|
||||
|
||||
@ -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 (
|
||||
<div className="mb-3 px-4 py-2.5 rounded-lg bg-red-50 border border-red-200 text-sm text-[var(--color-error)]">
|
||||
<strong>Error:</strong> {displayMessage}
|
||||
{showRawDetail && (
|
||||
<div className="mt-1 whitespace-pre-wrap text-xs text-red-700/85">
|
||||
{message.message}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user