authorgravatar for julius0216@outlook.comJulius Marminge <julius0216@outlook.com> 2026-09-10 13:31:45-07:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-09-10 13:31:45-07:00
log47dbb06c3b171c40ebdfbd5b38cd954127949bc0
tree4ccc929d397ba844f70f6dd511eacb345cff9177
parent32b690934039ea31c8bf8079aea8e9c088e97d9f
signature Signed by PGP key B5690EEEBB952194

fix(mobile): add close controls to tablet files and terminal (#11115)


2 files changed, 42 insertions(+), 2 deletions(-)

apps/mobile/src/features/files/thread-file-navigator-pane.tsx+22-1
......@@ -18,6 +18,7 @@ import { useEnvironmentQuery } from "../../state/query";
1818import { useAppearancePreferences } from "../settings/appearance/AppearancePreferencesProvider";
1919import { FileTreeBrowser } from "./FileTreeBrowser";
2020import { preloadWorkspaceFileContents } from "./preload-workspace-file";
21import { useAdaptiveWorkspaceLayout } from "../layout/AdaptiveWorkspaceLayout";
2122
2223export function ThreadFileNavigatorPane(props: {
2324 readonly cwd: string;
......@@ -28,6 +29,7 @@ export function ThreadFileNavigatorPane(props: {
2829 readonly onSelectFile: (path: string) => void;
2930}) {
3031 const [searchQuery, setSearchQuery] = useState("");
32 const { toggleAuxiliaryPane } = useAdaptiveWorkspaceLayout();
3133 const { themeAppearance: highlightTheme } = useAppearancePreferences();
3234 const theme = useUniwindTheme();
3335 const foregroundColor = theme["--color-foreground"];
......@@ -64,8 +66,18 @@ export function ThreadFileNavigatorPane(props: {
6466 type: "button" as const,
6567 width: 44,
6668 },
69 {
70 accessibilityLabel: "Close files",
71 icon: { name: "xmark", type: "sfSymbol" as const },
72 identifier: "thread-file-navigator-close",
73 onPress: toggleAuxiliaryPane,
74 sharesBackground: false,
75 tintColor: foregroundColor,
76 type: "button" as const,
77 width: 44,
78 },
6779 ] as ComponentProps<typeof ScreenStackHeaderConfig>["headerRightBarButtonItems"],
68 [entriesQuery.refresh, foregroundColor],
80 [entriesQuery.refresh, foregroundColor, toggleAuxiliaryPane],
6981 );
7082
7183 const fileTree = (
......@@ -159,6 +171,15 @@ export function ThreadFileNavigatorPane(props: {
159171 type="monochrome"
160172 />
161173 </Pressable>
174 <Pressable
175 accessibilityRole="button"
176 accessibilityLabel="Close files"
177 hitSlop={8}
178 className="h-8 w-8 items-center justify-center rounded-full active:bg-subtle"
179 onPress={toggleAuxiliaryPane}
180 >
181 <SymbolView name="xmark" size={14} tintColorClassName="accent-icon-muted" />
182 </Pressable>
162183 </View>
163184 <View className="flex-row items-center gap-2 border-t border-border px-3 py-2">
164185 <SymbolView
apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx+20-1
......@@ -850,6 +850,19 @@ export function ThreadTerminalRouteScreen(props: ThreadTerminalRouteScreenProps)
850850 [navigation, selectedThread, terminalId],
851851 );
852852
853 const handleCloseTerminal = useCallback(() => {
854 if (navigation.canGoBack()) {
855 navigation.goBack();
856 return;
857 }
858 navigation.dispatch(
859 StackActions.replace("Thread", {
860 environmentId: params.environmentId,
861 threadId: params.threadId,
862 }),
863 );
864 }, [navigation, params.environmentId, params.threadId]);
865
853866 const navigateAwayAfterExit = useCallback(() => {
854867 // With other shells still live, fall through to the previous one instead
855868 // of dropping the user back on the thread.
......@@ -1143,7 +1156,7 @@ export function ThreadTerminalRouteScreen(props: ThreadTerminalRouteScreenProps)
11431156 <AndroidScreenHeader
11441157 title="Terminal"
11451158 subtitle={headerSubtitle}
1146 onBack={navigation.canGoBack() ? () => navigation.goBack() : undefined}
1159 onBack={handleCloseTerminal}
11471160 trailing={
11481161 <>
11491162 {layout.usesSplitView ? (
......@@ -1179,6 +1192,12 @@ export function ThreadTerminalRouteScreen(props: ThreadTerminalRouteScreenProps)
11791192
11801193 {layout.usesSplitView ? (
11811194 <NativeHeaderToolbar placement="left">
1195 <NativeHeaderToolbar.Button
1196 accessibilityLabel="Close terminal"
1197 icon="xmark"
1198 onPress={handleCloseTerminal}
1199 separateBackground
1200 />
11821201 <NativeHeaderToolbar.Button
11831202 accessibilityLabel={panes.primarySidebarVisible ? "Maximize terminal" : "Show threads"}
11841203 icon={