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

View File

@@ -161,10 +161,7 @@ test.describe("Project with no workspaces persists", () => {
timeout: 30_000,
});
await workspaceRow.click();
await expect(page.getByTestId("changes-primary-cta")).toHaveAttribute(
"aria-label",
"Archive workspace",
);
await expect(page.getByTestId("changes-primary-cta")).toHaveCount(0);
await archiveWorkspaceFromSidebar(page, workspace.workspaceId);

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 }));
expect(directory).toEqual({ primary: null, secondary: [], menu: [] });
});
it("offers archive workspace for Git checkouts and worktrees", () => {
const localCheckout = buildGitActions(createInput({ hasUncommittedChanges: true }));
const worktree = buildGitActions(
createInput({ hasUncommittedChanges: true, isPaseoOwnedWorktree: true }),
);
expect(directory.primary?.id).toBe("archive-workspace");
expect(localCheckout.secondary.some((action) => action.id === "archive-workspace")).toBe(true);
expect(worktree.secondary.some((action) => action.id === "archive-workspace")).toBe(true);
});

View File

@@ -189,6 +189,10 @@ export function narrowPullRequestState(state: string | null | undefined): "open"
}
export function buildGitActions(input: BuildGitActionsInput): GitActions {
if (!input.isGit) {
return { primary: null, secondary: [], menu: [] };
}
const allActions = new Map<GitActionId, GitAction>();
allActions.set("commit", {
@@ -293,8 +297,8 @@ export function buildGitActions(input: BuildGitActionsInput): GitActions {
const primaryActionId = getPrimaryActionId(input);
const primary = primaryActionId ? (allActions.get(primaryActionId) ?? null) : null;
const secondaryIds = input.isGit ? [...REMOTE_ACTION_IDS] : [];
if (input.isGit && !input.isOnBaseBranch) {
const secondaryIds = [...REMOTE_ACTION_IDS];
if (!input.isOnBaseBranch) {
secondaryIds.push(...getFeatureActionIds(input));
}
secondaryIds.push("archive-workspace");