openpencil/tests/e2e
Danila Poyarkov bb69735d27
feat(lint): suggest group-to-frame and hidden-layer fixes; keep canvas edits in code previews (#870)
* feat(lint): suggest converting groups to frames and deleting hidden layers

no-groups and no-hidden-layers now carry suggestions the Lint panel, the
lint_fix tool and editor.applyLintFixes can apply. A group becomes a frame
in place, keeping its id, children, bounds and look; a hidden layer is
deleted with its children. Neither is offered for locked layers or inside
components and instances, and both are checked again when applied.

The editor gains convertGroupToFrame and deleteNodes, which deleteSelected
now uses, and applies lint fixes through a bridge so structure changes and
property updates share one undo step. lint_fix becomes a document mutation
because atomic tools cannot remove layers.

* fix(code): keep canvas edits made while replaced code waits to render

Replacing all the code drops its layer links until the preview links it
again, so a canvas edit in the preview delay could not be patched into the
code and the preview drew over it. Edits made while code waits to render
are now applied again once the preview has linked the code, in the same
undo step, and reach the code like any other canvas change.

* fix(figma-api): default paint opacity and visibility like Figma

Plugin scripts may leave out a paint's opacity and visible; Figma reads
them back as 1 and true. The fills and strokes setters stored the paint
as given, so the Design panel received an undefined opacity.

* build(dev): forward only errors from the browser console

Vite forwards browser logs when an agent starts the dev server. Serializing
a Vue warning's component props walks the editor state and freezes the
tab, so warnings stay in the browser console.

* fix(code): follow values while they are dragged or scrubbed

Live previews change layers without a new scene version, so the code kept
the old value until the gesture ended. The Code tab now follows preview
updates once per frame, as the Design panel does, and goes back when the
gesture is cancelled.

* fix(code): keep canvas edits when the replaced code fails to preview

A failed preview took the canvas edits waiting for it and dropped them,
and stopped recording new ones, so correcting the code drew over them.
The edits now wait for the next preview.
2026-10-04 12:46:06 +00:00
..
app feat(app): jump between pages from the command palette (#801) 2026-10-01 20:26:35 +04:00
brand feat: refresh branding with generated platform icons (#707) 2026-09-16 11:54:07 +03:00
canvas feat: check designs live with a Lint panel, canvas markers, and fixes (#804) 2026-10-04 10:08:39 +00:00
chat feat(app): show who works on each page (#815) 2026-10-04 01:18:16 +04:00
clipboard test(clipboard): open a document in the Tauri fixture 2026-09-16 14:00:30 +03:00
code feat(lint): suggest group-to-frame and hidden-layer fixes; keep canvas edits in code previews (#870) 2026-10-04 12:46:06 +00:00
collab feat(app): follow people and agents from the toolbar avatars (#807) 2026-10-04 00:09:40 +04:00
color-picker refactor!: move shared primitives below dom-css and core (#771) 2026-09-26 11:39:11 +04:00
components fix: refresh Undo and Redo command availability 2026-09-14 00:25:36 +03:00
context-menu test(app): stabilize final interaction coverage 2026-07-20 16:34:16 +03:00
design perf(properties): retain inactive panels safely 2026-09-15 17:01:44 +03:00
design-check feat: check designs live with a Lint panel, canvas markers, and fixes (#804) 2026-10-04 10:08:39 +00:00
dom-css feat(dom-css): map image aspect styles 2026-06-30 10:51:37 +03:00
editor refactor: scope browser test instrumentation and global types (#667) 2026-09-10 14:26:36 +03:00
export refactor(export): derive export format lists from the IO registry (#755) 2026-09-25 15:42:42 +04:00
fonts fix(text): render variable font styles at their named instances (#773) 2026-09-26 11:25:01 +04:00
keyboard fix(keyboard): match Figma zoom behavior 2026-09-08 12:29:55 +03:00
layers feat(demo): rebuild the first page as a component library with staged loading (#717) 2026-09-18 08:18:21 +03:00
native fix: explain unsupported browsers instead of a blank window (#745) 2026-09-22 14:40:59 +04:00
pages Release v0.14.0 2026-08-10 11:40:44 +03:00
panels feat(vue): add responsive property grids 2026-07-26 12:42:50 +03:00
perf test: honor the configured browser test origin 2026-09-16 12:46:13 +03:00
properties feat(scene-graph)!: make a stroke a paint (#864) 2026-10-04 13:38:05 +04:00
scene test: honor the configured browser test origin 2026-09-16 12:46:13 +03:00
settings feat(settings): configure tool access, MCP failures, and step limits 2026-09-17 23:55:58 +03:00
snap test(snapping): verify pixel rounding without guides 2026-09-13 14:02:16 +03:00
storage refactor(ui): compose shared editor controls (#670) 2026-09-10 12:09:06 +03:00
storybook feat(app): show who works on each page (#815) 2026-10-04 01:18:16 +04:00
stroke-picker feat(scene-graph)!: make a stroke a paint (#864) 2026-10-04 13:38:05 +04:00
text test: honor the configured browser test origin 2026-09-16 12:46:13 +03:00
toolbar test: seed motion preferences through Playwright storage state 2026-09-10 23:24:06 +03:00
tools feat(app): migrate position and appearance panels 2026-07-13 14:47:48 +03:00
ui test(ui): keep runtime theme import dependency-safe 2026-07-20 14:07:32 +03:00
variables fix(app): polish variable dialog states 2026-07-18 05:25:40 +03:00
vectorize feat(app): convert image layers to vectors 2026-07-27 16:22:05 +03:00
viewport
autosave.spec.ts fix(app): retain recovery after closing unsaved tabs (#505) 2026-08-13 21:39:35 +03:00
components.spec.ts feat(app): finish Design panel migration 2026-07-14 17:40:56 +03: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