diff --git a/components/question-dock.tsx b/components/question-dock.tsx index 4fe33e1..f3763b7 100644 --- a/components/question-dock.tsx +++ b/components/question-dock.tsx @@ -387,7 +387,15 @@ function QuestionDockForm({ if (!active || rowCount === 0) return; const onKeyDown = (e: KeyboardEvent) => { const t = e.target as HTMLElement | null; - const typing = !!t && (t.tagName === "INPUT" || t.tagName === "TEXTAREA" || t.isContentEditable); + // A TYPING field is where keys mean text (owner round 4): the + // thinking/answer fields, search boxes, renames — never a range + // input, whose focus after a click or drag must not kill the + // arrow cycling. Everywhere else the arrows act. + const typing = + !!t && + ((t.tagName === "INPUT" && (t as HTMLInputElement).type !== "range") || + t.tagName === "TEXTAREA" || + t.isContentEditable); // Alt/Cmd/Ctrl combos are never ours (Alt+arrows cycle sessions // globally — they must not ALSO walk the question rows). const modded = e.altKey || e.metaKey || e.ctrlKey; @@ -612,18 +620,18 @@ function QuestionDockForm({ {/* Confidence (owner, 2026-10-01; UI rounds same day): a snapped - slider below the options and above "Your thinking" — the - learner's stated probability that his selected answer is - correct. The thumb's POSITION is the raw fraction (50 sits - halfway); fill + handle wear the stop's ramp color (the disc - carries a dark rim so it never bleeds into its own fill); - the bar is the original thin rail over #141414, with dashed - stop ticks INSIDE — background layers behind the fill, so - they show only on the empty side, never over the color. - Keyboard: GLOBAL ←/→ (the ↑/↓ pattern; the ring is gone - app-wide). Clicking and dragging are native. "I don't know" - GRAYS it out — the layout holds, no value is sent, the IDK - signal stands alone. */} + slider below the options and above "Your thinking" — the + learner's stated probability that his selected answer is + correct. The thumb's POSITION is the raw fraction; the painted + RAIL overlays exactly the thumb-center range (inset half a disc + per side), so 0 and 100 rest flush against the rail's very + ends. Fill + handle wear the stop's ramp color; SOLID stop + ticks are background layers behind the fill (empty side only, + never over the color; 0/100 need no tick — the flush ends say + them). Keyboard: GLOBAL ←/→ (the ↑/↓ pattern; the ring is gone + app-wide). Clicking and dragging are native. "I don't know" + GRAYS it out — the layout holds, no value is sent, the IDK + signal stands alone. */} {kind === "quiz" && (