Skip to content

fix(studio): apply the tiny follow-up fixes from #2303 - #2309

Merged
kantord merged 1 commit into
mainfrom
fix/studio-tiny-followups-2303
Oct 14, 2026
Merged

kantord merged 1 commit into
mainfrom
fix/studio-tiny-followups-2303

Conversation

@kantord

@kantord kantord commented Oct 14, 2026

Copy link
Copy Markdown
Member

Summary

Applies the small, independent fixes from #2303 ("Tiny follow-up fixes"), collected from the post-merge reviews of the Studio alignment stack (#2225 to #2256). Each fix that changes behavior has a test, and each new test was checked to fail without its fix.

Part of #2303. It does not close it: the larger bundles and the items that need a design call stay open there (see "Not included").

What changed

#2303 Fix
A, #2225 One token formatter: the session controls use turn-stats' formatTokens, and its false "avoids precision loss" comment is corrected.
A, #2225 The stale "D7-43" and "Phase 7" comments in lib/error-message.ts are gone.
A, #2226 Redundant px-4 / py-3 classes removed from the memory facts table (TableHead and TableCell already default to them).
A, #2232 The Learning page shows a failed background refresh when earlier rows are loaded. Before, a decided row could keep looking pending with no message.
D, #2253 The queue-edit box ignores the Enter that commits an IME composition.
D, #2233 The user docs no longer say the chat header shows "Waiting for authorization". That cue ends when the run parks, and the in-chat status and Review authorization button remain.
E, #2254 A tool row's accessible name includes its status (Open Bash details, failed).
E, #2254 Tool-call previews read only a bounded head of a huge argument or output, and don't parse JSON over 256 KiB.
E, #2255 Forking a chat from the list no longer pulls the reader away from the chat they moved to while the fork ran.
E, #2256 The breakpoint guard also bans min-sm: and min-md:, which compile to the same media queries as sm: and md:.

Behavior changes to know about

  • The session controls' token labels now read 1.0k / 1.0M, matching the turn stats, instead of 1k / 1m.
  • Tool rows' accessible names change, so a test or script that looks them up by the old exact name needs the status suffix. Two existing tests were updated.
  • A tool output over 256 KiB that is JSON is now previewed as text, not as N items or keys: .... Built-in tools are capped at 25 KB, so this only affects very large MCP results.
  • A preview of a cut text always ends with an ellipsis, even when the part read was mostly whitespace.

Not included (left open in #2303)

  • Sections B and C: the larger bundles (plan-verdict hook, PendingAskCard, schedule detail refresh and focus fixes, and so on). They are refactors or behavior changes, not tiny.
  • Optional items that need a design call or more UI: focus after the approval panel closes, gating "Steer agent" on the daemon capability (with its notice), scroll-follow pulling the reader down when they expand something, hidden labels in copied selections, and "just now" for <1m ago.

Verification

Run from apps/:

  • pnpm exec biome check .: clean.
  • pnpm typecheck: clean.
  • pnpm test: 169 web files (1,419 tests) and 26 server files (210 tests) pass. One run had a failure in chat-composer.alignment.test.tsx (a draft assertion after Enter) that did not reproduce in two full reruns or when run on its own. I did not find its cause.
  • pnpm generated:check: no drift.
  • task docs:check: passes, including the strict link check.

Not run: browser or e2e journeys.

Fully or partially written by an AI agent.

🤖 Generated with Claude Code

Small, independent fixes collected from the post-merge reviews of the Studio
alignment stack (#2225 to #2256). Each has a test where it changes behavior.

- Learning: show a failed background refresh when earlier rows are loaded,
  instead of leaving a decided row looking pending with no message.
- Chat: the tool-row button names its status ("..., failed"), so a failed call
  is not announced like a finished one.
- Chat: the queue-edit box ignores the Enter that commits an IME composition.
- Chat: tool-call previews read only a bounded head of a huge arg or output,
  and do not parse huge JSON, so a multi-megabyte MCP result is cheap to mount.
- Chat: a fork started from the chat list no longer pulls the reader away from
  the chat they moved to while it ran.
- Chat: one token formatter. The session controls now read "1.0k" and "1.0M",
  like the turn stats, not "1k" and "1m".
- Breakpoint guard: also bans `min-sm:` and `min-md:`, which compile to the same
  media queries as `sm:` and `md:`.
- Docs: the external-authorization section no longer says the header shows the
  waiting state; the header cue ends when the run parks, the chat status stays.
- Cleanups: drop the stale "D7-43" / "Phase 7" comments and the redundant
  `px-4` classes in the memory facts table.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@kantord kantord mentioned this pull request Oct 14, 2026
41 tasks done
@kantord
kantord marked this pull request as ready for review October 14, 2026 11:18
@kantord
kantord merged commit 8d6e0c9 into main Oct 14, 2026
55 checks passed
@kantord
kantord deleted the fix/studio-tiny-followups-2303 branch October 14, 2026 12:16
@toolhive-release-app toolhive-release-app Bot mentioned this pull request Oct 20, 2026
2 tasks

This branch was successfully deployed

1 active deployment
Preview — a2ead012 Deployed Oct 14, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant