No description
- TypeScript 91.6%
- CSS 8.3%
- JavaScript 0.1%
- Store cleanup pass — smells 1, 3, 4, 5, 6, 8, 10, 12 resolved (dead-code removal, extracted snapAdjustPointers + MIN_SIZE, computeDragCommitPatch, pruneSelectionAtom, cascading Escape via cancelActiveGestureAtom, isCoveredBySelection shared between click-resolver and hover-preview). Living map at docs/store-flows.md. - Snap engine — fixed equal-gap snap during single-edge resize when the subject sits between two siblings; degenerate align segments (subject and candidate centers coincident) now draw an axis-aligned X mark instead of collapsing to an invisible dot. - Device-side rootRender view — canvasPublishedAtomFamily + publishCanvasAtom; pure RenderedNode tree (no atoms, no editor interactions); flex-centered scale-to-fit; transparent display background. Spatial-index pre-filters top-level nodes to those overlapping the assigned display. - Storybook — shared SDK session pairs editor + device Populated stories so edits propagate across navigation. Single fixture file drives both views. - Frame style fields on NodeRecord (backgroundColor, borderColor, borderStyle); PropertiesPanel surfaces them when a frame is selected; both view layers consume the new services/render/node-style.ts. - Temp Publish button in canvas properties for dev workflows. |
||
|---|---|---|
| .storybook | ||
| docs | ||
| scripts | ||
| src | ||
| .gitignore | ||
| .mcp.json | ||
| .prettierrc | ||
| DESIGN.md | ||
| eslint.config.mjs | ||
| index.html | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| postcss.config.js | ||
| telemetry.config.json | ||
| tsconfig.json | ||
| vite.config.ts | ||