feat(sdk+protocol): shimmer thinking status + step timeline, v0.15.0 (CLEAN-10) - #2
Open
maksymhryzodub-prog wants to merge 4 commits into
Open
feat(sdk+protocol): shimmer thinking status + step timeline, v0.15.0 (CLEAN-10)#2maksymhryzodub-prog wants to merge 4 commits into
maksymhryzodub-prog wants to merge 4 commits into
Conversation
… (CLEAN-10 US1)
The three bouncing dots become a "{title} is thinking…" status line with
a traveling light sweep (gradient clipped to the text, CSS-only, themed
via --bridle-* tokens, static under prefers-reduced-motion, role=status
for AT). A 75s watchdog plus the socket close event clear the status when
a turn dies without stream_end/message, so a cancelled run can't leave an
infinite shimmer.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…g step timeline (CLEAN-10 US2)
New additive 'thinking' wire event (agent → hub → browser): per-step
updates {turnId, step{id,label,detail?,state}} plus a terminal
{turnId, done:true}. The standalone hub whitelists and relays it like
'stream' (not admin-gated — payload is visitor-safe by contract). The
SDK advertises a 'thinking' capability at handshake, and the widget
renders a Rovo-style block: shimmer status header, collapsible vertical
timeline of steps with expandable markdown detail, active-step sweep,
auto-collapse to a summary row when the turn completes. Blocks
interleave with messages by timestamp and freeze via terminal event,
stale watchdog, or socket close. The agent-side lib gains
sendTyping/sendThinking helpers.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
….0 (CLEAN-10) Streaming doc gains a Thinking events section: payload shapes, capability gating, the compatibility matrix, and an agent-side emit example. SDK version reflects the new capability + API surface (thinking listener, IThinkingBlock, timeline UI). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ollow (CLEAN-10) A turn's thinking now renders as multiple segments: a segment seals (collapses) as soon as a new assistant bubble lands below it, and the next step opens a fresh segment under that message — the current activity always sits at the bottom of the flow instead of a single block stranded at turn start. Terminal paths (done event, stale watchdog, socket close) also close the turn so straggler steps can't resurrect a segment; done-updates still reach steps in sealed segments. Auto-scroll now follows only a reader already near the bottom — scrolling up to re-read is no longer yanked back during streaming. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
SDK + canonical protocol side of CLEAN-10 — Rovo-style thinking UI. Stacked on #1 (
feat/sdk-auto-popup): merge that first; this diff shows only the CLEAN-10 commits."{title} is thinking…"line with a traveling light sweep (CSS-onlybackground-clip: texton--bridle-*tokens, both color modes, static underprefers-reduced-motion,role="status"). A 75s watchdog + the socketcloseevent stop a cancelled turn from shimmering forever.thinkingwire event ({turnId, step{id,label,detail?,state}}updates + terminal{turnId, done:true}), typed innestjs/domain, whitelisted in the standalone hub, mirrored insdk/src/types.ts. The SDK advertises a'thinking'capability and the widget renders a collapsible step timeline: vertical rule, per-step chevrons with expandable markdown detail, active-step sweep, auto-collapse to a re-expandable "Thought for a moment" row. Blocks interleave with messages by timestamp and freeze on the terminal event.sendTyping/sendThinkinghelpers inruntime/bridle.repository.ts.sdk-v0.15.0tag after manual sign-off).Cross-repo: pairs with
feat/CLEAN-10-shimmer-thinkingPRs inCleanSlice/ranch(production hub + admin) andCleanSlice/runtime(emission). Any deploy order is safe; recommended hubs → runtime → SDK.Test plan
bun run typecheck(vue-tsc) cleanbun run build(vite + dts) clean🤖 Generated with Claude Code