From 19411f3675ea22a60b5803feecfd0e8b17a6ab06 Mon Sep 17 00:00:00 2001 From: Xel Date: Sun, 24 May 2026 18:46:06 +1000 Subject: [PATCH 1/3] Fix mobile composer text input collapse (#1136) --- CHANGELOG.md | 1 + .../client/src/components/chat/ConversationInput.tsx | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5006c11e7..f3e4cec4b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -44,6 +44,7 @@ This file is the release-notes source of truth for Marinara Engine. Reuse these ### Fixed +- Fixed mobile Conversation chats where optional toolbar actions could squeeze the message textarea down until it appeared missing on narrow phone viewports. - Added a stale client artifact cleanup step for the obsolete tracker data sidebar folder so installs, updates, checks, and builds are not tripped up by leftover local files after the tracker panel refactor. - Fixed Docker builds so the stale client artifact cleanup script is available before dependency install/build scripts run. - Fixed streaming Roleplay messages in Glued Side Panel avatar mode so the avatar frame keeps the selected scale and is revealed by the growing message instead of rescaling while tokens arrive. diff --git a/packages/client/src/components/chat/ConversationInput.tsx b/packages/client/src/components/chat/ConversationInput.tsx index 1b4e29fab..3c6792e9b 100644 --- a/packages/client/src/components/chat/ConversationInput.tsx +++ b/packages/client/src/components/chat/ConversationInput.tsx @@ -1569,7 +1569,7 @@ export function ConversationInput({ onDragLeave={handleDragLeave} onDrop={handleDrop} className={cn( - "relative flex items-center gap-1 rounded-2xl border-2 bg-[var(--card)] px-2 py-1.5 transition-all duration-200 sm:gap-2 sm:px-4 sm:py-2.5 dark:bg-black/40", + "relative flex flex-wrap items-end gap-1 rounded-2xl border-2 bg-[var(--card)] px-2 py-1.5 transition-all duration-200 sm:flex-nowrap sm:items-center sm:gap-2 sm:px-4 sm:py-2.5 dark:bg-black/40", isDragging ? "border-blue-400/50 bg-blue-500/10 shadow-lg shadow-blue-500/10" : "border-[var(--border)]", )} > @@ -1588,7 +1588,7 @@ export function ConversationInput({ @@ -1567,26 +1569,6 @@ function getWeatherEmoji(weather: string): string { return "🌀️"; } -function parseTemperature(temp: string): number | null { - const m = temp.match(/-?\d+(\.\d+)?/); - if (!m) return null; - const num = parseFloat(m[0]!); - if (/°?\s*f/i.test(temp)) return Math.round((num - 32) * (5 / 9)); - return Math.round(num); -} - -/** Map descriptive temperature words to a numeric-equivalent hint (°C). */ -function getTemperatureKeywordHint(text: string): number | null { - const t = text.toLowerCase(); - if (/\b(freez|frigid|arctic|glacial|sub-?zero|blizzard)/.test(t)) return -10; - if (/\b(cold|chill|frost|wintry|icy|bitter|nipp)/.test(t)) return 2; - if (/\b(cool|brisk|crisp|refresh)/.test(t)) return 12; - if (/\b(mild|pleasant|comfort|temperate|fair)/.test(t)) return 20; - if (/\b(warm|balmy|toasty|muggy|humid|stuffy|sultry)/.test(t)) return 28; - if (/\b(hot|swelter|blaz|scorch|burn|heat|boil|sear|bak)/.test(t)) return 38; - return null; -} - /** Categorise location text into a colour for the map-pin icon. */ function getLocationPinColor(location: string): string { const l = location.toLowerCase(); diff --git a/packages/client/src/components/panels/SettingsPanel.tsx b/packages/client/src/components/panels/SettingsPanel.tsx index 61781891f..852fbd764 100644 --- a/packages/client/src/components/panels/SettingsPanel.tsx +++ b/packages/client/src/components/panels/SettingsPanel.tsx @@ -631,7 +631,7 @@ function TrackerPanelAppearanceDrawer({
Temperature unit - + +

{magicRewriteMode ? "✨ Magic Rewrite" : title}

+
+ +
-