Repository navigation
Description
当前处置(2026-11-01)
本项已按用户选择47A以正式路线已整合收口;main的Qt入口已接固定包。产品默认/最终包重建复验由#35承担。旧PR50已关闭、实验GUI Vim #52不再作为并行产品路线扩展;原生CHAR_INFO差异仍按ADR-0007保留。下方历史实验合同不等于尚待整合或整体验收通过。
方向与合同
2026-10-28 用户已确认:Windows 本地 Shell 正式采用随包固定微软 ConPTY。 ADR-0007记录选择与边界。本项接续已有固定包接入及限定修复,集中整合这一条产品路线;系统版本和 WinPTY 可作诊断对照,不继续作为并行产品路线扩展。
本次确认不等于将现有实验构建直接验收为产品,核心/GUI 已另经用户确认采用自主 C++ 与 Qt Widgets,具体最小整合见 #115。切换产品默认前仍需在声明配置重建和复验;#34/#41/#56 的重要原版差异、原失败、系统输入/真实 DPI 和性能门槛继续保留。
Draft PR #50 提供 Backend 共同持有 create/resize/close 族与模块生命期、同包双 SHA/完整 MIT、安全绝对路径加载;缺文件、篡改、缺导出明确失败,无隐式下载或回退。实验合同。这是 #41 的实现聚合,不是产品默认或 R2 验收。
正式路线已合入 main 的限定结果(2026-10-29)
#115 / PR #116、#117 / PR #120、#124 / PR #128已交付自主 C++ / Qt / 固定微软 ConPTY 的最小入口、固定依赖 CI 与多 cmd 标签,可从 main 337812bc27b10a8f4dee5e4e35ded21c90f4a151到达。实际固定包双文件哈希、安全拒绝和有界传输沿各自证据保留。
多标签结果只验证固定 80×24、基础 ASCII/16 色、cmd 会话输入/错误/关闭隔离和事件循环退出前回收。本地完整 50/50 中 Qt 1 项与既有/独立诊断 49 项分列,12 条内部跳过不豁免。其他 shell、动态 resize、原 margin、完整 TUI、真实 CF/IME 与同次工作流仍需在新组合逐项复验;不将下方旧实验成果转记为本配置通过。
历史配置已交付的限定切片
-
[R2][集成] 冻结候选 .4 与显式官方 ConPTY 的联合基线 #55 固定
3e5b96d三配置联合基线:默认/system43/45、candidate/system48/48、candidate/official46/48,含 shell180s 超时及各自内部 skip;PR64 原基线保留,不改为后续源码全绿。 -
[R2][回归] 修正显式后端真实 InputQueue 的持块与停止夹具 #62 真实 InputQueue 持块、取消和停止;原4MiB/16KiB/3s及外10s保持,fence 默认关闭。[R2][Backend] 修复 Console-width Vim stage59 与 native new-buffer 失败 #52 native 捕获目录复用也已独立因果修正,GUI 仍未闭合。
-
[R2][Backend] 用确定性 sender fence 验收未完成粘贴的取消与关闭 #53 原3MB/768B检查点/16KiB门槛的真实未完成期 UI cancel/close、EOF/缺GO负例及两轮原八会话 data-only 通过;关闭输入后仍发送终端回复的实际 ConPTY 回归修前红、修后绿。源码 eae4b6a 与全部证据。PR fix: validate unfinished UI paste and bound replay cost (#53) #76(含 fix: bound replay matching cost and drain replies safely on close (#53) #77/fix: accept empty-record redraw before persistence output (#72) #78/ci: observe hosted preparation on the experimental stack (#81) #84)已合入实验父分支,当时
e0b4d67e50bda6fe08cc02b43a475137133310b3;[R2][Backend] 用确定性 sender fence 验收未完成粘贴的取消与关闭 #53 限定关闭,main 未包含。 -
[R2][Backend] 定位连续 GUI resize stage43 的残尾与 Unicode 重放差异 #51 原生 viewport resize 与真实空格隔离:PR #89 已合入,当时实验头
2d69663e314b735897ddfb413667fbd26848fe57。原 stage43 red→green、原 GUI/Unicode、六组合成原生行/光标和严格历史/复制断言通过;固定证据。默认/system 和候选/system 保持独立策略;不代替 [R2-06][终端] 定义并验证 resize、逻辑行与历史语义 #29 或最终核心选择。 -
[R2][回归] 定位官方后端第二轮工作区恢复 stage1 超时 #88 窄列 cmd 回显的裸 CR 导致恢复判据误拒绝:PR #90 已合入,当时实验头
6b365b3cae9fbbfbb25f19a716d4fe85bcb0c04b。原运输、单变量对照、严格负例及原两轮六次保存/恢复/钳制通过;审查后证据。仅修正验证器,不扩大产品行为结论。 -
[R2][Workflow] 定位替换会话检查点的编号输出半行失败 #87 替换会话完整记录检查点:PR #91 已合入,当时实验头
44ea45b988b6bb0b72f21cd24597fe54b9b4ec31。同诊断EXE受控旧红/新绿、同session真实后续补齐,最终同源码两轮原八会话与关闭guard通过;固定证据。历史缺失运输不补造,诊断截断及被否定方案保留。 -
[R2][回归] 定位显式官方后端工作区 stage52 超时 #63 工作区尺寸标记残尾:PR #93 已合入实验头
ed55a8758423b3273fbd98f07e0bfd77d88e46ac。原窄UI stage52/主区stage7、同EXE策略切换、原生屏幕和实际运输回放共同确认现有#51修复覆盖;无插桩原三轮重复及完整shell93.62s通过,共18份工作区样本回收完整。固定证据。更早缺运输样本保持未知。
仍须完成
- [R2][Backend] 修复 Console-width Vim stage59 与 native new-buffer 失败 #52 最终 Console-width GUI Vim。保留原几何、期限和输入,不用其他配置绿豁免;#63工作区已按限定合同关闭。
- 同一实际产品配置核对原 margin 源、查询回复、resize、固定 cmd/PowerShell/WSL、完整 shell/More/Vim、R1 文字/IME/真实 CF 与同次工作流,以及自然退出、EOF、自有 Job/desktop 回收。
- [R2-04][终端] 裁决 ConPTY 主/备用屏 margin 恢复差异 #41/[R2][终端] 确定保留原合同的原生 API 与末端 margin 处理路径 #56 原生 API/CHAR_INFO 与末端语义合同;末端绿不掩盖 native 差异,不猜补运输中没有的 VT。
- 固定来源、许可、安全拒绝、异常清理及生命周期持续回归。正式路线已确认,完整官方矩阵、实际呈现、性能与产品整体验收尚未通过。
当前证据边界
当前实验头 3adec0b49947257c3f02207b743d6de9f1ab168f 已合入 PR #95 的固定 WindTerm 2.7.0 四份有限对照:原版观察与限制。原 Vim 精确输入/resize/写盘可观测,但方法止于 stage56;独立原生 buffer60×3000/viewport60×12;CPR 原入口失败与显式模式变体通过分别保留,只有变体观察到 shell 自然37。四样本不组成一次完整验收,未改产品或采用运行库/后端。
PR95 两路独立审查无发现;HEAD fa74143、实际 checkout c435d1a 的 Build CI 首次 Windows default/system52/52(282.46s)、Linux33/33(10.56s)及 replay 通过。外部候选 workflow 因路径过滤未触发;原 official56/57 未重跑,#52/#28/#56 继续开放。
此前实验头 b60cd65b9fa6af724279780faa8d78847eb5cef0 已包含 PR #94 的隔离 MSYS 修补实验:同一原 Vim/产品 EXE/输入/断言/25s/40s下,原DLL一绿一stage59、未修重建DLL首轮stage59,修补DLL两批共四轮通过;实验DLL未进入产品,原固定运行库完整官方56/57与#52保留。证据及限制。
PR94同HEAD27bea78/checkoutd416d6a的首次Windows CI在WSL准备startup原20s期限失败,产品CTest未运行;预先限定一次失败job复查默认/system52/52、270.40s。Linux默认33/33、12.52s为原执行,候选CI两平台独立通过。首次失败由#81继续跟踪,不据复查关闭,也不构成official验收。
此前实验头 ed55a8758423b3273fbd98f07e0bfd77d88e46ac 已包含PR93。其同HEAD/checkout5cd12da首次默认/system CI51/52、294.89s的ui-copy-system超时保存在#73;预先限定一次失败job复查52/52、269.94s,候选CI独立通过。复查不关闭#73,不合并为官方配置验收。
此前实验头 dd533878538490c2464673218ea0000c6467a495 已合入 PR #92 的 #52 诊断:捕获红例的 Ctrl-O 在 MSYS 控制台输入转换中被取走,固定源码解释与调用点记录吻合;PR92当时尚无修补红绿,后续隔离实验见PR94;原固定运行库的正式兼容方案未完成,#52继续开放。白名单记录与临时探针、既有产品完整回归分列。PR92两条CI成功,实际checkout dc24943;Windows default/system52/52、273.96秒,Linux默认33/33,候选core+checkpoint两平台各2/2,不构成official验收。
最新产品源码 c662011 / .5 / 官方flags24完整 CTest 56/57、402.66秒、8项内部skip,唯一失败为 #52 Vim stage59;两轮原八会话data-only通过且Job0/desktopgone。该批未单独归因#63;随后PR93按上述范围闭合,更早缺运输样本仍未知。PR91 head 3a0561c 的 Build 与 External candidate 均成功,实际checkout 3fdd147。Windows default/system 52/52、278.50秒;Linux默认33/33;候选core+checkpoint在Windows/Linux各2/2。各配置独立记录,不能拼成official全通过。
此前验证源码 c93db58 / .5 / 官方 flags24 完整 CTest 55/56、398.08 秒、8 项内部 skip,唯一 CTest 失败为 #52 Vim stage59;完整 shell 37通过/3skip,六次保存/恢复/钳制通过。#63/#87 旧因未闭合。PR90 head f2ea8d2 的 Build 与 External candidate 独立成功;Windows 默认/system 51/51、274.50 秒,实际 checkout 3b11552,不合并为 official 全通过。
此前产品源 92eac12 / .5 / 官方flags24完整 CTest 54/56、411.59s、12项内部skip,失败为#52 stage59及#88 restore stage1。原resize/Unicode和本轮workflow_sessions通过;此前#87半行、#63旧工作区失败的原因仍独立未闭合。PR89 head259e036的两条CI均成功,Windows默认/system 51/51、271.66s,实际checkout ccce9e2;Build、Candidate不能代替官方配置整体验收。
固定 4daf992 candidate/official 完整 CTest 54/56、449.38s,shell174.65s 完成,但 Vim59、resize/resize-close43、main7/ui52 五个方法失败,12 个内部 skip;完整记录。旧 eae4 shell180s 超时继续保留。
PR76 HEAD887c769、实际 checkout0d8dea3 的 Windows CI 是 default/system 51/51、271.74s;External candidate 独立通过,不能拼成 official 完整通过。#81 观测已随 PR84 整合,旧 preflight command_deadline 的具体子命令仍未知;主线 #72/#73/#80/#85 等由 #38 分列。
父项 #41;开放硬前置 #52。#51/#53/#55/#62/#63/#87/#88 的已完成关系作为历史保留,整体继续 blocked,Draft #50 不合入 main。最终产品核心/后端归 #34,开发包与完整 R2 归 #35/#7。
Metadata
Metadata
Assignees
Labels
Projects
- StatusShow more project fieldsDone
Activity
3 remaining items
[-][R2][Backend] 整合可显式选择的固定官方 ConPTY 后端[/-][+][R2][Backend] 整合已确认的随包固定微软 ConPTY 正式路线[/+]JavaZeroo commentedon Oct 31, 2026
现状核对:正式入口已接入固定 ConPTY 与固定 CRT
在
main(e9d8e6a)上核对,正式 Qt 入口的构建函数已经接上这两条路线:cmake/ConptyBackend.cmake的实际行为:FATAL_ERRORTERMFORGE_CONPTY_BACKEND_DIR是绝对路径termforge_validate_conpty_pair()校验conpty.dll/OpenConsole.exe双文件、manifest.json与LICENSE身份add_custom_target(..._conpty_bundle)每次构建前把双文件、manifest、LICENSE 复制到目标目录的conpty-backend/配置说明见
third_party/conpty/README.md:11。对本项的影响
本项原定的「整合已确认的随包固定微软 ConPTY 正式路线」在代码层面已经落地:正式驱动器就是
termforge_qt_entry,产品构建无法静默退回系统版本。仍开放的候选残余(按本项原文)是验证而非接入:
建议
把本项按限定关闭或范围收窄处理:接入已完成,剩余的是矩阵验收,可移交 #28/#52 与 #35 的出口核对。若保留本项,建议更新其「剩余交付」为仅矩阵部分,避免与已落地的 CMake 接入重复跟踪。
JavaZeroo commentedon Oct 31, 2026
状态:正式路线已在产品入口落地,但本项按自身验收仍不能关闭
已落地的部分(可核对)
third_party/conpty/manifest.json:Microsoft.Windows.Console.ConPTY 1.25.260930003,包 SHA-2566d6f8b00…,双文件摘要固定cmake/ConptyBackend.cmake:5-34:校验 manifest/许可证、复制到conpty-backend/、缺文件或篡改即失败CMakeLists.txt:417:termforge_qt_entry调用termforge_use_bundled_conpty(即TERMFORGE_CONPTY_SIDEBYSIDE=1)2;3r/4;5r,系统后端丢失(experiments/conpty/results/2026-10-26-margin-backends/validation.json)docs/adr/0009-r2-scope-decisions.md)为什么仍不关闭
本项正文写明:
当前状态与之对照:
qt-cpp-windows)但只覆盖固定 80×24 基础场景native_api_margin_gap_closed=false)边界
JavaZeroo commentedon Nov 1, 2026
按用户决定:按「已整合」收口(选项 A)
用户明确选择 A:本项按路线已整合收口,产品默认切换后的重建复验交由 #35 承担。
已整合的证据(均在 main)
third_party/conpty/manifest.json:1.25.260930003,双文件摘要固定cmake/ConptyBackend.cmake:校验 manifest/许可证并复制,缺文件或篡改即失败CMakeLists.txt的termforge_qt_entry调用termforge_use_bundled_conptyexperiments/conpty/results/2026-10-26-margin-backends/validation.json关闭时明确不包含的内容
CHAR_INFO的 margin 可见性差异边界