Skip to content

[R2-11][架构] 提交核心、GUI/平台方案并取得用户确认 #34

Closed as not planned
1 of 1 issue completed
Closed as not planned

Description

@JavaZeroo

当前处置(2026-11-01)

本项已按用户选择34B关闭:C++/Qt/固定ConPTY路线与接口收敛说明已登记。剩余产品行为归#28/#29/#30,最终产物归#35,跨屏归#297;不再等待相同路线选型。性能数值仍需单独确认。下方保留历史检查点,不作为当前待办。


当前方向与确认边界(2026-10-28)

用户已确认正式组合:自主 C++ 终端核心+当前采用 Qt Widgets GUI+随包固定微软 ConPTY。确认依据:用户明确“继续自主开发 C++ 核心”;对上一轮 Qt Widgets 建议确认“这个可以先用你推荐的来”;PTY 已按 ADR-0007 确认。Alacritty 及 Win32/DWrite/D2D 成果保留参考与历史身份,不继续作为并行产品路线扩展。

具体实现仍须原版行为优先,重要差异及原版缺陷修正单独确认;性能数值容差继续在可靠基线后与用户明确。核心/GUI路线选择已经解决,本项接续接口、迁移、平台支持与实际证据收敛,不因选择完成就关闭实现或 R2 验收。

ADR-0008与规划已记录确认依据。最小入口 #115、固定依赖 CI #117 和 cmd 多标签 #124 已按限定范围合入 main;原 C++ 子集不能继承候选能力。

当前实现检查点(2026-10-29)

#115 / PR #116打通最小 Qt/C++/固定 ConPTY 入口;#117 / PR #120固定 Qt/ConPTY 下载身份、安全准备与独立 hosted 构建;#124 / PR #128交付 cmd 标签输入、关闭和错误隔离及真实事件循环退出前回收。均已可从 main 337812bc27b10a8f4dee5e4e35ded21c90f4a151到达。

Qt 标签限定证据:固定 80×24、基础 ASCII/16 色,本地完整 CTest 50/50(Qt 1 项+既有或独立诊断 49 项,内部 12 条跳过),发布 HEAD 六路 CI success。它不验收动态 resize、完整工作区/恢复、Unicode/IME、历史/选择/Find、真实异 DPI、完整 TUI 或性能。

C++ 模式存储基础由 #130、原版剩余模式样式由 #123/#126/#129、隔离显示环境由 #131 / #31 接续。路线已经确认;完整接口、支持配置、原版重要差异、迁移与产品验收继续保留,本项不因限定切片通过关闭。

用户结果

用真实 R2 工作流、WindTerm 2.7.0 对标与受控测量提出可维护的核心/GUI/后端方案,由用户确认后定案,为 Windows 远程整合及后续 Linux/macOS 扩展提供明确边界。

已有基础

#23 已记录官方平台事实,首个完整版本以用户确认的 Windows 11 x64 为目标;#26/ADR-0003 的历史比较保留,Alacritty 现为历史候选和差分参考;#32/#33 已交付有限本地会话与配置恢复。ADR-0004仍是原型临时选择,原 Win32/DirectWrite 结果保留历史;当前 GUI 路线已按用户确认采用 Qt Widgets,Draft #50 的实现是否合入与验收仍分别记录。

已确认的产品决定

  • Windows 本地 Shell 后端采用随包固定微软 ConPTY,集中整合和优化;系统 ConPTY / WinPTY 可作诊断对照,不继续作为并行产品路线扩展。具体包版本和 flags 是工程实现身份,不冒充用户永久锁定。
  • 正式终端核心:用户确认继续自主开发 C++ 核心,按固定 WindTerm 2.7.0 行为独立实现;Alacritty 转为参考。
  • 当前 GUI 路线:用户确认先采用 Qt Widgets,具体版本与终端渲染优化由可追溯验证决定。

原版优先继续有效。下文 #56 的具体样式/滚动区域差异仍保留;选择内部后端不自动批准修正原版缺陷或接受重要行为差异。性能数值容差仍在可靠基线后与用户另行明确。

剩余交付与验收

真实前置与完成边界

