The first-task interview agent streams a reply, posts a question card, and settles with reportedWorkDisposition "yielded". The live runner tail hid that reply as soon as the card's pending interaction arrived, and the settled turn hid it again because yielded turns never fill the final-response slot. The reply stays in run history, so this was a rendering regression, not data loss. Yielded turns now hide only the control-plane wait stub (text that echoes the yielded result summary or a single-line "Waiting for ..."). Prose that the agent wrote for the user stays in place through live, settling, and settled states. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@paperclipai/ui
Published static assets for the Paperclip board UI.
What gets published
The npm package contains the production build under dist/. It does not ship the UI source tree or workspace-only dependencies.
Storybook
Storybook config, stories, and fixtures live under ui/storybook/.
pnpm --filter @paperclipai/ui storybook
pnpm --filter @paperclipai/ui build-storybook
Typical use
Install the package, then serve or copy the built files from node_modules/@paperclipai/ui/dist.
Editor dependency identity
Keep the root and workspace overrides for @codemirror/state,
@codemirror/view, and @lezer/common aligned. CodeMirror requires shared
extension identity, while Lezer parsers and syntax highlighters require shared
NodeProp IDs. Multiple Lezer copies can crash code-block highlighting with
tags is not iterable. src/lib/codemirror-single-instance.test.ts checks the
installed dependency graph and highlights sample code through the editor's real
language dependencies. GitHub Actions owns regeneration of pnpm-lock.yaml.