Skip to content

[R2-09][会话] 支持固定本地 shell 与真正的分屏/标签工作流 #32

Closed

Description

@JavaZeroo

当前正式路线(2026-10-28)

用户已确认自主 C++ 终端核心+当前 Qt Widgets GUI+随包固定微软 ConPTY,依据见 ADR-0008。第一批整合由 #115 / PR #116承接。

已关闭的有限 shell/标签/分屏交付属于原 Win32 固定配置,历史状态不变。Qt 路线需要迁移相应交互并重新验证;#115 只做最小单会话基础,完整工作区迁移由 #34/#7 后续执行项承接,不能直接继承旧UI验收。

以下原合同与固定检查点保留各自来源;路线确认不替代实现、完整R2或性能验收。

用户结果

用户可启动明确支持的 cmd、PowerShell、WSL 等本地入口,配置目录/参数,并在真实分屏和标签中完成互不串扰的会话任务。

工作范围

  • 冻结首批 shell、启动目录/参数、profile 和启动失败/退出合同;管理员 shell 与远程会话不纳入本切片。
  • 实现会话创建、重复打开、关闭与错误反馈,保证环境、工作目录、进程生命周期和回收可检查。
  • 将现有两个区域的布局推进到真正可操作的通用分屏/标签工作流,明确排序、焦点、重命名和关闭目标;参考未知行为先取证。

验收

  • 每个声明支持的 shell 均通过真实启动、命令、交互中断、resize、退出和失败路径。
  • 分屏/标签操作作用于正确会话,多会话输入输出、后台负载和关闭互不影响。
  • 支持矩阵、快捷键/动作上下文和 FEATURES 已更新,R1 八会话工作流与资源回收回归通过。

父项:#7。真实前置:无;TUI 产品验收仍依赖 #28。

Activity

  1. added
    enhancementNew feature or request
    ready-for-agent范围明确且真实阻塞已解除,可开始实施
    on Oct 24, 2026
  2. JavaZeroo commented on Oct 24, 2026

    @JavaZeroo
    OwnerAuthor

    #32 的固定本地 shell 启动切片已完成,本项保持 OPEN,后续工作不由此提前关闭。

    实现:

    • ShellLaunch 统一描述 id、可执行文件、参数、工作目录和 shell 命令差异;空描述保留原 cmd 行为。
    • tf_conpty::Session::start 可传工作目录,现有调用保持兼容。
    • cmd、Windows PowerShell 5.1、PowerShell 7、显式 Ubuntu WSL 均有独立启动工厂;PowerShell 原生命令用 &,WSL helper 路径转换为 /mnt/<drive>/...。
    • 新 ui-shells 场景、Python 独立校验和负例。

    实际验收:

    • Windows 11 build 26200,四种 shell 各两轮真实启动、唯一输出标记、隔离工作目录、实际 ConPTY 尺寸和关闭回收通过。
    • 每轮主区/底部各 2 个会话,4 个全部回收,Job active=0、desktop 删除;最终帧已逐张查看。
    • 启动工厂、非法分发名/相对路径负例通过;默认 cmd 的主/底部工作区和 resize 回归通过。
    • 证据:experiments/shell/results/2026-10-24-r2-local-shells/。

    未覆盖:启动失败 UI、任意 profile/参数、通用分屏/标签排序、完整逐 shell 退出流程、管理员 shell、SSH 和产品架构决定。#36 的完整 CTest 失败仍独立保留。待提交后本切片才能计为交付。

  3. JavaZeroo commented on Oct 24, 2026

    @JavaZeroo
    OwnerAuthor

    #32 的生命周期切片已完成并覆盖此前的启动结果:

    • 四种固定 shell 各两轮真实启动、目录/参数、实际 ConPTY 尺寸和逐个正常 exit,每次退出不影响其他会话。
    • 无效可执行文件产生可见 CreateProcess: 2;失败会话可独立关闭,随后新 cmd 恢复,原 cmd 不受破坏。
    • 修正了启动失败会话不进入关闭定时器的问题;没有进程可等待时,清理完成不再误报为残留。
    • 目录在每种 shell 内直接比较并返回短标记,不依赖长路径在窄网格中的显示方式。

    证据:experiments/shell/results/2026-10-24-r2-shell-lifecycle/。两轮正常退出和两轮失败恢复均 Job active=0、desktop 删除,最终帧已查看;默认工作区回归通过。

    仍未完成:通用分屏/标签排序、任意 profile/参数、全部运行时错误提示、管理员 shell、SSH 和产品架构决定。本项保持 OPEN;#36 的完整 CTest 失败仍独立保留。

  4. JavaZeroo commented on Oct 24, 2026

    @JavaZeroo
    OwnerAuthor

    #32 的主区真实分屏切片已完成:

    • Alt+- 在主区创建真正独立的左右会话,不是只显示两个标签或复用原有主/底部布局。
    • Alt+Left/Right 切换 pane;Alt+Z 隐藏/恢复而不终止进程;Alt+X 只关闭当前 pane。
    • 两轮验证左右独立输出、隐藏期间后台输出、恢复、关闭右侧后左侧存活,以及最终3会话回收。
    • 分屏焦点、索引和关闭状态与 selected/select/layout/note_focus/collect_child 同步,rename/粘贴等仍指向当前 pane。
    • 相关主/底部、多 shell、启动失败恢复和真实跨屏回归均通过。

    证据:experiments/shell/results/2026-10-24-r2-main-split/,包含公开 split.bmp 和两轮 split.json。

    范围仍限主区一个左右 split;任意嵌套、标签拖放/搜索/颜色、分屏持久化和完整 WindTerm 工作区未完成。本项可继续后续标签工作,不能据此提前完成 #33 或产品架构决定。#36 的完整 CTest 失败仍独立保留。

  5. JavaZeroo commented on Oct 24, 2026

    @JavaZeroo
    OwnerAuthor

    已在提交 7880c2a 交付并推送固定本地 shell 生命周期、启动失败恢复及主区一个真实左右 split。聚焦复验的 local_shell_launch、launch_failure、main_split 三项均通过;R1 workflow_sessions/workflow_resources 等也通过。完整 Release 构建成功,39 项 CTest 自然结束为 37 通过,唯一失败是 shell 内 #36 的 normal/resize 两个场景,继续独立跟踪,未冒充完整通过。任意嵌套、拖放/搜索/颜色、分屏持久化、物理输入和实际呈现不属于本次已完成证据;R2/#7 路标保持开放。

  6. removed
    ready-for-agent范围明确且真实阻塞已解除,可开始实施
    on Oct 26, 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

    enhancementNew feature or request

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions