From d033c214942e2ad23d97ce60ba1e930a9b9ba5e4 Mon Sep 17 00:00:00 2001 From: Michael Suchacz <203725896+ibetitsmike@users.noreply.github.com> Date: Wed, 29 Jul 2026 14:46:37 +0000 Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=A4=96=20fix:=20drop=20the=20creation?= =?UTF-8?q?=20headline=20and=20align=20the=20composer=20with=20the=20trans?= =?UTF-8?q?cript?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The "Let's get building." headline gave a static string the largest type on the creation page, so remove it. The composer dock cancels the transcript scrollport's gutter so it can paint full-bleed, and every surface inside it re-applied that gutter as px-4 (16px) with a hardcoded max-w-4xl column. In full-width mode the transcript is no longer capped, so the composer, its decorations, and the warning banners stayed 896px wide inside a much wider transcript. Share the gutter and the width mode through one hook so docked surfaces track the transcript column in both modes. --- .../ChatPane/ChatInputDecoration.tsx | 15 +++-- src/browser/components/ChatPane/ChatPane.tsx | 12 +++- .../ConcurrentLocalWarning.tsx | 10 ++- .../components/ProjectPage/ProjectPage.tsx | 11 ---- .../features/ChatInput/ChatInput.stories.tsx | 66 +++++++++++++++++++ src/browser/features/ChatInput/index.tsx | 10 ++- src/browser/hooks/useChatDockColumn.ts | 14 ++++ src/browser/stories/helpers/chatSetup.ts | 3 + 8 files changed, 119 insertions(+), 22 deletions(-) create mode 100644 src/browser/hooks/useChatDockColumn.ts diff --git a/src/browser/components/ChatPane/ChatInputDecoration.tsx b/src/browser/components/ChatPane/ChatInputDecoration.tsx index ac8dfe3fe4..fabec46fef 100644 --- a/src/browser/components/ChatPane/ChatInputDecoration.tsx +++ b/src/browser/components/ChatPane/ChatInputDecoration.tsx @@ -1,6 +1,10 @@ import type { ReactNode } from "react"; import { ChevronDown, ChevronRight } from "lucide-react"; import { cn } from "@/common/lib/utils"; +import { + CHAT_DOCK_GUTTER_CLASS, + useChatDockColumnWidthClass, +} from "@/browser/hooks/useChatDockColumn"; interface ChatInputDecorationProps { expanded: boolean; @@ -27,9 +31,11 @@ interface ChatInputDecorationProps { // drifting again as individual decorations evolve, while `renderExpanded` // keeps large hidden detail trees out of collapsed rerenders. export function ChatInputDecoration(props: ChatInputDecorationProps) { + const columnWidthClass = useChatDockColumnWidthClass(); + return (
{TRANSCRIPT_ONLY_NOTICE}
diff --git a/src/browser/components/ConcurrentLocalWarning/ConcurrentLocalWarning.tsx b/src/browser/components/ConcurrentLocalWarning/ConcurrentLocalWarning.tsx index 3182b7a963..365872d170 100644 --- a/src/browser/components/ConcurrentLocalWarning/ConcurrentLocalWarning.tsx +++ b/src/browser/components/ConcurrentLocalWarning/ConcurrentLocalWarning.tsx @@ -2,6 +2,10 @@ import React, { useMemo, useSyncExternalStore } from "react"; import { AlertTriangle } from "lucide-react"; import { useWorkspaceContext } from "@/browser/contexts/WorkspaceContext"; import { useWorkspaceStoreRaw } from "@/browser/stores/WorkspaceStore"; +import { + CHAT_DOCK_GUTTER_CLASS, + useChatDockColumnWidthClass, +} from "@/browser/hooks/useChatDockColumn"; import { cn } from "@/common/lib/utils"; import { isLocalProjectRuntime } from "@/common/types/runtime"; import type { RuntimeConfig } from "@/common/types/runtime"; @@ -85,11 +89,13 @@ export const ConcurrentLocalWarningView: React.FC