|
1 | 1 | import claudeLogo from "/claude_logo.png"; |
| 2 | +import claudeCodeLogo from "/claude_code_logo.png"; |
2 | 3 | import openaiLogo from "/openai_logo.png"; |
3 | 4 | import cursorLogo from "/cursor_logo.png"; |
4 | 5 | import copilotLogo from "/copilot_logo.png"; |
@@ -30,6 +31,7 @@ import { |
30 | 31 | getMcpJamStyleVariables, |
31 | 32 | } from "@/config/mcpjam-client-context"; |
32 | 33 | import { ClaudeMarkIndicator } from "./indicators/claude-mark"; |
| 34 | +import { ClaudeCodeCliIndicator } from "./indicators/claude-code-cli"; |
33 | 35 | import { ChatGptDotIndicator } from "./indicators/chatgpt-dot"; |
34 | 36 | import { CursorShineIndicator } from "./indicators/cursor-shine"; |
35 | 37 | import { CopilotPulseIndicator } from "./indicators/copilot-pulse"; |
@@ -250,6 +252,36 @@ export const CLAUDE_HOST_STYLE: HostStyleDefinition = { |
250 | 252 | }, |
251 | 253 | }; |
252 | 254 |
|
| 255 | +// Claude Code is a terminal agent with no chat chrome of its own, so it |
| 256 | +// borrows Claude's desktop chat surface wholesale (style variables, fonts, |
| 257 | +// background, MCP profile) and only differs in brand identity: its own |
| 258 | +// label, logo, and a CLI spinner busy-state instead of the claude.ai |
| 259 | +// mascot. Mirrors how CODEX_HOST_STYLE borrows ChatGPT's surface. |
| 260 | +// |
| 261 | +// Capabilities reuse Claude's preset here, but the "claude-code" template |
| 262 | +// (`client-templates.ts`) overrides hostCapabilities to `{}` since the CLI |
| 263 | +// renders no MCP Apps — the style preset is just the fallback if a host |
| 264 | +// ever clears that override. |
| 265 | +export const CLAUDE_CODE_HOST_STYLE: HostStyleDefinition = { |
| 266 | + id: "claude-code", |
| 267 | + mcp: { |
| 268 | + protocolOverride: UIType.MCP_APPS, |
| 269 | + platform: CLAUDE_DESKTOP_PLATFORM, |
| 270 | + fontCss: CLAUDE_DESKTOP_FONT_CSS, |
| 271 | + mcpAppsCapabilities: MCP_APPS_FULL_SURFACE, |
| 272 | + resolveStyleVariables: getClaudeDesktopStyleVariables, |
| 273 | + }, |
| 274 | + chatUi: { |
| 275 | + label: "Claude Code", |
| 276 | + shortLabel: "Claude Code-style host", |
| 277 | + pickerDescription: "Anthropic Claude Code CLI chrome", |
| 278 | + logoSrc: claudeCodeLogo, |
| 279 | + family: "claude", |
| 280 | + resolveChatBackground: (theme) => CLAUDE_DESKTOP_CHAT_BACKGROUND[theme], |
| 281 | + loadingIndicator: ClaudeCodeCliIndicator, |
| 282 | + }, |
| 283 | +}; |
| 284 | + |
253 | 285 | export const CHATGPT_HOST_STYLE: HostStyleDefinition = { |
254 | 286 | id: "chatgpt", |
255 | 287 | mcp: { |
@@ -469,4 +501,5 @@ export const BUILT_IN_HOST_STYLES: readonly HostStyleDefinition[] = [ |
469 | 501 | CURSOR_HOST_STYLE, |
470 | 502 | COPILOT_HOST_STYLE, |
471 | 503 | CODEX_HOST_STYLE, |
| 504 | + CLAUDE_CODE_HOST_STYLE, |
472 | 505 | ]; |
0 commit comments