openpencil/tests/e2e
Danila Poyarkov e532f616ba
refactor!: move shared primitives below dom-css and core (#771)
* refactor!: move shared primitives below dom-css and core

dom-css depended on core for color conversion, base64 helpers, text
direction, and web-font assets, so core could not use dom-css and every
caller special-cased HTML and Tailwind output.

Color conversion and management, base64 helpers, and text/layout
direction now live in scene-graph under `color`, `bytes`, and
`text-direction`. dom-css takes web-font resolution as an injected
`fonts` option and owns the font face types, so it depends only on
scene-graph and core can depend on it.

BREAKING CHANGE: `@open-pencil/core/color` and `@open-pencil/core/bytes`
are removed, and the direction helpers are no longer exported from
`@open-pencil/core/text`; import them from `@open-pencil/scene-graph`
subpaths. `exportHTMLBundle` takes a font resolver in `fonts` instead of
`'assets'`.

* fix(tools): import color parsing from scene-graph in visual bisect

* fix(mcp): declare the scene-graph dependency

MCP imports `@open-pencil/scene-graph/bytes` since base64 helpers moved
there, but only reached scene-graph through core, so isolated installs
and package checks depended on transitive resolution.

* refactor!: use js-base64 directly instead of a base64 wrapper

Base64 helpers had moved into scene-graph only to sit below dom-css,
but they are a thin wrapper over js-base64 and unrelated to the graph;
fig already called js-base64 directly.

Callers use js-base64 and check `isValid` where input comes from outside
(clipboard, imported HTML, tool arguments, the plugin API). A new
`open-pencil/no-hand-rolled-base64` lint rule rejects atob, btoa, and
Buffer Base64 conversions, and AGENTS.md records the convention.

BREAKING CHANGE: `@open-pencil/core/bytes` is removed; use `js-base64`.

* fix(dom-css): keep images with invalid Base64 inline in HTML export

`exportHTMLBundle` accepts documents parsed from outside HTML, and
js-base64 drops characters it cannot decode, so extracting an invalid
image data URL wrote different bytes. Such images now stay inline.
2026-09-26 11:39:11 +04:00
..
app fix: explain unsupported browsers instead of a blank window (#745) 2026-09-22 14:40:59 +04:00
brand feat: refresh branding with generated platform icons (#707) 2026-09-16 11:54:07 +03:00
canvas refactor!: move shared primitives below dom-css and core (#771) 2026-09-26 11:39:11 +04:00
chat refactor!: move shared primitives below dom-css and core (#771) 2026-09-26 11:39:11 +04:00
clipboard test(clipboard): open a document in the Tauri fixture 2026-09-16 14:00:30 +03:00
code feat(code): add live JSX and HTML/CSS editing (#525) 2026-08-15 09:48:42 +03:00
collab refactor(ui): compose shared editor controls (#670) 2026-09-10 12:09:06 +03: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
design perf(properties): retain inactive panels safely 2026-09-15 17:01:44 +03:00
dom-css
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
perf test: honor the configured browser test origin 2026-09-16 12:46:13 +03:00
properties fix: convert document colour profiles, keep text edits live, and fix .fig exports (#716) 2026-09-18 00:43:10 +03: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(updater): show download progress while installing an update 2026-09-25 23:15:14 +04:00
stroke-picker fix: convert document colour profiles, keep text edits live, and fix .fig exports (#716) 2026-09-18 00:43:10 +03: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
ui
variables
vectorize
viewport
autosave.spec.ts fix(app): retain recovery after closing unsaved tabs (#505) 2026-08-13 21:39:35 +03:00
components.spec.ts
fixtures.ts
recovery.spec.ts fix: protect unsaved documents and defer credential access (#713) 2026-09-17 15:25:15 +03:00