From 2fa60d54b78b9529f075c3ed8be2db0b6825ec9b Mon Sep 17 00:00:00 2001 From: hcyang Date: Thu, 25 Jun 2026 18:02:43 +0800 Subject: [PATCH 1/5] =?UTF-8?q?style(MessageView):=20=E5=9C=A8=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E8=A7=86=E5=9B=BE=E7=BB=84=E4=BB=B6=E4=B8=AD=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=B7=A6=E8=BE=B9=E8=B7=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 为外层Box组件增加marginLeft样式属性 - 保持其他样式和布局不变 - 修正UI布局中提示符内容的左侧间距问题 --- packages/cli/src/ui/components/MessageView/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/src/ui/components/MessageView/index.tsx b/packages/cli/src/ui/components/MessageView/index.tsx index 66df9625..a413f748 100644 --- a/packages/cli/src/ui/components/MessageView/index.tsx +++ b/packages/cli/src/ui/components/MessageView/index.tsx @@ -145,7 +145,7 @@ function PromptEchoLine({ }): React.ReactElement { const contentWidth = getPromptEchoContentWidth(width); return ( - + {"> "} From 545a4f54dd6bbb620c7f9d6cc907f17f659e5dc4 Mon Sep 17 00:00:00 2001 From: hcyang Date: Thu, 25 Jun 2026 18:09:58 +0800 Subject: [PATCH 2/5] =?UTF-8?q?test(cli):=20=E8=B0=83=E6=95=B4=20MessageVi?= =?UTF-8?q?ew=20=E7=BB=84=E4=BB=B6=E4=B8=AD=E7=9A=84=E7=BC=A9=E8=BF=9B?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改了消息渲染输出的缩进,从无空格缩进改为增加空格 - 确保多行消息内容对齐显示更美观 - 更新相关测试断言以匹配新的缩进格式 --- packages/cli/src/tests/message-view.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/cli/src/tests/message-view.test.ts b/packages/cli/src/tests/message-view.test.ts index fbd2b097..abe95ef3 100644 --- a/packages/cli/src/tests/message-view.test.ts +++ b/packages/cli/src/tests/message-view.test.ts @@ -132,7 +132,7 @@ test("MessageView echoes submitted user prompts with live prompt wrapping width" const msg = makeSessionMessage({ role: "user", content: "abcdefg" }); const output = renderToString(React.createElement(MessageView, { message: msg, width: 8 }), { columns: 8 }); - assert.equal(stripAnsi(output), "> abcdef\n g\n"); + assert.equal(stripAnsi(output), " > abcdef\n g\n"); }); test("MessageView echoes model changes with submitted prompt wrapping", () => { @@ -143,7 +143,7 @@ test("MessageView echoes model changes with submitted prompt wrapping", () => { }); const output = renderToString(React.createElement(MessageView, { message: msg, width: 8 }), { columns: 8 }); - assert.equal(stripAnsi(output), "> abcdef\n gh\n"); + assert.equal(stripAnsi(output), " > abcdef\n gh\n"); }); test("renderMessageToStdout renders assistant non-thinking messages with ✦", () => { From 7a447b80d86b7200bbf15003118e76363f2a1a47 Mon Sep 17 00:00:00 2001 From: hcyang Date: Thu, 25 Jun 2026 19:22:18 +0800 Subject: [PATCH 3/5] =?UTF-8?q?refactor(cli):=20=E7=BB=9F=E4=B8=80stdio?= =?UTF-8?q?=E8=BE=85=E5=8A=A9=E5=87=BD=E6=95=B0=E5=AF=BC=E5=85=A5=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=E9=A3=8E=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将cli.tsx和cli-args.ts中stdioHelpers的导入路径调整为统一的stdio-helpers格式 - 规范了模块文件命名,提高代码一致性 - 未改动核心功能逻辑,仅更改导入路径字符串 --- packages/cli/src/cli-args.ts | 2 +- packages/cli/src/cli.tsx | 2 +- packages/cli/src/utils/{stdioHelpers.ts => stdio-helpers.ts} | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename packages/cli/src/utils/{stdioHelpers.ts => stdio-helpers.ts} (100%) diff --git a/packages/cli/src/cli-args.ts b/packages/cli/src/cli-args.ts index 780869c0..b86eda41 100644 --- a/packages/cli/src/cli-args.ts +++ b/packages/cli/src/cli-args.ts @@ -6,7 +6,7 @@ import type { Argv } from "yargs"; import Yargs from "yargs"; import { getCliVersion } from "./utils/version"; -import { writeStderrLine } from "./utils/stdioHelpers"; +import { writeStderrLine } from "./utils/stdio-helpers"; import { hideBin } from "yargs/helpers"; // UUID v4 regex pattern for validation diff --git a/packages/cli/src/cli.tsx b/packages/cli/src/cli.tsx index af33bc42..80b11f08 100644 --- a/packages/cli/src/cli.tsx +++ b/packages/cli/src/cli.tsx @@ -7,7 +7,7 @@ import { setShellIfWindows, getProjectCode } from "@vegamo/deepcode-core"; import { checkForNpmUpdate, promptForPendingUpdate } from "./common/update-check"; import { AppContainer } from "./ui"; import { parseArguments } from "./cli-args"; -import { writeStderrLine, writeStdoutLine } from "./utils/stdioHelpers"; +import { writeStderrLine, writeStdoutLine } from "./utils/stdio-helpers"; import { getPackageJson } from "./utils/package"; import { CLI_VERSION } from "./generated/git-commit"; diff --git a/packages/cli/src/utils/stdioHelpers.ts b/packages/cli/src/utils/stdio-helpers.ts similarity index 100% rename from packages/cli/src/utils/stdioHelpers.ts rename to packages/cli/src/utils/stdio-helpers.ts From 34ea71fd0d45064be8a0f82d1cec55db9455df68 Mon Sep 17 00:00:00 2001 From: hcyang Date: Thu, 25 Jun 2026 19:24:07 +0800 Subject: [PATCH 4/5] =?UTF-8?q?refactor(cli):=20=E7=BB=9F=E4=B8=80stdio?= =?UTF-8?q?=E8=BE=85=E5=8A=A9=E5=87=BD=E6=95=B0=E5=AF=BC=E5=85=A5=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=E9=A3=8E=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将cli.tsx和cli-args.ts中stdioHelpers的导入路径调整为统一的stdio-helpers格式 - 规范了模块文件命名,提高代码一致性 - 未改动核心功能逻辑,仅更改导入路径字符串 --- packages/cli/src/utils/package.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/cli/src/utils/package.ts b/packages/cli/src/utils/package.ts index 1f195294..3c1401af 100644 --- a/packages/cli/src/utils/package.ts +++ b/packages/cli/src/utils/package.ts @@ -3,11 +3,7 @@ import { fileURLToPath } from "node:url"; import path from "node:path"; import { CLI_VERSION } from "../generated/git-commit"; -export type PackageJson = BasePackageJson & { - config?: { - sandboxImageUri?: string; - }; -}; +export type PackageJson = BasePackageJson; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); From 377e04161e925de4c3e7413946020e4dc48c4dcb Mon Sep 17 00:00:00 2001 From: Ji Zhang Date: Fri, 26 Jun 2026 10:36:58 +0800 Subject: [PATCH 5/5] fix: the new left margin need to be included in width calculations --- packages/cli/src/tests/message-view.test.ts | 20 ++++++++++++++++--- .../src/ui/components/MessageView/index.tsx | 6 ++++-- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/packages/cli/src/tests/message-view.test.ts b/packages/cli/src/tests/message-view.test.ts index abe95ef3..c1c2d69d 100644 --- a/packages/cli/src/tests/message-view.test.ts +++ b/packages/cli/src/tests/message-view.test.ts @@ -127,12 +127,19 @@ test("renderMessageToStdout shows (no content) for empty user messages", () => { }); test("MessageView echoes submitted user prompts with live prompt wrapping width", () => { - assert.equal(getPromptEchoContentWidth(8), 6); + assert.equal(getPromptEchoContentWidth(8), 5); const msg = makeSessionMessage({ role: "user", content: "abcdefg" }); const output = renderToString(React.createElement(MessageView, { message: msg, width: 8 }), { columns: 8 }); - assert.equal(stripAnsi(output), " > abcdef\n g\n"); + const text = stripAnsi(output); + assert.equal(text, " > abcde\n fg\n"); + assert.ok( + text + .trimEnd() + .split("\n") + .every((line) => line.length <= 8) + ); }); test("MessageView echoes model changes with submitted prompt wrapping", () => { @@ -143,7 +150,14 @@ test("MessageView echoes model changes with submitted prompt wrapping", () => { }); const output = renderToString(React.createElement(MessageView, { message: msg, width: 8 }), { columns: 8 }); - assert.equal(stripAnsi(output), " > abcdef\n gh\n"); + const text = stripAnsi(output); + assert.equal(text, " > abcde\n fgh\n"); + assert.ok( + text + .trimEnd() + .split("\n") + .every((line) => line.length <= 8) + ); }); test("renderMessageToStdout renders assistant non-thinking messages with ✦", () => { diff --git a/packages/cli/src/ui/components/MessageView/index.tsx b/packages/cli/src/ui/components/MessageView/index.tsx index a413f748..12b8229d 100644 --- a/packages/cli/src/ui/components/MessageView/index.tsx +++ b/packages/cli/src/ui/components/MessageView/index.tsx @@ -13,6 +13,7 @@ import type { DiffPreviewLine, MessageViewProps } from "./types"; import { RawMode, useRawModeContext } from "../../contexts"; const PROMPT_ECHO_PREFIX_WIDTH = 2; +const PROMPT_ECHO_MARGIN_LEFT = 1; export function MessageView({ message, collapsed, width = 80 }: MessageViewProps): React.ReactElement | null { const { mode } = useRawModeContext(); @@ -131,7 +132,7 @@ export function MessageView({ message, collapsed, width = 80 }: MessageViewProps } export function getPromptEchoContentWidth(width: number): number { - return Math.max(1, width - PROMPT_ECHO_PREFIX_WIDTH); + return Math.max(1, width - PROMPT_ECHO_MARGIN_LEFT - PROMPT_ECHO_PREFIX_WIDTH); } function PromptEchoLine({ @@ -144,8 +145,9 @@ function PromptEchoLine({ attachmentCount?: number; }): React.ReactElement { const contentWidth = getPromptEchoContentWidth(width); + const containerWidth = Math.max(1, width - PROMPT_ECHO_MARGIN_LEFT); return ( - + {"> "}