openpencil/tests/e2e
Danila Poyarkov 974905289a
fix(canvas): keep image-heavy documents within CanvasKit memory (#963)
* fix(canvas): bound image decoding for large Figma documents

* test(canvas): update lifecycle fixture for image caches

* test(canvas): align image regressions with contribution guides

Use native wheel zoom in the browser regression instead of inline store access. Keep export state restoration in the existing raster suite and explicitly format the new image tests omitted by the root format script.

* fix(harness): pin patched proxy address dependency

Override the transitive proxy-addr dependency with 2.0.8 to fix IPv4-mapped IPv6 trust subnet checks and pass the critical dependency audit (GHSA-jqcg-44mw-7w3h).

* build: drop the proxy-addr override master already resolves

Master's lockfile has proxy-addr 2.0.8 since the advisory was fixed
upstream, so the override this branch added is redundant.

* perf(canvas): encode image previews as WebP

PNG previews of photos ran to several megabytes each, so a page of them
filled the 64 MiB preview cache and evicted itself: page 2 of the #924
reproduction held 48 MB of PNG previews against 7.3 MB as WebP. Browsers
that cannot encode WebP hand back PNG.

Co-authored-by: sableangle <sableangle@gmail.com>

* perf(canvas): decode four image previews at once

The browser decodes previews off the main thread, so one at a time left
a page of photos filling in for seconds: page 2 of the #924 reproduction
took 4.6 s to finish and now takes 2.0 s.

Co-authored-by: sableangle <sableangle@gmail.com>

* refactor(canvas): decide on image previews once per document size

needsImagePreviews replaces useViewportImageRendering, which was not a
Vue composable, names its two thresholds, and keeps its answer per
document and image count instead of summing every image on each frame.
Choosing a preview by zoom carries a lint exception: preview mode draws
the scene uncached.

Co-authored-by: sableangle <sableangle@gmail.com>

* docs: describe the image memory fix in the changelog

Co-authored-by: sableangle <sableangle@gmail.com>

* fix(canvas): let go of a document's image previews when the document changes

Switching to a document that needs no previews left the preview cache
holding the previous graph and its encoded images, often hundreds of
megabytes, until previews were used again. The renderer now releases
them when its document changes, keeping the decoder for the next one.

---------

Co-authored-by: sableangle <sableangle@gmail.com>
2026-10-07 20:30:25 +00:00
..
app fix(app): keep opened documents saved until they are edited (#945) 2026-10-07 12:50:03 +00:00
brand feat: refresh branding with generated platform icons (#707) 2026-09-16 11:54:07 +03:00
canvas fix(canvas): keep image-heavy documents within CanvasKit memory (#963) 2026-10-07 20:30:25 +00:00
chat feat(chat): attach dropped images and style tables, menus, and link prompts in replies (#955) 2026-10-07 18:18:15 +00:00
clipboard fix: match Figma's transforms, strokes, booleans, sections, and names (#931) 2026-10-07 08:36:50 +00:00
code fix: meet WCAG AA contrast and name controls for screen readers (#952) 2026-10-07 17:51:24 +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 feat: show controls in a prebuilt demo and fix what saving it to .fig lost (#938) 2026-10-07 18:37:05 +00:00
context-menu feat: create, fill, and edit slots (#862) 2026-10-04 17:02:28 +00:00
design perf(properties): retain inactive panels safely 2026-09-15 17:01:44 +03: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: write variables as a CSS token stylesheet (#856) 2026-10-04 18:15:52 +00:00
editor fix(layout): size each axis on its own and lay out before geometry reads (#942) 2026-10-07 11:52:08 +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: match Figma's transforms, strokes, booleans, sections, and names (#931) 2026-10-07 08:36:50 +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 feat(vue): add responsive property grids 2026-07-26 12:42:50 +03:00
perf test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
properties feat: create, fill, and edit slots (#862) 2026-10-04 17:02:28 +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 refactor(ui): compose shared editor controls (#670) 2026-09-10 12:09:06 +03: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 test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +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: let a collection name the attribute its modes switch by (#913) 2026-10-06 12:35:41 +00:00
vectorize feat(app): convert image layers to vectors 2026-07-27 16:22:05 +03:00
viewport
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