14169 Commits

Author SHA1 Message Date
David Barragán Merino
1e8acbb2db 🐳 Cover the inline scripts of the served pages with CSP hashes
The frontend build now emits the sha256 hashes of the inline scripts of every page it writes into resources/public, the image moves them out of the document root, and the entrypoint splices them into the default script-src. This removes one of the two reasons why enforcing mode was not usable.

The hashes are computed on the rendered output rather than on the mustache templates, since the digest covers the exact bytes served between the script tags. All four served pages contribute, not just index.html: challenge.html handles the redirect, render.html is loaded by the exporter in a headless browser, and rasterizer.html is initialised by the frontend itself, so leaving any of them out would have broken those paths under enforcing mode. The storybook previews are excluded because that container does not serve them.

A bundle predating this change yields no hashes and the policy stays as it was, so older bundles keep building.

The three external locations were also passing through the security headers of their upstreams. raw.githubusercontent.com returns its own Content-Security-Policy and both it and fonts.googleapis.com return Strict-Transport-Security. Browsers enforce the intersection of every policy they receive, so the upstream one takes precedence on those responses, and the HSTS one lands on our own host, meaning a deployment that deliberately disables HSTS would get it set anyway by a third party. Hide all three at the proxy.

Signed-off-by: David Barragán Merino <david.barragan@kaleidos.net>
2026-09-18 18:55:19 +02:00
Elena Torró
617bf195cf
🐛 Display cursor on page load when WebGL is active (#11770) 2026-09-18 09:48:39 +02:00
Elena Torró
8124ecf148
Improve canvas snapshot and nested drop shadows calculation (#11766)
*  Capture canvas snapshot only when the renderer is idle

*  Skip descendant silhouettes for frames with nested drop shadows

* 🔧 Add a profiling build mode for render-wasm
2026-09-18 09:21:52 +02:00
Alejandro Alonso
ecf8436eea Merge remote-tracking branch 'origin/staging' into develop 2026-09-17 17:12:39 +02:00
Alonso Torres
2fc2a9064a
🐛 Add download report to the error toast (#11762)
* 🐛 Add download report to the error toast

* 🐛 Restore old behavior for some cases
2026-09-17 17:05:06 +02:00
Alonso Torres
78b5d13b7a
🐛 Fix bend curve sharp edges (#11715) 2026-09-17 16:42:22 +02:00
makesomethingshit
8c7230749c
♻️ Migrate workspace zoom widget to modern syntax (#11637)
Migrate zoom-widget-workspace to zoom-widget-workspace* following the
modern rumext component syntax: drop ::mf/wrap-props false and switch
the callsite from [:& ...] to [:> ...]. No behavior change.

Part of #9260

AI-assisted-by: muse-spark-1.3-contributor

Signed-off-by: makesomethingshit <junsoo1172@gmail.com>
2026-09-17 15:37:51 +02:00
makesomethingshit
edf146db7b
🐛 Preserve source order when changing grid flow (#11662)
* 🐛 Reflow auto grid cells on flow direction change

Remap only single-span auto cells to the new
:layout-grid-dir traversal order, keeping source
order, manual and area placements untouched.

Update both grid direction controls to use the
new change-grid-direction event and refresh the
stale active button on persisted direction.

Add a RED-to-GREEN model regression covering a
2x2 row-to-column transition and source-order.

AI-assisted-by: muse-spark
Signed-off-by: makesomethingshit <junsoo1172@gmail.com>

* 🐛 Keep source order on grid flow change with areas

Skip the generic grid cell pass for the
direction event, since reflowing already
places every eligible auto item and a blind
reorder rewrites shapes around pinned areas.

Pin area/span grids with a regression test
covering direction change and source order.

AI-assisted-by: muse-spark
Signed-off-by: makesomethingshit <junsoo1172@gmail.com>

* 🐛 Scope grid skip to direction changes only

Replace the translation flag with a narrow
skip-grid-reassignment option so component
sync and reflow metadata stay intact while
the generic grid cell pass is skipped.

AI-assisted-by: muse-spark
Signed-off-by: makesomethingshit <junsoo1172@gmail.com>

* 🐛 Clear leftover auto cells on grid flow change

Write remapped shapes to every target auto cell and
empty leftover cells so sparse grids cannot duplicate
a child across target cells. Manual, area and
spanned cells stay untouched; source order is kept.

AI-assisted-by: muse-spark
Signed-off-by: makesomethingshit <junsoo1172@gmail.com>

* 🐛 Pin grid flow invariants with span and manual regressions

Keep the direction-change design unchanged and lock the
claimed invariants with tests: a real 2x1 manual span
cell and an occupied manual cell stay byte-identical,
row->column->row round-trips to the original cells,
and a mixed auto/manual/span/area grid shows no shape
loss or duplication. Also drop the unused page-objects
binding from the direction-change watcher.

AI-assisted-by: muse-spark
Signed-off-by: makesomethingshit <junsoo1172@gmail.com>

* 🐛 Unoverlap mixed grid fixture and assert movement

Move auto C to (1,3) so it no longer overlaps the 2x1
manual span at (1,2). Row auto order A,C,B,E becomes
column order A,B,E,C; assert the exact placement
while keeping pinned, source-order and no-loss
checks. Test-only change.

AI-assisted-by: muse-spark
Signed-off-by: makesomethingshit <junsoo1172@gmail.com>

* 🐛 Unify plugin dir setter and normalize missing direction

Route GridLayoutProxy.dir through change-grid-direction so the
plugin API shares the UI direction-change path with its reflow
and source-order guarantees. Normalize a missing
:layout-grid-dir to :row at the change-grid-direction entry
point and cover it with a missing-direction regression plus a
plugin setter routing regression.

AI-assisted-by: muse-spark
Signed-off-by: makesomethingshit <junsoo1172@gmail.com>

* 🐛 Fix grid plugin dir setter syntax

Signed-off-by: makesomethingshit <junsoo1172@gmail.com>
AI-assisted-by: opencode-go/muse-spark-1.3-contributor

* 🐛 Fix comments and tests

---------

Signed-off-by: makesomethingshit <junsoo1172@gmail.com>
Co-authored-by: alonso.torres <alonso.torres@kaleidos.net>
2026-09-17 14:09:32 +02:00
Alejandro Alonso
14c3135e21 Merge remote-tracking branch 'origin/main' into staging 2026-09-17 11:26:23 +02:00
Alonso Torres
420aa981b2 🐛 Fix stalled saving states (#11699) 2026-09-17 11:25:36 +02:00
Juan de la Cruz
9a11dfa7f9
Replace PNG favicon with theme-aware SVG (#11640)
*  Replace PNG favicon with theme-aware SVG

* 🎉 Add color changing favicon to docs page

---------

Co-authored-by: Eva Marco <evamarcod@gmail.com>
2026-09-16 08:36:12 +02:00
Andrey Antukh
df383be6b2 Merge remote-tracking branch 'origin/staging' into develop 2026-09-15 19:59:54 +02:00
Andrey Antukh
69111accfe 📎 Fix copyright owner on several files 2026-09-15 19:22:56 +02:00
Andrey Antukh
5c38dcab28 🌐 Validate and rehash translations 2026-09-15 19:21:59 +02:00
Anonymous
b8534245b9
🌐 Add translations for: French (Canada)
Currently translated at 96.6% (2410 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr_CA/
2026-09-15 17:19:22 +00:00
Alexis Morin
1b46b288f4
🌐 Add translations for: French (Canada)
Currently translated at 96.6% (2410 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr_CA/
2026-09-15 17:19:21 +00:00
VKing9
5e3ffd3345
🌐 Add translations for: Hindi
Currently translated at 78.7% (1965 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/
2026-09-15 17:19:19 +00:00
Late Night Defender
c035e4841f
🌐 Add translations for: Thai
Currently translated at 7.3% (183 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/th/
2026-09-15 17:19:17 +00:00
AntonPalmqvist
2ef3487518
🌐 Add translations for: Swedish
Currently translated at 93.3% (2329 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/sv/
2026-09-15 17:19:14 +00:00
Anonymous
346884ef60
🌐 Add translations for: Swedish
Currently translated at 93.3% (2329 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/sv/
2026-09-15 17:19:14 +00:00
Henrik Allberg
796b6c2f07
🌐 Add translations for: Swedish
Currently translated at 93.3% (2329 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/sv/
2026-09-15 17:19:13 +00:00
Црнобог
f81ba88459
🌐 Add translations for: Serbian
Currently translated at 53.4% (1332 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/sr/
2026-09-15 17:19:10 +00:00
Alejandro Alonso
1f54e4d284
🌐 Add translations for: Yoruba
Currently translated at 45.5% (1137 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/yo/
2026-09-15 17:19:08 +00:00
Alejandro Alonso
d73135839b
🌐 Add translations for: Igbo
Currently translated at 19.4% (484 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ig/
2026-09-15 17:19:06 +00:00
Revenant
474bcf54a2
🌐 Add translations for: Malay
Currently translated at 25.5% (637 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ms/
2026-09-15 17:19:04 +00:00
Yessenia Villarte Vaca
b9899d2050
🌐 Add translations for: Spanish (Latin America)
Currently translated at 4.3% (108 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/es_419/
2026-09-15 17:19:02 +00:00
Alejandro Alonso
0324a726ed
🌐 Add translations for: Hausa
Currently translated at 48.2% (1203 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ha/
2026-09-15 17:18:59 +00:00
Hugo Vermaak
ff3e54bdba
🌐 Add translations for: Afrikaans
Currently translated at 3.0% (75 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/af/
2026-09-15 17:18:57 +00:00
Stephan Paternotte
1e551a37fe
🌐 Add translations for: Dutch
Currently translated at 96.5% (2407 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/nl/
2026-09-15 17:18:55 +00:00
Sebastiaan Pasma
c48c121378
🌐 Add translations for: Dutch
Currently translated at 96.5% (2407 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/nl/
2026-09-15 17:18:54 +00:00
Edgars Andersons
a0363ff083
🌐 Add translations for: Latvian
Currently translated at 73.5% (1835 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/
2026-09-15 17:18:52 +00:00
deveronica
4ab4090548
🌐 Add translations for: Korean
Currently translated at 79.1% (1975 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ko/
2026-09-15 17:18:50 +00:00
Bogi Napoleon Wennerstrøm
b69ec766b5
🌐 Add translations for: Faroese
Currently translated at 6.5% (163 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fo/
2026-09-15 17:18:48 +00:00
Denys Kisil
306223179f
🌐 Add translations for: Ukrainian (ukr_UA)
Currently translated at 81.1% (2023 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/
2026-09-15 17:18:45 +00:00
al0cam
c8a27eb823
🌐 Add translations for: Croatian
Currently translated at 62.5% (1559 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hr/
2026-09-15 17:18:43 +00:00
Zvonimir Juranko
372f1c3873
🌐 Add translations for: Croatian
Currently translated at 62.5% (1559 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hr/
2026-09-15 17:18:43 +00:00
TheScientistPT
43d5ee6c2a
🌐 Add translations for: Portuguese (Portugal)
Currently translated at 61.4% (1532 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_PT/
2026-09-15 17:18:41 +00:00
Dário
911568d42e
🌐 Add translations for: Portuguese (Portugal)
Currently translated at 61.4% (1532 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_PT/
2026-09-15 17:18:40 +00:00
Amerey.eu
471a1be15f
🌐 Add translations for: Czech
Currently translated at 62.2% (1553 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/cs/
2026-09-15 17:18:38 +00:00
matl-17
f71b7e9128
🌐 Add translations for: Czech
Currently translated at 62.2% (1553 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/cs/
2026-09-15 17:18:37 +00:00
Mikel Larreategi
e3804a8120
🌐 Add translations for: Basque
Currently translated at 45.8% (1144 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/eu/
2026-09-15 17:18:35 +00:00
Tatsuto Yamamoto
a1ae80e950
🌐 Add translations for: Japanese
Currently translated at 9.3% (234 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ja/
2026-09-15 17:18:33 +00:00
ascarida
262a218875
🌐 Add translations for: Galician
Currently translated at 14.5% (362 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/gl/
2026-09-15 17:18:31 +00:00
Vincas Dundzys
22dcd29601
🌐 Add translations for: Lithuanian
Currently translated at 4.4% (112 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lt/
2026-09-15 17:18:29 +00:00
Radek Sawicki
0aa49f0f3f
🌐 Add translations for: Polish
Currently translated at 44.8% (1119 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pl/
2026-09-15 17:18:26 +00:00
Nicola Bortoletto
be67bb8485
🌐 Add translations for: Italian
Currently translated at 83.8% (2092 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/it/
2026-09-15 17:18:24 +00:00
Anonymous
841288cbc3
🌐 Add translations for: Italian
Currently translated at 83.8% (2092 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/it/
2026-09-15 17:18:24 +00:00
Valentina Chapellu
8d9894653c
🌐 Add translations for: Italian
Currently translated at 83.8% (2092 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/it/
2026-09-15 17:18:23 +00:00
Danial Shirali
b5dafa3d49
🌐 Add translations for: Persian
Currently translated at 96.3% (2404 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fa/
2026-09-15 17:18:20 +00:00
Ahmad HosseinBor
c4318d738e
🌐 Add translations for: Persian
Currently translated at 96.3% (2404 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fa/
2026-09-15 17:18:20 +00:00