Skip to content

Improve workspace distinction and persist active terminal blocks - #321

Open
mmaxiaolei wants to merge 107 commits into
zerx-lab:mainfrom
mmaxiaolei:feat/repository-workspaces
Open

Improve workspace distinction and persist active terminal blocks#321
mmaxiaolei wants to merge 107 commits into
zerx-lab:mainfrom
mmaxiaolei:feat/repository-workspaces

Conversation

@mmaxiaolei

Copy link
Copy Markdown

Summary

  • Refine repository workspace UI styling and spacing for clearer workspace distinction.
  • Remove redundant workspace hierarchy divider styling.
  • Persist active terminal blocks during application shutdown so unfinished Claude sessions remain visible after restart.

Validation

  • cargo test -p warp active_block_can_be_finalized_for_shutdown --lib
  • cargo check -p warp
  • macOS app bundle built and codesign verification passed.

The + button inherited PreviousDir from ~ when the last session cwd
was outside the worktree. Prefer the worktree unless cwd is already
inside it; CustomDir still wins when set.
Treat a configured but missing remote-tracking ref as no usable
upstream and fall back to the repository default branch for merge
checks, instead of failing deletion with rev-parse Needed a single
revision.
Persist the active CLI agent on each terminal pane and re-run its resume
command after shell bootstrap. Snapshot TerminalModel state without nested
FairMutex locks so app-state save cannot deadlock the UI on launch.
Record the approved window chrome for repository workspaces: full-height
left panel with the tab bar confined to the content column.
Break the approved chrome spec into TDD tasks: helpers, padding
wiring, ToolsPanel lift, empty/collapsed regressions, and spec sync.
Header padding now follows the chrome helper from AppContext in
LeftPanelView::render, matching TabBar padding the same frame instead
of relying on the event-synced cache.
Drop always-on workspace cards, collapse duplicate branch subtitles, and
replace oversized badges with a tree rail, numeric pills, and a running
dot so the sidebar hierarchy is easier to scan.
Empty repository workspaces are a valid persisted state. Skip the
must-have-a-tab assertion in that mode, ignore PaneGroup events before
an active tab exists, and subscribe after the tab is inserted so debug
launches no longer abort.
repaint_after only relayouts the existing element tree, so baking
opacity into Container during View::render froze the ring until hover.
wait_until_completion=true 时无条件 PAGER=cat,会把 git log --stat / git diff / man
整段打到 block,用户无法滚动。对这些隐式 pager 命令不再关 pager,改走
LongRunningCommandSnapshot,让 less 保持可交互。

git --no-pager / 管道 / git status 等仍走原来的关 pager 路径。
侧栏打开时页签作为 workspace 子节点展示各自状态,顶部 TabBar
换成 branch · from upstream · +n/−n 信息栏。折叠父节点不再聚合
agent 头像,避免多页签时误导。
空闲终端页签用 Terminal N,跑过命令后显示最近命令,不再用 cwd/OSC 路径。
重启后等 login shell bootstrap 再执行 CLI agent resume。
树内状态图标与 workspace 分支图标对齐;git log --stat 在 cd && 等写法下保留交互翻页。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant