Commit Graph
23798 Commits
Author SHA1 Message Date
Andrés Moya 7771b65558 wip 2026-09-18 18:14:22 +02:00
Andrés Moya f80d9b3eb5 wip 2026-09-18 14:33:32 +02:00
Andrés Moya aa6f275755 wip 2026-09-18 13:42:00 +02:00
Andrés Moya 12f9616ff3 🔧 Add tests and validations to variant functions 2026-09-18 11:57:24 +02:00
Andrés Moya b4536289dc 💄 Rename props -> properties 2026-09-18 11:57:24 +02:00
Andrés Moya 2591d9ce69 🔧 Validate changes immediately after processing them 2026-09-18 11:57:20 +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
Andrey Antukh fe89e9e52c Merge remote-tracking branch 'origin/staging' into develop 2026-09-17 20:23:41 +02:00
Andrey Antukh 5b3e36489c 📚 Document int?/integer? predicate coverage in Clojure memory
Review assumed int? was 32-bit; it covers Long/Integer/Short/Byte.
Note it in mem:clojure/idioms so the mistake is not repeated.

AI-assisted-by: muse-spark-1.3-contributor
2.18.0-RC7
2026-09-17 20:23:22 +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
makesomethingshitandalonso.torres 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
ShreyashandShreyash Agare 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 CruzandEva Marco 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