Skip to content

feat(sdk+protocol): shimmer thinking status + step timeline, v0.15.0 (CLEAN-10) - #2

Open
maksymhryzodub-prog wants to merge 4 commits into
feat/sdk-auto-popupfrom
feat/CLEAN-10-shimmer-thinking
Open

feat(sdk+protocol): shimmer thinking status + step timeline, v0.15.0 (CLEAN-10)#2
maksymhryzodub-prog wants to merge 4 commits into
feat/sdk-auto-popupfrom
feat/CLEAN-10-shimmer-thinking

Conversation

@maksymhryzodub-prog

@maksymhryzodub-prog maksymhryzodub-prog commented Aug 14, 2026

Copy link
Copy Markdown

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.

  • US1 — shimmer status: the three bouncing dots become a "{title} is thinking…" line with a traveling light sweep (CSS-only background-clip: text on --bridle-* tokens, both color modes, static under prefers-reduced-motion, role="status"). A 75s watchdog + the socket close event stop a cancelled turn from shimmering forever.
  • US2 — protocol + timeline: new additive thinking wire event ({turnId, step{id,label,detail?,state}} updates + terminal {turnId, done:true}), typed in nestjs/domain, whitelisted in the standalone hub, mirrored in sdk/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.
  • Agent lib: sendTyping / sendThinking helpers in runtime/bridle.repository.ts.
  • Docs: protocol page gains a Thinking events section with the compatibility matrix; SDK bumped to 0.15.0 (release via sdk-v0.15.0 tag after manual sign-off).

Cross-repo: pairs with feat/CLEAN-10-shimmer-thinking PRs in CleanSlice/ranch (production hub + admin) and CleanSlice/runtime (emission). Any deploy order is safe; recommended hubs → runtime → SDK.

Test plan

  • bun run typecheck (vue-tsc) clean
  • bun run build (vite + dts) clean
  • Manual quickstart Scenarios 1–4 (example page vs local hub + runtime; themes × color modes, reduced-motion, SC-002 side-by-side with the Rovo reference) — T025 sign-off

🤖 Generated with Claude Code

maksymhryzodub-prog and others added 4 commits August 14, 2026 12:33
… (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>
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