feat(workspace): a session in its own worktree, Claude's way
Desktop-parity phase 6, following Claude Desktop: - the workspace home's Worktree checkbox starts the pane with `claude --worktree=<name>`, so Claude Code makes, populates (.worktreeinclude, WorktreeCreate hook) and cleans up <repo>/.claude/worktrees/<name>; AgentHub only excludes /.claude/worktrees/ at the repo root (Claude does not) - server/lib/session-worktree.js resolves a session's worktree from the session row only (owned by the workspace, registered by git worktree list); every lane git route takes ?session= and answers ENOWORKTREE instead of falling back to the main folder - the session view's Changes panel works in the opened run's worktree (dashboard_runs.worktree, GitTarget in the client api) - Resume/Fork start in the session's worktree; a gone one is ENOWORKTREE - Archive of a worktree session removes the worktree after asking: git worktree remove without --force, git branch -d (unmerged work keeps its branch), a lock held by a live pid refused, a stale one cleared - listWorktrees reads `locked <reason>` locks - tests scrub GIT_* env so the pre-commit suite cannot act on this repo
This commit is contained in:
@@ -351,6 +351,10 @@
|
||||
"tree.splitHint": "Live pane — Ctrl/Cmd+click opens it in a second pane",
|
||||
"tree.renameSession": "Rename session",
|
||||
"tree.archiveSession": "Archive — hide from this workspace (deletes nothing)",
|
||||
"tree.worktreeSession": "In its own worktree: .claude/worktrees/{{name}}",
|
||||
"tree.archiveWorktreeTitle": "Archive and remove its worktree?",
|
||||
"tree.archiveWorktreeBody": "Like Claude Desktop, archiving removes the session's worktree .claude/worktrees/{{name}} and its branch. Git refuses if it holds uncommitted changes, and a branch with commits merged nowhere is kept — nothing unsaved is lost.",
|
||||
"tree.archiveWorktreeConfirm": "Archive and remove",
|
||||
"tree.archived_one": "{{count}} archived session",
|
||||
"tree.archived_other": "{{count}} archived sessions",
|
||||
"tree.unarchive": "Unarchive",
|
||||
@@ -361,6 +365,8 @@
|
||||
"home.worktreeCount_other": "{{count}} worktrees",
|
||||
"home.placeholder": "How can I help you today?",
|
||||
"home.start": "Start",
|
||||
"home.worktree": "Worktree",
|
||||
"home.worktreeHint": "Run this session in its own git worktree — <repo>/.claude/worktrees/, a branch of its own, made and cleaned up by Claude Code",
|
||||
"home.allBusy": "All four panes of this workspace are busy — stop one before starting another session.",
|
||||
"home.recents": "Recents",
|
||||
"home.noRecents": "No sessions yet — start one above.",
|
||||
|
||||
@@ -351,6 +351,10 @@
|
||||
"tree.splitHint": "Pane đang chạy — Ctrl/Cmd+click để mở ở pane thứ hai",
|
||||
"tree.renameSession": "Đổi tên session",
|
||||
"tree.archiveSession": "Lưu trữ — ẩn khỏi workspace này (không xoá gì)",
|
||||
"tree.worktreeSession": "Trong worktree riêng: .claude/worktrees/{{name}}",
|
||||
"tree.archiveWorktreeTitle": "Lưu trữ và gỡ worktree của session?",
|
||||
"tree.archiveWorktreeBody": "Giống Claude Desktop, lưu trữ sẽ gỡ worktree .claude/worktrees/{{name}} của session cùng branch của nó. Git sẽ từ chối nếu còn thay đổi chưa commit, và branch có commit chưa merge vào đâu sẽ được giữ lại — không mất gì chưa lưu.",
|
||||
"tree.archiveWorktreeConfirm": "Lưu trữ và gỡ",
|
||||
"tree.archived_one": "{{count}} session đã lưu trữ",
|
||||
"tree.archived_other": "{{count}} session đã lưu trữ",
|
||||
"tree.unarchive": "Bỏ lưu trữ",
|
||||
@@ -361,6 +365,8 @@
|
||||
"home.worktreeCount_other": "{{count}} worktree",
|
||||
"home.placeholder": "Tôi có thể giúp gì cho bạn hôm nay?",
|
||||
"home.start": "Bắt đầu",
|
||||
"home.worktree": "Worktree",
|
||||
"home.worktreeHint": "Chạy session này trong worktree git riêng — <repo>/.claude/worktrees/, branch riêng, do Claude Code tạo và dọn",
|
||||
"home.allBusy": "Cả bốn pane của workspace này đang bận — hãy dừng một pane trước khi mở session mới.",
|
||||
"home.recents": "Gần đây",
|
||||
"home.noRecents": "Chưa có session nào — bắt đầu ở ô phía trên.",
|
||||
|
||||
Reference in New Issue
Block a user