Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions docs/adr/0007-bundled-microsoft-conpty.md
Original file line number Diff line number Diff line change
Expand Up @@ -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) 的原版优先原则重新取得用户确认。
2 changes: 1 addition & 1 deletion docs/milestones/R2-local-terminal.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 或实际上屏证据;不得修改个人显示设置制造验收 |
Expand Down