Skip to content
Merged
18 changes: 18 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,14 @@ add_executable(resize_height_measured_test experiments/core/resize_height_measur
target_link_libraries(resize_height_measured_test PRIVATE termforge_core)
termforge_warnings(resize_height_measured_test)

add_executable(resize_combined_test experiments/core/resize_combined_test.cpp)
target_link_libraries(resize_combined_test PRIVATE termforge_core)
termforge_warnings(resize_combined_test)

add_executable(resize_preserving_transaction_test experiments/core/resize_preserving_transaction_test.cpp)
target_link_libraries(resize_preserving_transaction_test PRIVATE termforge_core)
termforge_warnings(resize_preserving_transaction_test)

add_executable(resize_unicode_test experiments/core/resize_unicode_test.cpp)
target_link_libraries(resize_unicode_test PRIVATE termforge_core)
termforge_warnings(resize_unicode_test)
Expand Down Expand Up @@ -426,6 +434,10 @@ add_test(NAME projection_job_core COMMAND projection_job_test)
set_tests_properties(projection_job_core PROPERTIES TIMEOUT 10)
add_test(NAME resize_height_measured_core COMMAND resize_height_measured_test)
set_tests_properties(resize_height_measured_core PROPERTIES TIMEOUT 10)
add_test(NAME resize_combined_core COMMAND resize_combined_test)
set_tests_properties(resize_combined_core PROPERTIES TIMEOUT 10)
add_test(NAME resize_preserving_transaction_core COMMAND resize_preserving_transaction_test)
set_tests_properties(resize_preserving_transaction_core PROPERTIES TIMEOUT 60)
add_test(NAME retained_resize_unicode_core COMMAND resize_unicode_test)
set_tests_properties(retained_resize_unicode_core PROPERTIES TIMEOUT 10)
add_test(NAME retained_resize_combining_core COMMAND resize_combining_test)
Expand Down Expand Up @@ -505,6 +517,8 @@ add_test(NAME edit_csi_core COMMAND edit_csi_test)
termforge_add_python_test(windterm_resize_geometry_optimized -O -m unittest research.ui.test_resize_geometry_reference research.ui.test_export_resize_geometry_reference -v)
termforge_add_python_test(windterm_resize_height_measured_reference -m unittest research.ui.test_resize_height_measured_reference research.ui.test_export_resize_height_measured_reference -v)
termforge_add_python_test(windterm_resize_height_measured_optimized -O -m unittest research.ui.test_resize_height_measured_reference research.ui.test_export_resize_height_measured_reference -v)
termforge_add_python_test(windterm_resize_combined_reference -m unittest research.ui.test_resize_combined_reference research.ui.test_export_resize_combined_reference -v)
termforge_add_python_test(windterm_resize_combined_optimized -O -m unittest research.ui.test_resize_combined_reference research.ui.test_export_resize_combined_reference -v)
find_program(TERMFORGE_NODE_EXECUTABLE NAMES node)
if(TERMFORGE_NODE_EXECUTABLE)
add_test(NAME windterm_resize_address_controller COMMAND ${TERMFORGE_NODE_EXECUTABLE}
Expand Down Expand Up @@ -551,6 +565,10 @@ add_test(NAME edit_csi_core COMMAND edit_csi_test)
${CMAKE_SOURCE_DIR}/research/ui/test_resize_height_measured_stages.js
${CMAKE_SOURCE_DIR}/research/ui/resize_height_measured_reference.js)
set_tests_properties(windterm_resize_height_measured_controller PROPERTIES TIMEOUT 15)
add_test(NAME windterm_resize_combined_controller COMMAND ${TERMFORGE_NODE_EXECUTABLE}
${CMAKE_SOURCE_DIR}/research/ui/test_resize_combined_stages.js
${CMAKE_SOURCE_DIR}/research/ui/resize_combined_reference.js)
set_tests_properties(windterm_resize_combined_controller PROPERTIES TIMEOUT 15)
endif()
# Pure offline regressions only; OwnedNodeTests and frozen batches are never launched here.
termforge_add_python_test(node_contract_export -m unittest research.ui.test_export_node_contract_deadline research.ui.test_node_contract_deadline.CheckpointTests research.ui.test_node_contract_deadline.LauncherVerdictTests -v)
Expand Down
2 changes: 2 additions & 0 deletions docs/EVIDENCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,10 @@
| 保留正文、Unicode投影与编辑的分配置整合回归 | [当前固定源码与前后身份](../experiments/core/results/2026-11-02-projection-job/README.md):源码`ef1da6e`,核心31/31;Qt/固定ConPTY默认路径4/4。[旧30/4](../experiments/core/results/2026-11-02-resize-caret/README.md)、[旧28/4](../experiments/core/results/2026-11-02-display-projection-unicode/README.md)及其历史记录保持原身份 | 两配置独立。66份选定源码先冻结,35个实际测试EXE及产品/辅助程序/部署依赖运行后固定,非完整构建输入manifest。后续纯高度单项1/1单列;Qt仍未接新保留/投影,B/CD不豁免,不是完整R2或性能验收 |
| 增量显示投影与跨步骤源身份 | [旧停滞诊断、13工程用例及身份](../experiments/core/results/2026-11-02-projection-job/README.md):500单列片段按200/200/100步完成一行,跨200边界反向选择/复制/Find一致,取消/同身份导入/旧owner等拒绝 | 新API无先行RED;旧诊断exit0表示复现停滞,归档于运行后。每步仍限200,不发布半页;源锚点非全局视觉行号。持续输出可能反复取消,任意定位/Qt调度未交付 |
| 原版窗口高度分配及纯高度行为 | [独立两状态几何](../research/ui/results/2026-11-02-resize-geometry-reference/README.md)、[三阶段原版正文/DSR](../research/ui/results/2026-11-02-resize-height-measured-reference/README.md)和[核心12阶段回放](../experiments/core/results/2026-11-02-height-measured/README.md):window749→569实际改变180px,终端区域少120px;20→14→20行时正文不变,DSR19→14→14、scroll0→5→5 | 原10行预测失败保留,不回填缺失窗口测量;不把两状态比例推广。原top=null且非完整grid,scroll不证明内部物理历史。核心首轮夹具source_end越界保留,修夹具后1/1;没有生产修复或宽高组合/Qt验收 |
| 自主 C++ 共 owner 宽高组合保留事务(#27/#29 显式入口) | [原版五阶段记录](../research/ui/results/2026-11-02-resize-combined-reference/README.md)、[字面回放、分配失败 sweep 与身份](../experiments/core/results/2026-11-02-retained-combined/README.md):`13186bf` 的旧"宽度保留 + 旧高度"路径 8/20 阶段、80/560 断言失败;`resize_preserving` 后 20/20、0/560,映射/选择 20/20、744 断言零失败;活动主屏/备用屏缩增各 151/42 次注入失败后重试一致 | 固定 75 B ASCII 主屏五阶段、后续仅 DSR;只走显式入口。默认 `Screen::resize` 与 Qt 仍物理裁剪,隐藏主屏、Unicode、resize 后写入、历史淘汰、Qt/固定 ConPTY 与性能未验收;工程不变量不是原版 oracle |
| 自主 C++ 区域续接、历史结构通知与每屏 origin | [模式交叉与红绿](../experiments/core/results/2026-11-02-r27-mode-cross/README.md)、[每屏 origin 修正](../experiments/core/results/2026-11-02-origin-frame/README.md)、[原版固定控制对照](../research/ui/results/2026-11-02-mode-state-reference/README.md) | 区域自动换行的跨行复制/Find、RIS/ED3 结构通知、Unicode/分块/重复/异常输入与独立主屏 origin 恢复;当前物理 resize 策略测试不冒充原版匹配,完整 #27 继续开放 |
| Qt / 固定 ConPTY 模式与正文 resize 差异 | [独立字面预期及失败运输证据](../experiments/shell/results/2026-11-02-qt-terminal-modes/README.md) | 模式阶段经公开 Qt 按键和原生网格核对;缩窄后原生 reflow 与核心物理裁剪不同步,独立运输捕获未见重排字节。失败诊断与模式回归分列,#29 的正文重排和完整 #27 不由基础尺寸通过代替 |
| 固定 ConPTY resize 与输出机制 | [1.25.260930003 包身份及 pinned 源码核查](research/conpty-resize-output-2026-11-02.md) | 当前 0x18 是字宽,旧 resize quirk 已删除;signal 成功非完成屏障,内部 reflow 不保证重发整屏,DSR 光标同步不证明正文一致。静态解释不替代同次 Qt 动态证据或原版 oracle;本次未新增运行或改 flags |
| 原版 resize 后寻址与自主核心字面诊断 | [独立直接协议样本](../research/ui/results/2026-11-02-resize-address-reference/README.md)、[默认裁剪路径的失败诊断](../experiments/core/results/2026-11-02-resize-address/README.md) | 四例自然追加、CR、LF、CUP 保留动作前观测,文档、DSR、显示坐标分别核对;第五例 EL1 保留原审计失败。默认 `Screen::resize` 历史诊断仅 16/64 阶段通过、退出 1;当时 `EXCLUDE_FROM_ALL`,现参与默认构建但 CTest 只注册另行验证的显式保留入口。旧红不设 `WILL_FAIL`,常规 CI 或另一入口通过不能豁免默认路径差异 |
| 自主 C++ 同 owner 保留列宽事务与有限编辑(#27/#29 独立入口) | [源码、定向红绿与限制](../experiments/core/results/2026-11-02-retained-columns/README.md):`a35be70` 的四个寻址 case 为 64/64 阶段;`fdeaed6` 使打印/ICH/DCH 按协议宽更新目标行,内容长度与 `written` 分离,三例编辑为 64/64 阶段。该固定源码重新构建后核心 22/22、Qt/固定 ConPTY 4/4,各配置身份独立记录 | 默认 resize / Qt 未切换;Qt 回归不执行新保留入口。Q/R 与 ICH/DCH 红绿分别保留,owner 存储及空白长度工程检查没有独立先行 RED。后续光标与隐藏帧修正另列,不继承本轮结果;默认裁剪与 B/CD 失败不豁免 |
| 原版活动/隐藏帧与缩放后下一字符 | [6次原版、29阶段](../research/ui/results/2026-11-02-resize-frame-reference/README.md):5次原审计通过、1次隐藏主屏原审计失败后独立离线补充通过;无补跑。文档、DSR与显示分别记录 | 活动备用屏保留正文;隐藏主屏返回的正文和边界不同;4个ON/OFF缩放末列样本支持下一字符覆盖当前位置。原版Document索引差异、私有模式位及完整网格不据此判定 |
Expand Down
2 changes: 1 addition & 1 deletion docs/FEATURES.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ Qt 构建显式准备并部署[固定微软 CRT 14.51.36247.0](../third_party/ms
| 中文 IME 与键盘 | **限定验收**:基础按键/修饰键/UTF-16 与实际接收字节;[固定 ZWJ/keycap 输入](../experiments/shell/results/2026-10-26-unicode-keyboard/validation.json)在默认/候选各两轮精确接收。固定 Microsoft 拼音[产品场景](../research/ime/results/2026-10-24-product-ime-contexts/validation.json)覆盖两区域组合/提交/取消、候选、输出/resize/zoom/受控 DPI、隐藏/关闭、历史阅读和原生控件 | 限定 Windows Server 2025 固定拼音及已有场景;同次组合由八会话工作流另验收。固定字素绘制/选择已由 #39 限定完成,但所有输入法、应用键盘模式、完整 IME 和真实不同 DPI 跨屏仍未完成 | R1 / R2 |
| VT 核心 | **实现中,未验收**:默认自研支持基础光标/擦除(含 ECH)、CR/LF/BS/TAB、有限 SGR(粗体/暗色/下划线/反显/删除线/隐藏/上划线)和有界恢复;新增编辑类 `ICH`/`DCH`(`CSI @`/`CSI P`)、`IL`/`DL`(`CSI L`/`CSI M`)、滚动区域 `DECSTBM`(`CSI Pt;Pb r`,归位与非法区域行为按参考实现)、`ED3`(`CSI 3J` 只清回滚)与 `RIS`(`ESC c`),`DSR 6n` 回复、`DECCKM`(`?1`)与 `DECTCEM`(`?25`)已接入 Win32 与 Qt 两个入口,均有[核心契约测试](../experiments/core/edit_csi_test.cpp)与[回复测试](../experiments/core/reply_test.cpp)。显式候选 `.4` 接入 `Term/Processor`、C++ 拥有值适配、稳定行元数据、每缓冲区 margin 与流式字素;[共同轨迹](../experiments/differential/results/2026-10-26-candidate-common-v6/summary.json)及[源 margin 合同](../experiments/shell/results/2026-10-26-margin-state/validation.json)为各自固定版本结果 | [#27](https://github.com/JavaZeroo/termforge/issues/27) 的 origin/wrap、模式/resize、插删与滚动区域交叉未闭合;[#41](https://github.com/JavaZeroo/termforge/issues/41) 系统 ConPTY 已丢失的 margin 不能由末端补回。ECH pending-wrap 差异见[限定合同](research/more-capture-ech.md);`DA1` 仅 strict 回放回复 VT102,recovery 产品路径不回复;`DA2` 与 `OSC 10/11` 回复未实现,原版未知仍不算匹配;`SGR 58` 等下划线颜色属性亦未实现;#36/#38、完整呈现和平台支持独立验收 | R2 / R4 |
| Unicode 与文字显示 | **实现中,未验收**:默认自研保留 Unicode 15。显式候选 `.4` 的 [#39 Unicode 17 流式字素合同](research/streaming-graphemes.md)已限定验收:固定 ZWJ/keycap 的单 lead/两列、光标、SGR/查询、原子选择复制、单列 resize 与有界无损分片;实际 ConPTY/DWrite 核对固定样本的单 glyph、字体和网格 | [#30](https://github.com/JavaZeroo/termforge/issues/30) 仍需完整输入/IME 交叉;所有脚本/整形、通用 fallback、所有原生重放、真彩色/更多属性、Powerline 和真实跨屏未验收。分段 helper 的规范数据通过不代表完整终端 Unicode 正确性;[#54](https://github.com/JavaZeroo/termforge/issues/54) 保留已观察的性能成本 | R2 / R4 |
| resize 与 reflow | **实现中,未验收**:默认仍按 ADR-0005 物理行裁剪;[显式保留列宽事务与显示投影](../experiments/core/results/2026-11-02-retained-columns/README.md)通过四例有限寻址诊断,尚未替换默认 resize 或接入 Qt。历史候选在[固定 ConPTY 重放](../experiments/core/results/2026-10-26-resize-replay/validation.json)与连续同步中保持行身份、Find/选区和有界历史,淘汰/清空不复活;候选 `.4` 另覆盖主/备用屏缩到单列 | [ADR-0010](adr/0010-bounded-resize-retention.md)已确认正文保留与显示投影方向,#27/#29 联合交叉仍未完成;[正式路径 B/CD 缩放诊断](../experiments/shell/results/2026-11-02-qt-terminal-modes/README.md)仍红,固定事务不等于完整 reflow 或 WindTerm 等价。[#156固定交错诊断](../experiments/shell/results/2026-10-29-resize-repaint-witness/README.md)见证默认核心在两种时序下选区失效,历史几何错配已有字节/消费网格证据;[#194](https://github.com/JavaZeroo/termforge/issues/194) 后续按用户接受未复现收口,未证明产品修复,重现时按该项条件重开。系统/实验 ConPTY、备用屏/滚动区、真实 DPI、呈现、性能及 #36/#38 分别验收;默认缩窄不可恢复 | R2 |
| resize 与 reflow | **实现中,未验收**:默认仍按 ADR-0005 物理行裁剪;[显式保留列宽事务与显示投影](../experiments/core/results/2026-11-02-retained-columns/README.md)通过四例有限寻址诊断;[同 owner 宽高组合保留事务](../experiments/core/results/2026-11-02-retained-combined/README.md)把固定五阶段原版回放从 8/20 阶段修至 20/20,并注册核心门禁,尚未替换默认 resize 或接入 Qt。历史候选在[固定 ConPTY 重放](../experiments/core/results/2026-10-26-resize-replay/validation.json)与连续同步中保持行身份、Find/选区和有界历史,淘汰/清空不复活;候选 `.4` 另覆盖主/备用屏缩到单列 | [ADR-0010](adr/0010-bounded-resize-retention.md)已确认正文保留与显示投影方向,#27/#29 联合交叉仍未完成;[正式路径 B/CD 缩放诊断](../experiments/shell/results/2026-11-02-qt-terminal-modes/README.md)仍红,固定事务不等于完整 reflow 或 WindTerm 等价。[#156固定交错诊断](../experiments/shell/results/2026-10-29-resize-repaint-witness/README.md)见证默认核心在两种时序下选区失效,历史几何错配已有字节/消费网格证据;[#194](https://github.com/JavaZeroo/termforge/issues/194) 后续按用户接受未复现收口,未证明产品修复,重现时按该项条件重开。系统/实验 ConPTY、备用屏/滚动区、真实 DPI、呈现、性能及 #36/#38 分别验收;默认缩窄不可恢复 | R2 |
| 本地 shell 选择 | **实现中,未验收**:`ShellLaunch` 分离可执行文件、参数、工作目录及 shell 命令差异;cmd、Windows PowerShell 5.1、PowerShell 7、显式 Ubuntu WSL 各有[两轮真实启动/目录/尺寸/正常退出证据](../experiments/shell/results/2026-10-24-r2-shell-lifecycle/validation.json),无效程序启动错误可见且可关闭后恢复 cmd。四 shell 测试已补 [WSL 原生尺寸程序返回后的新提示符同步](research/wsl-size-return.md),正常退出证据只在实际全部回收后写入;默认/system 的事件反例、原两轮及完整回归分别留证 | 仅声明上述固定入口和隔离目录;#80 原 hosted stage6 是否同因仍未知,#81 hosted 准备超时另行定位;任意 profile/参数、通用分屏/排序、全部运行时错误提示及管理员 shell 未完成 | R2;权限场景 R4 |
| 常用 TUI | **实现中,未验收**:显式候选 + 系统 ConPTY 有固定 Vim 进入、编辑、60×12 resize、退出写盘、主屏恢复及光标回复的[产品证据](../experiments/core/CANDIDATE.md);More 尾部 ECH 与捕获端点有[限定修复](research/more-capture-ech.md) | [#28](https://github.com/JavaZeroo/termforge/issues/28) 的更多应用及完整输入/输出模式未完成;PR #50 实验后端的 GUI Vim [#52](https://github.com/JavaZeroo/termforge/issues/52) 仍有失败;[native 捕获目录复用](research/vim-fixture-isolation.md)已独立定位并修正,不能代替 GUI 或完整 TUI 验收。headless 比较与自有 DIB 不等于真实呈现,`presented_done=null` | R2 |

Expand Down
Loading