diff --git a/packages/app/e2e/browser/changes-pane.spec.ts b/packages/app/e2e/browser/changes-pane.spec.ts index a233567b5f..7137c903ff 100644 --- a/packages/app/e2e/browser/changes-pane.spec.ts +++ b/packages/app/e2e/browser/changes-pane.spec.ts @@ -427,6 +427,15 @@ test("Changes shows the base as text on a host without the base-branch capabilit expect(baseRequests).toBe(0); }); +test("Changes shows no base on a checkout that is not a Paseo worktree", async ({ page }) => { + const workspace = await createWorkspaceWithCommittedDiff(); + await openWorkspaceChangesSurface(page, workspace); + const header = page.getByTestId("changes-repository-header").filter({ visible: true }); + await expect(header).toContainText("feature"); + await expect(header).not.toContainText("main"); + await expect(page.getByTestId("workspace-base-branch-trigger")).toHaveCount(0); +}); + test("Changes keeps a manual comparison when checkout dirtiness changes", async ({ page }) => { const workspace = await createWorkspaceWithMountedTabDiff(); await openWorkspaceChanges(page, workspace); diff --git a/packages/app/src/agent-stream/turn-footer.tsx b/packages/app/src/agent-stream/turn-footer.tsx index 5d04f9eca9..5508803b5d 100644 --- a/packages/app/src/agent-stream/turn-footer.tsx +++ b/packages/app/src/agent-stream/turn-footer.tsx @@ -218,8 +218,12 @@ const stylesheet = StyleSheet.create((theme) => ({ alignSelf: "center", paddingHorizontal: theme.spacing[2], }, + // The message above drops its bottom padding for the footer (compactBottom), so this margin + // alone sets the gap. 20 puts the footer as far below the text as the text sits below a + // tool row: 12 message padding + 4 stream gap + 5 badge padding/border, less the footer's + // 1px taller row. turnFooterRow: { - marginTop: theme.spacing[2] + 5, + marginTop: theme.spacing[4] + theme.spacing[1], }, turnFooterSlot: { flexDirection: "row", diff --git a/packages/app/src/git/diff-pane.tsx b/packages/app/src/git/diff-pane.tsx index d4a7d43ea8..59d3b49797 100644 --- a/packages/app/src/git/diff-pane.tsx +++ b/packages/app/src/git/diff-pane.tsx @@ -667,15 +667,14 @@ function ChangesRepositoryToolbar({ isGitCheckout testID="changes-branch-switcher" /> - {model.baseRef ? ( + {model.baseRef && model.isWorktree ? ( <> - + ) : null} diff --git a/packages/app/src/git/workspace-base-branch-picker.tsx b/packages/app/src/git/workspace-base-branch-picker.tsx index cf260e90d6..abc4fbee8f 100644 --- a/packages/app/src/git/workspace-base-branch-picker.tsx +++ b/packages/app/src/git/workspace-base-branch-picker.tsx @@ -20,7 +20,6 @@ interface Props { workspaceId?: string | null; cwd: string; baseRef: string; - isWorktree: boolean; } const ThemedLoadingSpinner = withUnistyles(LoadingSpinner); @@ -31,13 +30,7 @@ function refLabel(ref: string): string { return ref.replace(/^refs\/(heads|remotes)\//, ""); } -export function WorkspaceBaseBranchPicker({ - serverId, - workspaceId, - cwd, - baseRef, - isWorktree, -}: Props) { +export function WorkspaceBaseBranchPicker({ serverId, workspaceId, cwd, baseRef }: Props) { const { t } = useTranslation(); const client = useHostRuntimeClient(serverId); const connected = useHostRuntimeIsConnected(serverId); @@ -135,7 +128,7 @@ export function WorkspaceBaseBranchPicker({ [t, isPending, error, isError, handleRetry], ); - if (!supported || !isWorktree || !workspaceId) return {label}; + if (!supported || !workspaceId) return {label}; return ( @@ -172,7 +165,9 @@ export function WorkspaceBaseBranchPicker({ } const styles = StyleSheet.create((theme) => ({ - anchor: { flexShrink: 1, minWidth: 0 }, + // The branch name truncates first so a short base like "main" stays readable; the cap lets + // a long base still truncate instead of overflowing the header. + anchor: { flexShrink: 0, minWidth: 0, maxWidth: "40%" }, footer: { padding: theme.spacing[3], gap: theme.spacing[2] }, text: { color: theme.colors.foregroundMuted, fontSize: theme.fontSize.sm }, error: { color: theme.colors.destructive, fontSize: theme.fontSize.sm },