diff --git a/docs/FEATURES.md b/docs/FEATURES.md index 44d5c47c..74b58bfe 100644 --- a/docs/FEATURES.md +++ b/docs/FEATURES.md @@ -53,7 +53,7 @@ Qt 构建显式准备并部署[固定微软 CRT 14.51.36247.0](../third_party/ms | 主区/底部多标签与分屏 | **限定验收**:两个区域独立选中标签,共计最多 8 个真实本地会话;主区可有一个真实左右 split,Alt+- 创建、Alt+Z 隐藏/恢复、Alt+Left/Right 切换、Alt+X 关闭,[两轮独立输出/后台/焦点/回收证据](../experiments/shell/results/2026-10-24-r2-main-split/validation.json) | 仅主区一个 split;任意嵌套、标签排序/拖放、复制会话、标签搜索/颜色未完成;分屏持久化范围见配置行 | R2 / R3 / R4 | | 基础窗口操作 | **限定验收**:新建/切换/关闭/重命名、五条分隔线、面板显隐、底部焦点模式 | 完整会话动作/快捷键、命令面板、目标 Focus/SyncInput 行为 | R1 / R4 | | 工作区外观 | **实现中,未验收**:当前 Qt Widgets 路线待迁移,以下为既有 Win32 原型证据;两种逻辑尺寸下部分外框/层级依据直接取证;UI 字体来自独立 OFL 来源,私有加载、实际 GDI face/em/行高与缺失资产失败有自动检查 | 不是像素等价;图标、主题/透明度、多语言及所有状态仍缺。Explorer/Filer/Outline 当前为空区域 | R2 / R3 / R4 | -| DPI 与文字缩放 | **限定验收**:每会话 50%–200%,受控 96→144→192→96;[字体/显示合同](milestones/R2-font-display.md)明确 12×26 基准网格。两台真实 96-DPI 显示器间往返两次保持窗口、rename 焦点、隐藏标签和网格,[证据](../experiments/shell/results/2026-10-24-r2-monitor-font/validation.json)明确 `distinct_dpi=false`;v2 会话恢复另覆盖 100%/150%/75% zoom。[隔离 Windows 11 环境](research/r2-win11-display-environment.md)另有两个实际 96/120-DPI 输出和独立 Win32 窗口两轮往返,仅属环境基础 | 正式 Qt 产品不同 DPI 的完整交互、实际呈现和真实 IME 跨屏仍未验收;旧恢复证据为同一 96-DPI 私有 desktop,目标字形/逐字形 fallback 未等价 | R2 | +| DPI 与文字缩放 | **限定验收**:每会话 50%–200%,受控 96→144→192→96;[字体/显示合同](milestones/R2-font-display.md)明确 12×26 基准网格。两台真实 96-DPI 显示器间往返两次保持窗口、rename 焦点、隐藏标签和网格,[证据](../experiments/shell/results/2026-10-24-r2-monitor-font/validation.json)明确 `distinct_dpi=false`;v2 会话恢复另覆盖 100%/150%/75% zoom。[隔离 Windows 11 环境](research/r2-win11-display-environment.md)另有两个实际 96/120-DPI 输出和独立 Win32 窗口两轮往返,仅属环境基础 | 正式 Qt 产品**单显示器 96/144 DPI** 的完整交互与实际呈现仍未验收;真实跨屏迁移已按[决策 4C](adr/0009-r2-scope-decisions.md)移出 R2、推迟 R4,由 [#297](https://github.com/JavaZeroo/termforge/issues/297) 跟踪。旧恢复证据为同一 96-DPI 私有 desktop,目标字形/逐字形 fallback 未等价 | R2 | | 配置与会话持久化 | **限定验收**:有界 v2、原子替换、v1 迁移、空会话与损坏/未知版本保护;[多会话恢复](../experiments/shell/results/2026-10-25-workspace-restore-multi/validation.json)覆盖 shell 类型/目录/标题/zoom/split/窗口,[迁移回退](../experiments/shell/results/2026-10-25-workspace-recovery-guards/validation.json)及[写失败与关闭策略](../experiments/shell/results/2026-10-25-workspace-write-failure/validation.json)均有真实验证。[#61 的合法编辑 BS 前缀](../experiments/shell/results/2026-10-26-workspace-restore-bs/validation.json)与 [#72 的空记录 CR 重绘](../experiments/shell/results/2026-10-27-workspace-empty-cr/validation.json)已限定修正;后者同源码三配置共 18 次保存/恢复/钳制通过;目录/版本完成按[独立输出与新提示符合同](research/workspace-restore-transport-oracle.md)核对;只重建白名单 shell,不恢复原进程/历史;保存失败保留窗口,显式放弃保存才跳过 | 仅当前单工作区、正常窗口和白名单本地会话;偏好、分组/搜索、最大化/多窗口与文字标记恢复归后续。真实 DPI、呈现和 #38 等独立回归不因此视为通过,R2 出口未宣告完成 | R2 / R3 / R4 | | 文本增强与辅助面板 | **未实现** | 高亮/时间戳/折叠/outline、补全与 Fish 增强、命令历史、Sender/QuickBar、Free Type Mode(输入模式,行为待取证)、vim 本地/远程键位、锁屏、Sysmon | R4 | diff --git a/docs/milestones/R2-local-terminal.md b/docs/milestones/R2-local-terminal.md index 7a5b0bca..d62d192b 100644 --- a/docs/milestones/R2-local-terminal.md +++ b/docs/milestones/R2-local-terminal.md @@ -66,7 +66,7 @@ flowchart LR | 终端模式:#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 范围限定单显示器**(96/144 DPI 的渲染正确性);真实跨屏迁移**移出 R2**,推迟到 R4(决策 4C,见 [ADR-0009](../adr/0009-r2-scope-decisions.md))。单屏部分仍需按[字体/显示合同](R2-font-display.md)记录实际 DPI、焦点、IME/Find/rename、命中、隐藏会话及子进程尺寸;环境身份和重复结果可核对 | 相同 96 DPI 的两台显示器、受控消息、DIB 或实际提交时刻不能代替不同 DPI 或实际上屏证据;不得修改个人显示设置制造验收。跨屏证据缺失不构成 R2 阻塞,但也不能被表述为已验证 | +| 真实显示:#31 | **R2 范围限定单显示器**(96/144 DPI 的渲染正确性);真实跨屏迁移**移出 R2**,推迟到 R4 并由 [#297](https://github.com/JavaZeroo/termforge/issues/297) 跟踪(决策 4C,见 [ADR-0009](../adr/0009-r2-scope-decisions.md))。单屏部分仍需按[字体/显示合同](R2-font-display.md)记录实际 DPI、焦点、IME/Find/rename、命中、隐藏会话及子进程尺寸;环境身份和重复结果可核对 | 相同 96 DPI 的两台显示器、受控消息、DIB 或实际提交时刻不能代替不同 DPI 或实际上屏证据;不得修改个人显示设置制造验收。跨屏证据缺失不构成 R2 阻塞,但也不能被表述为已验证 | | 产品架构:#34 | 按 ADR-0007/0008 已定路线,以实际工作流、原版对标及成本证据收敛核心/历史/GUI/传输接口、资源与维护边界;记录实际支持配置 | 路线已确认不等于功能、平台、长期资源或性能验收通过;重大替换、重要差异和数值门槛仍需用户确认 | | 开发版交付:#35 | 按**决策 5C**:R2 交付范围为"本地终端基础 + 已知差异清单"(见 [ADR-0009](../adr/0009-r2-scope-decisions.md)),产物需通过干净构建、依赖/字体许可与清单审计、解压运行、shell/TUI/文字/配置升级工作流,并随附逐条列出的未实现/未验证项 | Alpha 1、源码构建成功、短驻留或某一 CI 通过,不代表 R2 日常开发包、长期稳定或 WindTerm 性能等价;已知差异清单不完整则该交付不成立 |