From ad9bc6c1df40ac41ee9f50405bb17bbea6b08674 Mon Sep 17 00:00:00 2001 From: Julius Marminge Date: Tue, 24 Feb 2026 21:48:41 -0800 Subject: [PATCH] Improve chat layout responsiveness and adopt new sidebar primitives - Refactor chat, header, and composer spacing/overflow for mobile-friendly behavior - Replace custom sidebar structure with reusable collapsible/sidebar UI components - Tighten compact controls with responsive labels, triggers, and accessibility tweaks --- apps/web/src/components/ChatMarkdown.tsx | 2 +- apps/web/src/components/ChatView.tsx | 70 +- apps/web/src/components/GitActionsControl.tsx | 6 +- .../src/components/ProjectScriptsControl.tsx | 8 +- apps/web/src/components/Sidebar.tsx | 415 ++++++----- apps/web/src/components/ui/collapsible.tsx | 45 ++ apps/web/src/components/ui/sidebar.tsx | 700 ++++++++++++++++++ apps/web/src/components/ui/tooltip.tsx | 59 ++ apps/web/src/index.css | 15 + apps/web/src/routes/_chat.index.tsx | 10 + apps/web/src/routes/_chat.tsx | 24 +- 11 files changed, 1126 insertions(+), 228 deletions(-) create mode 100644 apps/web/src/components/ui/collapsible.tsx create mode 100644 apps/web/src/components/ui/sidebar.tsx create mode 100644 apps/web/src/components/ui/tooltip.tsx diff --git a/apps/web/src/components/ChatMarkdown.tsx b/apps/web/src/components/ChatMarkdown.tsx index e16d09e2a3705389cb0008ad5727f25ff598f088..e8e2b9d85c8ae6ecdeafba3ae5a089efa6c7f471 100644 --- a/apps/web/src/components/ChatMarkdown.tsx +++ b/apps/web/src/components/ChatMarkdown.tsx @@ -16,7 +16,7 @@ const markdownComponents: Components = { function ChatMarkdown({ text }: ChatMarkdownProps) { return ( -
+
+ {!isElectron && ( +
+
+ + Threads +
+
+ )} {isElectron && (
No active thread @@ -1681,10 +1690,13 @@ export default function ChatView({ threadId }: ChatViewProps) { } return ( -
+
{/* Top bar */}
{/* Input bar */} -
-
+
+
{/* Textarea area */} -
+
{composerMenuOpen && (
{/* Bottom toolbar */} -
-
+
+
{/* Model picker */} {/* Divider */} - + {/* Reasoning effort */} {/* Divider */} - + {/* Runtime mode toggle */}
{/* Right side: send / stop button */} -
+
{phase === "running" ? ( - + }>