82 Commits

Author SHA1 Message Date
Elena Torró
51cbae6ea5
⚡ Improve memory consumption on shape decoding (#12790)
* ⚡ Avoid decoding the opened page twice for its frame index

The frame index was built over a with-meta copy, so pages got decoded again.
Read it from the page objects themselves and fix the with-meta identity check.

* ⚡ Intern keywords when decoding transit on the frontend

Each shape is decoded on its own, so every shape had its own key keywords.
Cache them in the read handler so all decoded data shares one instance.

* ⚡ Use an array map as the wasm shape proxy delegate

A hash map with ~35 keys costs ~3 KB of nodes per shape on large pages.
An array map holds the same entries in one array, at a small lookup cost.
2026-11-03 17:41:36 +01:00
Elena Torró
13a9da3bc3
⚡ Reduce commit cost when dropping large selections (#12032)
Collect children ids into one transient vector and track WASM shape
changes in a JS Map instead of a volatile persistent map.

AI-assisted-by: claude-opus-5-5
2026-10-02 11:22:19 +02:00
Miguel de Benito Delgado
efbb554af1
♻️ Move use-shape into app.common.render_wasm (#11917)
- Introduces a new ns since there wasn't a suitable one
- Simplifies serialize-shapes-batch! and allows usage outside the frontend
2026-09-28 18:19:55 +02:00
Miguel de Benito Delgado
fa81a3f648
🐛 Refactor batch serialization and fix derived svg-attrs in exporter (#11909)
* ♻️ Share structural batch upload through common helper

- Merge svg-filters and svg-fills to app.common.render-wasm.svg-derived
- Add serialize-shapes-batch! in common, shared by the sync and chunked
  workspace paths
- Add a routing test for the helper and wires the svg-filters test.

AI-assisted-by: muse-spark, GLM 5.3

* 🐛 Derive SVG effects inside single-shape serializer

- Single and batch paths: one svg effect derivation step
  owned by shared serializers.
- set-object forwards the derived shape to its host attrs,
  and the exporter reads the derived fills, so SVG-attr
  fills, blur and shadow render as in the frontend.
- Adds regression test to the exporter.

AI-assisted-by: muse-spark, GLM 5.3, deepseek-flash
2026-09-25 11:48:21 +02:00
Elena Torró
0913545b41
🐛 Fix letter spacing and position when flattening text to path (#11555)
* 🐛 Fix letter spacing and position when flattening text to path

* ♻️ Simplify text to path conversion and add flatten tests
2026-09-11 08:20:22 +02:00
Alejandro Alonso
86aebd3429
⚡ Reduce WASM text selrect churn after batch page load (#11471)
* 🐛 Align WASM auto-width text size with HTML measurement

Include the HTML paragraph-set 1px right margin in Skia auto-width
so WASM and DOM measurements match.

* ⚡ Scope and defer post-font WASM text relayout

Track pending font faces per shape, force-relayout only affected
texts, defer stale-selrect sync until the first tiles paint, and
batch request-render after attr updates. Tolerate missing font-face
keys so callers that omit them do not blow up.
2026-09-04 12:24:37 +02:00
Andrey Antukh
81c3b3cd56
📎 Update copyright name on file header (#11346) 2026-08-25 11:55:10 +02:00
Alejandro Alonso
4cd34b22e2
🐛 Fix wasm context restore guards (#10824)
* 🐛 Prevent WASM panics during WebGL context restore

Delay context-restored until reload finishes and no-op app
mutations while reloading so resize/modifiers cannot panic
mid-teardown.

* 🐛 Fall back to CLJS bool content when WASM is not ready

Returning nil from calculate-bool would persist empty path content
during context loss/reload; use path/calc-bool-content instead.
2026-07-29 10:06:52 +02:00
Elena Torró
c8f586a197
🐛 Fix async text rendering on tiles (#10504) 2026-07-01 11:09:57 +02:00
Eva Marco
2a098e5b16
🎉 Add background blur (#10034)
* 🎉 Add background blur

* 🎉 Add test

* 🎉 Add background blur info to plugins API

* 🎉 Suport in wasm for both layer and background blur

* 🐛 Fix failing test

* ♻️ Fix comments

---------

Co-authored-by: alonso.torres <alonso.torres@kaleidos.net>
2026-06-16 19:46:03 +02:00
Andrey Antukh
4a8fb5af53 Merge remote-tracking branch 'origin/staging' into develop 2026-06-01 13:15:57 +02:00
Andrey Antukh
c5de4c27b0 Merge remote-tracking branch 'origin/main' into staging 2026-06-01 12:57:39 +02:00
John Eismeier
c156559f2c
📚 Fix several typos on code comments and messages (#9946)
Signed-off-by: John E <jeis4wpi@outlook.com>
2026-06-01 09:43:07 +02:00
Yamila Moreno
ddba2ffa75
📎 Update Kaleidos Copyright (#9929) 2026-05-29 11:24:58 +02:00
alonso.torres
c42eb6ff86 🐛 Fix problem with selection performance 2026-04-20 17:30:07 +02:00
alonso.torres
6e2dc0c3dc 🐛 Fix problem with token performance 2026-03-31 15:44:20 +02:00
Belén Albeza
5b1766835f 🐛 Fix broken selection on duplicated shapes on new pages 2026-01-21 10:32:13 +01:00
alonso.torres
417cd80564 🐛 Fix problem creating grid from elements 2025-12-23 14:49:21 +01:00
Alejandro Alonso
737eceda3a
🐛 Fix unmasking shapes (#7989) 2025-12-22 16:59:04 +01:00
Elena Torro
b705cf953a 🐛 Set layout data from set-object 2025-12-11 14:52:32 +01:00
Alejandro Alonso
89d9591011 🎉 Improve svg import 2025-12-11 12:02:34 +01:00
alonso.torres
37e45a8bbf 🐛 Fix race condition with text and type 2025-12-02 17:28:20 +01:00
alonso.torres
130b8c8214 🐛 Fix problems with flex layout in new render 2025-11-28 10:49:55 +01:00
Alejandro Alonso
77b9eee6bd 🐛 Fix svg fills defined in svg-attrs with url or color format 2025-11-21 14:15:27 +01:00
Andrey Antukh
3136096123 🔧 Add general improvements to integration tests
This commit marks as skip (temporal) several flaky/randomly-failing
tests.

It also moves the integration test execution from circleci to github
actions.
2025-11-19 18:23:44 +01:00
alonso.torres
0a01fc8af9 🐛 Fix problem with selection and text shapes for new render 2025-11-18 09:34:17 +01:00
Belén Albeza
5c2dde7308 🐛 Fix font family not being updated when changed from dropdown 2025-11-11 15:52:18 +01:00
alonso.torres
a230d2fcf6 ✨ Improve tile rendering updating 2025-11-05 17:16:06 +01:00
Belén Albeza
8148da58ed 🐛 Fix wasm crash when loading a file with missing font assets 2025-11-05 07:47:16 +01:00
Alejandro Alonso
6ea69c94ee 🎉 Improve big images performance 2025-11-04 22:02:34 +01:00
alonso.torres
de04026dc8 ✨ After review changes 2025-10-31 12:04:52 +01:00
alonso.torres
fcc9282304 ✨ Fix problems with SVGraw and modifiers 2025-10-31 11:56:28 +01:00
alonso.torres
ed4df73e42 ✨ Changes to modifiers 2025-10-31 11:56:28 +01:00
alonso.torres
17fefcf0bc ✨ Changes WASM serialization mechanism 2025-10-31 11:56:28 +01:00
alonso.torres
2e6fb1b9c5 ✨ New render small performance optimizations 2025-10-16 12:40:29 +02:00
Andrey Antukh
30e139ed10
🔥 Remove binary fills flag (#7462)
* 🐛 Add missing IEmptyableCollection protocol impl for wasm Shape

* 🔥 Remove frontend-binary-fills flag

* ✨ Fix fill-limit integration tests

---------

Co-authored-by: Belén Albeza <belen@hey.com>
2025-10-13 12:14:25 +02:00
Andrey Antukh
80cb48fd6a Merge remote-tracking branch 'origin/staging' into develop 2025-09-18 10:44:21 +02:00
Andrey Antukh
e88039e46a 🐛 Fix future linter issues on wasm shape impl 2025-09-17 16:53:02 +02:00
Alejandro Alonso
41751d60d2 🐛 Fix corner radius 2025-09-09 10:24:56 +02:00
Alejandro Alonso
56f162f219
Merge pull request #7133 from penpot/superalex-fix-create-variant-doesnt-work-2
🐛 Create variant doesn't work
2025-08-18 13:02:33 +02:00
Alejandro Alonso
832690e71e 🐛 Create variant doesn't work 2025-08-18 11:58:24 +02:00
Belén Albeza
c818b6f88f 🐛 Fix layout and constraints not being cleared 2025-08-14 15:38:23 +02:00
Elena Torró
a16f40cb73
✨ Set page objects once on wasm render(#6994) 2025-07-29 13:00:40 +02:00
alonso.torres
ddd0e447f6 🐛 Fix problem when creating shapes after new page 2025-07-29 12:15:27 +02:00
alonso.torres
0c0c81e9a5 🐛 Fix problem with shape to path not working 2025-07-29 12:15:27 +02:00
Alejandro Alonso
bcee670ac6 🐛 Fix switching theme for wasm render 2025-07-28 07:44:56 +02:00
alonso.torres
ac6a814026 🐛 Fix problem with flex layout in wasm 2025-06-24 10:26:37 +02:00
Alejandro Alonso
d71fa659d5 🐛 Fix asynchronous content rendering 2025-06-19 14:03:40 +02:00
Elena Torro
330bee7839 🐛 Fix parsing pending callback on setting single shape attr 2025-06-10 21:34:41 +02:00
alonso.torres
bcfa9a82ea ✨ Add scale content to render wasm 2025-05-28 16:40:57 +02:00