From 3e402d3c350a4310e41a8c165d5c9f0b23aaeeec Mon Sep 17 00:00:00 2001 From: amosblomqvist Date: Mon, 5 Oct 2026 04:55:59 +0300 Subject: [PATCH] =?UTF-8?q?ui:=20round=205=20=E2=80=94=20AGENT'S=20THINKIN?= =?UTF-8?q?G=20buys=20the=203ch=20rail;=20the=20standard=20chord;=20dashed?= =?UTF-8?q?=20model=20names?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - THE 3CH RAIL: 'AGENT’S THINKING' (16ch, flush) − 'YOUR THINKING' (13ch) = 3ch of mono — the rail widens to 3ch (border + padding), keeping the chevrons aligned while giving the quote room to breathe (the 1ch rail read cramped). YOU row follows. - THE STANDARD CHORD everywhere: Enter submits, Shift+Enter is a newline, ⌘/Ctrl+Enter works too — the teaching thinking field drops the ⌘-only Gmail convention; the hint reads '↵ submits · ⇧↵ newline' in both docks, shown in text mode too (it Enter-submits as well). - The transcript-end optimistic placeholder joins the register: small mono caps THINKING… (was text-sm sentence case). - Model names keep their dashes: prettyModel renders 'glm-5.3-flash' exactly as written (no auto-caps, no dash→space join). --- components/ai-elements/reasoning.tsx | 2 +- components/chat.tsx | 8 ++++---- components/question-dock.tsx | 15 +++++++-------- components/thinking-block.tsx | 12 +++++++----- tests/render-cards.test.tsx | 2 +- 5 files changed, 20 insertions(+), 19 deletions(-) diff --git a/components/ai-elements/reasoning.tsx b/components/ai-elements/reasoning.tsx index 4a3de8d..f21942f 100644 --- a/components/ai-elements/reasoning.tsx +++ b/components/ai-elements/reasoning.tsx @@ -137,7 +137,7 @@ const defaultGetThinkingMessage = (isStreaming: boolean) => { if (isStreaming) { return Thinking...; } - return

AGENT THINKING

; + return

AGENT’S THINKING

; }; export const ReasoningTrigger = memo( diff --git a/components/chat.tsx b/components/chat.tsx index 14b60a0..4fc1115 100644 --- a/components/chat.tsx +++ b/components/chat.tsx @@ -1259,7 +1259,7 @@ export function Chat({ User text renders plain — the model's LaTeX pipeline is not applied to learner-authored text ($ stays $, no surprises). Rendered WITHOUT the Message wrapper — that is the bubble. */ -
+
{/* The rail GROUPS (owner round 4, 2026-10-05): the YOU heading sits INSIDE the rail, same mono-xs register and same 1ch rail as the thinking rows — one quote geometry. */} @@ -1365,10 +1365,10 @@ export function Chat({ entered by external discovery (wake) / the poll fallback. Never collapsible itself. */} {(status === "submitted" || turnInFlight) && ( - + - - Thinking… + + THINKING… )} diff --git a/components/question-dock.tsx b/components/question-dock.tsx index ecd9ea9..752ae70 100644 --- a/components/question-dock.tsx +++ b/components/question-dock.tsx @@ -820,9 +820,10 @@ function QuestionDockForm({ onEscape(); return; } - // ⌘↵ on macOS, Ctrl↵ elsewhere — the Gmail convention; plain - // Enter stays a newline (this field is for dumping). - if (e.key === "Enter" && (e.metaKey || e.ctrlKey)) { + // THE STANDARD CHORD (owner round 5, 2026-10-05): Enter + // submits, Shift+Enter is a newline, ⌘/Ctrl+Enter works + // too — identical to the practice dock and the composer. + if (e.key === "Enter" && (!e.shiftKey || e.metaKey || e.ctrlKey)) { e.preventDefault(); submit(); } @@ -838,11 +839,9 @@ function QuestionDockForm({ /> )}
- {qd.mode !== "text" && ( - - ⌘/Ctrl + ↵ submits - - )} + + ↵ submits · ⇧↵ newline +