openpencil/tests/e2e
Danila Poyarkov 9081c4b1d6
fix(preview): toggle controls both ways and keep islands in step with the canvas (#982)
* fix(preview): keep a control's layer path when its variant switches

Preview finds a control by its layer path, built from layer names. Swapping an instance named after its variant renamed it to the new variant, as Figma does for a real swap, so a switch or checkbox inside a frame lost its path after one click and could not be toggled back. swapInstanceComponent takes keepName, and preview's private graph keeps every instance's name.

* refactor(preview): build preview's private graph with the shared page extractor

Preview copied its island and the components its instances show with its own closure and copier, a second version of the extractor the AI preview, history, and export use. extractPageContext takes componentSets, which brings every variant of an instance's set so it can switch, and shareTables, which reads the document's variables and images instead of copying them for a view rebuilt on each state. The extractor now also indexes instances by component, which syncing and swapping an extracted graph need.

* test: group scene-graph's instance swap test under instances

* fix(preview): move islands with the frames the canvas draws

Islands followed the pane's live pan and zoom, which change on every wheel event, while the canvas draws once per animation frame or later on a slow frame. Panning and zooming fast, the islands ran ahead of the drawing and settled back when it caught up. useCanvas reports each drawn frame's view through onFrame, and the islands follow the scene's last drawn frame, so both move in the same frame.

* test: release the held canvas even when the island sync test fails

* docs: point private document copies at the shared page extractor

The Core guide says previews, history snapshots, and exports copy part of a document with the extractor in io/subgraph.ts and its componentSets and shareTables options, and the preview guide says where an island's private graph comes from.
2026-10-08 17:51:00 +00:00
..
app fix: repair the app e2e suite and the bugs it was hiding (#968) 2026-10-08 17:15:18 +00:00
brand feat: refresh branding with generated platform icons (#707) 2026-09-16 11:54:07 +03:00
canvas fix: repair the app e2e suite and the bugs it was hiding (#968) 2026-10-08 17:15:18 +00:00
chat fix: repair the app e2e suite and the bugs it was hiding (#968) 2026-10-08 17:15:18 +00:00
clipboard fix: repair the app e2e suite and the bugs it was hiding (#968) 2026-10-08 17:15:18 +00:00
code fix: repair the app e2e suite and the bugs it was hiding (#968) 2026-10-08 17:15:18 +00:00
collab feat(collab): show MCP agents, follow streamed JSX, and follow your agents as they work (#725) 2026-10-07 10:04:58 +00:00
color-picker test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
components fix(preview): toggle controls both ways and keep islands in step with the canvas (#982) 2026-10-08 17:51:00 +00:00
context-menu feat: create, fill, and edit slots (#862) 2026-10-04 17:02:28 +00:00
design fix: repair the app e2e suite and the bugs it was hiding (#968) 2026-10-08 17:15:18 +00:00
design-check test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
dom-css feat(storybook): generate Radix UI components for React stories (#971) 2026-10-08 10:13:52 +00:00
editor fix: repair the app e2e suite and the bugs it was hiding (#968) 2026-10-08 17:15:18 +00:00
export test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
fonts test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
keyboard feat: create, fill, and edit slots (#862) 2026-10-04 17:02:28 +00:00
layers fix: repair the app e2e suite and the bugs it was hiding (#968) 2026-10-08 17:15:18 +00:00
native feat(ai): add guided AI setup for providers, coding agents, and Pi (#916) 2026-10-07 08:46:57 +00:00
pages fix: match Figma's panel X, Y, rotation and themed page backgrounds (#940) 2026-10-07 10:02:52 +00:00
panels fix: repair the app e2e suite and the bugs it was hiding (#968) 2026-10-08 17:15:18 +00:00
perf test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
properties fix: repair the app e2e suite and the bugs it was hiding (#968) 2026-10-08 17:15:18 +00:00
scene test: honor the configured browser test origin 2026-09-16 12:46:13 +03:00
settings fix: meet WCAG AA contrast and name controls for screen readers (#952) 2026-10-07 17:51:24 +00:00
snap test(snapping): verify pixel rounding without guides 2026-09-13 14:02:16 +03:00
storage fix(app): keep a closing tab's canvas off the next document (#958) 2026-10-07 21:09:58 +00:00
storybook fix: meet WCAG AA contrast and name controls for screen readers (#952) 2026-10-07 17:51:24 +00:00
stroke-picker fix: match Figma's transforms, strokes, booleans, sections, and names (#931) 2026-10-07 08:36:50 +00:00
text fix: repair the app e2e suite and the bugs it was hiding (#968) 2026-10-08 17:15:18 +00:00
toolbar test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
tools test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
ui test(ui): keep runtime theme import dependency-safe 2026-07-20 14:07:32 +03:00
variables feat: import and export W3C design tokens (#964) 2026-10-08 16:53:46 +00:00
vectorize fix: repair the app e2e suite and the bugs it was hiding (#968) 2026-10-08 17:15:18 +00:00
viewport fix: repair the app e2e suite and the bugs it was hiding (#968) 2026-10-08 17:15:18 +00:00
autosave.spec.ts test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
components.spec.ts feat: create, fill, and edit slots (#862) 2026-10-04 17:02:28 +00:00
fixtures.ts test(app): stabilize final interaction coverage 2026-07-20 16:34:16 +03:00
recovery.spec.ts fix: protect unsaved documents and defer credential access (#713) 2026-09-17 15:25:15 +03:00