openpencil/src
Danila Poyarkov 3b32b4d80c
Perf: 5.4× faster file open, worker-based parsing, instance index (#96)
* Perf: cache label collection, offload .fig compression to worker

Label cache: collect sections/components once per scene change,
filter by viewport on each frame. Eliminates full tree walk during
pan/zoom (~17ms/frame → <1ms on large files).

Export worker: move fflate compression off the main thread to prevent
frame drops during save (451ms+ → non-blocking).

* Perf: worker-based .fig parsing, instance index, non-blocking font loading

- Offload .fig parsing (unzip + Kiwi decode) to a Web Worker
- Add instance index (componentId → Set<nodeId>) for O(1) getInstances()
- Defer graph event subscription during file open to skip redundant syncs
- Make font loading non-blocking — render immediately, load fonts in background
- Copy image buffers before worker transfer to prevent detached ArrayBuffer crash
- Show toast on font load failure and file open errors
- Cache failed Google Fonts families to avoid repeated network requests
- Fix missing ref import in FillPicker
- Yield to UI between parse and layout for responsive loading spinner
2026-03-12 14:49:28 +03:00
..
ai Fix lint warnings: non-null assertions, useless spreads, unused code, type safety 2026-03-11 13:33:54 +03:00
automation Code review: svg-export/ folder, restore comments, cleanup 2026-03-09 15:22:14 +03:00
components Perf: 5.4× faster file open, worker-based parsing, instance index (#96) 2026-03-12 14:49:28 +03:00
composables Fix lint warnings: non-null assertions, useless spreads, unused code, type safety 2026-03-11 13:33:54 +03:00
engine Remove re-export shims and import types directly from core 2026-03-09 08:56:47 +03:00
shims Multi-provider AI, sucrase JSX, Figma zoom shortcuts (#72) 2026-03-08 22:05:18 +03:00
stores Perf: 5.4× faster file open, worker-based parsing, instance index (#96) 2026-03-12 14:49:28 +03:00
utils Refactor mobile drawer: use VueUse composables, unify panels 2026-03-05 22:13:24 +03:00
views Enable Tailwind CSS class sorting in oxfmt 2026-03-09 15:46:20 +03:00
app.css Fix scrollbar: use utility class instead of global selector 2026-03-04 09:35:30 +03:00
App.vue Eliminate as Record<string, unknown> casts 2026-03-06 21:43:32 +03:00
constants.ts Remove re-export shims and import types directly from core 2026-03-09 08:56:47 +03:00
demo.ts Delete re-export shims, import from @open-pencil/core directly 2026-03-06 21:42:56 +03:00
env.d.ts Eliminate as Record<string, unknown> casts 2026-03-06 21:43:32 +03:00
global.d.ts Release v0.3.2 2026-03-02 11:36:18 +03:00
main.ts Fix all type-aware lint warnings 2026-03-08 23:04:44 +03:00
router.d.ts Move demo to /demo route, add @unhead/vue for title management 2026-03-06 20:54:48 +03:00
router.ts Move demo to /demo route, add @unhead/vue for title management 2026-03-06 20:54:48 +03:00