openpencil/tests/engine
Danila Poyarkov a2d0d6552d
fix(fig): harden document worker sessions (#594)
* fix(app): cancel large FIG opens before tab cleanup

- Abort tab-local preparation before awaiting recovery persistence so closing a decoding tab terminates its FIG worker immediately
- Add explicit graph-event unsubscription and lazy FIG resource release for disposed editor stores
- Keep staging-editor disposal separate from live graph resource ownership
- Let same-origin document fetches bypass all cross-origin font response limits

* refactor(fig): isolate worker sessions per document

- Give each lazy FIG document a dedicated MessageChannel and retained worker session
- Route manifest and page population traffic through the session port instead of global worker handlers
- Close the port and worker explicitly on cancellation or tab disposal
- Preserve current lazy source transfer and export fidelity until raw NodeChange patch export is implemented

* perf(fig): preserve unchanged archives in worker sessions

- Keep a second transferable copy of the original FIG archive inside the document worker session instead of main-thread memory
- Track whether user graph mutations invalidate exact archive reuse
- Return unchanged documents byte-for-byte through the session without full-page materialization or recompression
- Release archive request ownership with the page population worker and editor graph resources

* fix(fig): choose the first visible imported page

- Ignore internal-only canvases when selecting the initial active page\n- Keep internal component pages available for lazy instance population

* fix(fig): retain original archives across fallbacks

- Keep session-owned workers alive when population is oversized\n- Register the input archive when worker graph transfer falls back to the main thread\n- Preserve byte-identical unchanged saves without restoring lossy materialization

* fix(fig): harden worker session ownership

- Route concurrent archive replies through persistent request resolvers and reject stale in-flight archives after edits\n- Retain disposal-only handles for oversized sessions and guard Worker construction\n- Reuse the shared FIG import options contract and cover session disposal and invalidation

* test(fig): isolate Worker availability mutation
2026-08-30 21:40:13 +03:00
..
acp chore: enable stricter oxlint rules 2026-05-18 18:58:30 +03:00
app fix(text): finalize font readiness and label shaping (#593) 2026-08-30 14:33:32 +03:00
bytes refactor(core): centralize Base64 encoding 2026-07-28 08:27:22 +03:00
cli refactor: standardize acronym casing 2026-08-10 15:48:16 +03:00
clipboard fix(clipboard): preserve pasted instance links 2026-08-12 20:08:06 +03:00
collab perf(collab): skip unchanged Yjs node fields (#529) 2026-08-15 11:40:27 +03:00
color feat(vue): consolidate color model 2026-07-13 21:48:36 +03:00
core feat(fig): support text on path 2026-08-17 12:00:01 +03:00
dom-css fix(fig): restore strict parse validation 2026-07-18 03:58:18 +03:00
editor feat(app): prepare documents atomically per tab (#592) 2026-08-30 12:21:49 +03:00
figma/api feat(figma-api): add exposeInstanceSwap for real instance-swap component properties 2026-08-29 16:30:42 +03:00
geometry fix(fig): restore strict parse validation 2026-07-18 03:58:18 +03:00
hit-test perf(scene-graph): accelerate axis-aligned hit tests (#534) 2026-08-16 15:43:25 +03:00
icons fix(core): preserve inline SVG primitives (#485) 2026-08-12 16:02:45 +03:00
io fix(fig): harden document worker sessions (#594) 2026-08-30 21:40:13 +03:00
kiwi fix(fig): preserve regenerated override lineage 2026-07-21 01:51:27 +03:00
layout feat(fig): support text on path 2026-08-17 12:00:01 +03:00
library feat: add Figma-style variants and component libraries (#512) 2026-08-14 19:31:41 +03:00
lint
mcp fix(mcp): align runtime metadata and restart errors 2026-08-20 16:27:11 +03:00
pen refactor(fig): own instance interpretation 2026-07-18 02:06:34 +03:00
profiler chore: format codebase 2026-05-24 12:15:29 +03:00
random
render fix(text): finalize font readiness and label shaping (#593) 2026-08-30 14:33:32 +03:00
scene-graph fix(editor): harden snapping edge cases 2026-08-19 12:33:32 +03:00
snap
tauri feat(app): prepare documents atomically per tab (#592) 2026-08-30 12:21:49 +03:00
text fix(text): finalize font readiness and label shaping (#593) 2026-08-30 14:33:32 +03:00
tools fix(tools): require sibling variant components 2026-08-19 20:05:54 +03:00
vector refactor(canvas): adopt immutable CanvasKit paths (#554) 2026-08-18 23:09:45 +03:00
vue feat(app): prepare documents atomically per tab (#592) 2026-08-30 12:21:49 +03:00
perf.bench.ts feat: split SceneGraph and Pen packages 2026-06-30 10:54:32 +03:00