## 当前正式路线(2026-10-28) 用户已确认**自主 C++ 终端核心+当前 Qt Widgets GUI+随包固定微软 ConPTY**,依据见 [ADR-0008](https://github.com/JavaZeroo/termforge/blob/0fd35e23095c611865c6970ba9a3b8b910ef1efa/docs/adr/0008-cpp-core-qt-widgets.md)。第一批整合由 [#115 / PR #116](https://github.com/JavaZeroo/termforge/pull/116)承接。 已关闭的配置格式、迁移/损坏保护及旧工作区恢复结果保留。可复用业务与持久化逻辑,但 Qt 客户端的集成/重启恢复须另验;当前 #115 不声明已迁移工作区恢复。 以下原合同与固定检查点保留各自来源;路线确认不替代实现、完整R2或性能验收。 ## 用户结果 重启 TermForge 后可按明确范围恢复本地会话配置、窗口、标题、比例、缩放和工作区,而不是只恢复少量布局值。 ## 工作范围 - 定义保存/不保存的数据、保存时机和隐私边界;明确“重新启动进程”与“恢复原进程”的区别。 - 持久化本地会话定义、窗口/工作区、标题、比例、缩放和启动会话集,延续原子替换与版本化格式。 - 覆盖旧版本迁移、未知字段、截断/损坏、写入失败和回退,确保测试配置与个人配置隔离。 ## 验收 - [x] 新进程实际恢复合同中的配置与布局,并启动正确类型/目录/参数的新会话。 - [x] 原子替换、版本迁移、损坏回退和写入失败测试通过,不泄露个人路径或秘密到公开证据。 - [x] 文档与 FEATURES 精确列出恢复范围;R1 默认启动和既有布局兼容回归通过。 父项:#7。真实前置:#32。
Activity
JavaZeroo commentedon Oct 25, 2026
已推送
c284c86的独立配置模型切片(尚未完成产品恢复)。\n\n- Windows/Ubuntu 均验证有界 v2 往返、Unicode 标题/路径、v1 迁移、空会话、损坏/未知版本分类、所有截断前缀、非法 UTF 与原子写入失败保留。\n- 默认完整 CTest 为 39/40;候选完整 CTest 为 37/42,新增workspace_state在两者均通过。其余失败归 #29/#36/#38 等既有问题,不算该模型通过。\n- 证据:validation.json。\n\n仍待完成:将白名单ShellLaunch描述符和快照接入 Workspace,实际重启创建正确类型/目录/参数的新进程并验证窗口/焦点/分屏/缩放。未知版本禁止覆盖属于该整合切片。因此本 issue 保持 OPEN。JavaZeroo commentedon Oct 25, 2026
后续已推送
36d695a:固定 cmd / PowerShell 5.1 / PowerShell 7 / WSL 工厂的可恢复描述符与精确往返,只保留类型、必要 distribution 和工作目录。自定义 executable/arguments/prefix、非法 kind/缺失 WSL 参数及目录引号注入均拒绝。\n\nshell_launch、layout_state、workspace_state为3/3通过。此提交仍不声称产品恢复完成;下一步接入 Workspace 快照和真实双进程场景,issue 保持 OPEN。JavaZeroo commentedon Oct 25, 2026
已推送
1f82a2d834c30a69a4990d0f8e1154c932b62ab1的单会话恢复切片。\n\n- 原ui-edit/ui-restore两轮和ui-main两轮通过;Windows/Ubuntu 配置模型通过,聚焦 CTest 为3/3。\n- 真实新 cmd 恢复 Unicode 标题、默认窗口/布局;白名单描述符进入 Tab,启动恢复抑制写入,关闭先保存最终快照再回收。v1 入口已改为严格 v2 读取,不再把解析失败误判为通过。\n- 证据:validation.json。\n\n仍未完成:多类型会话/显式目录/split/非默认 zoom 和窗口的真实恢复、真实 v1/空配置/损坏/写失败与最终关闭失败验收。主区通过不抵消 #38 的其他失败。本 issue 保持 OPEN。JavaZeroo commentedon Oct 25, 2026
已推送
8bfc41e3c8cf15ae4b01aa6691eaea41359756d1的多会话恢复切片。\n\n- 两轮真实双进程验证通过:cmd、PowerShell(实际主版本5)、独立目录、Unicode 标题、100%/150%/75% zoom、split 成员/底部焦点和非默认窗口/布局。实际尺寸、HWND/网格及恢复前后配置逐字段一致,旧输出不注入新屏幕。\n- 修复模型将右焦点错误等同于main_active == split_index的约束;可见 split 现要求两个成员不同,并允许底部焦点。\n- 原有 restore/main/split 各两轮通过;默认聚焦3/3、候选 Vim/模型聚焦2/2、Ubuntu 模型通过。仅新 data-only 场景不生成位图。\n- 证据:validation.json。\n\n真实 v1/空配置/损坏/未知版本/写失败及最终关闭失败仍待验收;完整 CTest 的既有 #29/#36/#38 不因此关闭,#33 保持 OPEN。JavaZeroo commentedon Oct 25, 2026
已推送
71a32893bb0135d6f0325ec9f0b6c70432831e5d的迁移与回退切片。\n\n- 两轮真实验证:v1 启动不立即改写,提交后完整迁移 v2;删除最后会话后保存有效空配置,重启不再生成默认 cmd;损坏 v2 整体默认回退;v3 在保存尝试和关闭后保持原文。\n- 修正删除最后会话后的焦点,新增 data-only 场景及独立 Python 配置检查。真实 v1/空/损坏/未来版本的进程均回收,未读取个人配置。\n- 完整默认 CTest 为39/40;normal/resize 属 #36,另有一次多会话标记等待间歇超时。重跑 shell 多会话两轮通过,但未宣称该间歇问题已根治。候选聚焦2/2、Ubuntu模型通过。\n- 证据:validation.json。\n\n写入失败/成功重试及最终关闭失败仍待验收,#33 保持 OPEN。JavaZeroo commentedon Oct 25, 2026
限定验收已完成并推送
2b623108cf993300947d898847cdeecc164ae95c。\n\n- 多类型真实新进程恢复目录/标题/zoom/split/窗口;v1 延迟迁移、有效空会话、损坏回退、未知版本保护均有独立验证。\n- 真实原子写入失败保留原文,成功重试清除错误;最终关闭失败保留窗口和会话,显式 Ctrl+Shift+W 放弃保存才退出,未把放弃保存写成已保存。\n- R1 默认启动和布局回归、7项 Workspace 场景、候选聚焦和菜单负例通过;完整默认 CTest 为39/40,剩余 normal/resize 归 #36。证据:validation.json。\n\n本 issue 只关闭上述明确范围。多会话间歇标记等待仍由 #38 跟踪,#29/#31/#35、#7 和 R2 路标均未关闭。