Files
PaperClipAI/ui
Amy (Opus) ccd85cb736 fix(ui): attribute stackless unhandled rejections with event and lifecycle facts
PAPERCLIP-FRONTEND-G reports `undefined` unhandled rejections with no stack
from a hidden staging tab. The existing reason-kind tag and document state
cannot say who rejected. Record, before the SDK's own handler, whether the
rejection event was browser-dispatched or synthetic and which promise
implementation carried it, plus the latest page lifecycle transition
(visibility, pagehide/pageshow, freeze/resume) with coarse timing buckets.
Only enums and timestamps are kept; the rejected value, URLs and page
content are never read.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 01:53:23 +00:00
..

@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.