diff --git a/apps/web/src/components/create-session-form.tsx b/apps/web/src/components/create-session-form.tsx index 0c05398..1be7f3a 100644 --- a/apps/web/src/components/create-session-form.tsx +++ b/apps/web/src/components/create-session-form.tsx @@ -73,23 +73,19 @@ export const CreateSessionForm = ({ // Load branches when selected repo changes useEffect(() => { - if (!selectedRepo || !showCloneMode) { + const projectId = fixedProjectId || selectedProject; + if (!selectedRepo || !projectId || !showCloneMode) { setBranches([]); return; } const loadBranches = async () => { setIsLoadingBranches(true); try { - const branchResponse = await listRepositoryBranches( - fixedProjectId || selectedProject, - selectedRepo - ); - const branchList = branchResponse.branches; - setBranches(branchList); - const defaultBranch = branchList.find((b) => b.is_default); - if (defaultBranch) { - setBranch(defaultBranch.name); - setBaseBranch(defaultBranch.name); + const response = await listRepositoryBranches(projectId, selectedRepo); + setBranches(response.branches); + if (response.default_branch) { + setBranch(response.default_branch); + setBaseBranch(response.default_branch); } } catch { // ignore @@ -98,7 +94,7 @@ export const CreateSessionForm = ({ } }; void loadBranches(); - }, [selectedRepo, showCloneMode, selectedProject, fixedProjectId]); + }, [selectedRepo, selectedProject, fixedProjectId, showCloneMode]); // Filter repositories by selected project const availableRepos = selectedProject diff --git a/apps/web/src/components/mobile-terminal-wrapper.tsx b/apps/web/src/components/mobile-terminal-wrapper.tsx index 3e0e7d3..15421a5 100644 --- a/apps/web/src/components/mobile-terminal-wrapper.tsx +++ b/apps/web/src/components/mobile-terminal-wrapper.tsx @@ -33,12 +33,10 @@ export const MobileTerminalWrapper: React.FC = ({ } | null>(null); const headerAutoHide = useAutoHide({ timeout: 3000, enabled: isMobile }); - const keysAutoHide = useAutoHide({ timeout: 3000, enabled: isMobile }); const handleTerminalTap = useCallback(() => { headerAutoHide.toggle(); - keysAutoHide.toggle(); - }, [headerAutoHide, keysAutoHide]); + }, [headerAutoHide]); const handleTerminalReady = useCallback( (sendData: (data: string) => void, connectionStatus: "connecting" | "connected" | "disconnected" | "error", focusInput: () => void) => { @@ -92,7 +90,7 @@ export const MobileTerminalWrapper: React.FC = ({ setShowPanel(true)} onKeepFocus={() => terminalRef?.focusInput()} /> diff --git a/apps/web/src/components/terminal.tsx b/apps/web/src/components/terminal.tsx index 59e39c8..08a5776 100644 --- a/apps/web/src/components/terminal.tsx +++ b/apps/web/src/components/terminal.tsx @@ -275,10 +275,10 @@ export const TerminalComponent: React.FC = ({ } }; - // Focus hidden input on mobile to keep keyboard open + // Focus terminal on mobile to keep keyboard open const handleTerminalClick = () => { - if (isMobile && hiddenInputRef.current) { - hiddenInputRef.current.focus(); + if (isMobile && termRef.current) { + termRef.current.focus(); } }; diff --git a/apps/web/src/styles.css b/apps/web/src/styles.css index b81be2b..45cd55c 100644 --- a/apps/web/src/styles.css +++ b/apps/web/src/styles.css @@ -3211,13 +3211,15 @@ a.nav-item, } .terminal-hidden-input { - position: absolute; - bottom: 0; - left: 0; + position: fixed; + left: -9999px; + top: -9999px; width: 1px; height: 1px; opacity: 0; pointer-events: none; + user-select: none; + -webkit-user-select: none; } /* Disable zoom on mobile terminal */