Skip to content

Worktrees page, release 0.6.0 - #11

Merged
enso-works merged 21 commits into
mainfrom
worktrees
Oct 24, 2026
Merged

enso-works merged 21 commits into
mainfrom
worktrees

Conversation

@enso-works

Copy link
Copy Markdown
Owner

Merge #10 first. This branch is built on server-urls, so until #10 merges, this PR also shows its commits. If both merge, #10 releases 0.5.0 and this releases 0.6.0.

Every linked git worktree of the repositories devdash knows about, and a safe way to remove the merged ones.

  • devdash/worktrees.py: finds repositories from the projects on screen and the Claude Code projects of every account, deduplicated by their shared .git. Per worktree: branch, creator (Claude Code, Codex, Conductor...), uncommitted changes, last touched, last commit, and whether it's merged.
  • Merged means merged into the default branch (origin/HEAD, else origin/main, else local main), or its remote branch is gone, which catches squash merges.
  • Scanned in a background thread once a minute and sent only when it changes. About 0.7s for 58 Claude projects on this Mac. Sizes (du) only on request, one at a time, cached.
  • Removing: git worktree remove (refuses changes), git worktree prune, and git branch -d for merged branches, never -D. Refuses the main checkout and worktrees with a server or Claude session running in them.
  • Menu bar app: a Worktrees page (footer button, or Worktrees in a project's menu) with All / Merged and idle, status chips, hover and right-click actions. Needs you lists merged worktrees untouched for a day. Linked-worktree projects get a stacked icon on their branch chip.
  • The demo bridge serves fixture worktrees and never scans real repositories.
  • Tests build a real repo with merged, dirty, ahead and busy worktrees in a temp dir (14 tests total).

The plan had a separate Worktrees window. I made it a popover page instead, like Cleanup and the QR page, so it opens where you already are.

@enso-works
enso-works merged commit 8c6a108 into main Oct 24, 2026
2 checks passed
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