Skip to content

1.43.0: parallel sessions in separate workspaces (git worktrees) - #58

Merged
writingdeveloper merged 5 commits into
mainfrom
feat/worktree-sessions
Oct 21, 2026
Merged

writingdeveloper merged 5 commits into
mainfrom
feat/worktree-sessions

Conversation

@writingdeveloper

Copy link
Copy Markdown
Owner

What

  • Separate workspace sessions. The header branch button creates a git worktree at <repo>/.claude/worktrees/<name> on devdeck/<name>, starting from the current commit, and opens a session in it.
    • The worktree folder is added to .git/info/exclude, so the project stays clean.
  • Header. Shows files changed and commits made. A bin button cleans up: it closes the session and removes the folder and branch.
    • It asks once and names only what would really be lost (uncommitted changes, or commits the base branch lacks), with a hint to merge first.
    • Nothing unmerged is removed without that yes.
  • Host methods. cockpit:createWorktree and cockpit:removeWorktree need spawn; cockpit:worktreeInfo needs observe.
    • A worktree is removed only if DevDeck recorded it as a workspace and its path sits directly under .claude/worktrees.
    • Older hosts report HOST_TOO_OLD.
  • pathGuard. A repo registered as a single folder admits <repo>/.claude/worktrees/<name>, one level only.
  • Windows. When git has dropped the worktree but Windows still holds the folder, DevDeck removes the leftover folder itself. qa:cockpit-tools caught the case where this was missing.

Verified

  • tsc.
  • vitest: 1501 total, 1 skipped. The new worktree tests run against real temporary git repositories.
  • qa:cockpit-tools: 10/10, including create, count and clean-up through the warning.
  • qa:image-rows, qa:images, qa:images-remote and qa:audit (0 violations) all pass.

🤖 Generated with Claude Code

https://claude.ai/code/session_016NLGwiBY5uEivJqERQzcoY

writingdeveloper and others added 5 commits October 20, 2026 23:48
…under .claude/worktrees

Created from the project's current commit on a devdeck/<name> branch, kept out of the project's
status through .git/info/exclude, counted (files, commits, unsaved), and removed only when nothing
unmerged would be lost or the person said so. A repo registered as a single folder admits its own
workspaces one level under .claude/worktrees and nothing else inside it. When Windows holds the
folder after git has already dropped the worktree, the leftover folder is removed directly.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016NLGwiBY5uEivJqERQzcoY
…e header, a clean-up that warns

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016NLGwiBY5uEivJqERQzcoY
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016NLGwiBY5uEivJqERQzcoY
On the v1.42.0 tag run the gate passed at 06:30 and node stayed alive on a leftover handle until
the job's 20-minute limit cancelled it, and the release with it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016NLGwiBY5uEivJqERQzcoY
…lled the same repository differently

CI caught it: the Windows runner's temp is C:\Users\RUNNER~1 while git reports the long path, and
macOS's /var is /private/var, so a repository's own top folder failed to match itself.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016NLGwiBY5uEivJqERQzcoY
@writingdeveloper
writingdeveloper merged commit a31dbe0 into main Oct 21, 2026
16 checks passed
@writingdeveloper
writingdeveloper deleted the feat/worktree-sessions branch October 21, 2026 07:05
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