diff --git a/cc-haha/desktop/scripts/build-sidecars.ts b/cc-haha/desktop/scripts/build-sidecars.ts index a46293d..5bd2c4d 100644 --- a/cc-haha/desktop/scripts/build-sidecars.ts +++ b/cc-haha/desktop/scripts/build-sidecars.ts @@ -28,11 +28,11 @@ await mkdir(binariesDir, { recursive: true }) // 单一合并 sidecar:server / cli 共享一份 bun runtime + 共享依赖代码。 // 调用方(Tauri lib.rs / conversationService)通过第一个 positional 参数 -// 选择 'server' 或 'cli' 模式,详见 desktop/sidecars/claude-sidecar.ts。 +// 选择 'server' 或 'cli' 模式,详见 desktop/sidecars/heicode-sidecar.ts。 await compileExecutable({ - entrypoint: path.join(desktopRoot, 'sidecars/claude-sidecar.ts'), - outfileBase: path.join(binariesDir, `claude-sidecar-${targetTriple}`), - productName: 'Claude Code Sidecar', + entrypoint: path.join(desktopRoot, 'sidecars/heicode-sidecar.ts'), + outfileBase: path.join(binariesDir, `heicode-sidecar-${targetTriple}`), + productName: 'Heicode Sidecar', bunTarget, }) @@ -142,7 +142,7 @@ async function compileExecutable({ autoloadPackageJson: true, windows: { title: productName, - publisher: 'Claude Code', + publisher: 'Heicode', description: productName, hideConsole: true, }, diff --git a/cc-haha/desktop/sidecars/claude-sidecar.ts b/cc-haha/desktop/sidecars/heicode-sidecar.ts similarity index 78% rename from cc-haha/desktop/sidecars/claude-sidecar.ts rename to cc-haha/desktop/sidecars/heicode-sidecar.ts index cd0937f..320d668 100644 --- a/cc-haha/desktop/sidecars/claude-sidecar.ts +++ b/cc-haha/desktop/sidecars/heicode-sidecar.ts @@ -6,9 +6,9 @@ * 把所有运行模式合并到同一个二进制里,runtime 只保留一份;调用方通过 * 第一个 positional 参数选择模式: * - * claude-sidecar server --app-root --host 127.0.0.1 --port 12345 - * claude-sidecar cli --app-root [其它 CLI 参数...] - * claude-sidecar adapters --app-root [--feishu] [--telegram] + * heicode-sidecar server --app-root --host 127.0.0.1 --port 12345 + * heicode-sidecar cli --app-root [其它 CLI 参数...] + * heicode-sidecar adapters --app-root [--feishu] [--telegram] * * 任何模式都必须先做 process.env / process.argv 设置,再 await 进入相应的 * 子模块树。原因:src/server/index.ts、src/entrypoints/cli.tsx、以及 @@ -22,7 +22,7 @@ import { parseLauncherArgs, resolveSidecarInvocation } from './launcherRouting' const rawArgs = process.argv.slice(2) const invocation = resolveSidecarInvocation(rawArgs) if (!invocation.mode) { - console.error('claude-sidecar: missing mode argument (expected "server", "cli" or "adapters")') + console.error('heicode-sidecar: missing mode argument (expected "server", "cli" or "adapters")') process.exit(2) } const mode = invocation.mode @@ -45,7 +45,7 @@ if (mode === 'adapters') { } else if (mode === 'cli') { await import('../../src/entrypoints/cli.tsx') } else { - console.error(`claude-sidecar: unknown mode "${mode}" (expected "server", "cli" or "adapters")`) + console.error(`heicode-sidecar: unknown mode "${mode}" (expected "server", "cli" or "adapters")`) process.exit(2) } } @@ -73,12 +73,12 @@ async function runAdapters(rawArgs: string[]): Promise { enableTelegram = true continue } - console.warn(`claude-sidecar adapters: ignoring unknown arg "${arg}"`) + console.warn(`heicode-sidecar adapters: ignoring unknown arg "${arg}"`) } if (!enableFeishu && !enableTelegram) { console.error( - 'claude-sidecar adapters: must enable at least one of --feishu / --telegram', + 'heicode-sidecar adapters: must enable at least one of --feishu / --telegram', ) process.exit(2) } @@ -102,10 +102,10 @@ async function runAdapters(rawArgs: string[]): Promise { if (enableFeishu) { if (!config.feishu.appId || !config.feishu.appSecret) { console.warn( - '[claude-sidecar] --feishu requested but FEISHU_APP_ID / FEISHU_APP_SECRET missing in env or ~/.claude/adapters.json — skipping', + '[heicode-sidecar] --feishu requested but FEISHU_APP_ID / FEISHU_APP_SECRET missing in env or ~/.claude/adapters.json — skipping', ) } else { - console.log('[claude-sidecar] starting Feishu adapter') + console.log('[heicode-sidecar] starting Feishu adapter') // 副作用 import:feishu/index.ts 顶层会自动 new WSClient + start() await import('../../adapters/feishu/index.ts') started += 1 @@ -115,10 +115,10 @@ async function runAdapters(rawArgs: string[]): Promise { if (enableTelegram) { if (!config.telegram.botToken) { console.warn( - '[claude-sidecar] --telegram requested but TELEGRAM_BOT_TOKEN missing in env or ~/.claude/adapters.json — skipping', + '[heicode-sidecar] --telegram requested but TELEGRAM_BOT_TOKEN missing in env or ~/.claude/adapters.json — skipping', ) } else { - console.log('[claude-sidecar] starting Telegram adapter') + console.log('[heicode-sidecar] starting Telegram adapter') // 副作用 import:telegram/index.ts 顶层会自动 bot.start() await import('../../adapters/telegram/index.ts') started += 1 @@ -127,7 +127,7 @@ async function runAdapters(rawArgs: string[]): Promise { if (started === 0) { console.error( - '[claude-sidecar] no adapter could be started — check credentials in env or ~/.claude/adapters.json', + '[heicode-sidecar] no adapter could be started — check credentials in env or ~/.claude/adapters.json', ) process.exit(1) } diff --git a/cc-haha/desktop/sidecars/launcherRouting.test.ts b/cc-haha/desktop/sidecars/launcherRouting.test.ts index 84d2663..2051084 100644 --- a/cc-haha/desktop/sidecars/launcherRouting.test.ts +++ b/cc-haha/desktop/sidecars/launcherRouting.test.ts @@ -7,7 +7,7 @@ describe('resolveSidecarInvocation', () => { expect( resolveSidecarInvocation( ['server', '--host', '127.0.0.1'], - '/tmp/claude-sidecar', + '/tmp/heicode-sidecar', ), ).toEqual({ mode: 'server', diff --git a/cc-haha/desktop/sidecars/launcherRouting.ts b/cc-haha/desktop/sidecars/launcherRouting.ts index 2af59c6..fdd0130 100644 --- a/cc-haha/desktop/sidecars/launcherRouting.ts +++ b/cc-haha/desktop/sidecars/launcherRouting.ts @@ -57,7 +57,7 @@ export function parseLauncherArgs( } if (!appRoot) { - throw new Error('Missing --app-root for claude-sidecar') + throw new Error('Missing --app-root for heicode-sidecar') } return { appRoot, args: nextArgs } diff --git a/cc-haha/desktop/src-tauri/capabilities/default.json b/cc-haha/desktop/src-tauri/capabilities/default.json index 6beae47..712797f 100644 --- a/cc-haha/desktop/src-tauri/capabilities/default.json +++ b/cc-haha/desktop/src-tauri/capabilities/default.json @@ -20,7 +20,7 @@ "server", { "validator": "regex", "value": "^(--port|--host|--config)=.+$" } ], - "name": "binaries/claude-sidecar", + "name": "binaries/heicode-sidecar", "sidecar": true }, { @@ -28,7 +28,7 @@ "adapters", { "validator": "regex", "value": "^(feishu|telegram|lark|slack)(:.+)?$" } ], - "name": "binaries/claude-sidecar", + "name": "binaries/heicode-sidecar", "sidecar": true }, { @@ -36,7 +36,7 @@ "cli", { "validator": "regex", "value": "^.+$" } ], - "name": "binaries/claude-sidecar", + "name": "binaries/heicode-sidecar", "sidecar": true } ] @@ -49,7 +49,7 @@ "server", { "validator": "regex", "value": "^(--port|--host|--config)=.+$" } ], - "name": "binaries/claude-sidecar", + "name": "binaries/heicode-sidecar", "sidecar": true }, { @@ -57,7 +57,7 @@ "adapters", { "validator": "regex", "value": "^(feishu|telegram|lark|slack)(:.+)?$" } ], - "name": "binaries/claude-sidecar", + "name": "binaries/heicode-sidecar", "sidecar": true }, { @@ -65,7 +65,7 @@ "cli", { "validator": "regex", "value": "^.+$" } ], - "name": "binaries/claude-sidecar", + "name": "binaries/heicode-sidecar", "sidecar": true } ] @@ -78,7 +78,7 @@ "server", { "validator": "regex", "value": "^(--port|--host|--config)=.+$" } ], - "name": "binaries/claude-sidecar", + "name": "binaries/heicode-sidecar", "sidecar": true }, { @@ -86,7 +86,7 @@ "adapters", { "validator": "regex", "value": "^(feishu|telegram|lark|slack)(:.+)?$" } ], - "name": "binaries/claude-sidecar", + "name": "binaries/heicode-sidecar", "sidecar": true }, { @@ -94,7 +94,7 @@ "cli", { "validator": "regex", "value": "^.+$" } ], - "name": "binaries/claude-sidecar", + "name": "binaries/heicode-sidecar", "sidecar": true } ] diff --git a/cc-haha/desktop/src-tauri/src/lib.rs b/cc-haha/desktop/src-tauri/src/lib.rs index f322474..926cd06 100644 --- a/cc-haha/desktop/src-tauri/src/lib.rs +++ b/cc-haha/desktop/src-tauri/src/lib.rs @@ -50,7 +50,7 @@ struct AppExitState { /// 与 ServerState 平级的 adapter 子进程状态。 /// -/// adapter sidecar(claude-sidecar adapters --feishu --telegram)的生命周期 +/// adapter sidecar(heicode-sidecar adapters --feishu --telegram)的生命周期 /// 跟 server 不同:它没有 HTTP 端口可探活,没配凭据时会自己干净退出, /// 而且需要支持运行时热重启 —— 用户在设置页保存飞书 / Telegram 凭据后, /// 前端会通过 invoke('restart_adapters_sidecar') 来重启它,让新凭据生效。 @@ -679,7 +679,7 @@ fn start_server_sidecar(app: &AppHandle) -> Result { // 单一合并 sidecar:第一个参数选 server / cli / adapters 模式。 let mut sidecar = app .shell() - .sidecar("claude-sidecar") + .sidecar("heicode-sidecar") .map_err(|err| format!("resolve sidecar: {err}"))?; for (key, value) in terminal_environment(&default_shell()) { sidecar = sidecar.env(key, value); @@ -786,7 +786,7 @@ fn start_adapters_sidecar(app: &AppHandle) -> Result { let mut sidecar = app .shell() - .sidecar("claude-sidecar") + .sidecar("heicode-sidecar") .map_err(|err| format!("resolve sidecar: {err}"))?; for (key, value) in terminal_environment(&default_shell()) { sidecar = sidecar.env(key, value); @@ -865,9 +865,9 @@ fn stop_adapters_sidecar(app: &AppHandle) { #[cfg(target_os = "windows")] fn kill_windows_sidecars() { for image_name in [ - "claude-sidecar-x86_64-pc-windows-msvc.exe", - "claude-sidecar-aarch64-pc-windows-msvc.exe", - "claude-sidecar.exe", + "heicode-sidecar-x86_64-pc-windows-msvc.exe", + "heicode-sidecar-aarch64-pc-windows-msvc.exe", + "heicode-sidecar.exe", ] { let _ = StdCommand::new("taskkill") .args(["/F", "/T", "/IM", image_name]) diff --git a/cc-haha/desktop/src/theme/globals.css b/cc-haha/desktop/src/theme/globals.css index 03d5d30..a3c54e5 100644 --- a/cc-haha/desktop/src/theme/globals.css +++ b/cc-haha/desktop/src/theme/globals.css @@ -278,8 +278,8 @@ --color-diff-removed-word: rgba(229, 72, 77, 0.22); --color-diff-removed-gutter: rgba(229, 72, 77, 0.16); --color-diff-removed-text: #E5848A; - --color-diff-highlight-bg: rgba(197, 165, 114, 0.10); - --color-diff-highlight-gutter: rgba(197, 165, 114, 0.16); + --color-diff-highlight-bg: rgba(123, 107, 227, 0.10); + --color-diff-highlight-gutter: rgba(123, 107, 227, 0.18); --color-diff-title-bg: var(--color-surface-container-low); --color-diff-title-color: var(--color-text-tertiary); --color-diff-title-border: rgba(255, 255, 255, 0.06); @@ -439,8 +439,8 @@ --color-diff-removed-word: #F5B8B4; --color-diff-removed-gutter: #F9D4D0; --color-diff-removed-text: #C92A30; - --color-diff-highlight-bg: #FFF5D6; - --color-diff-highlight-gutter: #FFECB3; + --color-diff-highlight-bg: rgba(123, 107, 227, 0.08); + --color-diff-highlight-gutter: rgba(123, 107, 227, 0.16); --color-diff-title-bg: var(--color-surface-container-low); --color-diff-title-color: var(--color-text-tertiary); --color-diff-title-border: rgba(0, 0, 0, 0.06); @@ -455,7 +455,7 @@ --color-terminal-warning: #FEBC2E; --color-window-close-hover: #E81123; - --color-selection-bg: rgba(197, 165, 114, 0.30); + --color-selection-bg: rgba(123, 107, 227, 0.28); --color-selection-fg: #1B1B1F; }