feat(daemon): add worktree picker to changes sidebar - #19
Open
ephor wants to merge 2 commits into
Open
Conversation
- Add WorktreePicker dropdown component showing all git worktrees - Extend WorktreeManager::discover() to find all worktrees via 'git worktree list --porcelain' - Call discover() on daemon startup for each project - Add lazy init in list_worktrees handler for on-demand discovery - Add path override to diff.get, file.contents, file.list, file.save, diff.resolveHunk, git.commit - Auto-resolve task.worktree path when task runs in isolated worktree - Improve detached worktree naming: show dirname + '(detached)' - Rename 'Main project' to 'Working tree' in picker
ephor
force-pushed
the
feat/worktree-picker
branch
from
July 25, 2026 07:37
8f8be21 to
adef4f1
Compare
Events from startup config discovery (e.g. ProjectConfigChanged) can arrive before TaskCreated. The test now loops past unexpected events instead of panicking.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add a worktree switcher to the changes rail header that lets users inspect diffs, files, and file contents from any git worktree associated with the project — not just the main checkout or the active task's worktree.
Why: When reviewing or working across multiple branches, switching contexts required closing one task and opening another. This picker puts every worktree (including externally-created ones) one click away.
What changed:
WorktreePickerdropdown component lists all git worktrees viagit worktree list --porcelain, including detached heads and non-warpforge worktrees. Stableexternal:<hash>IDs prevent key churn across daemon restarts.pathoverride. The daemon resolves it as: explicit override → task worktree → project path.useTaskQueriesincludesworktreePathin query keys so switching worktrees instantly refetches diff, file list, and file contents for the selected tree..worktrees/directory. Detects any git worktree in the repo (e.g./tmp/foo,../other-branch).