diff --git a/CHANGELOG.md b/CHANGELOG.md index 073fe22..a6ad786 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,16 @@ All notable changes to **omp-web** (`@kahme247/ompweb`) are documented in this f --- +## Unreleased + +### Fixes & Improvements + +- Keep composer controls on one line, with equally sized Send, Stop, and Queue buttons and model names truncating before short effort labels. +- Align the + button and primary action with matching composer insets. +- Clearly dim Attach files while the agent is running; queued messages remain text-only. + +--- + ## [v0.5.0] - 2026-09-12 This release brings live tool-output streaming, a workspace picker for new sessions, voice dictation, new themes, an activity timeline with transcript export, and a redesigned settings experience. diff --git a/app/globals.css b/app/globals.css index 7036444..71fd0b3 100644 --- a/app/globals.css +++ b/app/globals.css @@ -1700,6 +1700,72 @@ pre, code { .chat-input-shell:focus-within { transform: none; } +.composer-toolbar { + container-type: inline-size; +} +.composer-toolbar > button { + flex-shrink: 0; +} +.composer-model-control { + flex: 1 1 0; + max-width: 140px; + min-width: 24px !important; +} +.composer-thinking-control { + flex: 0 1 auto; + min-width: 24px !important; + max-width: 100px; +} +.composer-primary-action { + flex-shrink: 0; + min-width: 7em; + justify-content: center; + white-space: nowrap; + min-height: 28px; + padding: 4px 10px; + line-height: 20px; +} +@container (max-width: 400px) { + .composer-model-control > button > svg:first-child, + .composer-thinking-control > button > svg:first-child, + .composer-fast-control > span { + display: none; + } + .composer-fast-control { + justify-content: center; + width: 28px; + padding-inline: 0 !important; + } +} +@container (max-width: 300px) { + .composer-model-control, + .composer-thinking-control { + flex: 0 0 24px; + } + .composer-model-control > button, + .composer-thinking-control > button { + justify-content: center; + gap: 0 !important; + } + .composer-model-control > button > svg:first-child, + .composer-thinking-control > button > svg:first-child { + display: block; + } + .composer-model-control > button > span, + .composer-model-control > button > svg:last-child, + .composer-thinking-control > button > span, + .composer-thinking-control > button > svg:last-child { + display: none; + } + .composer-toolbar > button:not(.composer-primary-action), + .composer-toolbar > div > button, + .composer-toolbar > span { + width: 24px !important; + } + .composer-primary-action { + padding-inline: 6px; + } +} .composer-control-shelf { animation: ui-slide-up var(--dur-fast) var(--ease-out-warm) both; } diff --git a/components/ChatInput.tsx b/components/ChatInput.tsx index 9000a66..60c198c 100644 --- a/components/ChatInput.tsx +++ b/components/ChatInput.tsx @@ -2236,7 +2236,7 @@ export const ChatInput = memo(forwardRef(function ChatIn background: "var(--bg)", border: `1px solid ${bashMode ? "var(--tool-bg)" : "color-mix(in srgb, var(--border) 70%, transparent)"}`, borderRadius: (queuedCount > 0 || Boolean(statusText)) ? "0 0 var(--radius-card) var(--radius-card)" : "var(--radius-card)", - padding: "12px 12px 10px 14px", + padding: "12px 12px 10px", boxShadow: "var(--shadow-card)", transition: "border-color var(--dur-fast) var(--ease-out-warm), background var(--dur-fast) var(--ease-out-warm), box-shadow var(--dur-fast) var(--ease-out-warm)", } as React.CSSProperties} @@ -2284,14 +2284,14 @@ export const ChatInput = memo(forwardRef(function ChatIn /> {/* Toolbar: plus menu · model · reasoning · fast · compact · send/queue/stop */} -
{/* Plus menu — attachment · tools submenu · advisor submenu */}
@@ -2343,6 +2343,7 @@ export const ChatInput = memo(forwardRef(function ChatIn padding: "7px 10px", border: 0, borderRadius: 5, background: "transparent", color: isStreaming ? "var(--text-dim)" : "var(--text-muted)", cursor: isStreaming ? "not-allowed" : "pointer", fontSize: 12, textAlign: "left", + opacity: isStreaming ? 0.5 : 1, }} >
{/* Model selector — compact text button with dropdown */} {(modelOptions.length > 0 || currentName || modelError || showModelsLoading) && onModelChange && ( -
+
{thinkingDropdownOpen && ( @@ -2610,9 +2615,11 @@ export const ChatInput = memo(forwardRef(function ChatIn {fastModeSupported && onFastModeChange && ( )} -
+
{/* Advisor activity — thunder while the advisor model reviews this run */} {advisorActive && ( @@ -2806,12 +2813,11 @@ export const ChatInput = memo(forwardRef(function ChatIn {primaryActionQueuesMessage ? (