diff --git a/docs/adr/0007-bundled-microsoft-conpty.md b/docs/adr/0007-bundled-microsoft-conpty.md index aab3a006..2162c6fc 100644 --- a/docs/adr/0007-bundled-microsoft-conpty.md +++ b/docs/adr/0007-bundled-microsoft-conpty.md @@ -20,3 +20,11 @@ WindTerm 2.7.0 官方说明为避免 vi 的非法字符而改用 WinPTY,[已 - 合并及切换产品默认前,验证声明配置的完整 shell/TUI、resize/历史、输入、工作区与回收合同;保留内部跳过、旧失败和环境缺口。正式路线与代码是否合入、是否通过验收分别记录。 - 后端选择不自动批准与原版不同的滚动区域或原生控制台行为。#34 / #41 / #56 中的具体原版差异继续留证;按原版优先调查,接受重要差异或修正原版缺陷前取得用户确认。 - 正式终端核心和当前 GUI 路线已由后续 [ADR-0008](0008-cpp-core-qt-widgets.md)确认;具体实现、原版差异与整体验收继续分开。性能数值容差在可靠基线后另行商定。 + +## 已知差异 + +按 #41 的裁决,以下差异**书面接受**,作为 R2 的声明边界而非待修缺陷。 + +- **主/备用屏 margin 的原生可见性**:随包固定 Microsoft ConPTY 在源控制台保留 `2;3r` / `4;5r`,末端恢复 `REGION_C` / `REGION_D` / `BOTTOM_FIXED`;但源控制台 CHAR_INFO 的 margin 仍与系统后端同为不匹配。系统后端的对照、VT-off 反例、旧 passthrough flag 的拒绝及第一方来源见[每屏 margin 的同源 A/B](../research/conpty-margin-backends.md)。 +- **边界**:依赖原生 Console API 读取屏幕状态的应用,可能与末端呈现不同步。该差异不阻塞 #27/#28 在 VT/transport/末端层的验收;原生层的证据缺口单独保留,不用末端通过替代。 +- **重启条件**:若后续需要原生 API 精确同步(例如依赖 `CONSOLE_SCREEN_BUFFER_INFO` 的应用),由 [#56](https://github.com/JavaZeroo/termforge/issues/56) 重新评估上游修复或可维护 MIT fork,并按 [ADR-0006](0006-confirmed-project-direction.md) 的原版优先原则重新取得用户确认。 diff --git a/docs/milestones/R2-local-terminal.md b/docs/milestones/R2-local-terminal.md index 5d090db0..40a02023 100644 --- a/docs/milestones/R2-local-terminal.md +++ b/docs/milestones/R2-local-terminal.md @@ -63,7 +63,7 @@ flowchart LR | 门槛与责任项 | 验收必须证明什么 | 不能代替验收的结果 | |---|---|---| | 回归可靠性:#36、#38(含 #40、#44、#57、#73、#80、#81、#85) | 持续输出中断、controller 子进程到 shell 的正常退出、原 10 秒纯夹具及保存/选择、四 shell 交接、hosted 准备和复制夹具失败路径均有明确阶段、字节、退出和自有 Job 回收证据;修复对应真实失败,最终声明配置的完整回归通过 | 多次重跑绿不能回填旧失败原因;close 后的退出码不能冒充自然退出;增加超时或跳过不能解除阻塞 | -| 终端模式:#27、#41 | 自主 C++ 核心主/备用屏、各自滚动区域、origin/wrap、光标/样式、历史隔离及 resize 交叉符合原版合同;实际固定 ConPTY 路径保留必要信息 | 历史候选 feed 正确不等于 C++ 已实现;末端不能猜测补回宿主已丢失的信息,重要原版差异仍待确认 | +| 终端模式:#27、#41 | **VT/transport/末端层**:自主 C++ 核心主/备用屏、各自滚动区域、origin/wrap、光标/样式、历史隔离及 resize 交叉符合原版合同;**原生控制台层**:CHAR_INFO 的每屏 margin 记为[已知差异](../adr/0007-bundled-microsoft-conpty.md#已知差异),依赖原生 Console API 的应用与末端不同步属已声明边界 | 历史候选 feed 正确不等于 C++ 已实现;末端不能猜测补回宿主已丢失的信息;固定 ConPTY 末端正确不等于原生 API 状态已修复 | | resize 与真实 TUI:#29、#28 | 逻辑/物理行、宽字符、历史与淘汰有明确策略;窗口、核心和真实子进程尺寸一致;固定应用逐一完成进入、操作、resize、退出、主屏恢复;回复、输入模式和 bracketed paste 字节经独立预期验证 | 离线回放、单独 Vim 成功或默认核心通过,不能代表整个候选产品矩阵;未声明应用不计完成 | | 复杂文字与输入:#30(参考 #39) | 在自主 C++ 和 Qt 声明配置核对原始标量、字素边界、宽度/光标、实际 glyph、复制与子进程接收,完成固定 IME 与同次八会话交叉 | #39 的 Alacritty/DWrite 限定结果不代表新核心或 Qt 已具备对应能力;未知 WindTerm 行为继续调查 | | 真实显示:#31 | 按[字体/显示合同](R2-font-display.md)记录实际不同 DPI、真实跨屏、焦点、IME/Find/rename、命中、隐藏会话及子进程尺寸;环境身份和重复结果可核对 | 相同 96 DPI 的两台显示器、受控消息、DIB 或实际提交时刻不能代替不同 DPI 或实际上屏证据;不得修改个人显示设置制造验收 |