fix(app): hide header Git actions for non-Git workspaces

This commit is contained in:
Mohamed Boudra
2026-07-11 18:34:26 +02:00
parent 03dcda7c41
commit a017ddfc29
3 changed files with 13 additions and 8 deletions
@@ -161,10 +161,7 @@ test.describe("Project with no workspaces persists", () => {
timeout: 30_000, timeout: 30_000,
}); });
await workspaceRow.click(); await workspaceRow.click();
await expect(page.getByTestId("changes-primary-cta")).toHaveAttribute( await expect(page.getByTestId("changes-primary-cta")).toHaveCount(0);
"aria-label",
"Archive workspace",
);
await archiveWorkspaceFromSidebar(page, workspace.workspaceId); await archiveWorkspaceFromSidebar(page, workspace.workspaceId);
+6 -2
View File
@@ -353,14 +353,18 @@ describe("git-actions-policy", () => {
); );
}); });
it("offers archive workspace regardless of its backing", () => { it("hides Git actions for a non-Git workspace", () => {
const directory = buildGitActions(createInput({ isGit: false })); const directory = buildGitActions(createInput({ isGit: false }));
expect(directory).toEqual({ primary: null, secondary: [], menu: [] });
});
it("offers archive workspace for Git checkouts and worktrees", () => {
const localCheckout = buildGitActions(createInput({ hasUncommittedChanges: true })); const localCheckout = buildGitActions(createInput({ hasUncommittedChanges: true }));
const worktree = buildGitActions( const worktree = buildGitActions(
createInput({ hasUncommittedChanges: true, isPaseoOwnedWorktree: true }), createInput({ hasUncommittedChanges: true, isPaseoOwnedWorktree: true }),
); );
expect(directory.primary?.id).toBe("archive-workspace");
expect(localCheckout.secondary.some((action) => action.id === "archive-workspace")).toBe(true); expect(localCheckout.secondary.some((action) => action.id === "archive-workspace")).toBe(true);
expect(worktree.secondary.some((action) => action.id === "archive-workspace")).toBe(true); expect(worktree.secondary.some((action) => action.id === "archive-workspace")).toBe(true);
}); });
+6 -2
View File
@@ -189,6 +189,10 @@ export function narrowPullRequestState(state: string | null | undefined): "open"
} }
export function buildGitActions(input: BuildGitActionsInput): GitActions { export function buildGitActions(input: BuildGitActionsInput): GitActions {
if (!input.isGit) {
return { primary: null, secondary: [], menu: [] };
}
const allActions = new Map<GitActionId, GitAction>(); const allActions = new Map<GitActionId, GitAction>();
allActions.set("commit", { allActions.set("commit", {
@@ -293,8 +297,8 @@ export function buildGitActions(input: BuildGitActionsInput): GitActions {
const primaryActionId = getPrimaryActionId(input); const primaryActionId = getPrimaryActionId(input);
const primary = primaryActionId ? (allActions.get(primaryActionId) ?? null) : null; const primary = primaryActionId ? (allActions.get(primaryActionId) ?? null) : null;
const secondaryIds = input.isGit ? [...REMOTE_ACTION_IDS] : []; const secondaryIds = [...REMOTE_ACTION_IDS];
if (input.isGit && !input.isOnBaseBranch) { if (!input.isOnBaseBranch) {
secondaryIds.push(...getFeatureActionIds(input)); secondaryIds.push(...getFeatureActionIds(input));
} }
secondaryIds.push("archive-workspace"); secondaryIds.push("archive-workspace");