Skip to content

[Grok/dsh 17] 全屏与原生滚动模式切换 #149

Closed

Description

@Blackman99

Parent

#132

Ticket: 17

Status: ready-for-agent

User Stories: 11, 16, 18(见父规格)

What to build

用户在 fullscreen 与 minimal 间切换,正在流式输出的 dsh 会话不重启,草稿与权限状态不丢失。

Acceptance criteria

  • 复用官方两种模式的真实渲染,minimal 按契约写原生历史而不是伪装的全屏。
  • 正在运行、空会话、有草稿、待审批时切换均保留正确状态;模式专用命令提示正确。
  • 正常退出、错误及连续切换恢复终端控制状态,不留下中间全屏帧或重复内容。
  • 真实 PTY 测试两模式和切换前后行为,后续队列票补充队列联动回归;更新新旧语义说明。

Blocked by

Delivery contract

用户于2026-09-20批准当前测试与任务拆分。按父规格的已安装产物/真实终端和公开协议测试验收;实际实现须带适用的文档、Changeset及必要检查。ready-for-agent表示任务已定义,不表示前置任务已完成,也不授权自动开始本轮实施、购买付费资源或发布软件版本。

Activity

  1. self-assigned this
    on Sep 20, 2026
  2. Blackman99 commented on Sep 20, 2026

    @Blackman99
    OwnerAuthor

    按用户2026-09-20的实施授权领取 Ticket17 / #149;本次只记录领取,未启动实施工作者,也不表示已实现。已重新读取 #132 及全部80票正文/评论和实际 blocked-by(native 177 边);当前独立就绪票为 #139、#149、#160(均仅被已关闭的 #138 阻塞),本波并行领取这三张,未领取任何被阻塞后继(含 #150/#152/#153/#154)。

    实施必须从独立集成树精确基线 dc09422b4019a5af31fc65ce9feb8b448c28126a 开始。前置 #138 已关闭,其同一提交已保留在 rewrite/grok-dsh-20260920;两位独立 grok-4.6 审查及集成证据见 #138 (comment) 。#137/#136/#135/#134/#133 仍为已集成关闭基线 #137 (comment) 、#136 (comment) 、#135 (comment) 、#134 (comment) 与 #133 (comment) 。

    范围按原验收:复用官方 fullscreen/minimal 真实渲染,minimal 按契约写原生历史而不是伪装全屏;正在运行、空会话、有草稿、待审批时切换均保留正确状态,模式专用命令提示正确;正常退出、错误及连续切换恢复终端控制状态,不留下中间全屏帧或重复内容;真实 PTY 测试两模式和切换前后行为,后续队列票补充队列联动回归,并更新新旧语义说明。后续实施/审查子代理使用 grok-4.6。仅在实施、独立审查和集成验收通过后关闭。main、现有未跟踪文件及其他工作树不改动;不授权付费资源,#212仍须新的明确最终发布/默认切换批准。

  3. Blackman99 commented on Sep 20, 2026

    @Blackman99
    OwnerAuthor

    Ticket 17 / #149 不能在已集成的 #139 之上直接落盘。独立审查已批准 worker HEAD d23d52bf98ec684f12b778fd9026577d079e0b75(基线 dc09422b4019a5af31fc65ce9feb8b448c28126a,tree 与审查一致),但隔离集成树当前 HEAD 已是 #139 的 3bd2cb4dd19b68eb8600e1d5af8c8be5dcaef70e(3bd2cb4 )。

    git fetch <worker-worktree> HEAD --no-tags 后 FETCH_HEAD 匹配 d23d52b;git cherry-pick dc09422..d23d52b 在下列 6 个文件冲突后已 git cherry-pick --abort,未做手工合并、未改 worker 工作树、未推送、未关闭本票:

    • rust/src/main.rs(至少 7 处:mod config vs mod screen_mode、Launch/--model vs LaunchMode/session、inspect/load_runtime_config vs screen session、help 文本、connect/apply_to_dsh vs connect/history、empty-draft continue)
    • rust/src/welcome/mod.rs
    • packages/cli/bin/rust.mjs(GROK_CONFIG*/GROK_TELEMETRY* vs GROK_SCREEN_MODE* 透传)
    • package.json
    • CONTEXT.md
    • CONTRIBUTING.md

    修复要求:在同一 worker 工作树 /Users/zhaodongsheng/.grok/worktrees/my-projects-codsh/subagent-01a0bed2-f06d-7033-b2bd-a8da31b84506 上把 fullscreen/minimal 切片重放到 3bd2cb4,保留原验收与 packed scripts/rust-screen-pty-test.py,并再经独立审查。main 仍为 43b5da1。#132 与 #212 不关闭。

  4. Blackman99 commented on Sep 21, 2026

    @Blackman99
    OwnerAuthor

    已完成并集成到独立分支 rewrite/grok-dsh-20260920,HEAD 提交:1d96ea1 。feat:a16bc1f 。修复:c39cea3 2793eb9 7425a07 1d96ea1 。该范围是对 worker HEAD 9b048b751ee768b10b7fcfc7ec5efbc0380c6e85 的 da22464d..9b048b7 cherry-pick(五个提交),tree 相同 56000806ae49860562b595981b6087396f00d110。git fetch <worker-worktree> HEAD --no-tags 后 FETCH_HEAD 匹配 9b048b7;无冲突、未手工合并、非 force 推送 da22464..1d96ea1。此 HEAD 已基于当前集成 da22464(#141 已落盘)重放;此前 d23d52b 落到 3bd2cb4 的冲突已经 abort。最后一枚 1d96ea1 修复 packed compact-minimal 在 compact purge 后立即读 session_id() 的赛条,改为 wait_session 等活 session overlay。

    集成控制器在隔离集成树独立复跑(TMPDIR=/tmp):typecheck、80 文件 / 2242 测试通过(含 rust-acp-protocol.spec 23/23)、cargo fmt、严格 Clippy(--offline -D warnings)、Rust workspace 84+61+2+379 项测试(含 cli_and_slash_do_not_rewrite_config_bytes、slash_commands_match_reference_mode_gates、minimal_overlay_keeps_draft_and_native_mode_label;首次并行 shutdown_reaps_child_before_owner_release 被残留 pid 28924 污染,该 pid 已不存在且 acp.rs/所有者锁不在本票范围内,独立重试与全量复跑均通过)、pnpm run build:rust(native SHA-256 5e16b90e4a4bcabf419b9ed425e0ebd69eb6afb2e9a7c9515aa001f1fac859f0,packages/cli/native/ 仍 gitignore)、packed 安装产物 PTY scripts/rust-screen-pty-test.py PASS(证据 /tmp/codsh-rust-screen-qfkoqh07;跑前清理泄露的 /tmp/codsh-rust-*-home-* 进程)、scripts/rust-compact-pty-test.py PASS /tmp/codsh-rust-compact-fhijvxds session 36dc6ea9-b8f3-4b2a-a855-368f07235cf3、隔离套件 scripts/rust-pty-test.py PASS(.scratch/rust-pty-1789952673129485000)。

    实际 UI(packed codsh --rust + 已发布 @deepseek-ai/dsh@0.1.5-rc.2,提供商边界 mock,隔离 HOME/workspace):

    • default-fullscreen session b15ab3eb-e4b8-458d-92e4-193ad6ad12f9:CSI ?1049h/?1049l,mode=fullscreen
    • persisted-minimal session 28a77bb5-92cb-4c17-b3a4-10432d78c05b:不进入 alternate screen
    • cli-fullscreen-override session 0f62445e-9393-4f0c-ada0-fc06d8433a00:DRAFT_KEEP 跨 3 次 enter/leave保留;/minimal 写入 native history Switched to minimal
    • empty-switch session 103dd8ef-55c9-4c6c-9bd7-6cbb97ca16a0:/expand is already available in minimal
    • running-switch session bfd5a943-31ed-4046-9901-cb75c25ec8cd:流式中 /minimal 后 primary 上 TOKEN_SCREEN_STREAM + RUST_ACP_ANSWER,同 session
    • approval-switch session 4a39fd99-c387-4800-8bdf-fa23b52227fe:Allow this dsh file tool? y=allow once;y 后 RUST_ACP_FILE_DONE
    • compact-minimal session 7bf5a2e8-856c-43f3-803b-1137fa55edaf:primary 上 purpose=compaction / MOCK_COMPACTION_SUMMARY 与活 session overlay
    • invalid-default:invalid ui.screen_mode "banana",无 ?1049h,exit 1
    • exec-relaunch session 98adcc9a-6910-481a-aa80-b2afe1e4b283 (resumed):不声称草稿存活
      跑后无残留 codsh-rust-screen-home-* 进程。

    变更仅为 opt-in codsh --rust 的 fullscreen/minimal 同进程切换、原生历史与 session 保留。未改 main(仍 43b5da1),未链入官方 agent 核心,未发布 npm,未做默认切换。Linux/Windows PTY 仍未在本主机验证。#132 spec 与后继票仍不关闭。#212 仍须新的明确最终发布/默认切换批准。worker worktree 保留在 /Users/zhaodongsheng/.grok/worktrees/my-projects-codsh/subagent-01a0bed2-f06d-7033-b2bd-a8da31b84506。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions