+
{renderFields.map((field) =>
field.type === 'external' ? (
diff --git a/frontend/src/pages/SessionDetail.tsx b/frontend/src/pages/SessionDetail.tsx
index 414b03ad..3f51cb24 100644
--- a/frontend/src/pages/SessionDetail.tsx
+++ b/frontend/src/pages/SessionDetail.tsx
@@ -331,7 +331,8 @@ export function SessionDetail() {
const { getForSession: getFormForSession, reply: replyToForm, cancel: cancelForm, syncForSession: syncFormsForSession } = useForms();
const currentForm = sessionId ? getFormForSession(sessionId) : null;
const minimizedForm = currentForm && currentForm.id === minimizedFormId ? currentForm : null;
- const isFormSheetOpen = isMobile && !!currentForm && !minimizedForm;
+ const isFormOpen = !!currentForm && !minimizedForm;
+ const isFormSheetOpen = isMobile && isFormOpen;
const lastAssistantMessage = messages.filter(m => m.type === 'assistant').at(-1);
const lastAssistantText = getAssistantText(lastAssistantMessage);
@@ -876,18 +877,20 @@ export function SessionDetail() {
{sessionDirectory && !isEditingMessage && (
{!isFormSheetOpen && (
@@ -945,7 +948,7 @@ export function SessionDetail() {
onAskSideQuestion={() => handleAskSideQuestion('')}
/>
)}
-
+
{
expect(screen.getByTestId('prompt-overlay')).toHaveClass('top-0')
})
+ it('bounds the form card by the space above the prompt on desktop so its header stays visible', async () => {
+ mocks.useMobile.mockReturnValue(false)
+ formsState.bySession[VIEWED_SESSION_ID] = viewedSessionForm
+
+ render(renderTree())
+
+ await waitFor(() => expect(screen.getAllByText('Continue A')[0]).toBeInTheDocument())
+ const overlay = screen.getByTestId('prompt-overlay')
+ expect(overlay).toHaveClass('top-0', 'justify-end', 'pointer-events-none')
+ expect(overlay.firstElementChild).toHaveClass('max-h-full', 'min-h-0', 'pointer-events-auto')
+ })
+
it('keeps the prompt overlay anchored without an open form or once the form is minimized', async () => {
mocks.useMobile.mockReturnValue(true)
From 24ac88e724154c1c179a11a959a2e2d6dfcce731 Mon Sep 17 00:00:00 2001
From: Chris Scott <99081550+chriswritescode-dev@users.noreply.github.com>
Date: Mon, 19 Oct 2026 23:14:17 -0400
Subject: [PATCH 2/2] fix(repos): add bottom padding to the desktop repo and
remote project lists
---
frontend/src/components/repo/RepoList.tsx | 8 ++++----
frontend/src/components/servers/RemoteProjectList.tsx | 6 +++---
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/frontend/src/components/repo/RepoList.tsx b/frontend/src/components/repo/RepoList.tsx
index 53aaaf9d..b222b2af 100644
--- a/frontend/src/components/repo/RepoList.tsx
+++ b/frontend/src/components/repo/RepoList.tsx
@@ -308,12 +308,12 @@ export function RepoList() {
switch (true) {
case isLoading && !repos:
return (
-
+
-
+
{Array.from({ length: 6 }).map((_, i) => (
@@ -388,7 +388,7 @@ export function RepoList() {
return (
<>
-
+
-
+
{(() => {
switch (true) {
case sortedViewModels.length === 0:
diff --git a/frontend/src/components/servers/RemoteProjectList.tsx b/frontend/src/components/servers/RemoteProjectList.tsx
index 4ef717c1..e333ea81 100644
--- a/frontend/src/components/servers/RemoteProjectList.tsx
+++ b/frontend/src/components/servers/RemoteProjectList.tsx
@@ -74,7 +74,7 @@ function RemoteProjectListLoading() {
-
+
{Array.from({ length: 6 }).map((_, index) => (
@@ -117,7 +117,7 @@ function RemoteProjectListContent({ serverId }: { serverId: string }) {
const openSettings = () => openTab('servers')
return (
-
+
{!serversLoading && !server ? (
setOpenDirectoryOpen(true)} />
-
+
{filteredProjects.length === 0 ? (