You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Wherever the branch/bookmark is mentioned (terminal pane footer, VCS sidebar header), allow a click to open a branch selector, and to click any branch in that list to switch the current branch in the selected workroom.
Conflicts with a decision made 5 days before this issue was filed. Commit a9838620 ("add a VCS toolbar to the top of the inspector") deliberately removed in-place branch switching from VCSToolbar.swift, with this doc comment on VCSBranchSegment:
Workrooms are branches — a workroom's identity is its directory name, with no branch field anywhere in the config — so switching a workroom's branch would make its name permanently wrong, and the jj equivalent (jj new <bookmark>) was reproduced removing a file from the working copy and orphaning the workroom's commit. With switching gone there is no action left that belongs on the branch name, so this is a label: no Button, no hover well, no chevron.
Two concrete blockers found for literal in-place switching, as requested here:
git — internal/config has no branch field. A workroom's directory name is its identity (set at git worktree add -b time). Switching branch in place leaves the dir name permanently stale, with nothing to reconcile it.
jj — jj new <bookmark> onto the bookmark the toolbar displays was measured to remove a file from the working copy and orphan the workroom's commit as a nameless dangling head, silently (no UI signal).
TODOS.md:929-959 already tracks the sanctioned successor: "New workroom from branch…" — pick a local/remote branch from the toolbar's branch segment (or ⌘O) and create a new workroom checked out to it, instead of mutating an existing one. That reuses:
Views/OpenWorkroomDialog.swift — searchable, project-grouped picker to model the UI on
Go CLI's workroom create — already accepts a branch arg
CLIVCSWriter.gitRemoteRefsArgs — cheap remote-ref enumeration (git); no jj equivalent exists yet for listing bookmarks user-facing (only a private jjBookmarkListArgs/parseJJBookmarks pair in VCSWriting.swift used internally for ahead/behind, not exposed)
No VCS-layer API exists today for either listing branches/bookmarks for a picker, or switching/checking out — both would be new work regardless of which direction this goes.
Recommend closing this in favor of (or retitling to) the TODOS.md "New workroom from branch…" item, unless there's a reason to revisit the in-place-switch decision (e.g. the jj orphan bug gets root-caused and fixed, and a config branch field / rename-on-switch policy gets designed for git).
Closing as obsolete: in-place branch switching was removed on purpose. Workrooms are branches, so the branch segment in VCSToolbar.swift is display-only. Note: workroom create takes no branch argument today (cmd/create.go), so creating a workroom from an existing branch would need its own issue.
Activity
joelmoss commentedon Aug 14, 2026
Conflicts with a decision made 5 days before this issue was filed. Commit
a9838620("add a VCS toolbar to the top of the inspector") deliberately removed in-place branch switching fromVCSToolbar.swift, with this doc comment onVCSBranchSegment:Two concrete blockers found for literal in-place switching, as requested here:
internal/confighas nobranchfield. A workroom's directory name is its identity (set atgit worktree add -btime). Switching branch in place leaves the dir name permanently stale, with nothing to reconcile it.jj new <bookmark>onto the bookmark the toolbar displays was measured to remove a file from the working copy and orphan the workroom's commit as a nameless dangling head, silently (no UI signal).TODOS.md:929-959already tracks the sanctioned successor: "New workroom from branch…" — pick a local/remote branch from the toolbar's branch segment (or ⌘O) and create a new workroom checked out to it, instead of mutating an existing one. That reuses:Views/OpenWorkroomDialog.swift— searchable, project-grouped picker to model the UI onworkroom create— already accepts a branch argCLIVCSWriter.gitRemoteRefsArgs— cheap remote-ref enumeration (git); no jj equivalent exists yet for listing bookmarks user-facing (only a privatejjBookmarkListArgs/parseJJBookmarkspair inVCSWriting.swiftused internally for ahead/behind, not exposed)No VCS-layer API exists today for either listing branches/bookmarks for a picker, or switching/checking out — both would be new work regardless of which direction this goes.
Recommend closing this in favor of (or retitling to) the TODOS.md "New workroom from branch…" item, unless there's a reason to revisit the in-place-switch decision (e.g. the jj orphan bug gets root-caused and fixed, and a config
branchfield / rename-on-switch policy gets designed for git).joelmoss commentedon Oct 7, 2026
Closing as obsolete: in-place branch switching was removed on purpose. Workrooms are branches, so the branch segment in
VCSToolbar.swiftis display-only. Note:workroom createtakes no branch argument today (cmd/create.go), so creating a workroom from an existing branch would need its own issue.🤖 Left by Claude Code