23788 Commits

Author SHA1 Message Date
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
2cdfc912d8 Merge remote-tracking branch 'origin/staging' into develop 2026-09-17 11:33:50 +02:00
Alejandro Alonso
14c3135e21 Merge remote-tracking branch 'origin/main' into staging 2.18.0-RC6 2026-09-17 11:26:23 +02:00
Alonso Torres
420aa981b2 🐛 Fix stalled saving states (#11699) 2026-09-17 11:25:36 +02:00
Elena Torró
4c940296f1
🐛 Fix fixed-scroll on the viewer (#11752) 2026-09-17 09:43:13 +02:00
Elena Torró
cc9c60507d
🐛 Do not apply stroke style to caps (#11744) 2026-09-17 09:39:39 +02:00
Andrey Antukh
729cc5a828 Merge remote-tracking branch 'origin/staging' into develop 2026-09-16 20:25:12 +02:00
Andrey Antukh
9ae967c621 📚 Add plan status lifecycle and review log
Give every plan a write-restricted Status (draft, reviewed,
done) and an append-only Review Log with UTC ISO 8601 lines.

Make-a-plan creates plans as draft and is the only flow
writing reviewed, on explicit user apply. Review-plan stays
read-only. Implement-plan closes the plan to done with the
issue URL when one exists, in the same commit as the code.
Document the lifecycle in the agents README.

AI-assisted-by: muse-spark-1.3-contributor
2026-09-16 18:12:12 +00:00
Andrey Antukh
ebba70ad2b 📚 Normalize plan followup and sub-plan naming
Define derived plan naming for .agents/plans/.

Parent basename stays intact and derivatives append
--review-NN for review followups and --task-NN for
roadmap sub-plans, with no new date so ls groups them.
Document the rule in the planner skill, the in-place
vs new-file policy in make-a-plan, and examples in
the agents README.

AI-assisted-by: muse-spark-1.3-contributor
2026-09-16 18:00:55 +00:00
Andrey Antukh
30e52af22e 📎 Backport creating-issue serena memories from develop 2026-09-16 19:48:50 +02:00
David Barragán Merino
443622b2f9 🐳 Keep dist-upgrade unattended across the image builds
Signed-off-by: David Barragán Merino <david.barragan@kaleidos.net>
2026-09-16 18:28:48 +02:00
David Barragán Merino
2e94361f62 🐳 Keep dist-upgrade unattended across the image builds
Signed-off-by: David Barragán Merino <david.barragan@kaleidos.net>
2026-09-16 18:28:03 +02:00
Alejandro Alonso
20547f658e
🐛 Preserve tile coverage when packing atlas slots (#11749)
Packed atlas compose inset Linear samples after blitting the full
drawable into the slot, which dropped edge texels and opened
multi-pixel gaps on text that crossed tile seams (#11696), especially
under HiDPI packing. Write the drawable into the inset content rect
and clamp-pad the 1px frame so Linear compose keeps coverage without
bleeding into the next cell.

Closes #11696
2026-09-16 16:40:33 +02:00
Alejandro Alonso
fcae641c7b
🐛 Skip content clip on WASM SVG drop silhouettes (#11655)
Clipped frames (show-content=false) were applying clipPath to the drop
silhouette. Spread/offset fills were outset correctly but then truncated
to the true selrect, so spread rings vanished on export. Match the GPU:
paint drop silhouettes outside the content clip; keep clipping on the
real content pass only.

Closes #11653
2026-09-16 16:08:17 +02:00
Alejandro Alonso
b8af89c1b8
✨ Export text strokes to WASM SVG (#11578)
SkSVGDevice drops save_layer composition for text strokes, so emit
center strokes (with <g opacity> when alpha), inner strokes via glyph
clipPath, and outer strokes via inverse-glyph luminance mask.

Closes #11386
2026-09-16 15:54:07 +02:00
Shreyash
76e9289fcf
🐛 Fix stroke to path dropping caps and markers (#11614)
* 🐛 Fix stroke to path dropping caps and markers

Caps and markers (round ends, arrows, square/diamond/circle markers) are
painted separately by `handle_stroke_caps` after the stroke itself, so
`stroke_to_path` — which only outlines the shape path — dropped them.
Converting a stroke to a path lost every end decoration except the
Round/Round and Square/Square pairs Skia draws natively, and even those
were missing because the outline paint kept the default butt cap.

Cap geometry now lives in `shapes/stroke_paths.rs` as plain path
builders, shared by the canvas renderer and by `stroke_to_path`, which
unions the caps into the outline for open paths and honors
`to_skia_linecap`. The SVG export no longer overlays the caps a second
time on top of the expanded outline, which would double the alpha of
translucent strokes; the clip silhouette for image strokes gets them
from the outline too.

Co-authored-by: Shreyash Agare <agareshreyash26@gmail.com>
2026-09-16 12:46:00 +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
8ff99f0766 📚 Document how to add issues as sub-issues
Add the verified REST procedure for linking an issue as a
sub-issue of an umbrella/EPIC: get the REST id, POST to the
parent's sub_issues endpoint with a typed -F field, and verify
both directions. Route it from the create-issue skill.

AI-assisted-by: deepseek-v4.1-flash
2026-09-15 19:56:48 +02:00
Andrey Antukh
e07bda4fe2 📎 Backport .agents from develop 2026-09-15 19:56:37 +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