2418 Commits

Author SHA1 Message Date
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
Joseph V M
04994af434
🌐 Add translations for: Malayalam
Currently translated at 2.7% (68 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ml/
2026-09-15 17:18:17 +00:00
william chen
088bc2f214
🌐 Add translations for: Chinese (Traditional Han script)
Currently translated at 62.4% (1558 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hant/
2026-09-15 17:18:15 +00:00
Andy Li
3ec46a231a
🌐 Add translations for: Chinese (Traditional Han script)
Currently translated at 62.4% (1558 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hant/
2026-09-15 17:18:15 +00:00
Yaron Shahrabani
6928474fdb
🌐 Add translations for: Hebrew
Currently translated at 85.8% (2141 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/
2026-09-15 17:18:12 +00:00
Linerly
2974a83f0d
🌐 Add translations for: Indonesian
Currently translated at 66.4% (1657 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/id/
2026-09-15 17:18:10 +00:00
Amine Gdoura
9300287762
🌐 Add translations for: Arabic
Currently translated at 44.6% (1113 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ar/
2026-09-15 17:18:08 +00:00
AlexTECPlayz
fd6e681699
🌐 Add translations for: Romanian
Currently translated at 76.0% (1897 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ro/
2026-09-15 17:18:06 +00:00
George Lemon
052097ccf4
🌐 Add translations for: Romanian
Currently translated at 76.0% (1897 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ro/
2026-09-15 17:18:05 +00:00
Simon Bechmann
4c4a179bda
🌐 Add translations for: Danish
Currently translated at 4.1% (104 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/da/
2026-09-15 17:18:02 +00:00
Allan Nordhøy
26879a0423
🌐 Add translations for: Norwegian Bokmål
Currently translated at 6.5% (163 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/nb_NO/
2026-09-15 17:18:00 +00:00
Stas Haas
d3a04c55dc
🌐 Add translations for: German
Currently translated at 77.5% (1933 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/
2026-09-15 17:17:58 +00:00
Pablo Alba
ab826031c6
🌐 Add translations for: German
Currently translated at 77.5% (1933 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/
2026-09-15 17:17:58 +00:00
Renan Mayrinck
2783b34991
🌐 Add translations for: Portuguese (Brazil)
Currently translated at 54.6% (1364 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_BR/
2026-09-15 17:17:55 +00:00
DoubleCat
f3d86b10c2
🌐 Add translations for: Chinese (Simplified Han script)
Currently translated at 91.6% (2285 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hans/
2026-09-15 17:17:53 +00:00
Oğuz Ersen
cfe1246f99
🌐 Add translations for: Turkish
Currently translated at 96.5% (2407 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/tr/
2026-09-15 17:17:51 +00:00
Anonymous
11ed5cc24a
🌐 Add translations for: Turkish
Currently translated at 96.5% (2407 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/tr/
2026-09-15 17:17:50 +00:00
Vint Prox
d2c68a2ade
🌐 Add translations for: Russian
Currently translated at 66.3% (1656 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ru/
2026-09-15 17:17:48 +00:00
Anonymous
f48a3b4204
🌐 Add translations for: Greek
Currently translated at 20.3% (508 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/el/
2026-09-15 17:17:46 +00:00
Corentin Noël
0f3a32e12c
🌐 Add translations for: French
Currently translated at 96.5% (2407 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/
2026-09-15 17:17:43 +00:00
Surfoo
f2f336b99a
🌐 Add translations for: French
Currently translated at 96.5% (2407 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/
2026-09-15 17:17:43 +00:00
Pablo Alba
4a62e9063e
🌐 Add translations for: French
Currently translated at 96.5% (2407 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/
2026-09-15 17:17:42 +00:00
Aryiu
4b04c05a53
🌐 Add translations for: Catalan
Currently translated at 42.3% (1057 of 2494 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ca/
2026-09-15 17:17:39 +00:00
Hosted Weblate
dd4c92a4e0
🌐 Update translation files
Updated by "Cleanup translation files" hook in Weblate.

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/
2026-09-15 19:12:42 +02:00
Hosted Weblate
b419efea54
🌐 Merge branch 'origin/develop' into Weblate. 2026-09-15 19:11:04 +02:00
Danial Shirali
8177022ffc
🌐 Add translations for: Persian
Currently translated at 99.8% (2429 of 2432 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fa/
2026-09-15 17:09:26 +00:00
Alonso Torres
ff88a055fd
🐛 Fix stalled saving states (#11699) 2026-09-15 16:04:00 +02:00
María Valderrama
66876f16b2
✨ Error page for instances without admin-console configuration (#11649)
* ✨ Error page for instances without admin-console configuration

* 📎 Code review
2026-09-15 07:24:55 +02:00
Alexis Morin
c45bb130bf
🌐 Add translations for: French (Canada)
Currently translated at 100.0% (2432 of 2432 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr_CA/
2026-09-14 17:51:41 +00:00
Yaron Shahrabani
ec996f08ac
🌐 Add translations for: Hebrew
Currently translated at 88.6% (2155 of 2432 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/
2026-09-14 17:51:30 +00:00
Alexis Morin
0dbc8e1b55
🌐 Add translations for: French (Canada)
Currently translated at 97.3% (2368 of 2432 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr_CA/
2026-09-11 14:51:30 +02:00
Andrey Antukh
37dab75e1a Merge remote-tracking branch 'origin/staging' into develop 2026-09-10 20:29:44 +02:00
Luis de Dios
c589563912
♻️ Replace digit with number in password validations (#11609) 2026-09-10 12:15:58 +02:00
Alexis Morin
bb6472a300
🌐 Add translations for: French (Canada)
Currently translated at 96.5% (2349 of 2432 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr_CA/
2026-09-09 14:51:33 +02:00
Philippe Accorsi
6b113566f3
🌐 Add translations for: French
Currently translated at 99.8% (2429 of 2432 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/
2026-09-03 11:51:27 +00:00
Surfoo
45b3bdf625
🌐 Add translations for: French
Currently translated at 99.8% (2429 of 2432 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/
2026-09-03 11:51:26 +00:00
Surfoo
c0f5fc601c
🌐 Add translations for: French
Currently translated at 99.7% (2425 of 2432 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/
2026-09-02 12:29:59 +02:00
Surfoo
9e66f5653e
🌐 Add translations for: French
Currently translated at 85.8% (2088 of 2432 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/
2026-09-02 10:54:29 +02:00
Pablo Alba
5b3a1d9360
✨ Add check version menu entry (#11411)
* ✨ Add check version menu entry

* ✨ MR fixes

* ✨ MR changes 2
2026-08-31 16:47:17 +02:00
Elena Torró
66b4a99ac3
🎉 Implement export jobs to process export requests (#11296)
* ✨ Add export job model, store and scheduler to exporter

* ✨ Render wasm exports on pooled worker threads

* ✨ Add export job REST API to exporter

* ✨ Use export job API and allow cancelling wasm exports

* 🔧 Show export jobs in the internal debug panel

* 🔧 Pass flags and export job settings to the exporter container

* 📚 Document the exporter job API and its redis layout
2026-08-31 14:42:51 +02:00
Andrey Antukh
292390f0eb Merge remote-tracking branch 'origin/staging' into develop 2026-08-31 11:52:26 +02:00
María Valderrama
c01306734a
🐛 Fix default team and UI labels to use Personal Projects (#11418)
* 🐛 Fix default team and UI labels to use Personal Projects

* 📎 Code review
2026-08-28 14:04:56 +02:00
Andrey Antukh
0a14a1f3db Merge remote-tracking branch 'origin/staging' into develop 2026-08-28 11:22:52 +02:00
María Valderrama
cdfdbf9adc
🐛 Fix labels for teams navigation and personal files section (#11398) 2026-08-28 09:49:13 +02:00
María Valderrama
6bedd5ac76
🐛 Fix move organization modal (#11390)
* 🐛 Fix move organization modal

* 📎 Code review
2026-08-27 12:41:32 +02:00
Alonso Torres
217284b1e1
✨ Improve path operations and edition (#10807)
* ✨ Improve path operations and edition

* 🐛 Fix floating-point equality issues in path editing

Replace exact equality checks with tolerance-based comparisons
in path editing functions to handle floating-point rounding
differences after transforms, rotations, or curve fitting.

Changes:
- distribute-content: Round coordinates to 0.1 precision before
  grouping to ensure coincident nodes move together
- separate-node: Use gpt/close? instead of exact equality to
  find nodes with floating-point imprecision
- collision-step: Use mth/close? for tolerance-based comparison
  to detect paste collisions correctly
- resolve-edit-fills: Add cycle detection to prevent infinite
  loops with corrupted parent chains

Made collision-step, available-offset-step, and resolve-edit-fills
public for better testability.

Added comprehensive tests for all fixes covering both exact and
floating-point coordinate scenarios.

AI-assisted-by: qwen3.7-plus

* 🐛 Fix path editor code review findings

Fix issues identified during code review of path editor enhancements:

- Fix unused binding lint warning in distribute-content that blocked CI
- Fix collision-step floor comparison to use round instead of floor,
  correctly detecting collisions when coordinates drift slightly below
  integer boundaries
- Fix resolve-edit-fills to recurse through empty parent groups when
  searching for inherited fills in nested group hierarchies
- Fix expand-coincident-node-indices to use fuzzy comparison (gpt/close?)
  instead of exact equality, handling floating-point divergence after
  transforms or rotations
- Remove unreachable dead code in path-point* on-pointer-down handler
- Add tests for collision-step boundary cases, nested group fill
  inheritance, and coincident node alignment/flipping

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

---------

Co-authored-by: Andrey Antukh <niwi@niwi.nz>
2026-08-27 10:51:10 +02:00
Andrey Antukh
03cd3fa70f
♻️ Consolidate auto-link libraries with unified export-type and fix ref integrity (#9958)
* ✨ Auto-link libraries during import based on slugified name

When a Penpot file is exported without bundled libraries and then
imported into a different environment, external library links are
broken because library UUIDs differ across environments.

This feature adds a heuristic to auto-relink libraries by matching
slugified library names against shared files in the target team:

- Export: embed external library metadata (id, name, slug, used-by)
  in the manifest when libraries are not included in the export.
- Import: resolve external libraries by slugifying shared file names
  in the destination team and matching against manifest slugs.
- Single match: auto-link silently (creates file-library-rel row).
- Multiple matches: emit SSE event so the frontend shows a selection
  dialog for the user to pick the correct library.
- No match: import continues without linking (current behavior).

Backend changes:
- Extended manifest schema with optional :external-libraries field
- Added slugify-name, get-files-names, get-shared-files-for-team,
  find-shared-files-by-slug helpers in app.binfile.common
- Threaded team-id into import cfg from RPC layer
- Added resolve-external-libraries and auto-link-libraries in v3
- Emit :library-candidates SSE event for multi-match cases

Frontend changes:
- Worker captures library-candidates SSE events and forwards them
- Import dialog shows auto-link notification and multi-match
  selection UI with select dropdowns
- Added link-files-to-library! RPC helper for user selections
- Added en/es translations for new UI strings

Closes #9263

Signed-off-by: Andrey Antukh <niwi@niwi.nz>

* ✨ Add UI for the auto-link plumbing

* ♻️ Consolidate auto-link libraries with unified export-type and fix ref integrity

Consolidates the auto-link libraries feature into a single coherent implementation:

- Unify boolean flags (embed-assets, include-libraries, link-later)
  into single ::bfc/export-type parameter
- Fix critical reference-integrity bug: pre-resolution no longer remaps
  :component-file refs when no link is created (multi-match / no-permission)
- compute-link-decisions as single source of truth for auto-link logic
- 80+ backend tests covering round-trip, cross-team, permissions,
  edge cases, and reference integrity

AI-assisted-by: longcat-2.0

---------

Signed-off-by: Andrey Antukh <niwi@niwi.nz>
Co-authored-by: Eva Marco <evamarcod@gmail.com>
2026-08-27 10:09:52 +02:00
María Valderrama
e93c419785
🐛 Fix wrong copy on disabled invite button tooltip (#11311) 2026-08-24 15:25:31 +02:00