gemini-cli 修复滚动容器右边框溢出:根因是宽度没扣掉边框占位
villahernandez-coder · ghdev · 2026-10-14
gemini-cli 的 PR #29742 修复了一个 UI 渲染故障:带边框的工具输出容器(compact 模式下展开的 WriteFile/Edit 视图、alternate buffer 模式下可滚动的工具结果)在同时出现纵向滚动条和自动换行文本时,会间歇性突破右侧边框。
根因
- DenseToolMessage 中外层边框 Box(borderStyle=round、paddingX=1,占用 4 列边框/内边距)上限为 PAYLOADMAXWIDTH(124),内部宽度应为 120 列;但 ScrollableList 被传入 Math.min(PAYLOADMAXWIDTH, ...) 却未减去 PAYLOADBORDERCHROMEWIDTH,宽终端(≥135 列)下内层列表达 124 列,覆盖右边框并把滚动条挤出容器。窄终端下则因扣除 4 列 gutter 而留下 4 列空隙。colorizeCode 与 renderDiffLines 也拿到了错误的安全宽度。
- ToolResultDisplay 在 alternate buffer 下用 <Scrollable width={childWidth}>(预留 1 列 paddingRight 给滚动条),但 MarkdownDisplay、DiffRenderer 等嵌套组件被传入 childWidth 而非 childWidth - 1。
修复
- 在两处显式计算 safeContentWidth = Math.max(0, totalContainerWidth - borderSpace - scrollbarBuffer),并应用到嵌套 Box 及文本换行/diff/markdown 容器,使换行文本和 diff 分隔线不再与滚动条冲突或覆盖边框。
「编程与Agent」频道最新
- Reflection AI 演示 Beam 接入 opencode,自动微调 Gemma-4 准确率提升 66.5% — danielhanchen · 2026-10-23
- Cua 推出 Spaces SDK:让 Hermes 等 Agent 跑在你自己的电脑沙箱里 — Teknium · 2026-10-23
- PHP 爆两个未认证 RCE 漏洞,ProjectDiscovery 推全网免费告警服务 — cyb3rops · 2026-10-23
- Modal 开源 Spindle:Tinker 兼容自托管训练服务器,按 GPU 计费替代按 token 计费 — josh_wills · 2026-10-23
- 用 Cosmos DB Agent Kit 复查 Claude 写的 Azure 应用,实测能省多少 RU — adnan_hashmi · 2026-10-23
- 开发者弃用聊天线程,改用可视化面板管理多个 AI Agent — Salmaaboukarr · 2026-10-23