fix(app): keep pull requests in the explorer pane

Pull request auto-placement was using the current location of Changes as a proxy for pane ownership. Keep the registered explorer pane authoritative so moving Changes cannot redirect automatically discovered pull requests.
This commit is contained in:
Mohamed Boudra
2026-08-17 21:14:39 +02:00
parent b362af6e32
commit 58fe405801
2 changed files with 4 additions and 11 deletions
@@ -423,7 +423,7 @@ describe("workspace-layout-store actions", () => {
expect(findPaneContainingTab(layout.root, "pull_request")?.id).toBe(explorerPaneId);
});
it("places an auto-added pull request in the pane containing Changes", () => {
it("keeps an auto-added pull request in the explorer pane when Changes is elsewhere", () => {
const workspaceKey = createWorkspaceKey();
const store = workspaceLayoutStore.getState();
store.openTabFocused(workspaceKey, { kind: "working_diff" });
@@ -439,7 +439,7 @@ describe("workspace-layout-store actions", () => {
const layout = workspaceLayoutStore.getState().layoutByWorkspace[workspaceKey];
expect(findPaneContainingTab(layout.root, "working_diff")?.id).toBe("main");
expect(findPaneContainingTab(layout.root, "pull_request")?.id).toBe("main");
expect(findPaneContainingTab(layout.root, "pull_request")?.id).toBe(explorerPaneId);
});
it("opens assistant files in an ensured explorer pane and reveals it on the next open", () => {
@@ -521,17 +521,10 @@ export function createWorkspaceLayoutStore(
}
const layout = getWorkspaceLayout(state.layoutByWorkspace, normalizedWorkspaceKey);
const workingDiffTab = collectAllTabs(layout.root).find(
(tab) => tab.target.kind === "working_diff",
);
const workingDiffPane = workingDiffTab
? findPaneContainingTab(layout.root, workingDiffTab.tabId)
: null;
const explorerPaneId = state.explorerPaneIdByWorkspace[normalizedWorkspaceKey] ?? null;
const explorerPane = findPaneById(layout.root, explorerPaneId);
const placementPane = workingDiffPane ?? explorerPane;
const placementLayout = placementPane
? (focusPaneInLayout({ layout, paneId: placementPane.id }) ?? layout)
const placementLayout = explorerPane
? (focusPaneInLayout({ layout, paneId: explorerPane.id }) ?? layout)
: layout;
const result = openTabInLayoutFocused({
layout: placementLayout,