From 5cb05079417e676f0d2526280b8240d69ff76895 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcus=20Gr=C3=A5n=C3=A4s?= Date: Wed, 1 Apr 2026 13:15:55 +0200 Subject: [PATCH 1/2] fix(web): prevent iOS Safari auto-zoom on input focus iOS Safari automatically zooms into input/contenteditable elements when their font size is below 16px. Use 16px on mobile (< 640px) and preserve the original smaller sizes on desktop (>= 640px). Affected inputs: - Composer editor (text-[16px] sm:text-[14px]) - Composer placeholder (text-[16px] sm:text-[14px]) - Sidebar thread rename input (text-[16px] sm:text-xs) Co-Authored-By: Claude Opus 4.6 Co-authored-by: codex --- apps/web/src/components/ComposerPromptEditor.tsx | 4 ++-- apps/web/src/components/Sidebar.tsx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/web/src/components/ComposerPromptEditor.tsx b/apps/web/src/components/ComposerPromptEditor.tsx index 8113099638e..6c435742136 100644 --- a/apps/web/src/components/ComposerPromptEditor.tsx +++ b/apps/web/src/components/ComposerPromptEditor.tsx @@ -1624,7 +1624,7 @@ function ComposerPromptEditorInner({ contentEditable={ 0 ? null : ( -
+
{placeholder}
) diff --git a/apps/web/src/components/Sidebar.tsx b/apps/web/src/components/Sidebar.tsx index e13f3bb0aeb..990d67f0eb2 100644 --- a/apps/web/src/components/Sidebar.tsx +++ b/apps/web/src/components/Sidebar.tsx @@ -568,7 +568,7 @@ const SidebarThreadRow = memo(function SidebarThreadRow(props: SidebarThreadRowP {renamingThreadKey === threadKey ? ( Date: Wed, 29 Apr 2026 17:55:57 -0700 Subject: [PATCH 2/2] Prevent mobile input zoom in composer and sidebar - Use base text size for editable prompt and rename inputs - Keep tooltip widths and wrapping consistent with longer content - Preserve 14px sizing on sm+ breakpoints --- apps/web/src/components/ComposerPromptEditor.tsx | 11 ++++------- apps/web/src/components/Sidebar.tsx | 2 +- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/apps/web/src/components/ComposerPromptEditor.tsx b/apps/web/src/components/ComposerPromptEditor.tsx index 6c435742136..f889b8f6ec8 100644 --- a/apps/web/src/components/ComposerPromptEditor.tsx +++ b/apps/web/src/components/ComposerPromptEditor.tsx @@ -152,10 +152,7 @@ function ComposerMentionDecorator(props: { path: string }) { return ( - + {props.path} @@ -275,7 +272,7 @@ function ComposerSkillDecorator(props: { skillLabel: string; skillDescription: s return ( - + {props.skillDescription} @@ -1624,7 +1621,7 @@ function ComposerPromptEditorInner({ contentEditable={ 0 ? null : ( -
+
{placeholder}
) diff --git a/apps/web/src/components/Sidebar.tsx b/apps/web/src/components/Sidebar.tsx index 990d67f0eb2..4db083dcce3 100644 --- a/apps/web/src/components/Sidebar.tsx +++ b/apps/web/src/components/Sidebar.tsx @@ -568,7 +568,7 @@ const SidebarThreadRow = memo(function SidebarThreadRow(props: SidebarThreadRowP {renamingThreadKey === threadKey ? (