* commit '1c892ff4640370f2a658beab3339080fd4a86de4': fix(recovery): preserve native workspaces after control deadlines (#17788) fix(evals): share bounded request policy with qualification (#17765) fix(tasks): hide empty message history disclosure (#17751) perf(runner): keep event journal writes off the HTTP thread (#17745) Bound native OpenCode assigned-tool catalog projection (#17740) fix(ui): keep iPhone task chat stable while typing and streaming (#17232) fix(runner): preserve disabled Codex web search (#17744) fix(ui): identify accounts in AI connection choices (#17738) fix(recovery): wake retained workspace preservation after Retry (#17741) fix(chat): admit task Retry after GitHub reconnect (#17733) fix(runner): allow bounded controller admission before welcome (#17735) Co-Authored-By: Paperclip <noreply@paperclip.ing>
@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.