父项 #7;原生前置 #23/#26/#28–#33 与子项 #54。#23/#26/#32/#33 已完成,其余仍开放,最终整体验收 blocked;路线选择已由用户确认,可执行迁移切片见 #115。前期证据整理与 #54 可立即并行,不需要等待所有功能后才做性能。最终架构不由某一路短回归或候选接口存在决定。

新的具体原版行为差异(#56,待产品取舍)

Draft PR #103,发布源码 dce2ca799a25cf32f3cf2bacf1b9f7c915945a57;原版观察及边界、脱敏记录。 原版固定本地Shell在同一211B样式/切屏输入下,原生及UI文字都含REGION_CIXED,区别于源码margin补丁恢复主屏区域后的文字结果。原生buffer80×3000与viewport80×24的差别、原绝对判据失败和相对坐标诊断分列;末端颜色、组件根因、其他路径与完整合同仍未知。

正式方案须明确这一个场景是保持原版行为,还是作为经用户确认的修正项;不从候选上游规则或实验通过推导批准,也不把单次观察外推为所有margin/SSH/其他平台行为。当前保留原版优先和原合同失败记录;PTY 后端已按 ADR-0007 选定,但未批准这一具体行为差异的修补路线,完整架构和实现验收仍未完成。

Activity

  1. added
    blocked有明确未完成前置;见原生 blocked-by
    research有明确问题与出口的证据调查
    on Oct 24, 2026
  2. changed the title [-][R2-11][架构] 决定产品 GUI/平台、核心历史接口与呈现隔离[/-] [+][R2-11][架构] 提交核心、GUI/平台方案并取得用户确认[/+] on Oct 26, 2026
  3. JavaZeroo commented on Oct 31, 2026

    @JavaZeroo
    OwnerAuthor

    需要澄清的一处张力:采用固定后端 vs 原版观察到的行为

    按决策 1A(采用随包固定 ConPTY 作为产品后端)落地时,本项正文末尾记录的原版观察(#56)与之存在冲突,需要用户裁决:

    事实 来源
    原版 WindTerm 2.7.0 在该 211B 样式/切屏输入下,原生与 UI 文字都含 REGION_CIXED 本项正文引用 docs/research/windterm-styled-margin-reference.md(Draft PR #103)
    系统 ConPTY 也产生 REGION_CIXED experiments/conpty/results/2026-10-26-margin-backends/validation.json
    固定版 side-by-side 后端则恢复 2;3r/4;5r,末端得到 REGION_C/REGION_D/BOTTOM_FIXED 同一 validation 记录

    含义:采用固定后端会让我们的显示偏离原版观察到的行为(我们正确、原版错位)。这属于 AGENTS 所说的「重要行为差异需要用户确认」,不能由技术正确性自行批准。

    两个可选立场

    立场 结果 代价
    A. 保持原版行为(不修) 与 WindTerm 观感一致 主屏 margin 丢失是可复现的缺陷,用户会看到错位文字
    B. 采用固定后端(决策 1A 现状) 显示正确 与原版不一致,需要在 ADR 记录为「经确认的原版缺陷修正」

    我的建议

    维持决策 1A,但在 docs/adr/0009-r2-scope-decisions.md 补一条:

    R2 采用固定后端后,主屏 margin 恢复行为优于原版观察到的错位,属经用户确认的原版缺陷修正,不作为与原版差异的缺陷登记。

    边界

    • 原版观察来自单个 211B 场景,未扩展为所有 margin/SSH/其他平台行为;
    • 若你选择 A,我需要把产品后端切回系统 ConPTY,并撤回决策 1A 的记录。
  4. JavaZeroo commented on Oct 31, 2026

    @JavaZeroo
    OwnerAuthor

    补充:原生 CHAR_INFO 的问题已由 #41 的裁决回答

    我在上一条里提出的第一个问题(原生 CHAR_INFO 是否排除在 R2 验收外)已经有结论:

    • [R2-04][终端] 裁决 ConPTY 主/备用屏 margin 恢复差异 #41 已按选项 B关闭,并在 docs/adr/0007-bundled-microsoft-conpty.md 的「已知差异」小节登记:原生 CHAR_INFO 层的 margin 可见性差异属已知差异,不作为待修缺陷;
    • 对应验收口径同步写进 docs/milestones/R2-local-terminal.md:66。

    因此本项只剩一个开放问题

    上一条提出的张力仍然成立:

    事实 含义
    原版 WindTerm 在 211B 场景下也出现 REGION_CIXED(错位) 我们的固定后端会让显示优于原版
    系统 ConPTY 同样错位 说明这是 conhost 侧缺陷,不是原版独有实现
    固定版后端恢复正确 产品显示正确,但与原版观察不同

    需要你决定:这属于「经确认的原版缺陷修正」,还是保持原版错位以求一致?我的建议是前者,并在 ADR-0009 补一条确认记录。

    边界

    • 本条只做对齐与提问,未修改任何决策记录;
    • 原版观察仅来自单个 211B 场景,不外推。
  5. added a commit that references this issue on Oct 31, 2026
  6. JavaZeroo commented on Nov 1, 2026

    @JavaZeroo
    OwnerAuthor

    决策 2 落地:登记为经确认的原版缺陷修正(选项 A)

    用户 2026-11-01 明确:「windterm 如果有问题那就需要进一步处理即可,选 A」。

    落地位置

    内容 位置
    决策与依据 docs/adr/0009-r2-scope-decisions.md 新增「决策 6:原版缺陷的修正确认」(PR #298)
    原生 CHAR_INFO 缺口 仍留在 docs/adr/0007-bundled-microsoft-conpty.md 的「已知差异」,不因本决策视为修复

    事实基础

    后端 该 211B 场景的显示
    原版 WindTerm 2.7.0 原生与 UI 文字都含 REGION_CIXED(错位)
    系统 ConPTY 同样 REGION_CIXED
    随包固定 side-by-side 恢复 2;3r/4;5r,末端得到 REGION_C/REGION_D/BOTTOM_FIXED

    即:我们的显示有意优于原版观察到的缺陷,且已获确认。

    本项其余待办(本决策未覆盖)

    • 产品 ADR 引用实际工作流与测量(性能部分仍需可靠基线与用户确认);
    • 提交核心继续复用/改造/替换的具体方案与跨平台障碍;
    • 这些内容本项保持开放。
  7. added a commit that references this issue on Nov 1, 2026
  8. JavaZeroo commented on Nov 1, 2026

    @JavaZeroo
    OwnerAuthor

    按用户决定:写收敛说明后关闭(选项 B)

    用户选择 B:由本评论给出架构收敛说明,然后关闭本项。

    一、路线(已确认,勿再讨论)

    决策 记录
    自主 C++ 核心 + Qt Widgets GUI + 随包固定微软 ConPTY ADR-0007 / ADR-0008
    R2 范围(单屏、终端基础、回归型性能预算、交付含已知差异清单) ADR-0009
    原版缺陷修正的登记方式 ADR-0009 决策 6(2026-11-01)

    二、已落地的实现切片

    切片 证据
    最小 Qt/C++/固定 ConPTY 入口 #115 / PR #116
    固定依赖下载与独立 hosted 构建 #117 / PR #120
    cmd 多标签、输入、关闭与错误隔离 #124 / PR #128
    固定包身份与部署校验 third_party/conpty/manifest.json、cmake/ConptyBackend.cmake

    三、接口与边界

    • 解析/屏幕状态、历史、传输、呈现四层保持可独立测试(experiments/core、experiments/shell、experiments/presentation);
    • 产品入口只走固定后端;系统 ConPTY 与 WinPTY 仅作诊断对照;
    • 跨平台(Linux/macOS)未实现,按 ADR-0006 属最终目标。

    四、明确未收敛的部分(交由其他 issue,不由本项承担)

    项 归属
    视觉/文字/GUI 的完整验收 #28 / #29 / #30
    产品交付验收(含切默认后重建复验) #35
    跨屏与真实异 DPI #297(R4)
    性能数值门槛 #54 已改为回归型预算;绝对值仍需受控基线与用户确认

    五、关闭边界

    • 本项关闭表示架构路线已确认并已按切片落地,不表示上述未收敛部分已完成;
    • 若后续需要重大替换(新核心、新 GUI 框架、新后端),仍须重新提交本类决策。
  9. removed
    blocked有明确未完成前置;见原生 blocked-by
    on Nov 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    research有明确问题与出口的证据调查

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions