UI-only feature package for the ADR-029 editor rebuild: tsconfig rootDir '.', vitest jsdom base with '@' alias and honest L0 baseline thresholds, conformance ESLint active, React 19, @xyflow/react + zustand wired against the pre-approved 2026-07-12 library traces. Minimal feature.manifest.ts (empty useCases — no binders; declares requiredCores runner-protocol + baseline coverage band) so the editor participates in pnpm conformance without weakening any lint rule. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016j8z4VHjedXDTjEDNg7qHK
2.0 KiB
@repo/editor
Owns the rebuilt Veect editor UI (ADR-029): the React Flow board shell, the iframe frame node that hosts the runner's preview-adapter origin, the editor-side selection overlay, the canvas-protocol client (pinned-targetOrigin postMessage both directions, ADR-028), and the minimal zustand store (registry + selection only — DesignDoc v1 arrives with the design-doc-and-editor-foundation epic).
Boundary tag: feature. May import from core (core-runner-protocol, core-shared), feature, and tooling packages. Imported by apps (apps/web-next hosts the board from story 10).
Public surface:
.(root) — contracts only: canvas-protocol schemas + types, the feature manifest../ui— UI artifacts: board, frame node, selection overlay components, the editor store hook.
Conventions:
- UI-only feature package —
useCasesis empty insrc/feature.manifest.ts; there are no DI binders. Manifest-first ordering applies the moment a use case appears. - Every component in
src/ui/has sibling.stories.tsx+.test.tsxfiles (component-must-have-story/component-must-have-test) — no exemption zone (ADR-029). - Chrome (selection/hover rings) renders as editor-side overlays positioned from agent-reported geometry — never inside the iframe document (ADR-028).
- Board pan/zoom and frame drag are pure React Flow transforms — no canvas-protocol round-trip on drag (<16 ms/frame budget).
- The canvas-protocol message shapes agent ↔ editor are local zod schemas in
src/canvas-protocol/for now; they reconcile with the adapter's agent script (walking-skeleton story 05) and@repo/core-runner-protocolin story 10.render-framealready comes from@repo/core-runner-protocol. - The prototype under
docs/product/reference/project/veect-codebase/is reference only — never vendored (ADR-029).
See: docs/decisions/adr-028-iframe-canvas.md, docs/decisions/adr-029-designdoc-v1-and-editor-rebuild.md, docs/work/epics/walking-skeleton/09-editor-package/_story.md.