52 Commits

Author SHA1 Message Date
Alejandro Alonso
d1a54134bb
✨ Add text and @font-face to WASM SVG export (#11442)
* ✨ Add text and @font-face to WASM SVG export

Emit selectable <text> elements and inject @font-face rules that
reference the font URLs registered at load time. Text fill bypasses
save_layer wrappers that SkSVGDevice drops. Text strokes are deferred
to a follow-up PR.

* 🐛 Strip trailing commas from Skia SVG text positions

Skia's SVG backend appends a trailing comma to per-glyph x/y lists.
Firefox rejects the malformed attribute and drops glyph positioning,
making exported text vanish or mis-render.
2026-09-01 17:06:50 +02:00
Andrey Antukh
81c3b3cd56
📎 Update copyright name on file header (#11346) 2026-08-25 11:55:10 +02:00
Alejandro Alonso
2dcf1a8a0a Merge remote-tracking branch 'origin/staging' into develop 2026-08-20 09:15:03 +02:00
Alonso Torres
4ac14cfd08
✨ Add component synchronization to waitForLayoutUpdate (#10964)
* ✨ Add component synchronization to waitForLayoutUpdate

* 🐛 Fix async mock leak in workspace-reflow-test

Use mock/with-mocks instead of with-redefs for http/send! mock in
failed-google-font-css-does-not-abort-shared-consumers test.

with-redefs restores bindings when the block exits synchronously,
but the RxJS subscription fires asynchronously. This caused the mock
to leak into subsequent tests (workspace-media-test), producing 3
spurious failures.

AI-assisted-by: mimo-v2.5-pro

* ♻️ Replace async with-redefs with mock/with-mocks in frontend tests

with-redefs restores bindings when the block exits synchronously,
which is too early for async code (t/async, rx/subs!, promises).
mock/with-mocks uses set! and restores in the done callback, keeping
mocks alive across async boundaries.

Converted 15 with-redefs usages across 4 test files:
- workspace_reflow_test.cljs: 2 genuinely async tests (P1)
- routes_test.cljs: 3 SSO caching tests (P2)
- main_errors_test.cljs: 8 expired-org SSO tests (P2)
- comments_test.cljs: 2 comment thread tests (P2)

36 purely sync with-redefs usages left unchanged — with-redefs
is correct for synchronous code.

AI-assisted-by: mimo-v2.5-pro

* 📎 Fix fmt issues

---------

Co-authored-by: Andrey Antukh <niwi@niwi.nz>
2026-08-18 17:45:42 +02:00
Elena Torró
38b990ef90
🔧 Add exporter headless backend (#10875)
* ✨ Add headless wasm render backend to the exporter

* ♻️ Move render-wasm bridge to common and split wasm builds

* 🔧 Upload builtin font variants in the wasm exporter

* ♻️ Move shared font and resources utils out of render_wasm

* ⚡ Fetch only the exported roots in the wasm exporter

* ⚡ Bound save_layer rects in the vector export path
2026-08-06 16:13:06 +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
Alonso Torres
cb21f6401a
✨ Add waitForLayoutUpdate plugin method (#9898)
* ✨ Add waitForLayoutUpdate plugin method

* ✨ Refactor internal wait for tasks
2026-07-28 14:44:30 +02:00
Elena Torró
08e42687d1
♻️ Extract GPU-free RenderResources; add headless wasm exports (#10653) 2026-07-22 09:56:21 +02:00
Elena Torró
c8f586a197
🐛 Fix async text rendering on tiles (#10504) 2026-07-01 11:09:57 +02:00
Belén Albeza
8eedd951a8
🐛 Fix mistmatch in mapping custom font variants (wasm) (#10122) 2026-06-11 09:36:29 +02:00
Andrey Antukh
c5de4c27b0 Merge remote-tracking branch 'origin/main' into staging 2026-06-01 12:57:39 +02:00
Yamila Moreno
ddba2ffa75
📎 Update Kaleidos Copyright (#9929) 2026-05-29 11:24:58 +02:00
alonso.torres
88ec9e4ff1 🐛 Fix problem with store font after cleanup 2026-04-21 11:03:04 +02:00
alonso.torres
3f5226485b 🐛 Fix problem when changing font and grow text 2026-04-15 16:09:38 +02:00
Aitor Moreno
101b2fe9e6 🎉 Add style data from text editor v3 2026-04-06 13:13:53 +02:00
Andrey Antukh
264cd0aaac Merge remote-tracking branch 'origin/main' into staging 2026-03-30 12:29:07 +02:00
Andrey Antukh
6db3c6cf89
🐛 Fix regression on subpath support (#8793) 2026-03-26 15:43:30 +01:00
Elena Torro
5a73003c7f 🐛 Fix fallback fonts and symbols 2 2026-03-24 12:06:28 +01:00
Alejandro Alonso
684e2b6950 🐛 Fix non existent google font 2026-02-13 11:59:59 +01:00
Elena Torro
0cb5c16823 🐛 Fix fallback font 2026-02-12 06:43:52 +01:00
alonso.torres
fd3d549f9c ✨ Batch text layout updates 2026-02-05 17:29:43 +01:00
alonso.torres
3d3e3582d6 🐛 Fix problem with some fonts 2025-12-29 12:35:19 +01:00
Elena Torro
9f567c3bf4 🐛 Fix italic variant 2025-12-03 08:59:25 +01:00
Elena Torro
786f73767b 🔧 Normalize font attributes to support old formats 2025-12-01 14:59:24 +01:00
Belén Albeza
4d6d7a6a3d 🐛 Fix emoji font not being used as fallback in text editor dom 2025-11-27 17:23:20 +01:00
Belén Albeza
f84c236e02 🐛 Fix text editor v2 not using fallback fonts for selected text 2025-11-27 12:26:39 +01:00
alonso.torres
8880f07a6a 🐛 Fix problem with thumbnails in parallel 2025-11-25 17:56:00 +01:00
alonso.torres
ca2cf18a49 🐛 Fix problems with text editor size 2025-11-21 13:17:43 +01:00
alonso.torres
33d70f0e45 🐛 Fix problem with text data serialization 2025-11-21 12:07:01 +01:00
Belén Albeza
5c2dde7308 🐛 Fix font family not being updated when changed from dropdown 2025-11-11 15:52:18 +01:00
Belén Albeza
483a1bd703 🐛 Fix downloading wrong font variant 2025-11-11 14:44:56 +01:00
alonso.torres
a230d2fcf6 ✨ Improve tile rendering updating 2025-11-05 17:16:06 +01:00
Belén Albeza
60f45d1fd7 🐛 Fix internal error crash when attempting to download a font resource that returns 404 2025-10-02 09:58:38 +02:00
Aitor Moreno
732c79b7b5 🎉 Add function to retrieve caret position 2025-10-01 09:18:46 +02:00
Andrey Antukh
6588913141 ♻️ Remove several level of unnecesary allocation on writing text 2025-08-18 21:54:36 +02:00
Elena Torro
c69ee35e18 ✨ Include symbols support 2025-08-01 13:41:12 +02:00
Elena Torro
2913899aa5 🐛 Fix auto-format on font 2025-07-28 17:31:36 +02:00
Belén Albeza
af5b942e05 🐛 Fix copy/paste not working on follow up pastes 2025-07-25 09:53:48 +02:00
Belén Albeza
098fd9fb0f 🐛 Fix not picking up font style / variant in new renderer 2025-07-25 09:48:20 +02:00
Alejandro Alonso
d71fa659d5 🐛 Fix asynchronous content rendering 2025-06-19 14:03:40 +02:00
Elena Torro
d248dd09bc 🐛 Fix storing custom fonts 2025-06-17 09:38:17 +02:00
Elena Torro
a8d4b293dc 🐛 Fix loading same resources multiple times 2025-06-06 12:26:35 +02:00
Elena Torro
8c20159fb0 🐛 Cache emoji font correctly 2025-06-06 11:28:50 +02:00
Elena Torro
c40de5fb87 🎉 Implement font fallback to support multiple languages 2025-06-03 08:21:59 +02:00
Andrey Antukh
d2cd99ed44 ⬆️ Update google fonts 2025-05-30 13:08:57 +02:00
Elena Torro
f8602810eb 🐛 Fix font id serialization 2025-04-30 11:48:07 +02:00
Elena Torro
2306df5fb7 ✨ Load emoji font dynamically when initializing 2025-04-29 13:07:06 +02:00
Elena Torro
83f72f3e41 🔧 Parse text leaves all at once 2025-04-21 13:24:39 +02:00
Belén Albeza
c0ba92f503 🎉 Add support for default font variants (wasm) 2025-04-08 16:45:27 +02:00
Elena Torro
d757009b48 🐛 Fix Google Fonts load by parsing italic variant ids correctly 2025-04-01 14:01:54 +02:00