claude-code-best/packages
IronRookieCoder 4aa15ac52a fix(terminal): clear Ink UI on REPL shutdown
## Bug 详情
使用 /exit 退出交互式 REPL 后,终端可能保留提示输入、命令补全或其他 Ink 临时 UI,导致 shell prompt 与旧 UI 重叠,出现光标和显示异常。

## 根因
shutdown 路径会恢复 raw mode、bracketed paste、focus reporting 等终端模式,但普通主屏幕 REPL 不会清理 Ink 当前占用的可见区域。进程退出前 React 也不一定能完成 /exit 输入清空后的重新渲染。

## 修复方案
在 Ink 实例中增加主屏幕 shutdown 清理方法,根据最后一帧和声明光标位置清除 Ink 占用区域;gracefulShutdown 在非 alternate-screen 场景调用该方法,alternate-screen 继续保留原有退出逻辑。

## 变更要点
- 新增 ERASE_TO_END_SCREEN CSI 常量用于从当前光标位置清到屏幕底部
- 增加 Ink.clearMainScreenForShutdown() 统一计算并清理主屏幕 REPL 区域
- 在 gracefulShutdown 的终端清理阶段区分 alternate-screen 和主屏幕 Ink 实例

## 自测
- 已运行局部 Biome 检查:bunx biome check packages/@ant/ink/src/core/ink.tsx packages/@ant/ink/src/core/termio/csi.ts src/utils/gracefulShutdown.ts
- 已通过 Bun 直接导入验证新增 Ink 方法和 gracefulShutdown 模块可解析
- 全量 typecheck/build 当前被既有无关问题阻断:ctx_viz/LogoV2/doubaoSTT 类型错误,以及 generate-review-builtin 访问 git@github.com:zgsm-ai/costrict-review.git 失败
2026-05-15 19:03:35 +08:00
..
@ant fix(terminal): clear Ink UI on REPL shutdown 2026-05-15 19:03:35 +08:00
acp-link style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
agent-tools style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
audio-capture-napi style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
builtin-tools Revert "fix(bash): wake foreground task after auto-backgrounding" 2026-05-14 13:33:00 +08:00
color-diff-napi style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
image-processor-napi style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
mcp-client fix: 优化内存峰值与 CPU 性能,降低 100-300MB 内存占用 2026-05-02 00:45:03 +08:00
modifiers-napi style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
remote-control-server chore: 合并社区 upstream/main 代码至 v2.4.2 2026-05-12 11:55:04 +08:00
url-handler-napi style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
weixin style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
tsconfig.json feat: 重构供应商层次 (#286) 2026-04-17 09:33:14 +08:00