From 156b51d5371bc2d5d4a525fe8cdd051e24341851 Mon Sep 17 00:00:00 2001 From: Brad Harris Date: Wed, 11 Mar 2026 09:36:03 -0600 Subject: [PATCH 1/3] Fix modals and settings pane on mobile - Close mobile sidebar before opening dialogs (create agent, settings, delete, edit worktree) so they aren't hidden behind the slide panel - Raise dialog/settings z-index to z-[70] above the mobile panel's z-[60] - Make settings pane full-screen on mobile with drill-down section navigation - Stack release manager layout vertically on mobile instead of side-by-side - Add padding to the release log section Co-Authored-By: Claude Opus 4.6 --- web/src/App.tsx | 8 +-- web/src/components/app/release-manager.tsx | 6 +-- web/src/components/app/settings-pane.tsx | 59 ++++++++++++++++++---- web/src/components/ui/dialog.tsx | 4 +- 4 files changed, 59 insertions(+), 18 deletions(-) diff --git a/web/src/App.tsx b/web/src/App.tsx index eab943a1..30e0593f 100644 --- a/web/src/App.tsx +++ b/web/src/App.tsx @@ -1429,12 +1429,12 @@ export function App(): JSX.Element { agents={agents} selectedAgentId={selectedAgentId} overflowAgentId={overflowAgentId} - onOpenCreateDialog={openCreateDialog} - onOpenEditWorktreeDialog={openEditWorktreeDialog} - onOpenSettings={() => setSettingsPaneOpen(true)} + onOpenCreateDialog={() => { setMobileLeftOpen(false); openCreateDialog(); }} + onOpenEditWorktreeDialog={(agent) => { setMobileLeftOpen(false); openEditWorktreeDialog(agent); }} + onOpenSettings={() => { setMobileLeftOpen(false); setSettingsPaneOpen(true); }} setOverflowAgentId={setOverflowAgentId} setDeleteTarget={setDeleteTarget} - setDeleteConfirmOpen={setDeleteConfirmOpen} + setDeleteConfirmOpen={(open) => { if (open) setMobileLeftOpen(false); setDeleteConfirmOpen(open); }} agentVisualState={agentVisualState} borderForAgentState={borderForAgentState} toggleAgentDetails={toggleAgentDetails} diff --git a/web/src/components/app/release-manager.tsx b/web/src/components/app/release-manager.tsx index 917e270b..75cb00c8 100644 --- a/web/src/components/app/release-manager.tsx +++ b/web/src/components/app/release-manager.tsx @@ -249,9 +249,9 @@ export function ReleaseManager(): JSX.Element { const phaseIndex = job ? PHASES_ORDER.indexOf(job.phase) : -1; return ( -
+
{/* Left column — controls */} -
+
{/* Current version */}
@@ -428,7 +428,7 @@ export function ReleaseManager(): JSX.Element {
{/* Right column — log */} -
+
{showLog ? (
("release"); return ( - { if (!v) onClose(); }}> + { + if (!v) { + onClose(); + setActiveSection("release"); + } + }} + > - - + + Settings Dispatch settings and release manager {/* Header */}
- Settings + {/* Mobile back button when viewing a section */} + {activeSection !== null && ( + + )} + + {activeSection !== null ? ( + {SECTIONS.find((s) => s.id === activeSection)?.label ?? "Settings"} + ) : null} + Settings + Close @@ -37,11 +60,12 @@ export function SettingsPane({ open, onClose }: SettingsPaneProps): JSX.Element {/* Body */}
- {/* Nav */} -