* commit 'a88448f77': (21 commits) Use canonical settings defaults in MCP stories Add assistant connection Storybook coverage docs: record experimental MCP settings evaluation evidence fix(mcp): preserve event retries when access is disabled feat(mcp): enable assistant connections through experimental settings fix(mcp): include events at the subscription start boundary fix(mcp): preserve nullable checkout responses in event logging docs: record paid MCP Events qualification and rollout limits fix(mcp): release inactive monitor quotas before admission fix(mcp): retain changes during callback verification test(mcp): cover event lifetime bounds and late activity commits feat(mcp): deliver task events to subscribed assistants Preserve mention icons with Lucide 1.45 and clarify local evidence paths Record paid qualification and direct connection rollout steps Keep completed connections outside pending OAuth quotas Close OAuth admission abuse paths and verify API and eval contracts Bound unauthenticated MCP registrations across replicas Keep OAuth callback credentials out of browser eval diagnostics Reconcile assistant MCP with current schema and runner contracts test(mcp): add paid assistant workflow evaluations ... # Conflicts: # packages/paperclip-runner/docs/capability-contract.md # packages/paperclip-runner/generated/capability/capabilities.yaml # packages/paperclip-runner/generated/capability/capability-contract.md # packages/paperclip-runner/spec/capability/capabilities.yaml # server/package.json
@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.