Repository navigation
Description
当前处置(2026-11-01)
本项已按用户决定关闭:跨屏迁移转#297/R4;单屏96/144仍由#30/#35在正式Qt配置核对。关闭不代表Qt完整输入/显示已验收。已有presentation像素断言及隔离双输出探针各保留原配置身份,下方旧“本项继续开放/跨屏为R2门槛”不再是当前执行状态。
隔离环境已建立(2026-10-29)
#131 / PR137 已合入main 730404de3d6d59dd139fb8d669ad194ee6ccb218:官方 Windows 11 x64 VM真实启动,双向合成文件一致;两个实际Windows输出为96/120 DPI,独立Win32可见窗口两轮96→120→96通过。自有guest请求有独立执行deadline、精确Job回收和失败隔离;超时后下一正常请求通过。环境基础已解除阻塞,连接信息及秘密只留私有记录。
这些是环境和独立探针证据,不是Qt产品验收;本项继续开放。Qt正式程序的字体网格、焦点、IME/Find/rename、输入命中、隐藏会话和child尺寸仍须在该环境验证;物理输入/呈现和性能端点继续分别记录,未知保持null。
当前正式路线(2026-10-28)
用户已确认自主 C++ 终端核心+当前 Qt Widgets GUI+随包固定微软 ConPTY,依据见 ADR-0008。第一批整合由 #115 / PR #116承接。
本项后续在 Qt 路线上验收字体网格、真实不同 DPI 和跨屏。旧 Win32、同96-DPI双屏与受控Qt缩放分别保留;首个Qt offscreen检查不替代原生窗口上屏、物理输入或真实跨DPI。
以下原合同与固定检查点保留各自来源;路线确认不替代实现、完整R2或性能验收。
当前方向与确认边界(2026-10-26)
首个完整版本环境为 Windows 11 x64,真实不同 DPI 和原有输入/显示合同继续保留。字体、12×26 网格、18 DIP、缩字适配和缺字体失败等是现有实现策略,补原版实际对照;重要视觉/交互差异提交用户确认;#34继续收敛已确认Qt路线的接口、支持配置与实际证据。
依据:已确认方向与决策权限。
用户结果
字体来源、网格和缺字行为明确,实际不同 DPI 与跨显示器切换后布局、焦点、IME/Find/rename、输入命中、隐藏会话及 child 尺寸仍正确。
已有基础与产品缺口
字体/显示合同已规定私有 UI 字体及许可、系统终端字体、实际 glyph/fallback、缺失资产拒绝与固定网格;受控 DPI/zoom 回归已有覆盖。两台真实显示器往返有 限定证据,但二者均96 DPI:real_monitor_transition=true、distinct_dpi=false、presented_done=null。
可重复的不同DPI VM环境已由#131交付;剩余缺口是正式Qt产品完整输入/显示流程。Find/rename/IME等尚未迁移的产品能力需先独立实现并验证,无需再请求用户手工配置显示器。
剩余交付与验收
- 自动探测候选测试宿主的实际显示器/DPI、Windows与输入环境;准备可隔离、可回收的受控宿主和重放流程,明确必须真实硬件/会话支持的边界及环境不可用原因。模拟器仅作测试准备,不冒充真实不同 DPI。
- 在声明支持的真实异 DPI 环境重复往返,记录真实矩形/窗口DPI、网格、可见/隐藏标签、child尺寸及焦点;核对 IME组合、Find/rename编辑框、鼠标命中与切换,不由请求值或消息模拟推断通过。
- 实际字体来源/许可、度量、glyph/fallback、缺字与缺失资产拒绝继续回归,不复制未授权或系统字体资产。复杂字素/完整输入与 [R2-07][文字] 验收复杂 Unicode、IME 与键盘/选择语义 #30 联合核对。
- 受控 DPI、DIB、真实同 DPI 跨屏、实际呈现与物理输入分别留证;未知端点保持 null,不以提交时间冒充实际上屏。
- 最终声明环境的 R1 DPI/缩放/输入回归保持;FEATURES/EVIDENCE 清楚区分已验与环境缺口。
真实前置与完成边界
父项 #7。无未解除代码前置,可与核心/输入工作并行准备环境;隔离异DPI宿主已具备,最终验收仍待完整Qt产品流程。不修改个人显示缩放或全局设置制造通过,不转为反复要求用户点击或运行。缺环境时保留开放,#34/#35 不豁免显示出口。
Metadata
Metadata
Assignees
Labels
Projects
- StatusShow more project fieldsDone
Activity
JavaZeroo commentedon Oct 24, 2026
#31 的字体/网格合同与真实跨屏切片已形成,本项保持 OPEN,未声称不同 DPI 或实际呈现验收。
新增入口:
docs/milestones/R2-font-display.md:字体来源、固定 12×26 网格、glyph/fallback 和证据层级。experiments/shell/workspace_monitor_scenario.hpp:真实EnumDisplayMonitors/MonitorFromWindow/SetWindowPos往返。experiments/shell/results/2026-10-24-r2-monitor-font/:两次公开 synthetic 记录与验证。实际环境与结果:
real_monitor_transition=true、distinct_dpi=false、presented_done=null;每轮 3 会话回收、Job active=0、desktop 删除。未完成:不同 DPI 的真实跨屏、物理输入/实际呈现、真实 IME 跨屏、复杂 Unicode/fallback 全量行为。未修改系统显示设置,#36 的完整 CTest 失败仍独立保留。待提交后,本切片证据才可计为交付;#31 的全部出口仍需后续环境。
JavaZeroo commentedon Oct 24, 2026
补充一个无窗口字体/fallback 切片;未截图、未操作用户桌面:
experiments/presentation/renderer_metrics_test.cpp现在断言实际 DWrite glyph run 的字体身份:ASCII 与e + U+0301保持 Consolas;中文无缺字且实际使用非 Consolas fallback;U+10FFFF 负例仍产生 glyph run 并被缺字检测识别。renderer_metrics的 GDI/DirectWrite × 4 DPI × 4 zoom 共 32 组通过;git diff --check与research.tests.test_headless通过。experiments/shell/README.md和docs/EVIDENCE.md已同步。本项仍未提交,#31 保持 OPEN。复杂 Unicode/完整字素归 #30;不同 DPI、物理输入、真实 IME 跨屏和实际呈现仍未验收。#36 也保持 OPEN,不用本次局部测试替代完整 CTest。
JavaZeroo commentedon Oct 24, 2026
继续完成无窗口 UI 字体度量切片:
renderer_metrics现在还直接实例化生产WorkspaceFont,覆盖 96/120/144/192 DPI,核对私有 Roboto Mono 的实际 GDI face、HFONT em 高度和TEXTMETRIC.tmHeight,并拒绝 47/769 DPI。renderer_metrics_test显式依赖termforge_shell_assets,单独构建该测试也会准备相同字体资产。renderer_metrics、research.tests.test_headless、git diff --check通过。assets/fonts/README.md、字体合同和工作区说明已同步。#31 仍 OPEN;本切片不覆盖缺失字体资产、不同 DPI、物理输入、真实 IME 跨屏或实际呈现,也不改变 #36 与完整 CTest 的未通过状态。
JavaZeroo commentedon Oct 24, 2026
补齐上一评论保留的缺失字体资产路径:
renderer_metrics在构建目录创建唯一临时目录,只复制测试 EXE、不复制assets/,再以CREATE_NO_WINDOW启动独立进程。WorkspaceFont;只有收到预期UI font missing:错误才返回约定码 42,父进程核对该码。未抛错或其他错误均失败。renderer_metrics、4 个 headless 测试和git diff --check通过;字体合同与工作区说明已同步。#31 继续 OPEN。字体/glyph/度量/缺失资产切片不覆盖不同 DPI、物理输入、真实 IME 跨屏或实际呈现;#36 和完整 CTest 状态不变。
JavaZeroo commentedon Oct 24, 2026
此前字体/glyph/度量/缺失资产与两台 96-DPI 显示器切片已随提交 7880c2a 推送。完整 39 项 CTest 自然结束为 37 通过,唯一失败仍是 #36 的 shell normal/resize;renderer_metrics 通过。不同 DPI、物理输入、真实 IME 跨屏与实际呈现未验收,本项和 R2 路标继续 OPEN。
JavaZeroo commentedon Oct 25, 2026
复核当前最终实现后的真实显示证据:
ui-monitors两轮真实往返通过,隐藏/可见会话网格、rename 焦点与frame_matches_full均保持;两台实际显示器的 effective DPI 都是 96,JSON 明确real_monitor_transition=true、distinct_dpi=false、presented_done=null。字体来源/OFL、私有加载、缺失资产拒绝、96/120/144/192 的 GDI em/行高及 32 组 backend/DPI/zoom glyph 检查已有覆盖。此次仅复核,未新增提交或扩大验收范围。
#31 保持 OPEN:当前仍没有真实不同 DPI 流程,也没有实际呈现和物理输入证据。后续不通过修改用户显示设置、受控消息或截图来制造这些结论;受控 96/144/192 与真实相同 DPI 跨屏不能替代缺失验收。
Merge pull request #273 from JavaZeroo/docs/perf-budget
JavaZeroo commentedon Oct 31, 2026
按决策 4C:#31 的 R2 范围收窄为「单显示器 96/144 DPI」
决策 4C(
docs/adr/0009-r2-scope-decisions.md,本轮已合入文档):与本文验收项的对照
distinct_dpi=false)reverse/underline/strikethrough等),但未覆盖正式 Qt 产品的完整输入流程R2-font-display.md合同)因此本项暂不关闭
边界
Merge pull request #291 from JavaZeroo/docs/sgr-overline-row
JavaZeroo commentedon Nov 1, 2026
按用户决定:本项按单屏范围关闭,跨屏迁移转 R4(#297)
决定依据
用户明确:「选A 不需要一直死磕一个问题。可以接受不完美」。
对应 ADR-0009 的决策 4C:R2 只验收单显示器 96/144 DPI。
处置
关闭时的真实状态(不加修饰)
distinct_dpi=false)即:本项关闭不代表显示能力已验收,只代表 R2 出口不再等待跨屏证据。
文档同步
docs/milestones/R2-local-terminal.md的 [R2-08][显示] 明确字体网格并验收真实 DPI 与跨显示器切换 #31 行已按 4C 改写;docs/FEATURES.md的 DPI 行已按 4C 改写;Merge pull request #299 from JavaZeroo/docs/r4-link