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 },