Compare commits

..

3884 Commits

Author SHA1 Message Date
elhombretecla
c565915007 💄 Add new tier two color tokens for ui elements 2025-10-06 09:53:11 +02:00
Eva Marco
2de6b6460e ♻️ Review on switcher component 2025-10-03 15:02:31 +02:00
elhombretecla
f905dfc699 💄 Fix linter errors 2025-10-02 11:05:53 +02:00
elhombretecla
c79f110177 💄 Fix cli errors 2025-10-02 11:05:34 +02:00
elhombretecla
f644b3744a 💄 Fix light theme styles 2025-10-02 11:05:34 +02:00
elhombretecla
0722af3a2f 🎉 Add translation string to switcher label 2025-10-02 11:05:34 +02:00
elhombretecla
b4c6bbb191 💄 Remove css nesting 2025-10-02 11:05:34 +02:00
Eva Marco
cad9d03ca1 🎉 Some fixes 2025-10-02 11:05:34 +02:00
elhombretecla
1d6389a3eb 🎉 Apply fixes and new doc structure 2025-10-02 11:05:34 +02:00
elhombretecla
913a8d3148 🎉 Fix label color and scss variables 2025-10-02 11:05:34 +02:00
elhombretecla
34e3453f24 Use proper classes name convention 2025-10-02 11:05:34 +02:00
elhombretecla
6f362f9211 🎉 Add new component switcher structure 2025-10-02 11:05:34 +02:00
alonso.torres
979b4276ca 🐛 Fix problem with component swapping panel 2025-10-02 09:10:21 +02:00
Elena Torró
a32fe40528 Merge pull request #7409 from penpot/ladybenko-fix-wasm-playwright-ci
🔧 Fix Playwright config in CI to include the wasm build
2025-10-02 09:03:12 +02:00
Natacha
b602df549e Add new shadow icons (#7416)
*  Adds new shadow icons

Signed-off-by: Natacha <natachamenjibar@gmail.com>

*  Add shadow icons

Signed-off-by: Natacha <natachamenjibar@gmail.com>

*  Adds shadow icons

Signed-off-by: Natacha <natachamenjibar@gmail.com>

* 📎 Fix wrong svg

Signed-off-by: Natacha <natachamenjibar@gmail.com>

* 📎 Fix wrong svg

Signed-off-by: Natacha <natachamenjibar@gmail.com>

* 📎 Fix wrong svg

Signed-off-by: Natacha <natachamenjibar@gmail.com>

---------

Signed-off-by: Natacha <natachamenjibar@gmail.com>
2025-10-01 17:11:19 +02:00
Luis de Dios
7f1ab08ec8 🐛 Fix use a pointer cursor for adding variant from the viewport (#7410) 2025-10-01 17:01:07 +02:00
Luis de Dios
1263ea11fa 🐛 Fix order of component menu options in assets tab (#7388)
* 🐛 Reorder component menu options in assets tab

* ♻️ Use new component syntax

* 📚 Add bugfix to changelog

* ♻️ Code restructuring and SCSS improvements
2025-10-01 17:00:27 +02:00
Yamila Moreno
ce26c52b30 👷 Automate docker images creation 2025-10-01 14:54:00 +02:00
Yamila Moreno
5c8b3ac3d6 👷 Automate docker images creation 2025-10-01 13:41:03 +02:00
Aitor Moreno
bd4d576172 Merge pull request #7412 from penpot/elenatorro-fix-loop-all-ancestors
🐛 Break loop when no parent is present
2025-10-01 13:36:16 +02:00
Elena Torro
e10169b3db 🐛 Break loop when no parent is present 2025-10-01 12:43:56 +02:00
Elena Torró
f119a9548d Merge pull request #7411 from penpot/azazeln28-fix-issue-12185-wrong-text-width-height-layout
🐛 Fix wrong text auto width/height layout
2025-10-01 12:40:58 +02:00
Aitor Moreno
c097aef152 🐛 Fix wrong text auto width/height layout 2025-10-01 12:27:38 +02:00
Andrey Antukh
000fa51c73 🐛 Fix zip handling on exporter 2025-10-01 11:56:57 +02:00
Belén Albeza
d815494ffa 🔧 Fix playwright config to do a wasm build 2025-10-01 11:27:13 +02:00
Andrey Antukh
a25ba6b482 📎 Fix incorrect regex for match merge and revert commits 2025-10-01 11:07:21 +02:00
Andrey Antukh
e8434c3370 📎 Update devenv tmux script to start exporter using yarn 2025-10-01 10:59:41 +02:00
Andrey Antukh
7cf4ec2792 ♻️ Make the exporter build as esm module 2025-10-01 10:58:03 +02:00
Andrey Antukh
365ce25996 Merge remote-tracking branch 'origin/staging' into develop 2025-10-01 10:50:19 +02:00
Andrey Antukh
01ef55e4f4 Revert " Add minor improvement to cljs impl logging"
This reverts commit 960b76f760.
2025-10-01 10:48:24 +02:00
Andrey Antukh
3b81c1d750 Revert "♻️ Make the exporter build as esm module"
This reverts commit d0f34f06a9.
2025-10-01 10:47:47 +02:00
Elena Torró
40b34da788 Merge pull request #7269 from penpot/azazeln28-feat-caret-position
🎉 Feat caret position
2025-10-01 09:43:03 +02:00
Aitor Moreno
732c79b7b5 🎉 Add function to retrieve caret position 2025-10-01 09:18:46 +02:00
Andrey Antukh
d0f34f06a9 ♻️ Make the exporter build as esm module 2025-10-01 08:10:37 +02:00
Andrey Antukh
23d5bdd20b 🐛 Add missing poppler-tools dependency on devenv 2025-10-01 08:10:37 +02:00
Andrey Antukh
9f2dc06c95 Add missing srepl helper for disable objects-map feat 2025-10-01 08:10:37 +02:00
Andrey Antukh
62563d28d0 📎 Bump library version to 1.0.9
Mainly fixes dependencies declaration on package.json file
2025-09-30 21:55:17 +02:00
Andrey Antukh
21e2ee9904 🐛 Fix dependencies on library 2025-09-30 21:53:04 +02:00
brian mwenda
e6c418eb9c 🐛 Improve auto-width to fixed conversion logic in layout contexts
Signed-off-by: Brian Mwenda <brian@nathandigital.com>
2025-09-30 21:48:03 +02:00
Luis de Dios
de5ff227d2 🎉 Create variant from the viewport (#7357)
* 🎉 Create variant from the viewport

* ♻️ Use DS styles and new component syntax

* 📎 PR changes
2025-09-30 18:15:17 +02:00
Florian Schroedl
0f67730198 🐛 Dont forward default-value for mismatching tab-type 2025-09-30 14:27:40 +02:00
Florian Schroedl
3da02e2b6b 🐛 Fixes resolved values being prefilled for existing referenced composite token 2025-09-30 14:27:40 +02:00
Florian Schroedl
ab80021fb1 🐛 Fix performance issue on font-family 2025-09-30 14:27:40 +02:00
Xaviju
f31e9b8ac9 🎉 Add blur panel to inspect styles tab (#7397) 2025-09-30 13:08:52 +02:00
Andrey Antukh
7d16515eb7 Add minor enhacements to logging on frontend (#7401)
*  Add logging consistency enhacements on fonts loading

*  Disable data evens ns logging

*  Simplify flags logging on application initialization

*  Improve features logging
2025-09-30 11:59:41 +02:00
Pablo Alba
cd9ba482e3 🐛 Load dependant libraries, and don't allow unload them 2025-09-30 09:55:21 +02:00
David Barragán Merino
dff1ca23d3 📚 Update changelog 2025-09-29 18:08:28 +02:00
Andrey Antukh
c363d4d937 📎 Bump library version 2025-09-29 13:44:14 +02:00
Andrey Antukh
de25a24a6d 🐛 Fix backend repl start issue with jdk 24 2025-09-29 13:35:48 +02:00
Andrey Antukh
accc9a173f Merge remote-tracking branch 'origin/staging' into develop 2025-09-29 13:24:31 +02:00
Andrey Antukh
2d364dde5c Add several minor enhacements to features subsystem
Mainly fixes the team non-inheritable features handling and
removes unnecesary/duplicate checks.
2025-09-29 13:23:16 +02:00
Andrey Antukh
c892a9f254 Integrate objects-map usage on backend and frontend 2025-09-29 13:23:16 +02:00
Andrey Antukh
aaae35fb51 🎉 Add multiplatform impl of ObjectsMap
The new type get influentiated by the ObjectsMap impl on backend
code but with simplier implementation that no longer restricts keys
to UUID type but preserves the same performance characteristics.

This type encodes and decodes correctly both in fressian (backend)
and transit (backend and frontend).

This is an initial implementation and several memory usage
optimizations are still missing.
2025-09-29 13:23:16 +02:00
Andrey Antukh
960b76f760 Add minor improvement to cljs impl logging
Mainly reduce the emmited code, that will contribute to reduce the
bundle size and also adds timestamp to the default output.
2025-09-29 13:23:16 +02:00
Andrey Antukh
d921e7eaa3 📎 Add not-empty generator to schema generator ns 2025-09-29 13:23:16 +02:00
Andrey Antukh
49f06b25fa 📚 Update changelog 2025-09-29 13:23:01 +02:00
Andrey Antukh
5ffb7ae2ec Add warning on using deprecated storage config 2025-09-29 13:23:01 +02:00
Andrey Antukh
27945ace65 Revert deprecated storage config cleaning 2025-09-29 13:23:01 +02:00
María Valderrama
e39bf0b439 Invitations management improvements (#7230)
*  Invitations management improvements

* 📎 Change invite email subject

* 📎 Update icon usage

* ♻️ Fix css file

---------

Co-authored-by: Eva Marco <evamarcod@gmail.com>
2025-09-29 13:18:57 +02:00
Alonso Torres
deee7f7334 Merge pull request #7366 from penpot/niwinz-develop-page-data-type
 Add several enhancements for reduce workspace file load time
2025-09-29 12:43:34 +02:00
Xaviju
20d61cbce2 Create ghost variant for select DS component (#7392) 2025-09-29 12:24:20 +02:00
Andrés Moya
9ad8d3fd08 🔧 Make small improvements from PR comments 2025-09-29 12:16:42 +02:00
Andrés Moya
4c35571336 🔧 Read and modify token themes by id 2025-09-29 12:16:42 +02:00
Andrés Moya
37679b7ec6 🔧 Organize token changes API 2025-09-29 12:16:42 +02:00
Andrés Moya
194eded930 🔧 Unify path name helper functions 2025-09-29 12:16:42 +02:00
Andrés Moya
4e607d8da2 💄 Clarify and reorder interfaces 2025-09-29 12:16:42 +02:00
Andrés Moya
f5fd978a07 🔧 Retrieve tokens from library and not from set 2025-09-29 12:16:42 +02:00
Andrés Moya
b28be62845 🔧 Fix rebase problems 2025-09-29 12:16:42 +02:00
Andrés Moya
d76a5c615c 🔧 Modify token sets by id instead of name and review usage 2025-09-29 12:16:42 +02:00
Andrés Moya
03e05da41e 💄 Normalize some attributes of changes 2025-09-29 12:16:42 +02:00
Andrés Moya
5f886e141a 💄 Minor changes 2025-09-29 12:16:42 +02:00
Andrés Moya
021b8f81ca 🔧 Read token sets by id instead of name 2025-09-29 12:16:42 +02:00
Andrey Antukh
f32112544e Make deleted fonts fixer to run with more granular stragegy
Instead of running it on all the file, only run it to local library
and the current page, reducing considerably the overhead of analyzing
the whole file on each file load.

It stills executes for page each time the page is loaded, and add
some kind of local cache for not doing repeated work each time page
loads is pending to be implemented in other commit.
2025-09-29 12:07:49 +02:00
Andrey Antukh
27e311277a Add logging to frontend repo namespace 2025-09-29 12:07:49 +02:00
Andrey Antukh
b9030fcc73 Add better workspace file indexing strategy
Improve file indexes initialization on workspace.

Instead of initialize indexes for all pages only initialize
indexes for the loaded page.
2025-09-29 12:07:49 +02:00
Andrey Antukh
e1519f0ee4 Integrate objects-map usage on backend and frontend 2025-09-29 12:07:48 +02:00
Andrey Antukh
7fefe6dbc8 🎉 Add multiplatform impl of ObjectsMap
The new type get influentiated by the ObjectsMap impl on backend
code but with simplier implementation that no longer restricts keys
to UUID type but preserves the same performance characteristics.

This type encodes and decodes correctly both in fressian (backend)
and transit (backend and frontend).

This is an initial implementation and several memory usage
optimizations are still missing.
2025-09-29 12:06:56 +02:00
Andrey Antukh
fdf70ae9c1 Fix docstring on common.weak ns function 2025-09-29 12:06:56 +02:00
Andrey Antukh
528315b75c 📎 Add not-empty generator to schema generator ns 2025-09-29 12:06:56 +02:00
Andrey Antukh
42d03a0325 📎 Add several missing imports on repl related namespaces 2025-09-29 12:06:56 +02:00
Andrey Antukh
0346c48b03 Add several minor enhacements to features subsystem
Mainly fixes the team non-inheritable features handling and
removes unnecesary/duplicate checks.
2025-09-29 12:06:56 +02:00
Andrey Antukh
1d54fe2e24 Add support for emit messages without waiting response on worker 2025-09-29 12:06:56 +02:00
Andrey Antukh
255f5af2e3 Add several enhacements to buffer namespace
The changes are just for completenes.
2025-09-29 12:06:56 +02:00
Andrey Antukh
eea65b12dd Add minor improvement to cljs impl logging
Mainly reduce the emmited code, that will contribute to reduce the
bundle size and also adds timestamp to the default output.
2025-09-29 12:06:56 +02:00
Andrey Antukh
d4b7f231c7 🔧 Add missing config for on commit checker 2025-09-29 12:05:09 +02:00
Andrey Antukh
473066cf5c 🔧 Add missing config for on commit checker 2025-09-29 12:04:37 +02:00
Xaviju
5e84bda404 🎉 Add SVG panel to inspect styles tab (#7373) 2025-09-29 09:53:15 +02:00
Andrey Antukh
c1058c7fdb ♻️ Add minor refactor for internal concurrency model
Replace general usage of virtual threads with platform threads
and use virtual threads for lightweight procs such that websocket
connections. This decision is made mainly because virtual threads
does not appear on thread dumps in an easy way so debugging issues
becomes very difficult.

The threads requirement of penpot for serving http requests
is not very big so having so this decision does not really affects
the resource usage.
2025-09-26 14:35:06 +02:00
Andrey Antukh
9d907071aa ⬆️ Update dependencies (#7330)
* ⬆️ Update to JDK25 on the devenv

* ⬆️ Update dependencies

* 🔥 Remove unused flag from devenv backend startup scripts

*  Enable shenandoah gc on backend scripts/repl
2025-09-26 13:43:43 +02:00
Elena Torró
c32b94abcf Merge pull request #7343 from penpot/elenatorro-12118-support-large-svg-files
🐛 Fix parsing large paths with multiple subpaths
2025-09-26 13:35:17 +02:00
Elena Torro
9d8ad0ea6e 🐛 Fix parsing large paths with multiple subpaths 2025-09-26 13:04:47 +02:00
Yamila Moreno
2b1e107a44 Merge pull request #7390 from penpot/yms-add-curl-dependency
🐳 Add curl to the backend image
2025-09-26 11:40:42 +02:00
Yamila Moreno
2196318cfc 🐳 Add curl to the backend image 2025-09-26 11:23:02 +02:00
Yamila Moreno
b3d1701698 Merge pull request #7355 from penpot/yms-docker-update-nginx-entrypoint
🐳 Improve Docker nginx
2025-09-26 10:49:24 +02:00
Yamila Moreno
042bd03beb 🐳 Improve Docker nginx 2025-09-26 10:31:23 +02:00
Juan de la Cruz
a39a127f03 🐛 Fix underline text in template card at carrusel 2025-09-26 09:56:05 +02:00
Pablo Alba
bd665f70bf 💄 Add new library modal UI tweaks 2025-09-25 22:56:27 +02:00
Eva Marco
e184a9a8b9 🐛 Fix context menu on spacing tokens (#7382) 2025-09-25 17:28:46 +02:00
Elena Torró
9b90236b72 Merge pull request #7385 from penpot/elenatorro-improve-image-load-performance
🔧 Improve image parsing performance
2025-09-25 17:20:49 +02:00
Elena Torro
bf6cdf729d 🔧 Improve image parsing performance 2025-09-25 17:17:42 +02:00
Belén Albeza
361bdb4a04 ♻️ Decouple serialization from text/layout models" (#7360)
* ♻️ Move text serialization code to wasm module

* ♻️ Add serializer for TextAlign

* ♻️ Add serializers for TextDirection and TextDecoration

* ♻️ Add serializer for TextTransform

* ♻️ Remove unused font_style from TextLeaf model

* ♻️ Refactor parsing of TextLeaf from bytes

* ♻️ Decouple tight serialization of Paragraph
2025-09-25 16:54:07 +02:00
Elena Torró
3827aa6bd4 Merge pull request #7344 from penpot/elenatorro-11542-truncate-long-font-names-on-fonts-menu
🔧 Use two lines text ellipsis on custom font names
2025-09-25 15:25:50 +02:00
Xaviju
adf7b0df50 🎉 Add visibility panel to inspect styles tab (#7362) 2025-09-25 12:52:43 +02:00
Elena Torro
97b4491a27 🔧 Use two lines text ellipsis on custom font names 2025-09-25 12:49:33 +02:00
Xavier Julian
015bd9e453 🎉 Inspect styles tab: fill panel 2025-09-25 11:31:15 +02:00
Belén Albeza
49d5987b15 💄 Add deprecated namespace and fix import for remaining scss files (#7379) 2025-09-25 11:27:10 +02:00
Belén Albeza
a5e4de97e3 💄 Use deprecated prefix for deprecated scss vars and mixins (#7375) 2025-09-25 09:22:25 +02:00
Alonso Torres
378be9473d 🐛 Fix problem with export size (#7374) 2025-09-25 08:50:31 +02:00
Juan de la Cruz
412cf61d7d 🐛 Remove translations form inspect tab text properties (#7369) 2025-09-25 08:48:41 +02:00
Juan de la Cruz
754a1b6fa2 🐛 Fix loading tips wording (#7368) 2025-09-25 08:48:10 +02:00
Eva Marco
a4ada6dc8a 🐛 Add default flags for tokens (#7367) 2025-09-25 08:47:04 +02:00
Elenzakaleidos
ec94d08f4a 🎉 Update README.md with Variants (#7353)
Update the Readme with new text and image that include Variants as feature

Signed-off-by: Elenzakaleidos <elena.scilinguo@kaleidos.net>
2025-09-25 08:46:02 +02:00
Alonso Torres
b6b2d28464 🐛 Fix problem with flow not being deleted (#7371) 2025-09-24 18:06:26 +02:00
Elena Torro
32770c685a 🐛 Do not add shadows on hidden children 2025-09-24 14:42:57 +02:00
Eva Marco
441dc33e38 ♻️ Add shortcut to scss import paths (#7364)
* 🎉 Add config for shortcut imports

* ♻️ Change import paths
2025-09-24 11:18:34 +02:00
Eva Marco
3f87e768a7 ♻️ Fix color token reviews (#7322)
* ♻️ Fix some review changes

* 🐛 Fix more errors

* 🎉 Create token from colorpicker fixed

---------

Co-authored-by: Andrey Antukh <niwi@niwi.nz>
2025-09-24 11:13:52 +02:00
David Barragán Merino
09e9340ba6 💄 Fix a description and remove an unused event 2025-09-24 09:38:42 +02:00
David Barragán Merino
d5ff7b4144 📎 Add DevEnv builder workflow 2025-09-23 23:26:11 +02:00
David Barragán Merino
ef0aee0a09 📎 Automatically publish github release and docker images with final version tags 2025-09-23 23:25:52 +02:00
Andrey Antukh
1e9682376e Merge remote-tracking branch 'origin/staging' into develop 2025-09-23 12:20:49 +02:00
Andrey Antukh
11b75408fe 🐛 Fix regression on importing binfile-v1 files (#7359) 2025-09-23 11:38:33 +02:00
Andrey Antukh
59f7ede4ff 🐛 Add migration for properly decode all position data on text shapes 2025-09-23 11:34:24 +02:00
Pablo Alba
c9b61745a0 🎉 Switch several variant copies at the same time 2025-09-23 11:31:57 +02:00
Andrés Moya
8954b05d76 🐛 Fix error exporting a file with deleted tokens (#7356) 2025-09-22 17:41:31 +02:00
Aitor Moreno
974b76d7bd Merge pull request #7267 from penpot/azazeln28-feat-text-layout
🎉 Add internal TextContent layout data
2025-09-22 16:21:06 +02:00
Aitor Moreno
f505fcfa0d 🎉 Add internal TextContent layout data 2025-09-22 16:01:23 +02:00
Belén Albeza
e4d610d503 ♻️ Decouple shapes serialization from model (rust) (#7328)
* ♻️ Move shape type serialization to wasm module

* ♻️ Refactor serialization of constraints and vertical alignment into wasm module

* ♻️ Refactor serialization and model of shape blur

* ♻️ Refactor bool serialization to the wasm module

* ♻️ Split wasm::layout into submodules

* ♻️ Refactor serialization of AlignItems, AlignContent, JustifyItems and JustifyContent

* ♻️ Refactor serialization of WrapType and FlexDirection

* ♻️ Refactor serialization of JustifySelf

* ♻️ Refactor serialization of GridCell

* ♻️ Refactor serialization of AlignSelf

* 🐛 Fix AlignSelf not being serialized

* ♻️ Refactor handling of None variants in Raw* enums

* ♻️ Refactor serialization of grid direction

* ♻️ Refactor serialization of GridTrack and GridTrackType

* ♻️ Refactor serialization of Sizing

* ♻️ Refactor serialization of ShadowStyle

* ♻️ Refactor serialization of StrokeCap and StrokeStyle

* ♻️ Refactor serialization of BlendMode

* ♻️ Refactor serialization of FontStyle

* ♻️ Refactor serialization of GrowType
2025-09-22 13:47:54 +02:00
Andrey Antukh
cb4c155b32 📎 Uncomment previously commented migrations 2025-09-22 11:38:52 +02:00
Andrey Antukh
0b346e02ff 🐛 Fix incorrect options pass on decode-file 2025-09-22 11:30:42 +02:00
Madalena Melo
5c23a678cc Merge pull request #7342 from penpot/madalenapmelo-kp-patch-1
📚 Add reference to the Teams section on the Dashboard section
2025-09-22 11:23:29 +02:00
Andrey Antukh
946f641917 📎 Disable possible problematic migrations 2025-09-22 11:12:43 +02:00
David Barragán Merino
fb3923924b 📎 Change the name of some action workflows 2025-09-22 09:58:26 +02:00
Florian Schroedl
c882e8347a Add line-height to composite typography token 2025-09-22 09:52:56 +02:00
Pablo Alba
c1fd1a3b42 📚 Add variants doc for SDK (#7351)
* 📚 Add variants doc for SDK

* 📚 Spelling & style improvements

---------

Co-authored-by: Luis de Dios <luis.dedios@kaleidos.net>
2025-09-21 22:15:27 +02:00
Eva Marco
b1fe32baea ♻️ Remove deprecated @import from scss files (#7347)
* 🐛 Fix import warnings 1 of 2

* 🐛 Fix import warnings 2 of 2

* 🐛 Fix visual tests and format files

* 🐛 Fix mixed declarations on scss
2025-09-19 11:50:08 +02:00
Andrey Antukh
fb7a7d02da Merge pull request #7205 from penpot/niwinz-measures-tokens-backup
♻️ Replace numeric inputs on measure options
2025-09-19 11:44:17 +02:00
Eva Marco
20dfc2a216 🐛 Fix typo on event name (#7350) 2025-09-19 11:40:53 +02:00
Eva Marco
d7d2d36e0a ♻️ Replace measure inputs for numeric input component 2025-09-19 11:28:22 +02:00
Andrey Antukh
07904bcc5d ♻️ Add needed changes to get tokens from sidebar
This reverts commit afe149f702148d86d1dea6cb6a537917ce7202aa.
2025-09-19 10:26:29 +02:00
Andrey Antukh
9686075104 🐛 Fix translations 2025-09-18 12:02:45 +02:00
María Valderrama
436e0e847d 🐛 Fix current version on sidebar 2025-09-18 11:56:47 +02:00
Eva Marco
d50b070a64 🎉 Add usefull mixins to DS (#7340) 2025-09-18 10:47:55 +02:00
Andrey Antukh
80cb48fd6a Merge remote-tracking branch 'origin/staging' into develop 2025-09-18 10:44:21 +02:00
Andrey Antukh
e88039e46a 🐛 Fix future linter issues on wasm shape impl 2025-09-17 16:53:02 +02:00
Andrey Antukh
3c45a8d0b4 Allow delete subscriptions on profile deletion request 2025-09-17 16:53:02 +02:00
Aitor Moreno
c9d71f3b2d 🐛 Fix conflicting shortcuts (text alignment) (#7339) 2025-09-17 16:52:44 +02:00
Madalena Melo
49c6efbc22 📚 Add reference to the Teams section on the Dashboard section
https://tree.taiga.io/project/penpot/task/11806

Signed-off-by: Madalena Melo <madalena.melo@kaleidos.net>
2025-09-17 16:17:24 +02:00
Andrey Antukh
9f37175775 🐛 Fix incorrect path data content initialization on pluings api 2025-09-17 15:19:41 +02:00
andrés gonzález
5ed870cc6e 📚 Update shortcuts docs (#7341) 2025-09-17 14:13:00 +02:00
Andrey Antukh
4fb1c7a630 Merge remote-tracking branch 'origin/staging' into develop 2025-09-17 13:46:49 +02:00
Pablo Alba
2a3d7e470d 📚 Update changelog with variants info (#7335) 2025-09-17 13:45:59 +02:00
Eva Marco
f654eb2dcd 🐛 Fix font weight input placehoder (#7338) 2025-09-17 13:44:11 +02:00
Belén Albeza
c21d705143 🐛 Remove shortcuts for inc/dec line height and letter spacing (#7337) 2025-09-17 12:35:39 +02:00
Andrey Antukh
85c1750706 🐛 Fix backend last migration naming (#7333) 2025-09-17 10:47:14 +02:00
Luis de Dios
e2151409bf 🐛 Fix wrong number of components in the library modal (#7332) 2025-09-17 09:25:23 +02:00
Luis de Dios
4fe6cfc57a 🐛 Fix focus the first property value when creating a variant (#7329) 2025-09-16 23:25:18 +02:00
David Barragán Merino
fd37fdde93 📎 Add release action workflow 2025-09-16 18:06:06 +02:00
David Barragán Merino
66b1d5b7bd Merge remote-tracking branch 'origin/staging' into develop 2025-09-16 16:26:23 +02:00
Andrés Moya
2eed7444b7 🔧 Add migration to automatically fix validation errors 2025-09-16 16:11:58 +02:00
Xavier Julian
2bf7a9dd5f ♻️ Remove unneeded fn parameters 2025-09-16 14:17:14 +02:00
Xavier Julian
7bacd8fbca ♻️ Refactor defmulti fn into case switches 2025-09-16 14:17:14 +02:00
Luis de Dios
ef376fbb7b Add shortcut for creating variant to the shortcuts panel (#7319)
*  Add shortcut for creating variant to the shortcuts panel

* ♻️ Update components to new rumext syntax

* 🐛 Fix unique "key" prop error for each child in a list

* ♻️ Remove deprecated icons and CSS cleanup

* 📎 PR changes
2025-09-16 14:06:47 +02:00
Aitor Moreno
b883882a32 🐛 Fix onboarding select keyboard interaction (#7295) 2025-09-16 13:59:15 +02:00
Pablo Alba
18d5b84b00 🐛 Fix variants events (#7320)
* 🐛 Add missing event add-component-to-variant

* 🐛 Fix event apply-tokens, param applied-to-variant

* 🐛 Fix missing case on event "add new variant"

* 🐛 Fix event combine-as-variants

* 🐛 Fix event variant-edit-property-name

* 🐛 On variants events, change trigger for origin

* 🐛 Split combine-as-variants to not have an optional first parameter
2025-09-16 13:09:23 +02:00
Belén Albeza
e5e11b6383 🔧 Autogenerate serialization values for wasm enums (#7296)
* 🔧 Autogenerate serialization values for wasm enums

* 🔧 Add serializer values to the wasm api

*  Avoid converting to a clojure map the serializer js object

* 🔧 Update watch script for autoserialized enums

* 🐛 Fix missing serializer values
2025-09-16 12:29:14 +02:00
Eva Marco
01e963ae35 🐛 Fix font name hot update (#7316) 2025-09-16 12:23:41 +02:00
Eva Marco
90a80c4b63 🐛 Fix Uppercase on add token button (#7314) 2025-09-16 12:05:55 +02:00
Andrey Antukh
b56f237780 Merge remote-tracking branch 'origin/staging' into develop 2025-09-16 11:38:58 +02:00
Xavier Julian
4970ae3eb4 💄 Align tokens panel vertically to the top 2025-09-16 11:38:33 +02:00
Aitor Moreno
c62fadac47 🐛 Fix fast move with distance (#7302)
* 🐛 Fix fast move with distance

* 📎 Remove duplicated shourtcuts

---------

Co-authored-by: Andrey Antukh <niwi@niwi.nz>
2025-09-16 11:36:21 +02:00
Andrés Moya
a264f84e6c 🔧 Deactivate validation temporarily 2025-09-16 11:34:38 +02:00
Elena Torró
2e21f084fc 🐛 Fix boolean operations on rotated shapes (#7309) 2025-09-15 14:46:56 +02:00
Xavier Julian
55513b9ae5 🎉 Inspect styles tab: layout element panel 2025-09-15 13:39:00 +02:00
Luis de Dios
9311ee4c87 🐛 Fix show in assets panel option for component of variants (#7311) 2025-09-15 13:13:12 +02:00
Eva Marco
07d0062645 🐛 Fix sets shown without color tokens (#7312) 2025-09-15 10:38:06 +02:00
Xavier Julian
f4b38af649 Display border-radius as logical properties in inspect tab 2025-09-15 09:46:01 +02:00
Andrey Antukh
6e7bcd1243 Merge remote-tracking branch 'origin/staging' into develop 2025-09-12 16:55:25 +02:00
Andrey Antukh
b8c8579ff5 Merge pull request #7310 from penpot/niwinz-staging-update-jdk
⬆️ Update node and jdk (patch)
2025-09-12 16:54:49 +02:00
Andrey Antukh
82295c79d4 ⬆️ Update jdk to 24.0.2+12 2025-09-12 16:47:25 +02:00
Andrey Antukh
5174591058 ⬆️ Update nodejs to v22.19.0 2025-09-12 16:44:26 +02:00
Andrés Moya
ed3fc5b8b2 🐛 Fix detaching a nested copy inside a main component (#7304)
* 🐛 Fix detaching a nested copy inside a main component

* 💄 Rename functions for more semantic precission
2025-09-12 16:00:01 +02:00
Pablo Alba
f5f9157786 🐛 Fix paste behavior according to the selected element 2025-09-12 15:17:26 +02:00
Juan de la Cruz
658303fa36 🎉 Add 2.10 release slides (#7293) 2025-09-12 15:06:18 +02:00
Andrey Antukh
6cb0cb7f98 Merge remote-tracking branch 'origin/staging' into develop 2025-09-12 14:49:52 +02:00
Andrey Antukh
84013c21fa Merge pull request #7308 from penpot/niwinz-staging-update-deps
⬆️ Update dependencies
2025-09-12 14:47:53 +02:00
Andrey Antukh
f3062ade39 ⬆️ Update jakarta.mail dependency 2025-09-12 14:28:14 +02:00
Andrey Antukh
ca19d4deeb ⬆️ Update postgresql jdbc dependency 2025-09-12 14:28:14 +02:00
Andrey Antukh
dfceccca3d ⬆️ Update aws s3 sdk version
This transitivelly updates the netty library version
that comes with fixes for several security issues
2025-09-12 14:28:14 +02:00
Luis de Dios
9e2d3b1fa1 🐛 Fix position of annotation for variants (#7306) 2025-09-12 14:05:36 +02:00
Florian Schroedl
4dc0f3b4eb 🐛 Fix make-token throwing because of error in name, keep preview value 2025-09-12 13:49:25 +02:00
andrés gonzález
215288b6b4 📚 Update Design Tokens doc (#7265) 2025-09-12 11:15:23 +02:00
andrés gonzález
2e2c3e7bac 📚 Add doc for variants (#7258) 2025-09-12 11:15:03 +02:00
Xavier Julian
0210b310b7 🎉 Inspect styles tab: layout panel 2025-09-12 10:27:41 +02:00
Eva Marco
ce1e44eda4 ♻️ Refactor set titles (#7301) 2025-09-12 08:46:05 +02:00
Marina López
48825e1e59 Show current penpot version 2025-09-11 13:18:42 +02:00
Florian Schroedl
61cfe2d142 🐛 Fix font-family being split up when restoring from backup value 2025-09-11 12:33:26 +02:00
Eva Marco
2d68f4dfd3 🐛 Fix icons (#7299) 2025-09-11 09:42:11 +02:00
Elena Torró
1e23937aa5 Merge pull request #7291 from penpot/superalex-fix-boolean-and-group-shadows
🐛 Fix boolean and group shadows
2025-09-11 09:27:56 +02:00
Eva Marco
aecaf51953 Add color token on colorpicker (#7197)
*  Add token aplication to colorpicker

* 🐛 Change fn name

* 🐛 Change scss from file

* 🐛 Change color for direct-color

* 🐛 Remove vector from fns

* 🐛 Fix CI

* 🐛 Change color-option name

* 🐛 Fix comments

* 🐛 Remove sets without color tokens
2025-09-11 09:13:43 +02:00
Alejandro Alonso
da05d6b67d 🐛 Fix boolean and group shadows 2025-09-10 15:59:39 +02:00
Alejandro Alonso
99a100ad63 Merge pull request #7264 from penpot/elenatorro-12002-draw-shadows-and-blurs-on-texts-on-surfaces
🐛 Fix text shadows and blur and refactor text rendering
2025-09-10 15:50:33 +02:00
Elena Torró
bd3bcb4b18 Merge pull request #7284 from penpot/superalex-fix-blend-mode
🐛 Fix updating blend mode for shapes
2025-09-10 15:03:17 +02:00
Elena Torró
534c7864fc Merge pull request #7285 from penpot/superalex-fix-cornder-radius
🐛 Fix corner radius
2025-09-10 14:59:06 +02:00
Elena Torro
4bd2eba573 🐛 Fix text shadows and blur and refactor text rendering 2025-09-10 14:20:24 +02:00
Xavier Julian
563f608255 🐛 Display token themes as a string 2025-09-10 13:55:54 +02:00
Alejandro Alonso
382b5e7e3a Merge remote-tracking branch 'origin/staging' into develop 2025-09-10 12:33:54 +02:00
Eva Marco
a503f8ae93 ♻️ Refactor composite token UI (#7287)
* ♻️ Refactor composite token UI

* 🐛 Fix comments
2025-09-10 12:16:39 +02:00
Xavier Julian
e1935fb3fb 🎉 Inspect styles tab: geometry panel 2025-09-10 11:01:19 +02:00
Alejandro Alonso
7ac44009d5 Merge pull request #7288 from penpot/luis-12042-context-menu-variant
🐛 Fix create a variant using the contextual menu
2025-09-09 16:27:35 +02:00
Luis de Dios
f22eef5bf6 🐛 Fix create a variant using the contextual menu 2025-09-09 15:59:04 +02:00
Florian Schroedl
b3763dec3f Typography import-export 2025-09-09 13:30:38 +02:00
Alejandro Alonso
7c61049103 Merge pull request #7257 from penpot/azazeln28-fix-issue-11992-cannot-move-elements-up-or-down
🐛 Fix moving elements up or down while pressing alt
2025-09-09 11:07:58 +02:00
Alejandro Alonso
fe819c6ec4 Merge pull request #7286 from penpot/azazeln28-fix-text-editor-v1-paste
🐛 Fix text editor v1 paste HTML
2025-09-09 11:05:17 +02:00
Aitor Moreno
1a4594a615 🐛 Fix text editor v1 paste HTML 2025-09-09 10:48:15 +02:00
Alejandro Alonso
41751d60d2 🐛 Fix corner radius 2025-09-09 10:24:56 +02:00
Yamila Moreno
8bd0edca46 Merge pull request #7282 from penpot/yms-update-ci
📎 Update CI
2025-09-09 09:30:18 +02:00
David Barragán Merino
d2bff2853f Merge pull request #7283 from penpot/bameda-upgrade-docker-images-dependencies
🐳 Update the version of node and nginx-unprivileged
2025-09-09 09:29:36 +02:00
Alejandro Alonso
e2f22b86c7 🐛 Fix updating blend mode for shapes 2025-09-09 09:19:09 +02:00
Aitor Moreno
ff96f7be85 🐛 Fix moving elements up or down while pressing alt 2025-09-09 09:19:00 +02:00
Alejandro Alonso
108b5ab225 🐛 Fix missing filter-icon 2025-09-09 09:05:42 +02:00
Alejandro Alonso
a403af7ebd 🐛 Fix plugin installation link 2025-09-09 08:47:09 +02:00
Alejandro Alonso
43a238a896 Merge remote-tracking branch 'origin/staging' into develop 2025-09-09 08:40:35 +02:00
Alejandro Alonso
e3c9588c1c Merge pull request #7279 from penpot/palba-variants-events2
🎉 Add "advanced" events to variants
2025-09-09 07:03:22 +02:00
Alejandro Alonso
25b63e5675 Merge pull request #7280 from penpot/palba-fix-variants-duplicate
🐛 Fix bad selection after variant duplicate
2025-09-09 06:49:34 +02:00
David Barragán Merino
6c59d633cd 🐳 Update the version of node and nginx-unprivileged 2025-09-08 18:36:31 +02:00
Yamila Moreno
daa408e291 📎 Update CI 2025-09-08 16:51:05 +02:00
Andrés Moya
bb0a891638 📚 Update changelog 2025-09-08 16:49:27 +02:00
Florian Schrödl
8aed47dad3 Allow references to other typography tokens (#7251) 2025-09-08 16:45:18 +02:00
Pablo Alba
c5bd183f73 🐛 Fix bad selection after variant duplicate 2025-09-08 16:33:38 +02:00
Pablo Alba
06441063f2 Add "advanced" events to variants 2025-09-08 15:33:14 +02:00
Elena Torró
0e23c9f6ab Merge pull request #7278 from penpot/superalex-fix-fill-stroke-opacity-shouldnt-affect-shadows
🐛 Fix fills and strokes opacity shouldn't affect shadows
2025-09-08 14:08:20 +02:00
Alejandro Alonso
8fff9afee6 🐛 Fix fills and strokes opacity shouldn't affect shadows 2025-09-08 13:04:52 +02:00
Alejandro Alonso
9f11a2cb32 🐛 Fix context menu shape ids (#7277)
This reverts commit 1929ee36ed.
2025-09-08 11:59:54 +02:00
Xavier Julian
ff55318c04 🎉 Inspect styles tab: variants panel 2025-09-08 11:59:33 +02:00
Elena Torró
41b7957eff Merge pull request #7274 from penpot/superalex-refactor-drop-shadows
🐛 Fixing nested shadows
2025-09-08 11:38:19 +02:00
Alejandro Alonso
053b2c6248 Merge pull request #7253 from penpot/marina-payments-incorrect-date-plan
🐛 Fix incorrect date displayed for support plan
2025-09-08 11:22:48 +02:00
Alejandro Alonso
7e52aadb98 🐛 Fixing nested shadows 2025-09-08 11:20:03 +02:00
Marina López
fad058ee59 🐛 Fix incorrect date displayed for support plan 2025-09-08 11:06:57 +02:00
Alejandro Alonso
69f41c300f Merge pull request #7199 from penpot/elenatorro-11844-fix-font-long-names
🐛 Fix custom font-long names overflow
2025-09-08 10:48:54 +02:00
Elena Torro
18c5e0b9a8 🐛 Fix font long name overflow 2025-09-08 10:31:35 +02:00
Alejandro Alonso
568c2fd9d7 Merge pull request #7271 from penpot/eva-bugfixing-release
🐛 Fix several bugs
2025-09-08 10:23:05 +02:00
Luis de Dios
794eb78aca ♻️ Refactor icon namespaces (#7262)
* ♻️ Rename old icons as deprecated

* ♻️ Take icons from the namespace for the icon component

* ♻️ Take icons from the namespace for the icon-button component
2025-09-08 10:02:33 +02:00
Florian Schrödl
e761bcac85 🐛 Fix text-transform not unapplyng text-case token (#7272) 2025-09-08 09:34:58 +02:00
Eva Marco
1929ee36ed 🐛 Fix ungroup option missing 2025-09-08 09:18:43 +02:00
Eva Marco
84cccd1b79 🐛 Fix alignment row on single shape selection 2025-09-05 13:54:46 +02:00
Eva Marco
e66d44ca81 🐛 Fix wrong icon on path layer 2025-09-05 13:54:19 +02:00
Eva Marco
2f3b464715 🎉 Add base font size flag (#7270) 2025-09-05 13:36:32 +02:00
Pablo Alba
286e477ad5 🐛 Change variants nesting error texts 2025-09-05 12:34:16 +02:00
Andrés Moya
6e6749f42e 🔧 Add unit tests to apply layout tokens 2025-09-05 11:11:48 +02:00
Andrés Moya
7b6aa0c12a 🐛 Unapply layout item tokens when moving out of a layout 2025-09-05 11:11:48 +02:00
Pablo Alba
409f95ac17 Add basic variants events (#7249)
*  Add basic variants events

*  MR changes
2025-09-04 17:00:09 +02:00
Florian Schroedl
25950be077 🐛 Fix when font-weight is a computed int (math resolver) 2025-09-04 13:06:57 +02:00
Florian Schroedl
5230d54551 🐛 Fix when font-weight is a computed int (math resolver) 2025-09-04 12:23:43 +02:00
Alejandro Alonso
a79be05261 🐛 Fix selection and devtools problem (#7259) 2025-09-04 09:29:38 +02:00
Alejandro Alonso
9eda1d0d78 Merge pull request #7256 from penpot/ladybenko-8371-fix-iconsistent-naming
🐛 Fix inconsistent naming for Flatten
2025-09-04 07:34:10 +02:00
Belén Albeza
f6c4f800c4 📚 Update changelog 2025-09-04 07:13:30 +02:00
Belén Albeza
f363d6a801 Add integration test for Flatten menu option 2025-09-04 07:13:16 +02:00
Belén Albeza
e88ce0d52f 🐛 Unify flatten naming 2025-09-04 07:13:16 +02:00
Alejandro Alonso
fe5fe7a933 Merge pull request #7252 from penpot/mavalroot-typos
🐛 Fix typos
2025-09-04 07:05:37 +02:00
Belén Albeza
9c77296858 🔧 Make the watch script to compile the debug css when not in production env (#7250) 2025-09-03 13:45:11 +02:00
Xavier Julian
34da6b64df 🎉 Inspect styles tab tokens panel 2025-09-03 13:01:38 +02:00
María Valderrama
699cc147b5 🐛 Fix typos 2025-09-03 11:20:12 +02:00
Luis de Dios
b1d792a757 🐛 Fix icons do not appear in swap panel and annotations (#7240)
* 🐛 Fix icons do not appear in swap panel and annotations

* 📎 PR changes
2025-09-03 10:57:47 +02:00
Florian Schroedl
18e6842e35 ♻️ Revert trigger interactive via actionize and propagation 2025-09-03 10:10:34 +02:00
Florian Schroedl
c4481be39f ♻️ Revert trigger interactive via actionize and propagation 2025-09-03 09:42:40 +02:00
Andrés Moya
0df420d353 🐛 Fix setting shape size to zero 2025-09-03 08:57:26 +02:00
Elena Torró
f60b6a4869 Merge pull request #7247 from penpot/ladybenko-11983-textlayout-module
♻️ Refactor into new textlayout module
2025-09-02 17:17:12 +02:00
Belén Albeza
3e02dc550f ♻️ Create type alias for ParagraphBuilderGroup 2025-09-02 15:32:10 +02:00
Belén Albeza
1cf0de395c ♻️ Rename get_children to children (Paragraph) 2025-09-02 15:30:54 +02:00
Belén Albeza
d40b68c004 ♻️ Refactor and rename ParagraphBuilder instantiating from TextContent 2025-09-02 15:22:05 +02:00
Belén Albeza
50b9e8c6e6 ♻️ Rename TextContent::get_width to TextContent::width 2025-09-02 15:07:13 +02:00
Belén Albeza
d25f9cd4bd ♻️ Move auto_width and auto_height to their own textlayout module 2025-09-02 15:03:46 +02:00
Pablo Alba
dac2d31b35 🐛 Don't allow a variant switch when that will provoke a components loop 2025-09-02 15:03:38 +02:00
Florian Schroedl
bedb98ad9f Add context menu for typography 2025-09-02 13:19:45 +02:00
Elena Torró
5f37601122 🐛 Fix different fonts on texts shadows (#7214)
* 🐛 Fix different fonts on texts shadows

* 🔧 Refactor text rendering and move text-decoration logic outside

* 🔧 Use transparency correctly
2025-09-02 12:56:07 +02:00
Pablo Alba
1d3a1a094a 🐛 Missing component copy options on the context menu 2025-09-02 12:49:53 +02:00
Andrés Moya
9652996f07 🐛 Add validation for text shapes with wrong register of overrides 2025-09-02 12:49:41 +02:00
Pablo Alba
796aaed11e 🐛 Fix prop creation on variants move layer 2025-09-02 10:01:30 +02:00
Alejandro Alonso
1da69cfa38 📎 Add next release entries to the changelog 2025-09-01 11:10:09 +02:00
Luis de Dios
2a2735cd67 💄 Adjust design details of some components (#7225) 2025-09-01 11:02:36 +02:00
Elena Torró
0552b6e713 Merge pull request #7189 from penpot/azazeln28-feat-text-playground-fonts
🎉 Add multiple fonts to text editor WASM playground
2025-09-01 10:54:40 +02:00
Alejandro Alonso
30e655b1da Merge pull request #7236 from penpot/eva-fix-padding-sidebar
🐛 Fix wrong spacing
2025-09-01 10:35:21 +02:00
Alejandro Alonso
0aeecc6268 Merge pull request #7234 from penpot/palba-variants-activate-for-everyone
🎉 Activate variants for everyone
2025-09-01 10:27:44 +02:00
Eva Marco
5cec006a76 🐛 Fix wrong spacing 2025-09-01 10:15:52 +02:00
Pablo Alba
307e06372b 🎉 Activate variants for everyone 2025-09-01 09:58:14 +02:00
Xaviju
9f24e76c27 🌐 Convert translation single word to label (#7220) 2025-09-01 08:44:06 +02:00
Xavier Julian
7954eaf529 🎉 Inspect styles tab attributes container box 2025-08-31 14:58:11 +02:00
Eva Marco
fe406b577e 📚 Add comment to not translated string 2025-08-29 14:26:52 +02:00
Eva Marco
76c03af024 ♻️ Fix how files are used on scss files (#7208) 2025-08-29 13:55:50 +02:00
Andrey Antukh
fe5cdcbdc7 🐛 Do not render assets sidebar context menu if it is not open (#7222)
This commit is a workaround to an issue that happens when you performing
multiple selection of several shapes (including components) and an
exception is raised of max depth of updates. The issue is still not
solved, we justo do not render the context menu when user performs
the selection on the workspace.

That issue/exception happens only we have context-menu* component
rendered independently of its visibility and dev-tools open
2025-08-29 13:53:55 +02:00
Florian Schroedl
2479a06f9a 🐛 Fix token create not disabled when creating token without value 2025-08-29 13:41:38 +02:00
Florian Schroedl
fc5e4a821b ♻️ Use interactive update functions only on user actions 2025-08-29 13:38:41 +02:00
Florian Schroedl
3cdbc27de9 Unapply font-weight token when changing font-family 2025-08-29 13:38:41 +02:00
Florian Schroedl
a8ed1371d4 Find closest variant when updating font family 2025-08-29 13:38:41 +02:00
Andrey Antukh
e7bac41c37 Merge pull request #7202 from penpot/niwinz-develop-sidebar-refactor-2
♻️ Refactor right sidebar state management
2025-08-29 12:10:51 +02:00
Andrey Antukh
dede2a8f8e 💄 Fix JS files formatting issues 2025-08-29 11:25:58 +02:00
Andrey Antukh
e94abad3eb Add efficiency refactor for layer-menu* 2025-08-29 11:25:58 +02:00
Andrey Antukh
f8bc6e12a9 Improve efficiency of border radius menu 2025-08-29 11:25:58 +02:00
Andrey Antukh
a2c3208af9 🐛 Fix regression on not updating measures ui on moving frames 2025-08-29 11:25:58 +02:00
Andrey Antukh
a303df9c34 ♻️ Refactor right sidebar state management
Also removing duplicated refs and improve efficiency of
several other refs used on sidebar.
2025-08-29 11:25:58 +02:00
Kelp
bda24f3829 📎 Update Changelog to add font weight token (#7216)
Add font weight to changes.md

Signed-off-by: Kelp <5446186+NatachaMenjibar@users.noreply.github.com>
2025-08-29 11:04:36 +02:00
Elena Torró
94fd3119e8 Merge pull request #7175 from penpot/superalex-fix-clipping
🐛 Fix clipping
2025-08-29 11:03:07 +02:00
María Valderrama
c8091b42a7 🐛 Fix navigation arrows in Libraries & Templates carousel (#7217) 2025-08-29 10:51:00 +02:00
Xaviju
41a859b444 🌐 Recover lost variant translation (#7215) 2025-08-29 09:50:33 +02:00
Aitor Moreno
1cf20f7604 Merge pull request #7203 from penpot/elenatorro-fix-text-decoration-leaf-position
🐛 Fix line height on texts and improve text decoration rendering
2025-08-28 16:21:40 +02:00
Andrey Antukh
629541bc9d 🐛 Fix incorrect recursion on looking boolean parent (#7212) 2025-08-28 16:13:14 +02:00
Alejandro Alonso
44245d1b5f 🐛 Fix position-data validator (#7194) 2025-08-28 15:46:23 +02:00
Luis de Dios
a8692c72c6 Show create variant shortcut also for stand-alone components (#7195) 2025-08-28 15:45:53 +02:00
Elena Torró
7b7da59ca9 Merge pull request #7200 from penpot/ladybenko-11552-fix-font-styles
🐛 Fix new inline text styles not being applied correctly
2025-08-28 15:34:54 +02:00
Elena Torro
b78e3159d1 📚 Add wasm playground internal docs 2025-08-28 15:10:56 +02:00
Luis de Dios
2106028350 🐛 Fix color of variant property names in the design tab (#7204) 2025-08-28 12:51:04 +02:00
Andrey Antukh
c2e7f9dc42 ⬆️ Update base deps (#7207) 2025-08-28 12:50:39 +02:00
Andrey Antukh
8568098c5e 🌐 Validate and rehash translation files 2025-08-28 12:49:35 +02:00
VKing9
c8bc1ef1d2 🌐 Add translations for: Hindi
Currently translated at 94.8% (1816 of 1915 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/
2025-08-28 12:46:50 +02:00
Stephan Paternotte
59bd434d05 🌐 Add translations for: Dutch
Currently translated at 97.5% (1869 of 1915 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/nl/
2025-08-28 12:46:50 +02:00
Edgars Andersons
3cf1e53340 🌐 Add translations for: Latvian
Currently translated at 96.0% (1839 of 1915 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/
2025-08-28 12:46:50 +02:00
Denys Kisil
24f0956630 🌐 Add translations for: Ukrainian (ukr_UA)
Currently translated at 95.8% (1835 of 1915 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/
2025-08-28 12:46:49 +02:00
Nicola Bortoletto
91991d5b32 🌐 Add translations for: Italian
Currently translated at 95.3% (1826 of 1915 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/it/
2025-08-28 12:46:49 +02:00
Yaron Shahrabani
447b6ed1ab 🌐 Add translations for: Hebrew
Currently translated at 97.3% (1864 of 1915 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/
2025-08-28 12:46:49 +02:00
Stas Haas
336486fecd 🌐 Add translations for: German
Currently translated at 89.2% (1710 of 1915 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/
2025-08-28 12:46:48 +02:00
Jun Fang
bbd417c119 🌐 Add translations for: Chinese (Simplified Han script)
Currently translated at 91.8% (1758 of 1915 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hans/
2025-08-28 12:46:48 +02:00
Ingrid Pigueron
e3ffd45a18 🌐 Add translations for: French
Currently translated at 96.4% (1847 of 1915 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/
2025-08-28 12:46:48 +02:00
Unreal Vision
52a4a46ebd 🌐 Add translations for: French
Currently translated at 96.4% (1847 of 1915 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/
2025-08-28 12:46:48 +02:00
Elena Torro
025423a75e 🐛 Fix line height on texts and improve text decoration rendering 2025-08-28 12:40:23 +02:00
Hosted Weblate
a6f17e35dd 🌐 Update translation files
Updated by "Cleanup translation files" hook in Weblate.

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/
2025-08-28 12:37:27 +02:00
Andrey Antukh
9a8cac3cac Merge remote-tracking branch 'weblate/develop' into develop 2025-08-28 12:36:51 +02:00
Aitor Moreno
884b857d17 🐛 Fix paste RTF crashes text editor (#7196) 2025-08-28 11:53:39 +02:00
Florian Schroedl
a20bbeff79 🔧 Add ff for typography composite token 2025-08-28 10:42:58 +02:00
Eva Marco
2a5f1f870b 🐛 Fix padding of input field component (#7198) 2025-08-28 10:30:33 +02:00
Luis de Dios
cf5303a39c ♻️ Title bar refactor (#7201) 2025-08-28 09:51:53 +02:00
Andrey Antukh
bf1e26c4e6 Merge pull request #7182 from penpot/niwinz-measures-menu-changes
♻️ Add efficiency refactor for sidebar
2025-08-28 08:40:44 +02:00
Andrey Antukh
4713d943d1 ♻️ Add efficiency refactor for workspace sidebars
The main changes are for right sidebar but left sidebar is also
slightly affected beacuse of the move where the active tokes are
resolved.
2025-08-27 17:56:35 +02:00
Eva Marco
df083cb315 🐛 Fix corner case on tooltip positioning 2025-08-27 17:56:35 +02:00
Eva Marco
6401b25964 💄 Format tab-switcher stories jsx file 2025-08-27 17:56:35 +02:00
Andrey Antukh
65f4adc68e Add minor efficiency enhancements to numeric-input* 2025-08-27 17:56:35 +02:00
Andrey Antukh
dfab472522 💄 Add minor cosmetic change to shape layout type helper 2025-08-27 17:56:35 +02:00
Belén Albeza
9759adf747 🐛 Fix new inline text styles not being applied correctly 2025-08-27 16:52:57 +02:00
Andrey Antukh
9ae1a08573 🐛 Make the app.common.time/inst nil safe 2025-08-27 14:17:11 +02:00
Ingrid Pigueron
ddab2cab14 🌐 Add translations for: French
Currently translated at 98.1% (1867 of 1902 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/
2025-08-27 14:15:14 +02:00
Andrey Antukh
cf1a8fff65 Merge remote-tracking branch 'origin/develop' into develop 2025-08-27 13:19:53 +02:00
Andrey Antukh
45be4769d7 Merge remote-tracking branch 'origin/staging' into develop 2025-08-27 13:19:06 +02:00
María Valderrama
a68c41709a 🐛 Fix misleading affordance in saved versions (#7192) 2025-08-27 13:01:54 +02:00
Xaviju
4290bce718 🎉 Inspect tab layout switcher and computed feature (#7166) 2025-08-27 13:01:01 +02:00
Pablo Alba
3dd237002b 🐛 Fix combine as variants from assets tab selects wrong components (#7190) 2025-08-27 13:00:28 +02:00
Andrey Antukh
e0fb112bfb 📎 Update changelog 2025-08-27 12:52:24 +02:00
Andrey Antukh
2629537fd3 Merge branch 'subscriptions-enhancements' into staging 2025-08-27 12:51:34 +02:00
Marina López
cb7711f637 🐛 Fix integration tests 2025-08-27 12:30:48 +02:00
Andrey Antukh
a114e9adb0 Add logging for management update-customer method 2025-08-27 12:02:39 +02:00
Andrey Antukh
5fed5fa158 Add transactions support on management api 2025-08-27 12:00:03 +02:00
Andrey Antukh
6c8873c7f5 🐛 Ensure for-update locking is used on updating profile props 2025-08-27 11:59:35 +02:00
Andrey Antukh
37b0c4adc0 🐛 Add support fror ::db/for-update on sql ns 2025-08-27 11:58:42 +02:00
Florian Schroedl
9106617436 🎉 Add composite typography token 2025-08-27 11:35:56 +02:00
Yamila Moreno
68a95cf0d0 📎 Fix CI inputs 2025-08-27 11:21:34 +02:00
Yamila Moreno
1438632dde 📎 Fix CI inputs 2025-08-27 11:19:42 +02:00
Florian Schroedl
112fa46896 🐛 Fix case-sensitivity and multi word italic in font weight parsing 2025-08-27 11:15:21 +02:00
Yamila Moreno
6da5bbf33a 📎 Fix CI inputs 2025-08-27 11:14:56 +02:00
Yamila Moreno
95faf340c4 📎 Fix CI inputs 2025-08-27 11:13:13 +02:00
Marina López
723ea508df 🐛 Fix missing link for enterprise trial 2025-08-27 10:56:17 +02:00
Yamila Moreno
cbe538261c 📎 Fix CI inputs 2025-08-27 10:42:13 +02:00
Yamila Moreno
1925e6782f 📎 Fix CI inputs 2025-08-27 10:33:17 +02:00
Yamila Moreno
bcd950c141 📎 Fix CI inputs 2025-08-27 10:11:56 +02:00
Aitor Moreno
b215689566 🎉 Add multiple fonts to text editor WASM playground 2025-08-27 09:57:55 +02:00
Pablo Alba
dfe0f64c7c Add variants advanced retrieve tests (#7183) 2025-08-26 16:40:27 +02:00
Andrey Antukh
9de3910526 Add missing impl for Associative on LoadableWeakValueMap (#7188) 2025-08-26 16:39:48 +02:00
Luis de Dios
59eb75d8c3 💄 Style improvements in the component list & grid (#7185) 2025-08-26 16:35:09 +02:00
Florian Schroedl
6670b76ccc Show warning when applying token with non-matching font variant 2025-08-26 16:12:07 +02:00
Florian Schroedl
09b9383a0b Choose closest font weight for token weight when no matching weight is found 2025-08-26 16:12:07 +02:00
Eva Marco
31e37f352d 🐛 Fix token option schema (#7186)
* 🐛 Fix token option schema

* 🐛 Fix numeric-input schema
2025-08-26 14:06:59 +02:00
Yamila Moreno
c5958e4d61 📎 Add storybook to CI bundle 2025-08-26 10:45:08 +02:00
Luis de Dios
f1e7149e88 Add shortcuts for creating variants and properties (#7181)
*  Add shortcuts for creating variants and properties

* 📎 PR changes
2025-08-26 09:32:41 +02:00
Pablo Alba
d80ef17623 🐛 Fix cut pasting a variant into its own parent (#7179) 2025-08-26 09:25:52 +02:00
Andrey Antukh
ffe469ce71 Merge pull request #7159 from penpot/niwinz-develop-migrations-fixes
♻️ Add a better approach for load libraries on file validation and migrations
2025-08-26 09:25:23 +02:00
Andrey Antukh
c35bb6e09a 🎉 Add loadable weak map impl for libraries loading on validation and migration 2025-08-26 09:03:25 +02:00
Alejandro Alonso
8d404d97a1 🐛 Fix clipping 2025-08-26 08:52:42 +02:00
Andrey Antukh
fa2b0bd67c Don't migrate libraries on accessing them on file data migrations
We don't migrate the libraries for avoid cascade migration; it is not ideal
but it reduces the total of the required memory needed for process a single
file migration that requires libraries to be loaded.
2025-08-26 08:15:45 +02:00
Andrey Antukh
9563d1b1f6 Merge pull request #6635 from penpot/eva-add-numeric-input
 Add numeric input component
2025-08-25 19:42:47 +02:00
Eva Marco
33fc578f96 🎉 Add numeric-input component to DS
A new numeric-input impl compatible with tokens
2025-08-25 18:52:39 +02:00
Andrey Antukh
79786dde16 🎉 Add helpers for work with weak references and weak data structs 2025-08-25 18:52:39 +02:00
Marina López
926b2c9cfb 🐛 Fix doble click to submit subscription 2025-08-25 15:42:47 +02:00
Andrés Moya
c1b2aa7628 🐛 Add handler to correctly encode cljs dates to json 2025-08-25 13:52:38 +02:00
Andrey Antukh
991b26b73f 🐛 Fix undo transaction handling on creating a variant from group of components 2025-08-25 11:48:46 +02:00
Andrey Antukh
254a7461b2 Simplify commit-undo-transaction impl 2025-08-25 11:48:46 +02:00
Andrey Antukh
1384ed8aba Remove duplicated execution of check-open-transactions 2025-08-25 11:48:46 +02:00
Andrey Antukh
c9393c0cfb Remove repeated/duplucated lookups on start-undo-transaction 2025-08-25 11:48:46 +02:00
Pablo Alba
6eeb55fb88 🐛 Fix after variant switch children layouts aren't updated (#7177) 2025-08-25 11:35:33 +02:00
Andrey Antukh
c759afc10d 🔥 Remove unnecessary and broken unique-editors field
From the get-teams rpc method response
2025-08-25 11:33:34 +02:00
Marina López
090cb63568 🐛 Fix condition for members warning 2025-08-25 11:07:19 +02:00
Andrey Antukh
f223831766 Refresh subscription info when member role is updated 2025-08-25 10:53:48 +02:00
Marina López
854f286364 ♻️ Fix subscriptions inconsistencies 2025-08-25 10:53:48 +02:00
Andrey Antukh
2846b80cf7 Add rpc methods for obtain editors 2025-08-25 10:53:12 +02:00
Andrey Antukh
ad0ef82ffc 🎉 Add management http api 2025-08-25 10:53:12 +02:00
Elena Torró
3bb547fc45 🐛 Parse rx and ry SVG values correctly (#7176) 2025-08-25 10:44:11 +02:00
Pablo Alba
c3b326d95e 🐛 Fix duplicating a page with variants should duplicate them (#7172)
* 🐛 Fix duplicating a page with variants should duplicate them

*  MR changes
2025-08-25 10:41:03 +02:00
Luis de Dios
8c1a97dac5 Make some improvements to the swap panel (#7174)
* 💄 Visual improvements in swap panel

* ♻️ Refactor search-bar component to use DS icons

* 📎 PR changes
2025-08-25 10:40:20 +02:00
Alejandro Alonso
4053e8c8db Merge pull request #7173 from penpot/elenatorro-11735-fix-text-auto-width
🐛 Fix paragraph layout width on autowidth
2025-08-22 15:16:40 +02:00
Xaviju
ee86a3943d Update code to use design system icon (#7145) 2025-08-22 14:27:11 +02:00
Elena Torro
46b3e174ed 🐛 Fix paragraph layout width on autowidth 2025-08-22 13:55:24 +02:00
Alejandro Alonso
c0c2c9489c Merge pull request #7170 from penpot/elenatorro-fix-text-tests
🔧 Update and fix text tests
2025-08-22 13:34:00 +02:00
Elena Torró
c05c179d67 Merge pull request #7167 from penpot/azazeln28-feat-text-editor-wasm-playground
🎉 Add Text Editor WASM Playground
2025-08-22 12:47:41 +02:00
Aitor Moreno
596193d34d 🎉 Add missing styles on text leaves 2025-08-22 12:22:51 +02:00
Aitor Moreno
15eee0d8d8 🎉 Add Text Editor WASM Playground 2025-08-22 12:22:51 +02:00
Elena Torro
0b7444e8ff 🐛 Use SrcIn only when there is only one inner stroke, otherwise use erode filter 2025-08-22 09:54:15 +02:00
Elena Torro
96a91dc710 🔧 Add missing emoji ranges 2025-08-22 09:54:03 +02:00
Elena Torro
503d431d8e 🔧 Fix and update text use cases 2025-08-22 09:53:50 +02:00
Alejandro Alonso
ed5875f29a Merge pull request #7154 from penpot/niwinz-staging-bug-1
🐛 Fix incorrect show request-access dialog on not-found on viewer
2025-08-22 09:19:47 +02:00
Yamila Moreno
b12d44150b 📎 Fix and improve ci 2025-08-21 17:42:37 +02:00
Andrey Antukh
66f5eb57b9 🐛 Fix incorrect fills coerce to binary type when flag is disabled (#7169) 2025-08-21 15:11:14 +02:00
Pablo Alba
7023880e67 🐛 On a variants switch, keep the value of the rotation and its transformations (#7165) 2025-08-21 13:55:16 +02:00
Andrey Antukh
0e4cf23a93 🐛 Fix incorrect type coerce operations (#7168)
A regression introduced in previous commits that causes
a browser tab totally killed by memory usage.
2025-08-21 13:52:47 +02:00
Elena Torró
3f93b0d44b Merge pull request #7098 from penpot/superalex-fix-big-blur-2
🐛 Fix big blur rendering for wasm render
2025-08-21 09:23:26 +02:00
Elena Torró
4a6c3d6ad3 Merge pull request #7152 from penpot/superalex-update-skia-binaries
🎉 Update skia binares to 0.87.0
2025-08-21 09:10:37 +02:00
Alejandro Alonso
478439f055 🐛 Fix big blur rendering for wasm render 2025-08-21 08:47:25 +02:00
Alejandro Alonso
9ef2454210 🎉 Update skia binares to 0.87.0 2025-08-21 07:38:46 +02:00
Andrey Antukh
a702fee3cd Merge pull request #7143 from penpot/luis-11856-adjust-component-title
 Adjust the appearance of the variant-related elements in the design tab
2025-08-20 17:41:50 +02:00
Pablo Alba
cac639d267 🐛 Fix deleting a variant from assets panel (#7147) 2025-08-20 17:38:11 +02:00
Elena Torró
0daf548773 Merge pull request #7146 from penpot/superlaex-fix-open-path-calculation
🐛 Fix open path calculation
2025-08-20 16:38:17 +02:00
Alejandro Alonso
9249a5d4ea Merge pull request #7155 from penpot/elenatorro-use-erode-image-filter-for-inner-strokes-with-opacity
🐛 Fix inner strokes with opacity using erode instead of multiple blending modes
2025-08-20 15:55:50 +02:00
Andrey Antukh
4c83feaa31 Merge remote-tracking branch 'origin/staging' into develop 2025-08-20 13:56:58 +02:00
Luis de Dios
4d8ad19eea 💄 Improve the alignment, spaces and sizes of the variant elements 2025-08-20 13:51:04 +02:00
Luis de Dios
e7e7d576b2 ♻️ Adapt title-bar component 2025-08-20 13:36:10 +02:00
Luis de Dios
7f2af1c355 Adjust component title 2025-08-20 13:36:10 +02:00
Andrey Antukh
ad38a21053 🐛 Fix incorrect show request-access dialog on not-found on viewer
When a user is not-authenticated
2025-08-20 13:35:20 +02:00
Elena Torro
9bb92277e4 🐛 Fix inner strokes with opacity using erode instead of multiple blending modes 2025-08-20 13:32:20 +02:00
Alejandro Alonso
643621a389 Merge pull request #7119 from penpot/niwinz-develop-type-hints
 Add several performance enhancements
2025-08-20 12:58:43 +02:00
Alejandro Alonso
ef8d2e7418 Merge pull request #7082 from penpot/niwinz-staging-changes-fix
♻️ Refactor schema references and openapi.json output
2025-08-20 12:55:16 +02:00
Andrey Antukh
adffac4eec Merge remote-tracking branch 'origin/main' into staging 2025-08-20 12:49:31 +02:00
Andrey Antukh
575342b3bb ♻️ Use direct schemas instead of references
Only a very common use, basic types schemas should be used as
reference (with namespaced keywords)
2025-08-20 12:33:07 +02:00
Alejandro Alonso
b6ecb4368e Merge pull request #7044 from penpot/niwinz-develop-refactor-versions-sidebar
♻️ Refactor versions sidebar
2025-08-20 12:00:28 +02:00
Pablo Alba
081df7fc03 🐛 Fix combine variants move items 2025-08-20 11:07:51 +02:00
Yamila Moreno
358343b4df 📎 Add build tag workflow and minor changes 2025-08-20 10:51:05 +02:00
Andrey Antukh
d7c19325cc Add better type references naming on openapi output 2025-08-20 10:47:56 +02:00
Andrey Antukh
b472a8ab19 Add general improvement to openapi and js-like doc output 2025-08-20 09:41:01 +02:00
Andrey Antukh
2b83d0d0e9 Add generative test case for openapi json serialization
This will prevent possible regression on introducing schemas without
generators or schema with generators that can't be serialized to json.
2025-08-20 09:38:57 +02:00
Andrey Antukh
911ac263fa 🐛 Use ::sm/any instead of any for get-file-fragment rpc method schema
The usage of `any?` predicate as-is uses the standard any generator that
causes to generate java.lang.Character instances created that are not
properly serialiable to JSON. The `::sm/any` schema delimits the
generator to a commonly known serializable types on json.
2025-08-20 09:38:55 +02:00
Andrey Antukh
545c78eb74 🐛 Add missing generators 2025-08-20 09:38:13 +02:00
Andrey Antukh
124b098c92 🔥 Remove already deprecated change spec 2025-08-20 09:38:13 +02:00
Andrey Antukh
43ed430475 📎 Update .gitignore file 2025-08-20 09:38:13 +02:00
Andrey Antukh
edd3b1512e 🐛 Add missing attrs to add-component change schema 2025-08-20 09:38:13 +02:00
Andrey Antukh
d9623c3c88 🐛 Add proper schema for decoding :obj on add-obj change 2025-08-20 09:38:13 +02:00
Andrey Antukh
f052e31ff0 🐛 Fix incorrect handling of assign operation on changes protocol 2025-08-20 09:38:13 +02:00
Yamila Moreno
73dfe12ec9 📚 Update k8s documentation 2025-08-20 09:04:25 +02:00
Alejandro Alonso
0c3d73745e 🐛 Fix open path calculation 2025-08-20 09:00:04 +02:00
Aitor Moreno
a6ecc4fb3c Merge pull request #7106 from penpot/niwinz-develop-modifiers-enhacements
 Several enhancements on how shape data is written on memory
2025-08-19 17:05:25 +02:00
Denys Kisil
625d9ab188 🌐 Add translations for: Ukrainian (ukr_UA)
Currently translated at 97.9% (1863 of 1902 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/
2025-08-19 11:03:09 +00:00
Jun Fang
e6cc15e19b 🌐 Add translations for: Chinese (Simplified Han script)
Currently translated at 93.1% (1771 of 1902 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hans/
2025-08-19 11:03:07 +00:00
王世阳
0af2cd6413 🌐 Add translations for: Chinese (Simplified Han script)
Currently translated at 93.1% (1771 of 1902 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hans/
2025-08-19 11:03:05 +00:00
IsCycleBai
443e0b0206 🌐 Add translations for: Chinese (Simplified Han script)
Currently translated at 93.1% (1771 of 1902 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hans/
2025-08-19 11:03:04 +00:00
Jun Fang
a4fa5e9304 🌐 Add translations for: Chinese (Simplified Han script)
Currently translated at 93.1% (1771 of 1902 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hans/
2025-08-19 11:03:02 +00:00
IsCycleBai
d94c311a1e 🌐 Add translations for: Chinese (Simplified Han script)
Currently translated at 93.1% (1771 of 1902 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hans/
2025-08-19 11:03:01 +00:00
Pablo Alba
c0c8390a7d 🐛 Fix restoring component inside flex 2025-08-19 12:15:30 +02:00
Andrey Antukh
f4be117219 🔥 Remove app.common.time/duration usage on frontend (#7139)
Is broken and not necessary; duration class is no longer
available on frontend code.
2025-08-19 10:36:34 +02:00
Andrey Antukh
7eb590e9fd ♻️ Refactor versions sidebar 2025-08-18 21:57:47 +02:00
Andrey Antukh
6588913141 ♻️ Remove several level of unnecesary allocation on writing text 2025-08-18 21:54:36 +02:00
Andrey Antukh
5c4a60aee7 Make mem write helpers receive offset as first arg 2025-08-18 21:54:36 +02:00
Andrey Antukh
af02e12685 🎉 Add missing write-u32 helper to mem ns 2025-08-18 21:54:36 +02:00
Andrey Antukh
675864ce0b Remove incorrect usage of dm/get-prop 2025-08-18 21:54:36 +02:00
Andrey Antukh
c55f3182d8 💄 Rename text-dimensions to get-text-dimensions 2025-08-18 21:49:00 +02:00
Andrey Antukh
0d6eac7656 💄 Add mainly cosmetic changes to set-shape-shadows
Mainly replace a loop with run! that used reduce as impl.
After measuring there are no real difference between using
the more complex loop and more simplier run!; in parity of
performance we prefer simplier approach.
2025-08-18 21:49:00 +02:00
Andrey Antukh
7acfd199aa 💄 Add mainly cosmetic changes to set-layout-child 2025-08-18 21:49:00 +02:00
Andrey Antukh
33d6f543a1 Remove several not necessary allocations from set-grid-layout-cells 2025-08-18 21:49:00 +02:00
Luis de Dios
4237ef572e 🐛 Fix use ellipsis when property names are too long (#7135) 2025-08-18 21:36:56 +02:00
Pablo Alba
6babea8b12 🐛 Fix alert for bad formula not showing in copies of variants (#7126)
* 🐛 Fix alert for bad formula not showing in copies of variants

*  MR changes
2025-08-18 21:36:29 +02:00
Pablo Alba
6b7f91c671 🐛 Fix weird resizing on combine variants with constraints scale (#7134) 2025-08-18 21:35:04 +02:00
Pablo Alba
b3b183c151 🐛 Fix duplicate a variant when all have bad formulae crashes 2025-08-18 17:09:20 +02:00
Yamila Moreno
59f2ee87e6 📎 Improve github actions 2025-08-18 15:28:15 +02:00
Pablo Alba
6af8940a46 🐛 On variant create do not set sizing 2025-08-18 15:14:36 +02:00
Xavier Julian
e1a1110f06 📎 Update changelog with new typography tokens 2025-08-18 13:50:14 +02:00
Pablo Alba
1dcf1e0b0f 🐛 Fix :show-content wasn't on components sync-attrs 2025-08-18 13:17:09 +02:00
Yamila Moreno
4c3e345c9c 📎 Fix github actions 2025-08-18 13:05:45 +02:00
Andrey Antukh
a3b9a9f07b Remove reflection calls from buffer macros 2025-08-18 13:03:10 +02:00
Andrey Antukh
17ec360720 Add several missing type hints for avoid reflection and autoboxing 2025-08-18 13:03:10 +02:00
Andrey Antukh
89b67d59d5 Fix autoboxing on path type impl 2025-08-18 13:03:10 +02:00
Andrey Antukh
77be00014e Remove reflection on geom rect code 2025-08-18 13:03:10 +02:00
Andrey Antukh
e336f287b6 Remove reflection on geom matrix code 2025-08-18 13:03:10 +02:00
Andrey Antukh
50aa6ff306 Remove reflection calls on binfile v3 code 2025-08-18 13:03:10 +02:00
Alejandro Alonso
56f162f219 Merge pull request #7133 from penpot/superalex-fix-create-variant-doesnt-work-2
🐛 Create variant doesn't work
2025-08-18 13:02:33 +02:00
Pablo Alba
f7a0c4139a 🐛 Fix you can add a rect into a variant container (#7137) 2025-08-18 13:02:27 +02:00
Alejandro Alonso
7c39e321c4 Merge pull request #7136 from penpot/niwinz-develop-fix-inconsistencies-on-text-shortcuts
🐛 Fix several inconsistencies and duplicated shortcuts
2025-08-18 12:57:18 +02:00
Andrey Antukh
ce6a863599 🐛 Fix several inconsistencies and duplicated shortcuts 2025-08-18 12:31:09 +02:00
Alejandro Alonso
832690e71e 🐛 Create variant doesn't work 2025-08-18 11:58:24 +02:00
Pablo Alba
7526cb0d71 🐛 Fix on variants rotation override is not preserving properly (#7120) 2025-08-18 11:57:58 +02:00
andrés gonzález
3292109ab0 🐛 Fix typos in modal about variant connections (#7122) 2025-08-18 11:47:23 +02:00
Elena Torró
be376d2030 Merge pull request #7124 from penpot/ladybenko-11799-fix-remove-layout
🐛 Fix removing layout (wasm)
2025-08-18 09:52:22 +02:00
Alejandro Alonso
4d455b5e9f Merge pull request #7125 from penpot/elenatorro-11842-fix-groups-rendering-on-drag
🐛 Fix Group extrect calculation
2025-08-18 09:36:58 +02:00
Edgars Andersons
50ce28e378 🌐 Add translations for: Latvian
Currently translated at 98.4% (1872 of 1902 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/
2025-08-15 21:02:02 +02:00
Yaron Shahrabani
1eee8e2ce8 🌐 Add translations for: Hebrew
Currently translated at 99.7% (1897 of 1902 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/
2025-08-15 21:02:00 +02:00
Elena Torro
5e6ce9172f 🔧 Return always a shader on merge_fills for consistency 2025-08-14 16:08:03 +02:00
Elena Torró
03adbc2ae8 🔧 Update multiple emoji test and increase resulting image (#7113) 2025-08-14 15:47:55 +02:00
Belén Albeza
e63a3f76f7 🐛 Fix open/close path detection in wasm (#7110)
* 🐛 Fix open/close path detection in wasm

* 💄 Remove leftover code
2025-08-14 15:45:09 +02:00
Elena Torro
6d42d456fb 🐛 Fix Group extrect calculation 2025-08-14 15:39:45 +02:00
Belén Albeza
c818b6f88f 🐛 Fix layout and constraints not being cleared 2025-08-14 15:38:23 +02:00
Belén Albeza
3f3c7905b4 ♻️ Refactor wasm layout functions to their own submodule 2025-08-14 14:17:49 +02:00
Elena Torró
e8dd13beb2 Merge pull request #7118 from penpot/superalex-fix-extrect-invalidation-for-texts
🐛 Fix extrect invalidation for texts
2025-08-14 13:43:42 +02:00
Elena Torró
fc6b64aa68 Merge pull request #7121 from penpot/superalex-fix-set-corners
🐛 Fix set corners
2025-08-14 13:34:43 +02:00
Alejandro Alonso
5e0a2f66e3 🐛 Fix set corners 2025-08-14 11:50:40 +02:00
Pablo Alba
108d4fabba 🐛 Fix menu entry not showing on assets tab (#7115)
* 🐛 Fix menu entry not showing on assets tab

*  MR changes
2025-08-14 10:39:47 +02:00
Pablo Alba
2e277a39ca 🐛 Fix flick on design tab after variant switch (#7116) 2025-08-14 08:14:06 +02:00
Pablo Alba
814ec43714 🐛 Fix variants nesting loops (#7112)
* 🐛 Fix variants nesting loops

*  MR changes
2025-08-14 08:08:31 +02:00
Andrey Antukh
54bb9ea755 Merge remote-tracking branch 'origin/staging' into develop 2025-08-14 08:06:15 +02:00
Pablo Alba
374e921672 🐛 Fix variants change property name multiple selection 2025-08-13 17:29:03 +02:00
Alejandro Alonso
64e5ea93a0 🐛 Fix extrect invalidation for texts 2025-08-13 14:32:23 +02:00
Pablo Alba
2562d70880 🐛 Fix crash dragging external component into a variant without props (#7111) 2025-08-13 14:29:56 +02:00
Alejandro Alonso
d99ef29152 Merge pull request #7029 from penpot/elenatorro-11691-fix-default-text-fill
🔧 Fix text default color and inner stroke opacity
2025-08-13 12:52:14 +02:00
Edgars Andersons
d5a2cd9cd2 🌐 Add translations for: Latvian
Currently translated at 97.8% (1862 of 1902 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/
2025-08-13 12:02:14 +02:00
Elena Torro
82d2889e96 🔧 Improve text strokes blending 2025-08-13 11:50:09 +02:00
Eva Marco
ff2e845f2c 🐛 Fix double click on set name input (#7096) 2025-08-13 09:23:53 +02:00
Florian Schrödl
ccd6ae5ade 🐛 Don't allow letter-spacing value with % (#7100) 2025-08-13 08:31:43 +02:00
Yaron Shahrabani
36bafc0d40 📎 Fix typo on translations 2025-08-12 17:58:10 +02:00
Pablo Alba
f7746b8f94 Add create variants in bulk interactions from assets tab (#7102)
*  Add create variants in bulk interactions from assets tab

*  MR changes
2025-08-12 17:56:47 +02:00
Pablo Alba
537c5ca7b8 🐛 Fix missing selection after swap (#7104) 2025-08-12 17:56:03 +02:00
Pablo Alba
4901a80684 🐛 Fix flex layout everrides are not mantained on variant switch (#7105) 2025-08-12 17:55:29 +02:00
Pablo Alba
03b5d44a7c Merge pull request #7101 from penpot/palba-variants-bulk-root
🐛 Fix bad name on variants bulk when the parent is root
2025-08-12 17:04:13 +02:00
Andrey Antukh
8e51aa8df4 🐛 Fix regression on set-shape-children introduced in prev merge 2025-08-12 16:03:34 +02:00
Andrey Antukh
029a9674ca Merge pull request #7103 from penpot/niwinz-develop-modifiers-enhacements
♻️ Sanitize heap write and read operations
2025-08-12 13:11:02 +02:00
Alejandro Alonso
68cee1b1f1 Merge pull request #7076 from penpot/ladybenko-11755-fix-color-picker
🐛 Fix color picker not working with the new renderer
2025-08-12 11:57:21 +02:00
Aitor Moreno
3f74e230b2 Merge pull request #7092 from penpot/superalex-fix-artifacts-while-panning
🐛 Fix artifacts while panning in wasm render
2025-08-12 11:52:18 +02:00
Elena Torró
6bf1919f8d Merge pull request #7094 from penpot/superalex-fix-ctrl-b-for-editor-v2
🐛 Fix ctrl+b for editor v2
2025-08-12 11:36:24 +02:00
Andrey Antukh
e69d61eaf4 Add facilities for work with dataview with common alases 2025-08-12 11:27:13 +02:00
Alejandro Alonso
2f83f22753 🐛 Fix artifacts while panning in wasm render 2025-08-12 11:23:13 +02:00
Andrey Antukh
f9d757bb85 Move several mem write helpers to mem.heap32 ns
For simplify usage and make it clear the required addressing
is used for that functions
2025-08-12 10:53:02 +02:00
Andrey Antukh
6b6e80f4b8 🐛 Fix regression introduced on the set-grid-layout-cells fn
Incorrect data is used for calcultate the size
2025-08-12 10:33:50 +02:00
Andrey Antukh
f32b92a5b0 Assign defaults on serializers instead on api
For make the operations more efficient
2025-08-12 10:33:08 +02:00
Andrey Antukh
761a0a7009 Improve memory write operations on set-grid-layout-rows 2025-08-12 10:32:35 +02:00
Andrey Antukh
129d3e61fa 🎉 Add missing wrap method on buffer abstraction 2025-08-12 10:30:02 +02:00
Stephan Paternotte
aa94671002 🌐 Add translations for: Dutch
Currently translated at 100.0% (1902 of 1902 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/nl/
2025-08-12 10:02:02 +02:00
Nicola Bortoletto
52cf136f84 🌐 Add translations for: Italian
Currently translated at 96.7% (1841 of 1902 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/it/
2025-08-12 10:02:01 +02:00
Yaron Shahrabani
808427795c 🌐 Add translations for: Hebrew
Currently translated at 99.6% (1895 of 1902 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/
2025-08-12 10:01:59 +02:00
Andrey Antukh
3f71734cb4 Remove unnecessary anon fn allocation on set-grid-layout-data
And remove incorrect use of dm/get prop for non statically known
attributes of shape
2025-08-12 09:59:18 +02:00
Andrey Antukh
9f14edb0d7 Remove unnecessary anonymouns fn allocation from set-flex-layout
And also removes usage of dm/get-prop for props that are known to be
not static
2025-08-12 09:59:18 +02:00
Andrey Antukh
7fa7a806a8 Remove unnecesary allocation of corners on wasm api set-shape 2025-08-12 09:59:18 +02:00
Andrey Antukh
d364f4db62 ♻️ Sanitize heap write and read operations
Mainly improves the offset management making it less
error prone, encapsulating the write operation and offeset
management into write-* operations with proper asserts
for the expected heap type.
2025-08-12 09:59:18 +02:00
Andrey Antukh
f2c431d029 Merge pull request #7041 from penpot/alotor-wasm-bools
 Add wasm boolean calculations
2025-08-12 08:07:18 +02:00
Belén Albeza
6a667c30d6 🐛 Fix color picking sometimes not picking color and/or getting stuck in a react infinite update loop 2025-08-11 17:02:12 +02:00
Alejandro Alonso
de637fcf4e 🐛 Fix ctrl+b for editor v2 2025-08-11 14:56:04 +02:00
Aitor Moreno
132069472c Merge pull request #7067 from penpot/superalex-fix-frames-extrect-calculation
🐛 Fix frames extrect calculation
2025-08-11 13:57:29 +02:00
Elena Torro
172c6ad4b8 🔧 Set fill paint as transparent when there are no fills 2025-08-11 13:52:49 +02:00
Andrey Antukh
73a72ec1c7 💄 Add naming and docstring consistency fixes to wasm api 2025-08-11 12:49:01 +02:00
Andrey Antukh
c39a8d84ac 💄 Abstract call to mem/free on wasm api ns 2025-08-11 10:30:14 +02:00
Andrey Antukh
027e5c64cc Reduce compexity on set-shape-children wasm api method 2025-08-11 10:30:14 +02:00
Andrey Antukh
ba42c9b85e Add improved interop between wasm bool and common code 2025-08-11 10:30:14 +02:00
alonso.torres
cd1be43384 Add support for boolean shapes 2025-08-11 10:30:14 +02:00
Andrey Antukh
6176027263 Import translatiosn from weblate
commit 17905edb9d24c9ae60921d94d1367a6e91df2b51
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Mon Aug 11 09:17:44 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 96.1% (1829 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit b57270851a843c64af8698ea7f8300cab1be75cf
Author: Henrik Allberg <henrik@thexorb.com>
Date:   Mon Aug 11 09:19:56 2025 +0200

    🌐 Add translations for: Swedish

    Currently translated at 84.4% (1607 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/sv/

commit 3aa31a7a52ba54126d3d14f6f24ea493f17ef99e
Author: Црнобог <68vuletic@gmail.com>
Date:   Mon Aug 11 09:19:49 2025 +0200

    🌐 Add translations for: Serbian

    Currently translated at 73.0% (1389 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/sr/

commit c451f75888be5d27aac35c716375cf722ccb805a
Author: Alejandro Alonso <alejandro.alonso@kaleidos.net>
Date:   Mon Aug 11 09:20:32 2025 +0200

    🌐 Add translations for: Yoruba

    Currently translated at 62.7% (1193 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/yo/

commit 64d084cfef057cdd635874aad961ad1f42cc16ab
Author: Alejandro Alonso <alejandro.alonso@kaleidos.net>
Date:   Mon Aug 11 09:17:58 2025 +0200

    🌐 Add translations for: Igbo

    Currently translated at 27.2% (518 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ig/

commit afee2e44bb22dfd28d55704cb1c387bf33b271ec
Author: Revenant <mohdmuizz22@yahoo.com>
Date:   Mon Aug 11 09:18:44 2025 +0200

    🌐 Add translations for: Malay

    Currently translated at 35.7% (680 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ms/

commit 27a43f53a486f9794e3d739793ca03cf11888240
Author: Alejandro Alonso <alejandro.alonso@kaleidos.net>
Date:   Mon Aug 11 09:17:27 2025 +0200

    🌐 Add translations for: Hausa

    Currently translated at 66.1% (1259 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ha/

commit 76d634a8da529ca27ff4f50d044ef8077b995b42
Author: Stephan Paternotte <stephan@paternottes.net>
Date:   Mon Aug 11 09:19:06 2025 +0200

    🌐 Add translations for: Dutch

    Currently translated at 96.2% (1830 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/nl/

commit eacdded92d1c8be56117e8d5ca0cf99db0d6b506
Author: Edgars Andersons <Edgars+Weblate@gaitenis.id.lv>
Date:   Mon Aug 11 09:18:35 2025 +0200

    🌐 Add translations for: Latvian

    Currently translated at 96.2% (1830 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/

commit 162163d566ef2ff89c3f96e0dbddfc24ea89bbe0
Author: Ņikita K <nikita.kozlovs@gmail.com>
Date:   Mon Aug 11 09:18:31 2025 +0200

    🌐 Add translations for: Latvian

    Currently translated at 96.2% (1830 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/

commit 01275a3458f485aeef190bf6588e0e45e8fad334
Author: Suhwan Kim <jgk9282@gmail.com>
Date:   Mon Aug 11 09:18:19 2025 +0200

    🌐 Add translations for: Korean

    Currently translated at 11.4% (218 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ko/

commit 03ba18cda687c3738bdcb6f49fd179eb449b50a3
Author: Denys Kisil <ossenjoyer@proton.me>
Date:   Mon Aug 11 09:20:29 2025 +0200

    🌐 Add translations for: Ukrainian (ukr_UA)

    Currently translated at 96.2% (1830 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/

commit ec77d8ada6f02abd03676febc1b2974c91bc907c
Author: al0cam <benjaminsikac@gmail.com>
Date:   Mon Aug 11 09:17:46 2025 +0200

    🌐 Add translations for: Croatian

    Currently translated at 85.2% (1621 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hr/

commit fce74589887b1439e73324fea8e145273a1a9236
Author: Zvonimir Juranko <zjuranko@gmail.com>
Date:   Mon Aug 11 09:17:46 2025 +0200

    🌐 Add translations for: Croatian

    Currently translated at 85.2% (1621 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hr/

commit e16c2c3118755810d07738671cbd2f7c6452e328
Author: TheScientistPT <joao.ed.reis.gomes@gmail.com>
Date:   Mon Aug 11 09:19:29 2025 +0200

    🌐 Add translations for: Portuguese (Portugal)

    Currently translated at 83.5% (1589 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_PT/

commit 7a394c7d4e3d2d43c93218f2e191919a1c23c864
Author: Dário <dariogomes@gmail.com>
Date:   Mon Aug 11 09:19:29 2025 +0200

    🌐 Add translations for: Portuguese (Portugal)

    Currently translated at 83.5% (1589 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_PT/

commit 32c157b0c377fbcefeb83c1f1559d32ed935367f
Author: Amerey.eu <info@amerey.eu>
Date:   Mon Aug 11 09:15:59 2025 +0200

    🌐 Add translations for: Czech

    Currently translated at 84.9% (1615 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/cs/

commit 3abf6a572727a8a93d6e0fac5f037c9383f213b0
Author: Mikel Larreategi <mlarreategi@codesyntax.com>
Date:   Mon Aug 11 09:16:45 2025 +0200

    🌐 Add translations for: Basque

    Currently translated at 61.4% (1169 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/eu/

commit b9165b23d30672f41324dc0135e6d519c0b704d1
Author: Radek Sawicki <radek@sqrc.pl>
Date:   Mon Aug 11 09:19:09 2025 +0200

    🌐 Add translations for: Polish

    Currently translated at 59.9% (1141 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pl/

commit b02c4cc7df984212eee183f813c7f5f16cd4c9eb
Author: Nicola Bortoletto <nicola.bortoletto@live.com>
Date:   Mon Aug 11 09:18:08 2025 +0200

    🌐 Add translations for: Italian

    Currently translated at 96.2% (1830 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/it/

commit 4eae1c68c2c17d438282a3d5f246609c97bf0064
Author: Valentina Chapellu <valentina.chapellu@gmail.com>
Date:   Mon Aug 11 09:18:04 2025 +0200

    🌐 Add translations for: Italian

    Currently translated at 96.2% (1830 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/it/

commit 225484e99e58fdf32dd888f70bb95f3070b16dc2
Author: Ahmad HosseinBor <123hozeifeh@gmail.com>
Date:   Mon Aug 11 09:16:52 2025 +0200

    🌐 Add translations for: Persian

    Currently translated at 41.0% (780 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fa/

commit 56ad686a1bf5634d52929790a315263fa77f2999
Author: william chen <william.fromtw@gmail.com>
Date:   Mon Aug 11 09:20:46 2025 +0200

    🌐 Add translations for: Chinese (Traditional Han script)

    Currently translated at 85.1% (1620 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hant/

commit 8d7c4c97556f7e5f001183535df09a1c796cdec1
Author: im424 <424@live.hk>
Date:   Mon Aug 11 09:20:46 2025 +0200

    🌐 Add translations for: Chinese (Traditional Han script)

    Currently translated at 85.1% (1620 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hant/

commit 00eea4f7f6fb6a02cd4256a5269d76d5ee678c3f
Author: Yaron Shahrabani <sh.yaron@gmail.com>
Date:   Mon Aug 11 09:17:37 2025 +0200

    🌐 Add translations for: Hebrew

    Currently translated at 96.2% (1830 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/

commit 23bed6b374ceee65a2c257ea3c32b9a8726a619d
Author: Linerly <linerly@proton.me>
Date:   Mon Aug 11 09:17:52 2025 +0200

    🌐 Add translations for: Indonesian

    Currently translated at 90.3% (1719 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/id/

commit ab3fb9f1b6b0596f564a1e4ba580a55b2ee5a556
Author: Mahmoud A. Rabo <Mahmoud@s3geeks.com>
Date:   Mon Aug 11 09:15:34 2025 +0200

    🌐 Add translations for: Arabic

    Currently translated at 58.8% (1120 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ar/

commit e1dd8905c6290e7f634de0e0e5228ac38cdbce4d
Author: AlexTECPlayz <alextec70@outlook.com>
Date:   Mon Aug 11 09:19:36 2025 +0200

    🌐 Add translations for: Romanian

    Currently translated at 68.1% (1296 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ro/

commit fb3401c258f195d23a0f33461cd596eaf10b8751
Author: George Lemon <george@getvasco.com>
Date:   Mon Aug 11 09:19:35 2025 +0200

    🌐 Add translations for: Romanian

    Currently translated at 68.1% (1296 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ro/

commit b8e351851472436c70ecf51a59f87dfbc038c2cf
Author: Allan Nordhøy <epost@anotheragency.no>
Date:   Mon Aug 11 09:18:56 2025 +0200

    🌐 Add translations for: Norwegian Bokmål

    Currently translated at 8.7% (166 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/nb_NO/

commit 322b67dabc5332d11e004d1ddbd1109c612a8460
Author: Stas Haas <stas@girafic.de>
Date:   Mon Aug 11 09:16:14 2025 +0200

    🌐 Add translations for: German

    Currently translated at 90.1% (1714 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/

commit c46e2d73039f3dcb6c7840060a7086829287ff80
Author: Pablo Alba <pablo.alba@kaleidos.net>
Date:   Mon Aug 11 09:16:12 2025 +0200

    🌐 Add translations for: German

    Currently translated at 90.1% (1714 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/

commit fbc774fe28c2e051c5f7926135955ad39146eff4
Author: Eranot <renato.konflanz@unochapeco.edu.br>
Date:   Mon Aug 11 09:19:23 2025 +0200

    🌐 Add translations for: Portuguese (Brazil)

    Currently translated at 67.0% (1276 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_BR/

commit a8f110374dc910462a7e83010b93f01c5ef5c514
Author: 王世阳 <wangshiyangchina@gmail.com>
Date:   Mon Aug 11 09:20:38 2025 +0200

    🌐 Add translations for: Chinese (Simplified Han script)

    Currently translated at 72.0% (1370 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hans/

commit 9a31a6239be28d43157132bfa9d6d7d2543b26ec
Author: Anonymous <noreply@weblate.org>
Date:   Mon Aug 11 09:20:38 2025 +0200

    🌐 Add translations for: Chinese (Simplified Han script)

    Currently translated at 72.0% (1370 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hans/

commit 024ff5c9ed52bca1112828512c60ee3049d956c0
Author: Merih Güz <iletisim@merihguz.com>
Date:   Mon Aug 11 09:20:17 2025 +0200

    🌐 Add translations for: Turkish

    Currently translated at 75.6% (1438 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/tr/

commit 5de31af3af03876f5af4bdba91c17b4889386fe9
Author: Çağlar Yeşilyurt <grch@mm.st>
Date:   Mon Aug 11 09:20:17 2025 +0200

    🌐 Add translations for: Turkish

    Currently translated at 75.6% (1438 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/tr/

commit 92ad28a35d98930a895bf9c070aeecce3056a643
Author: The_BadUser <vanjavs41@gmail.com>
Date:   Mon Aug 11 09:19:43 2025 +0200

    🌐 Add translations for: Russian

    Currently translated at 75.8% (1442 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ru/

commit ed9522d50281d56df8ccf7257f028e1ff317b4bc
Author: Vin <k3kelm4vw@mozmail.com>
Date:   Mon Aug 11 09:19:43 2025 +0200

    🌐 Add translations for: Russian

    Currently translated at 75.8% (1442 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ru/

commit 52b2837ef77449020f18d5fb4a3c8af539fe477e
Author: Anonymous <noreply@weblate.org>
Date:   Mon Aug 11 09:16:19 2025 +0200

    🌐 Add translations for: Greek

    Currently translated at 27.0% (515 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/el/

commit 15656760a1546bc877149797fd322f489cd9030a
Author: Ingrid Pigueron <ingridp.uxr@gmail.com>
Date:   Mon Aug 11 09:17:17 2025 +0200

    🌐 Add translations for: French

    Currently translated at 96.1% (1829 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/

commit d6952275de5e9a83bfe4d2238147c80bcfa1e35b
Author: Unreal Vision <unrealvisionyt@gmail.com>
Date:   Mon Aug 11 09:17:14 2025 +0200

    🌐 Add translations for: French

    Currently translated at 96.1% (1829 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/

commit 828f535facc0a9d3c586fed027b23443b0698ee2
Author: Louis Chance <contact@louischance.com>
Date:   Mon Aug 11 09:17:13 2025 +0200

    🌐 Add translations for: French

    Currently translated at 96.1% (1829 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/

commit 0656f7836a630f409d9fc575e132f250eec7f5a3
Author: Pablo Alba <pablo.alba@kaleidos.net>
Date:   Mon Aug 11 09:17:13 2025 +0200

    🌐 Add translations for: French

    Currently translated at 96.1% (1829 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/

commit 0497701d1ca4134549c5b8bd4419466f87111fcd
Author: Anonymous <noreply@weblate.org>
Date:   Mon Aug 11 09:16:31 2025 +0200

    🌐 Add translations for: Spanish

    Currently translated at 97.2% (1850 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/es/

commit 22c77ac2bf5fa9f5945bd680b97fafe5779b7324
Author: Andrey Antukh <niwi@niwi.nz>
Date:   Mon Aug 11 09:16:25 2025 +0200

    🌐 Add translations for: Spanish

    Currently translated at 97.2% (1850 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/es/

commit cdd3b23d7ccb1cf00fa3b66788df69449f012de7
Author: Aryiu <aryiu@users.noreply.hosted.weblate.org>
Date:   Mon Aug 11 09:15:52 2025 +0200

    🌐 Add translations for: Catalan

    Currently translated at 56.6% (1078 of 1902 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ca/

commit 41ab7871188c93469c9e94ade3c495a7380450e1
Author: Hosted Weblate <hosted@weblate.org>
Date:   Mon Aug 11 09:15:14 2025 +0200

    🌐 Update translation files

    Updated by "Cleanup translation files" hook in Weblate.

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/

commit 4f46b6b42a9660cdceaf231e9e20615b4e64c8fe
Merge: 58bd7c6bd4 2239711f15
Author: Hosted Weblate <hosted@weblate.org>
Date:   Mon Aug 11 09:15:10 2025 +0200

    🌐 Merge branch 'origin/develop' into Weblate.

commit 2239711f15f62c29cb7eb1981874ae81019d4b3e
Author: Stas Haas <stas@girafic.de>
Date:   Tue Jul 29 07:59:24 2025 +0200

    🌐 Add translations for: German

    Currently translated at 92.6% (1721 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/

commit 836068ca8cbc3e72a96bfa4be1d239ad2d516d32
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 10 08:41:57 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 100.0% (1857 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 1c2958825198a6194bf99db5cc50a3a386df98f6
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 10 07:58:53 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 100.0% (1857 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit c0f884b12350225c897e0f0843e09a02ea1c6639
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 10 07:56:18 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 100.0% (1857 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 4692c0019c9d09a1019b6605d748d8f3144edf68
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 10 07:51:22 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 100.0% (1857 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 6f74a30b90e39d1cb998dd7a37931d1a55a1bbfb
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 10 07:44:43 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 100.0% (1857 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit e657464742dc9f151313d4450025fd3ac57a6732
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 10 07:39:28 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 100.0% (1857 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit a41e8ed7865083123703710fbdacaa5ee9e506fa
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 10 07:34:59 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 100.0% (1857 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 4d27f8cb303b27f9ddba30d2a2fbc2163c920694
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 10 07:27:34 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 100.0% (1857 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit b5369fa2380beaa190265df4847c81af713bf348
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 10 07:03:29 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 100.0% (1857 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 4d639b62f29e469abce6f463208079e73f70b146
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 10 07:02:50 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 100.0% (1857 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit ddb5fe44ee8e12f6592b4cbf3f0c9f5a1be3f695
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 10 06:49:11 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 100.0% (1857 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit e702b556e2ae798e22cc966f6eff421cbc6fda81
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 10 06:42:32 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 100.0% (1857 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit f74f8f96e5af79900df3508ee5551d8f85e63558
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 10 06:40:51 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 100.0% (1857 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit f7db30ac4d1855b646e0ece454a2153aaaaeb309
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 10 06:33:44 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 100.0% (1857 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 07fd2353f670b981601f5d51aca3f013483af9a6
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 09:29:04 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit a8b578cbaa69c6bd1c8319b43a96799267eae98d
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 09:25:49 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 12a9927f7b5b257d2909be6c73af72a58ddfb8b6
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 09:24:52 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 2314eab73fa7fcb7b479c16dfb0551a188a7c46e
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 09:23:25 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 88b721c600ff72a2e8bdc4c301f0745a3174fbd5
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 09:17:17 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 14b4124e4cdf4ced296d234b4dbd76afa5a6166c
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 09:12:41 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit ccaa8da28c65d0256027f2fbf3e556797ef901fb
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 08:16:45 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit e517e2f0152383549a46ac72b4ebc94752dbdbf3
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 08:12:19 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit cb359962bc2aff200c501d8466db1097e93d074e
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 08:03:00 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 71205252a4f4aadeed2cf0b6da41722a6d2e38a8
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 07:51:41 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit fe56a9fdd177c4ca624b9dbb88bfa30dc31a92f4
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 07:48:33 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 3f2d9bf68f466c21557e045fcce7aab76441d9da
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 07:22:29 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit e41af1831d5f749e341ce163f520ce2dff5fc7de
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 07:21:22 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit bb8c9129c9c3cff69ce59b7bfe86560bba977e09
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 07:20:40 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit efd5849fc1e6e76fdf91b21b0a69be2b7e89cbcf
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 07:18:52 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 0b2403b8bd2682e4a2cfdfe879b34c83ed5a6913
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 07:13:43 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 8412b71915047cf0d436279b89f93bc0c77f1c20
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 07:03:41 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit fe49d3ccd5697ef830bb71086557f8a249c3ed6e
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 07:02:20 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 48f39509b7a93e501115c3d4cc5d8bb76361b197
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 07:00:51 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 634df69814a209dc830ffebe471be4e821b849fa
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 06:57:19 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit f2ddf8266af3f4d56351883f5ad845327834fe8b
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 06:50:16 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 27d24e6438d34ecfea68b87d0322d51b05cfdb68
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Tue Jul 8 09:49:01 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit bc0afe1b8053bb0258b7b18905714d3cc070c55f
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Tue Jul 8 09:40:07 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 4f6e0bd6778e8105d248f298319b9771c99347a1
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Tue Jul 8 09:36:54 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit faae4f0c18ee77bd2330936448823f3caa7df881
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Tue Jul 8 09:35:38 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 5e43671edccc5786f46afba4b1e5c32de39d05a6
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Tue Jul 8 09:29:10 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 6aec58217b608f125e327d9b7048fa163984b8b3
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Tue Jul 8 09:24:10 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit a20b28bfe96618e507259b6294f6791bc30e1ed3
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Tue Jul 8 09:22:34 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 59ee55aa262c7248b9f85f2fdd5b217132b71975
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Tue Jul 8 09:21:42 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 3825a6a464c6015f383e90be9155c81da8a1f2c1
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Tue Jul 8 09:17:33 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 7fe83a8f347a65e101ec1e01ef30d8791057718f
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Tue Jul 8 07:39:05 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 52.2% (970 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 7eab18e15ec35f4e7a4eb33fbec17c8fd61c5a65
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Tue Jul 8 07:28:07 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 52.2% (970 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 66a42acd37df0eecfa409fd460b279565b7c7292
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Tue Jul 8 07:23:43 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 52.2% (970 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 9eb17f7172141e366eb338b128bf2229deeb1246
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Tue Jul 8 07:23:08 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 52.2% (970 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 2626d45eb96da5e47a5b90c5ba4aa13362b8eea2
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Mon Jul 7 11:56:38 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 52.2% (970 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit f3719edaa121a9c880cf5f670ed18bb6f1806378
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Mon Jul 7 11:43:06 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 52.2% (970 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 67001aafa71aa9dba8c5e1e927c9ce305e14070e
Author: Stephan Paternotte <stephan@paternottes.net>
Date:   Mon Jul 7 07:02:49 2025 +0200

    🌐 Add translations for: Dutch

    Currently translated at 99.9% (1856 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/nl/

commit 4d4f5265c00c384a9ba7bb4bf49461279ca536fd
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Fri Jul 4 12:37:46 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 40.3% (750 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit f3cc8ae33cbb6941434cf71d7d4b4e037aa0a594
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Fri Jul 4 12:19:25 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 40.3% (750 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 2d3c0e4a342e1a051d0bf07a580b99a53c12078a
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Fri Jul 4 12:09:45 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 40.3% (750 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 4e394b39599e4854ff53374f2ea900d3ea0d49f7
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Fri Jul 4 09:27:07 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 40.3% (750 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit ebef981a652cba41d988e4f93f685c640ecd5efe
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Fri Jul 4 09:24:00 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 40.3% (750 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 6ca42826654fec0fec38631252547323a2226b93
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Fri Jul 4 09:23:29 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 40.3% (750 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 5bd8c711b63e967ef2657106e8f2e1498a2596e0
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Fri Jul 4 09:18:58 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 40.3% (750 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 6356069174f83939690751f965b641709a7a708e
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Fri Jul 4 08:22:38 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 40.3% (750 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit a3107d059ec8cf8762cca2e258e09595651c7e4c
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Fri Jul 4 08:09:28 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 40.3% (750 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit c0f2f43b0669a38c05c1bae783359d70bb53957d
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Fri Jul 4 08:01:49 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit d725f53e9ea0c22302485fccc3289e8546124570
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Fri Jul 4 07:54:46 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 6a50a0db429792a41861281f41b1bafd2bebd64d
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Fri Jul 4 07:53:55 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit ee382c0d777c65240fdea46222e8249ae131c538
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 11:12:22 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 181d3083e1e03b7b640545479c666a629c3cdacb
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 11:10:31 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit e898179de59525f259d5ccfae59f4f2fca309f3d
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 11:05:22 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit b16596c7b9c3814478c0149e172329a3aa074dd1
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 10:47:59 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit ae70f146dc1b187d53bcba575e4c365b9077d42a
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 09:40:00 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 4be87babf5605533eed83cee114cf9171c7985cb
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 09:39:23 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 1f4261a6e5686224cfedfebf385572d565b573c7
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 09:27:26 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 50db4f8bc8fbac02ef880add7e5e2330ab06dab0
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 09:17:03 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit d2897327a2aeef26cfc4da4ca63291af7504921e
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 09:13:15 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 5c7f7e4179ab2e510a6fcabb86f66bd1b2827bd6
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 09:09:13 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit b1d5bbcd0db8a96967cc067bb29f147b2174eb8a
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 09:06:52 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 2cea4705c972032fc7be9b4fbc047a5422846b13
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 09:03:41 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 44d01ba7054306027f006fcfca9afad18e1f08ac
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 08:59:32 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 50a2f98ac6573d47237578dd1bce6d848cc83c78
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 08:58:33 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit cef20ab80a59ca5da6a14be2c6b3b6fc57ea4aab
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 08:58:15 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 214f9c2bb1e75fe99fe7407e77eb273d437782cd
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 08:54:59 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 4f9f7a38f811b1948fb9a34fc57f4e9d0ddf1c1b
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 08:46:36 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit be7e929ae70344d6f4349eae569a3012bdfe2e2a
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 08:12:41 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 4db59803d86f78a35538b089f122291a2577716d
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 08:06:20 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 14aad9500e7c901573effbb5fdff2a8a0bcca036
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 08:05:29 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 85014b458caa951d798e45000b02f25b9fdad271
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 08:02:38 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 002a623606025367f33870c8074e2ea486315b5d
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 08:01:16 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit b72efd33dfeadefcb9f63e68e59cb16fb6366483
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 07:57:48 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit ab75e51c330561eb132eef8354908fcbd8b3ec09
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 07:57:18 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 2bae66951b930e872c06443b78c36c225c564438
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 07:45:41 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 1151123aeabfcad65410bd44d6e04685d21ba5ed
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 07:40:17 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 97a4f34e599d4f1ac6da3029cab3d993ee3ab4da
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 07:35:28 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit a2e1ec123bce716ea0bcc2542809398ec3f65cb1
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 07:30:19 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 9e72ab6771857ec0814cd0fa22dac6bf1470901a
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 07:28:38 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 87849347286683544dba68e9a1cbdc9fc06b7ff3
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 07:22:13 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 1e359566b91bf23270a34ed398b058a635a7de7b
Author: Denys Kisil <ossenjoyer@proton.me>
Date:   Mon Jun 30 14:35:56 2025 +0200

    🌐 Add translations for: Ukrainian (ukr_UA)

    Currently translated at 99.9% (1856 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/

commit 312ee3f7036615fce7f88b880accce71605470dc
Author: Denys Kisil <ossenjoyer@proton.me>
Date:   Mon Jun 30 14:31:42 2025 +0200

    🌐 Add translations for: Ukrainian (ukr_UA)

    Currently translated at 99.9% (1856 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/

commit 7ca4e07d12e419e11b2d0079acb8133beac1315a
Author: Denys Kisil <ossenjoyer@proton.me>
Date:   Mon Jun 30 14:29:26 2025 +0200

    🌐 Add translations for: Ukrainian (ukr_UA)

    Currently translated at 99.9% (1856 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/

commit 3e1db432d2fef95542ea9d0d5e4c164ab2190e11
Author: Denys Kisil <ossenjoyer@proton.me>
Date:   Mon Jun 30 14:22:29 2025 +0200

    🌐 Add translations for: Ukrainian (ukr_UA)

    Currently translated at 99.9% (1856 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/

commit f6121a315de283a8a0b2e163aeaff48851a42a25
Author: Denys Kisil <ossenjoyer@proton.me>
Date:   Mon Jun 30 14:19:07 2025 +0200

    🌐 Add translations for: Ukrainian (ukr_UA)

    Currently translated at 99.9% (1856 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/

commit e1720aae76015fba1754575dc743a3021040e04a
Author: Denys Kisil <ossenjoyer@proton.me>
Date:   Mon Jun 30 14:15:08 2025 +0200

    🌐 Add translations for: Ukrainian (ukr_UA)

    Currently translated at 99.9% (1856 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/

commit a399deae487af3db9127adc89aa39bd813296ecf
Author: Corentin Noël <tintou@noel.tf>
Date:   Fri Jun 27 14:26:07 2025 +0200

    🌐 Add translations for: French

    Currently translated at 99.8% (1855 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/

commit 1c81b4c9b3bac3bc210b16ba9691cc5e2917c896
Author: Ingrid Pigueron <ingridp.uxr@gmail.com>
Date:   Thu Jun 26 11:31:04 2025 +0200

    🌐 Add translations for: French

    Currently translated at 99.8% (1854 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/

commit 0c756f50747fd9a0031e398d6bba4903d402519a
Author: Stas Haas <stas@girafic.de>
Date:   Sun Jun 22 11:35:49 2025 +0200

    🌐 Add translations for: German

    Currently translated at 92.6% (1720 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/

commit eaa9d3e2bccf4f2fb9aa9f23fee530c7efe5e720
Author: al0cam <benjaminsikac@gmail.com>
Date:   Thu Jun 19 14:48:06 2025 +0200

    🌐 Add translations for: Croatian

    Currently translated at 87.4% (1624 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hr/

commit 8fc4f74bf8e8e754f780a155c2eb8f6d9c51f3b4
Author: Stas Haas <stas@girafic.de>
Date:   Tue Jun 17 09:06:30 2025 +0200

    🌐 Add translations for: German

    Currently translated at 91.9% (1708 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/

commit 4d396ef7f7b1be2ec5f57d671717ae1dbb9419ab
Author: Denys Kisil <ossenjoyer@proton.me>
Date:   Mon Jun 16 21:34:47 2025 +0200

    🌐 Add translations for: Ukrainian (ukr_UA)

    Currently translated at 99.9% (1856 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/

commit 28dcfb52785fecca69a4bf22ac7222b330d29f9f
Author: al0cam <benjaminsikac@gmail.com>
Date:   Mon Jun 16 07:54:05 2025 +0200

    🌐 Add translations for: Croatian

    Currently translated at 87.2% (1620 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hr/

commit 680c9a1a0ebe3b323cf1bc7d3f92d7e0bda53c7a
Author: Yaron Shahrabani <sh.yaron@gmail.com>
Date:   Mon Jun 16 18:51:01 2025 +0200

    🌐 Add translations for: Hebrew

    Currently translated at 99.9% (1856 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/

commit 6e3f6ed276b74df94a64af294ea4ca80ac1c43f6
Author: Ingrid Pigueron <ingridp.uxr@gmail.com>
Date:   Sat Jun 14 12:53:48 2025 +0200

    🌐 Add translations for: French

    Currently translated at 99.8% (1854 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/

commit feabe2414490e29db3fbabf20a00d890df9907d8
Author: Nicola Bortoletto <nicola.bortoletto@live.com>
Date:   Fri Jun 13 08:26:35 2025 +0200

    🌐 Add translations for: Italian

    Currently translated at 99.9% (1856 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/it/

commit a3b49ee9510b53ae5b010bfbcfb5022a79f6fe1b
Author: Yaron Shahrabani <sh.yaron@gmail.com>
Date:   Thu Jun 12 08:17:05 2025 +0200

    🌐 Add translations for: Hebrew

    Currently translated at 97.0% (1803 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/

commit c775173ec6f5d22964e9b79cc2a80e3cbd08fccb
Author: Stas Haas <stas@girafic.de>
Date:   Thu Jun 12 10:56:20 2025 +0200

    🌐 Add translations for: German

    Currently translated at 90.7% (1686 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/

commit 249051c087fd679f7d5a5c604a65c1eb6fb377d0
Author: Yaron Shahrabani <sh.yaron@gmail.com>
Date:   Wed Jun 11 11:24:21 2025 +0200

    🌐 Add translations for: Hebrew

    Currently translated at 96.9% (1800 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/

commit d33693bf9f8aa419b7688deed03a26926d7b5338
Author: Stas Haas <stas@girafic.de>
Date:   Tue Jun 10 15:05:19 2025 +0200

    🌐 Add translations for: German

    Currently translated at 90.4% (1680 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/

commit c3d4852c7f61ac398aa505eb0f1b3e0a5e6a6f49
Author: Unreal Vision <unrealvisionyt@gmail.com>
Date:   Tue Jun 10 14:59:59 2025 +0200

    🌐 Add translations for: French

    Currently translated at 99.7% (1853 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/

commit 16e6fadb8dd1c2285c64fde7079d6b33c8a7f6a6
Author: Rudra Harsh <harshrudra020@gmail.com>
Date:   Mon Jun 9 15:46:43 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 1.2% (23 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 7653bc6060bc0f6ad0664549cc46a15d7e72ccd7
Author: Stephan Paternotte <stephan@paternottes.net>
Date:   Tue Jun 10 05:46:17 2025 +0200

    🌐 Add translations for: Dutch

    Currently translated at 99.7% (1853 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/nl/

commit 0f65e960b1de543b9133e6742a732e46967d1f83
Author: Edgars Andersons <Edgars+Weblate@gaitenis.id.lv>
Date:   Tue Jun 10 11:51:03 2025 +0200

    🌐 Add translations for: Latvian

    Currently translated at 99.9% (1856 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/

commit 05f12ae1bf59986cdc8f5e98ac14c33d6c0e79e2
Author: Nicola Bortoletto <nicola.bortoletto@live.com>
Date:   Mon Jun 9 23:14:58 2025 +0200

    🌐 Add translations for: Italian

    Currently translated at 99.9% (1856 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/it/

commit 2e16f175f57b757a5de4f387caf58331ec5dc822
Author: Yaron Shahrabani <sh.yaron@gmail.com>
Date:   Mon Jun 9 19:01:14 2025 +0200

    🌐 Add translations for: Hebrew

    Currently translated at 96.6% (1794 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/

commit a202b8b663c3a32af7e21f662907d8365fb587c5
Author: Stas Haas <stas@girafic.de>
Date:   Tue Jun 10 14:57:32 2025 +0200

    🌐 Add translations for: German

    Currently translated at 90.0% (1672 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/

commit ffe9682df9a5a65dc1f582844e566cf3eff32a08
Author: Unreal Vision <unrealvisionyt@gmail.com>
Date:   Tue Jun 10 14:56:54 2025 +0200

    🌐 Add translations for: French

    Currently translated at 98.7% (1833 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/

commit f8f4abe8007491f5392bfb1ab5cbfba618e22700
Author: Ingrid Pigueron <ingridp.uxr@gmail.com>
Date:   Mon Jun 9 19:44:09 2025 +0200

    🌐 Add translations for: French

    Currently translated at 98.7% (1833 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/

commit bb6fee5a9ba86eb823c22fae22a49afdcc36c659
Author: Rudra Harsh <harshrudra020@gmail.com>
Date:   Mon Jun 9 15:21:41 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 0.5% (11 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 55b4c5c07827d4b6eda2ffcc71caca81e6f36534
Author: Madalena Melo <madalena.melo@kaleidos.net>
Date:   Mon Jun 9 11:52:50 2025 +0200

    🌐  Added translation for: Hindi
2025-08-11 09:21:55 +02:00
Andrey Antukh
58bd7c6bd4 Import translations from weblate
commit 2239711f15f62c29cb7eb1981874ae81019d4b3e
Author: Stas Haas <stas@girafic.de>
Date:   Tue Jul 29 07:59:24 2025 +0200

    🌐 Add translations for: German

    Currently translated at 92.6% (1721 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/

commit 836068ca8cbc3e72a96bfa4be1d239ad2d516d32
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 10 08:41:57 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 100.0% (1857 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 1c2958825198a6194bf99db5cc50a3a386df98f6
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 10 07:58:53 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 100.0% (1857 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit c0f884b12350225c897e0f0843e09a02ea1c6639
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 10 07:56:18 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 100.0% (1857 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 4692c0019c9d09a1019b6605d748d8f3144edf68
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 10 07:51:22 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 100.0% (1857 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 6f74a30b90e39d1cb998dd7a37931d1a55a1bbfb
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 10 07:44:43 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 100.0% (1857 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit e657464742dc9f151313d4450025fd3ac57a6732
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 10 07:39:28 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 100.0% (1857 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit a41e8ed7865083123703710fbdacaa5ee9e506fa
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 10 07:34:59 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 100.0% (1857 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 4d27f8cb303b27f9ddba30d2a2fbc2163c920694
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 10 07:27:34 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 100.0% (1857 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit b5369fa2380beaa190265df4847c81af713bf348
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 10 07:03:29 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 100.0% (1857 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 4d639b62f29e469abce6f463208079e73f70b146
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 10 07:02:50 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 100.0% (1857 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit ddb5fe44ee8e12f6592b4cbf3f0c9f5a1be3f695
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 10 06:49:11 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 100.0% (1857 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit e702b556e2ae798e22cc966f6eff421cbc6fda81
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 10 06:42:32 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 100.0% (1857 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit f74f8f96e5af79900df3508ee5551d8f85e63558
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 10 06:40:51 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 100.0% (1857 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit f7db30ac4d1855b646e0ece454a2153aaaaeb309
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 10 06:33:44 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 100.0% (1857 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 07fd2353f670b981601f5d51aca3f013483af9a6
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 09:29:04 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit a8b578cbaa69c6bd1c8319b43a96799267eae98d
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 09:25:49 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 12a9927f7b5b257d2909be6c73af72a58ddfb8b6
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 09:24:52 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 2314eab73fa7fcb7b479c16dfb0551a188a7c46e
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 09:23:25 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 88b721c600ff72a2e8bdc4c301f0745a3174fbd5
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 09:17:17 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 14b4124e4cdf4ced296d234b4dbd76afa5a6166c
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 09:12:41 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit ccaa8da28c65d0256027f2fbf3e556797ef901fb
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 08:16:45 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit e517e2f0152383549a46ac72b4ebc94752dbdbf3
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 08:12:19 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit cb359962bc2aff200c501d8466db1097e93d074e
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 08:03:00 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 71205252a4f4aadeed2cf0b6da41722a6d2e38a8
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 07:51:41 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit fe56a9fdd177c4ca624b9dbb88bfa30dc31a92f4
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 07:48:33 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 3f2d9bf68f466c21557e045fcce7aab76441d9da
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 07:22:29 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit e41af1831d5f749e341ce163f520ce2dff5fc7de
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 07:21:22 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit bb8c9129c9c3cff69ce59b7bfe86560bba977e09
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 07:20:40 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit efd5849fc1e6e76fdf91b21b0a69be2b7e89cbcf
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 07:18:52 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 0b2403b8bd2682e4a2cfdfe879b34c83ed5a6913
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 07:13:43 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 8412b71915047cf0d436279b89f93bc0c77f1c20
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 07:03:41 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit fe49d3ccd5697ef830bb71086557f8a249c3ed6e
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 07:02:20 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 48f39509b7a93e501115c3d4cc5d8bb76361b197
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 07:00:51 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 634df69814a209dc830ffebe471be4e821b849fa
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 06:57:19 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit f2ddf8266af3f4d56351883f5ad845327834fe8b
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Wed Jul 9 06:50:16 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 27d24e6438d34ecfea68b87d0322d51b05cfdb68
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Tue Jul 8 09:49:01 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit bc0afe1b8053bb0258b7b18905714d3cc070c55f
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Tue Jul 8 09:40:07 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 4f6e0bd6778e8105d248f298319b9771c99347a1
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Tue Jul 8 09:36:54 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit faae4f0c18ee77bd2330936448823f3caa7df881
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Tue Jul 8 09:35:38 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 5e43671edccc5786f46afba4b1e5c32de39d05a6
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Tue Jul 8 09:29:10 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 6aec58217b608f125e327d9b7048fa163984b8b3
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Tue Jul 8 09:24:10 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit a20b28bfe96618e507259b6294f6791bc30e1ed3
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Tue Jul 8 09:22:34 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 59ee55aa262c7248b9f85f2fdd5b217132b71975
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Tue Jul 8 09:21:42 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 3825a6a464c6015f383e90be9155c81da8a1f2c1
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Tue Jul 8 09:17:33 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 82.7% (1536 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 7fe83a8f347a65e101ec1e01ef30d8791057718f
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Tue Jul 8 07:39:05 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 52.2% (970 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 7eab18e15ec35f4e7a4eb33fbec17c8fd61c5a65
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Tue Jul 8 07:28:07 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 52.2% (970 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 66a42acd37df0eecfa409fd460b279565b7c7292
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Tue Jul 8 07:23:43 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 52.2% (970 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 9eb17f7172141e366eb338b128bf2229deeb1246
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Tue Jul 8 07:23:08 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 52.2% (970 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 2626d45eb96da5e47a5b90c5ba4aa13362b8eea2
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Mon Jul 7 11:56:38 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 52.2% (970 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit f3719edaa121a9c880cf5f670ed18bb6f1806378
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Mon Jul 7 11:43:06 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 52.2% (970 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 67001aafa71aa9dba8c5e1e927c9ce305e14070e
Author: Stephan Paternotte <stephan@paternottes.net>
Date:   Mon Jul 7 07:02:49 2025 +0200

    🌐 Add translations for: Dutch

    Currently translated at 99.9% (1856 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/nl/

commit 4d4f5265c00c384a9ba7bb4bf49461279ca536fd
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Fri Jul 4 12:37:46 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 40.3% (750 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit f3cc8ae33cbb6941434cf71d7d4b4e037aa0a594
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Fri Jul 4 12:19:25 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 40.3% (750 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 2d3c0e4a342e1a051d0bf07a580b99a53c12078a
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Fri Jul 4 12:09:45 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 40.3% (750 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 4e394b39599e4854ff53374f2ea900d3ea0d49f7
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Fri Jul 4 09:27:07 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 40.3% (750 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit ebef981a652cba41d988e4f93f685c640ecd5efe
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Fri Jul 4 09:24:00 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 40.3% (750 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 6ca42826654fec0fec38631252547323a2226b93
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Fri Jul 4 09:23:29 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 40.3% (750 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 5bd8c711b63e967ef2657106e8f2e1498a2596e0
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Fri Jul 4 09:18:58 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 40.3% (750 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 6356069174f83939690751f965b641709a7a708e
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Fri Jul 4 08:22:38 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 40.3% (750 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit a3107d059ec8cf8762cca2e258e09595651c7e4c
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Fri Jul 4 08:09:28 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 40.3% (750 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit c0f2f43b0669a38c05c1bae783359d70bb53957d
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Fri Jul 4 08:01:49 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit d725f53e9ea0c22302485fccc3289e8546124570
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Fri Jul 4 07:54:46 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 6a50a0db429792a41861281f41b1bafd2bebd64d
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Fri Jul 4 07:53:55 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit ee382c0d777c65240fdea46222e8249ae131c538
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 11:12:22 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 181d3083e1e03b7b640545479c666a629c3cdacb
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 11:10:31 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit e898179de59525f259d5ccfae59f4f2fca309f3d
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 11:05:22 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit b16596c7b9c3814478c0149e172329a3aa074dd1
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 10:47:59 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit ae70f146dc1b187d53bcba575e4c365b9077d42a
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 09:40:00 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 4be87babf5605533eed83cee114cf9171c7985cb
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 09:39:23 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 1f4261a6e5686224cfedfebf385572d565b573c7
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 09:27:26 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 50db4f8bc8fbac02ef880add7e5e2330ab06dab0
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 09:17:03 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit d2897327a2aeef26cfc4da4ca63291af7504921e
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 09:13:15 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 5c7f7e4179ab2e510a6fcabb86f66bd1b2827bd6
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 09:09:13 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit b1d5bbcd0db8a96967cc067bb29f147b2174eb8a
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 09:06:52 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 2cea4705c972032fc7be9b4fbc047a5422846b13
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 09:03:41 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 44d01ba7054306027f006fcfca9afad18e1f08ac
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 08:59:32 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 50a2f98ac6573d47237578dd1bce6d848cc83c78
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 08:58:33 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit cef20ab80a59ca5da6a14be2c6b3b6fc57ea4aab
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 08:58:15 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 214f9c2bb1e75fe99fe7407e77eb273d437782cd
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 08:54:59 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 4f9f7a38f811b1948fb9a34fc57f4e9d0ddf1c1b
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 08:46:36 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit be7e929ae70344d6f4349eae569a3012bdfe2e2a
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 08:12:41 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 4db59803d86f78a35538b089f122291a2577716d
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 08:06:20 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 14aad9500e7c901573effbb5fdff2a8a0bcca036
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 08:05:29 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 85014b458caa951d798e45000b02f25b9fdad271
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 08:02:38 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 002a623606025367f33870c8074e2ea486315b5d
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 08:01:16 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit b72efd33dfeadefcb9f63e68e59cb16fb6366483
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 07:57:48 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit ab75e51c330561eb132eef8354908fcbd8b3ec09
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 07:57:18 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 2bae66951b930e872c06443b78c36c225c564438
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 07:45:41 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 1151123aeabfcad65410bd44d6e04685d21ba5ed
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 07:40:17 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 97a4f34e599d4f1ac6da3029cab3d993ee3ab4da
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 07:35:28 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit a2e1ec123bce716ea0bcc2542809398ec3f65cb1
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 07:30:19 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 9e72ab6771857ec0814cd0fa22dac6bf1470901a
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 07:28:38 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 87849347286683544dba68e9a1cbdc9fc06b7ff3
Author: VKing9 <vaibhavrathod2282@gmail.com>
Date:   Thu Jul 3 07:22:13 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 27.3% (508 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 1e359566b91bf23270a34ed398b058a635a7de7b
Author: Denys Kisil <ossenjoyer@proton.me>
Date:   Mon Jun 30 14:35:56 2025 +0200

    🌐 Add translations for: Ukrainian (ukr_UA)

    Currently translated at 99.9% (1856 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/

commit 312ee3f7036615fce7f88b880accce71605470dc
Author: Denys Kisil <ossenjoyer@proton.me>
Date:   Mon Jun 30 14:31:42 2025 +0200

    🌐 Add translations for: Ukrainian (ukr_UA)

    Currently translated at 99.9% (1856 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/

commit 7ca4e07d12e419e11b2d0079acb8133beac1315a
Author: Denys Kisil <ossenjoyer@proton.me>
Date:   Mon Jun 30 14:29:26 2025 +0200

    🌐 Add translations for: Ukrainian (ukr_UA)

    Currently translated at 99.9% (1856 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/

commit 3e1db432d2fef95542ea9d0d5e4c164ab2190e11
Author: Denys Kisil <ossenjoyer@proton.me>
Date:   Mon Jun 30 14:22:29 2025 +0200

    🌐 Add translations for: Ukrainian (ukr_UA)

    Currently translated at 99.9% (1856 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/

commit f6121a315de283a8a0b2e163aeaff48851a42a25
Author: Denys Kisil <ossenjoyer@proton.me>
Date:   Mon Jun 30 14:19:07 2025 +0200

    🌐 Add translations for: Ukrainian (ukr_UA)

    Currently translated at 99.9% (1856 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/

commit e1720aae76015fba1754575dc743a3021040e04a
Author: Denys Kisil <ossenjoyer@proton.me>
Date:   Mon Jun 30 14:15:08 2025 +0200

    🌐 Add translations for: Ukrainian (ukr_UA)

    Currently translated at 99.9% (1856 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/

commit a399deae487af3db9127adc89aa39bd813296ecf
Author: Corentin Noël <tintou@noel.tf>
Date:   Fri Jun 27 14:26:07 2025 +0200

    🌐 Add translations for: French

    Currently translated at 99.8% (1855 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/

commit 1c81b4c9b3bac3bc210b16ba9691cc5e2917c896
Author: Ingrid Pigueron <ingridp.uxr@gmail.com>
Date:   Thu Jun 26 11:31:04 2025 +0200

    🌐 Add translations for: French

    Currently translated at 99.8% (1854 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/

commit 0c756f50747fd9a0031e398d6bba4903d402519a
Author: Stas Haas <stas@girafic.de>
Date:   Sun Jun 22 11:35:49 2025 +0200

    🌐 Add translations for: German

    Currently translated at 92.6% (1720 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/

commit eaa9d3e2bccf4f2fb9aa9f23fee530c7efe5e720
Author: al0cam <benjaminsikac@gmail.com>
Date:   Thu Jun 19 14:48:06 2025 +0200

    🌐 Add translations for: Croatian

    Currently translated at 87.4% (1624 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hr/

commit 8fc4f74bf8e8e754f780a155c2eb8f6d9c51f3b4
Author: Stas Haas <stas@girafic.de>
Date:   Tue Jun 17 09:06:30 2025 +0200

    🌐 Add translations for: German

    Currently translated at 91.9% (1708 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/

commit 4d396ef7f7b1be2ec5f57d671717ae1dbb9419ab
Author: Denys Kisil <ossenjoyer@proton.me>
Date:   Mon Jun 16 21:34:47 2025 +0200

    🌐 Add translations for: Ukrainian (ukr_UA)

    Currently translated at 99.9% (1856 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/

commit 28dcfb52785fecca69a4bf22ac7222b330d29f9f
Author: al0cam <benjaminsikac@gmail.com>
Date:   Mon Jun 16 07:54:05 2025 +0200

    🌐 Add translations for: Croatian

    Currently translated at 87.2% (1620 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hr/

commit 680c9a1a0ebe3b323cf1bc7d3f92d7e0bda53c7a
Author: Yaron Shahrabani <sh.yaron@gmail.com>
Date:   Mon Jun 16 18:51:01 2025 +0200

    🌐 Add translations for: Hebrew

    Currently translated at 99.9% (1856 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/

commit 6e3f6ed276b74df94a64af294ea4ca80ac1c43f6
Author: Ingrid Pigueron <ingridp.uxr@gmail.com>
Date:   Sat Jun 14 12:53:48 2025 +0200

    🌐 Add translations for: French

    Currently translated at 99.8% (1854 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/

commit feabe2414490e29db3fbabf20a00d890df9907d8
Author: Nicola Bortoletto <nicola.bortoletto@live.com>
Date:   Fri Jun 13 08:26:35 2025 +0200

    🌐 Add translations for: Italian

    Currently translated at 99.9% (1856 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/it/

commit a3b49ee9510b53ae5b010bfbcfb5022a79f6fe1b
Author: Yaron Shahrabani <sh.yaron@gmail.com>
Date:   Thu Jun 12 08:17:05 2025 +0200

    🌐 Add translations for: Hebrew

    Currently translated at 97.0% (1803 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/

commit c775173ec6f5d22964e9b79cc2a80e3cbd08fccb
Author: Stas Haas <stas@girafic.de>
Date:   Thu Jun 12 10:56:20 2025 +0200

    🌐 Add translations for: German

    Currently translated at 90.7% (1686 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/

commit 249051c087fd679f7d5a5c604a65c1eb6fb377d0
Author: Yaron Shahrabani <sh.yaron@gmail.com>
Date:   Wed Jun 11 11:24:21 2025 +0200

    🌐 Add translations for: Hebrew

    Currently translated at 96.9% (1800 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/

commit d33693bf9f8aa419b7688deed03a26926d7b5338
Author: Stas Haas <stas@girafic.de>
Date:   Tue Jun 10 15:05:19 2025 +0200

    🌐 Add translations for: German

    Currently translated at 90.4% (1680 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/

commit c3d4852c7f61ac398aa505eb0f1b3e0a5e6a6f49
Author: Unreal Vision <unrealvisionyt@gmail.com>
Date:   Tue Jun 10 14:59:59 2025 +0200

    🌐 Add translations for: French

    Currently translated at 99.7% (1853 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/

commit 16e6fadb8dd1c2285c64fde7079d6b33c8a7f6a6
Author: Rudra Harsh <harshrudra020@gmail.com>
Date:   Mon Jun 9 15:46:43 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 1.2% (23 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 7653bc6060bc0f6ad0664549cc46a15d7e72ccd7
Author: Stephan Paternotte <stephan@paternottes.net>
Date:   Tue Jun 10 05:46:17 2025 +0200

    🌐 Add translations for: Dutch

    Currently translated at 99.7% (1853 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/nl/

commit 0f65e960b1de543b9133e6742a732e46967d1f83
Author: Edgars Andersons <Edgars+Weblate@gaitenis.id.lv>
Date:   Tue Jun 10 11:51:03 2025 +0200

    🌐 Add translations for: Latvian

    Currently translated at 99.9% (1856 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/

commit 05f12ae1bf59986cdc8f5e98ac14c33d6c0e79e2
Author: Nicola Bortoletto <nicola.bortoletto@live.com>
Date:   Mon Jun 9 23:14:58 2025 +0200

    🌐 Add translations for: Italian

    Currently translated at 99.9% (1856 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/it/

commit 2e16f175f57b757a5de4f387caf58331ec5dc822
Author: Yaron Shahrabani <sh.yaron@gmail.com>
Date:   Mon Jun 9 19:01:14 2025 +0200

    🌐 Add translations for: Hebrew

    Currently translated at 96.6% (1794 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/

commit a202b8b663c3a32af7e21f662907d8365fb587c5
Author: Stas Haas <stas@girafic.de>
Date:   Tue Jun 10 14:57:32 2025 +0200

    🌐 Add translations for: German

    Currently translated at 90.0% (1672 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/

commit ffe9682df9a5a65dc1f582844e566cf3eff32a08
Author: Unreal Vision <unrealvisionyt@gmail.com>
Date:   Tue Jun 10 14:56:54 2025 +0200

    🌐 Add translations for: French

    Currently translated at 98.7% (1833 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/

commit f8f4abe8007491f5392bfb1ab5cbfba618e22700
Author: Ingrid Pigueron <ingridp.uxr@gmail.com>
Date:   Mon Jun 9 19:44:09 2025 +0200

    🌐 Add translations for: French

    Currently translated at 98.7% (1833 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/

commit bb6fee5a9ba86eb823c22fae22a49afdcc36c659
Author: Rudra Harsh <harshrudra020@gmail.com>
Date:   Mon Jun 9 15:21:41 2025 +0200

    🌐 Add translations for: Hindi

    Currently translated at 0.5% (11 of 1857 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hi/

commit 55b4c5c07827d4b6eda2ffcc71caca81e6f36534
Author: Madalena Melo <madalena.melo@kaleidos.net>
Date:   Mon Jun 9 11:52:50 2025 +0200

    🌐  Added translation for: Hindi
2025-08-11 09:14:05 +02:00
Andrey Antukh
f02667e031 Merge remote-tracking branch 'origin/staging' into develop 2025-08-11 09:12:03 +02:00
Alejandro Alonso
8e0a6e4123 🐛 Fix auto height is fixed in the HTML inspect tab for text elements (#7078) 2025-08-11 09:07:43 +02:00
Marina López
0131cd6f8b Display the total price of the subscription and the cap amount (#7088) 2025-08-11 09:07:24 +02:00
Alejandro Alonso
99b40cecf2 Revert "🐛 Fix big blur rendering for wasm render"
This reverts commit c7a4c67d83.
2025-08-09 08:44:52 +02:00
Alejandro Alonso
c7a4c67d83 🐛 Fix big blur rendering for wasm render 2025-08-09 08:42:55 +02:00
Florian Schrödl
c29a8cb0c4 Implement font-weight token (#7089) 2025-08-08 11:11:18 +02:00
Andrey Antukh
288a7b21d6 Merge tag '2.9.0-RC8' 2025-08-08 09:47:42 +02:00
andrés gonzález
32bd08533d 💄 Remove slide about overrides in the release notes (#7086) 2025-08-08 09:46:40 +02:00
Yamila Moreno
c1aae12327 📎 Improve gh actions 2025-08-07 18:08:25 +02:00
Yamila Moreno
23a6f4b7c1 📎 Improve gh actions 2025-08-07 18:07:47 +02:00
Yamila Moreno
a9f4fe84fa 📎 Improve gh actions 2025-08-07 17:51:20 +02:00
Andrey Antukh
133e6e1e68 Merge tag '2.9.0-RC7' 2025-08-07 16:30:30 +02:00
Andrey Antukh
f7832585dc Add tests for snapshot locking (#7085) 2025-08-07 16:27:43 +02:00
Eva Marco
e34bfb50a8 🐛 Fix font variant names for source sans pro font (#7087) 2025-08-07 16:25:15 +02:00
Andrey Antukh
6abd045273 🐛 Add missing generator for token-set file change operation (#7080)
* 🐛 Add missing generator for token-set file change operation

* 🐛 Use ::sm/any instead of :any for on get-file-data-for-thumbnail rpc method

Mainly because :any will use a very generic generator that can generate
instances of Character that are not directly serializable to JSON
2025-08-07 12:36:14 +02:00
Florian Schrödl
0a106c2604 🐛 Fix import of borderWidth (#7084) 2025-08-07 12:16:18 +02:00
Andrey Antukh
8f5f88743b Normalize font variant naming for google fonts (#7083) 2025-08-07 11:14:40 +02:00
Florian Schrödl
9562d2f1f0 Allow font-families with surrounding quotation marks (#7081) 2025-08-07 11:13:04 +02:00
Andrey Antukh
ea482f16c8 💄 Add minor cosmetic changes to dashboard sidebar components (#7052)
* 💄 Change component decl style of sidebar-team-switch

* 💄 Change component decl style of sidebar-search

* 💄 Add general cosmetic changes to sidebar components
2025-08-07 10:57:46 +02:00
Alejandro Alonso
50634e1a4c 🐛 Fix selection lost when using keyboard 2025-08-07 09:28:17 +02:00
Andrey Antukh
56de96d25b Merge remote-tracking branch 'origin/staging' into develop 2025-08-07 08:04:40 +02:00
Luis de Dios
5d1c20c47c 🐛 Fix focus new added property (#7065) 2025-08-07 07:47:17 +02:00
Marina López
778a608854 🐛 Fix tooltip for icon plans from team dropdown (#7075) 2025-08-07 07:43:49 +02:00
andrés gonzález
7de8e10721 🐛 Fix changelog link (#7070) 2025-08-07 07:43:11 +02:00
andrés gonzález
80f41c4a69 🐛 Fix issue where Alt + arrow keys shortcut interferes with letter-spacing (#7071) 2025-08-07 07:42:33 +02:00
Luis de Dios
a3557a81e4 🐛 Fix add space between the name and the index of new properties (#7068) 2025-08-07 07:41:33 +02:00
Luis de Dios
0a02e526ee Treat empty names as a malformed formula (#7073) 2025-08-07 07:41:07 +02:00
Luis de Dios
db9349e764 💄 Style improvements in the swap panel (#7077) 2025-08-07 07:40:38 +02:00
Belén Albeza
60903f349f 🐛 Fix color picker not working with the new renderer 2025-08-06 18:00:48 +02:00
Florian Schrödl
b91e955486 Text decoration fixes (#7066)
*  Show text more options when apply text decoration token

* 🐛 Fix placeholder
2025-08-06 16:23:38 +02:00
Marina López
a76a9fae41 🐛 Fix an unused translation (#7074) 2025-08-06 13:28:02 +02:00
Andrey Antukh
f7cfbdd229 🐛 Comment the problematic migration 2025-08-05 22:05:52 +02:00
Andrey Antukh
e28d2842f6 🐛 Revert the revert of orientation detection on media
This reverts commit 515cbf7bef.
2025-08-05 22:03:09 +02:00
Andrey Antukh
ccc3ca0948 Disable virtual threads on http server 2025-08-05 20:34:47 +02:00
Andrey Antukh
515cbf7bef 🐛 Revert orientation detection on media 2025-08-05 19:30:01 +02:00
Andrey Antukh
c320cbc47b 🐛 Revert to semaphore based climit impl 2025-08-05 19:17:35 +02:00
Yamila Moreno
6166f45a7f Merge pull request #7069 from penpot/yms-update-k8s-documentation
📚 Update k8s documentation
2025-08-05 15:44:59 +02:00
Yamila Moreno
c103eb86db 📚 Update k8s documentation 2025-08-05 13:55:39 +02:00
Alejandro Alonso
61d93d69b1 Merge pull request #7048 from penpot/elenatorro-11704-fix-symbols-font
 Include symbols support
2025-08-05 13:40:16 +02:00
Belén Albeza
d5abf34538 🐛 Fix text style change not being applied (#7036)
* 🐛 Fix text styles not being applied to current cursor

* 🔧 Add text file for bug 11552

* 📚 Update changelog
2025-08-05 13:35:54 +02:00
Alejandro Alonso
7efc297cd9 Merge pull request #7053 from penpot/ladybenko-11678-compact-keep-ratio-flag
 Compact fill serialization (opacity + flags)
2025-08-05 13:29:49 +02:00
Alejandro Alonso
98522a390e 🐛 Fix frames extrect calculation 2025-08-05 13:25:25 +02:00
Andrey Antukh
46969585ed Disable native buffers usage on xnio
A temporal change for investigate native memory leak
2025-08-04 22:13:08 +02:00
Andrey Antukh
47882c5419 Add missing parameter on climit instance creation 2025-08-04 19:53:56 +02:00
andrés gonzález
019d5e083a 💄 Change copys at the 2.9 release slides (#7063) 2025-08-04 19:53:50 +02:00
Belén Albeza
6fc949844d Use 1 byte to store opacity in gradient fills 2025-08-04 14:13:40 +02:00
Andrey Antukh
97e8c9250a Merge remote-tracking branch 'origin/staging' into develop 2025-08-04 14:10:57 +02:00
Andrey Antukh
85f6cf32ae 🐛 Several bugfixes (#7062)
* 🐛 Fix incorrect status validation on subscription internal api

* 🐛 Make the shortcuts overwritting optional
2025-08-04 13:54:29 +02:00
Marina López
ded8e39e73 🐛 Fix hidden button in subscribe modal when there is a large number of teams (#7061) 2025-08-04 13:16:58 +02:00
Florian Schrödl
551313d3de Text case fixes (#7058)
*  Add placeholder

*  Remove status icon
2025-08-04 12:13:57 +02:00
Andrey Antukh
e730200873 🐛 Fix pinned project ordering on dashboard sidebar (#7060) 2025-08-04 12:07:19 +02:00
Andrey Antukh
433e61bc4e Merge remote-tracking branch 'origin/staging' into develop 2025-08-04 11:52:24 +02:00
Andrei Fëdorov
818b03d8f2 Add text decoration token (#7049) 2025-08-04 10:47:09 +02:00
Belén Albeza
ae3aef8dcc Use existing space for storing image fill flags 2025-08-04 10:42:56 +02:00
Luis de Dios
1b30325640 🐛 Fix adjust focus in select component (#7024) 2025-08-04 10:21:17 +02:00
Yamila Moreno
44d626d578 📎 Fix typo in documentation 2025-08-01 16:32:42 +02:00
Francis Santiago
4501d13961 📚 Clarify OpenShift requirements (#6937)
* 📚 Clarify OpenShift requirements

* 📚 Remove the click for expanding
2025-08-01 16:26:04 +02:00
Elena Torró
c8f5ec4698 ♻️ Refactor dropdown-menu and make dropdown visibility exclusive (#6956)
* 🐛 Fix having multiple dropdown menus opened on dashboard page

* ♻️ Refactor dropdown-menu

Make it follow new standards and make it external api more usable,
not depending on manually provided list of ids.

This also implements the autoclosing of "other" active/open
dropdown-menu (or other similar components).

* 📎 Add PR feedback changes

* 🐛 Fix incorrect event handling on project-menu

* 🐛 Fix unexpected exception

---------

Co-authored-by: Andrey Antukh <niwi@niwi.nz>
2025-08-01 16:14:15 +02:00
Pablo Alba
07b15819d4 🎉 Add the ability to create variants from a selection (#7045)
* 🎉 Add the ability to create variants from a selection

* 📎 Add PR feedback changes

* 💄 Add minor cosmetic changes

---------

Co-authored-by: Andrey Antukh <niwi@niwi.nz>
2025-08-01 15:39:46 +02:00
Elena Torró
f519c6ef46 Center team settings properly (#7021) 2025-08-01 15:17:32 +02:00
Juan de la Cruz
baa1cfb2f8 🎉 Add 2.9 release slides (#7019) 2025-08-01 14:59:11 +02:00
Eva Marco
905699d15a Add info to apply-token events (#7050) 2025-08-01 14:00:30 +02:00
Eva Marco
fe53869308 🐛 Fix small details on number token application (#7051) 2025-08-01 13:52:09 +02:00
Elena Torro
c69ee35e18 Include symbols support 2025-08-01 13:41:12 +02:00
Luis de Dios
8d5ee92f16 🐛 Fix show 'add new property' from menu when a variant is selected (#7042) 2025-08-01 13:21:19 +02:00
Andrey Antukh
e55d184d2b Merge remote-tracking branch 'origin/staging' into develop 2025-08-01 13:13:56 +02:00
Andrey Antukh
50076bac83 Merge remote-tracking branch 'origin/main' into staging 2025-08-01 13:10:52 +02:00
Eva Marco
e976714964 🐛 Fix error on inspect tab with texts (#7032) 2025-08-01 13:03:43 +02:00
Brandon Currell
44bc4b7fa4 🐳 Add missing package in the exporter Docker image (#7026)
penpot-exporter requires poppler-utils for exporting to a PDF, but it is missing.
Added the package to the Dockerfile in the RUN section where dependencies are
being installed.

Signed-off-by: Brandon Currell <brandon+git@currell.pw>
2025-08-01 13:00:51 +02:00
Brandon Currell
ce0d6ffda2 🐳 Add missing package in the exporter Docker image (#7026)
penpot-exporter requires poppler-utils for exporting to a PDF, but it is missing.
Added the package to the Dockerfile in the RUN section where dependencies are
being installed.

Signed-off-by: Brandon Currell <brandon+git@currell.pw>
2025-08-01 12:59:39 +02:00
Yamila Moreno
5c14f486d7 🐳 Update Imagemagick version 2025-08-01 12:49:11 +02:00
Andrey Antukh
0cbd980b68 🎉 Add imagemagick docker image build scripts (#6925)
* 🎉 Add imagemagick docker image build scripts

* 📎 Add PR feedback changes
2025-08-01 12:48:47 +02:00
Andrey Antukh
bc2308f2ce Merge pull request #7011 from penpot/lmcrean-lmcrean-milestones-version-lock
🎉 Add the ability to lock/unlock of file versions
2025-08-01 12:40:07 +02:00
Laurie Crean
0b47a366ab Implement version locking functionality for file snapshots
Signed-off-by: Laurie Crean <lmcrean@gmail.com>
2025-08-01 11:41:30 +02:00
Andrey Antukh
1892fa6782 Merge pull request #7043 from penpot/niwinz-develop-refactor-time-helpers
♻️ Refactor time related namespaces
2025-08-01 11:35:07 +02:00
Andrey Antukh
6f35b7db24 Add reader tag support for tokens related types 2025-08-01 11:20:01 +02:00
Andrey Antukh
4d9e070bcd Add reader tag support for types path data 2025-08-01 11:20:01 +02:00
Andrey Antukh
61fe8e8d8e Add reader tag support for geom matrix 2025-08-01 11:20:01 +02:00
Andrey Antukh
0934095e96 Add reader tag support for geom point 2025-08-01 11:20:01 +02:00
Andrey Antukh
eba2ff7d8d Add impl for Inst protocol for FileTime class 2025-08-01 11:20:01 +02:00
Andrey Antukh
283eb0419c ♻️ Refactor time related namespaces
Mainly removes the custom app.util.time namespace
from frontend and backend and normalize all to use
the app.common.time namespace
2025-08-01 11:20:01 +02:00
Elena Torro
9a0c36c442 🐛 Fix default color when neither fill nor background color is set 2025-07-31 16:17:13 +02:00
luisδμ
ff1d26294a 🐛 Fix create properties with a default value instead of an empty one (#7033) 2025-07-31 15:01:51 +02:00
Eva Marco
63bfbbb3c6 🐛 Fix typography token context menu (#7038) 2025-07-31 15:00:14 +02:00
Eva Marco
95dda2b1af 🐛 Fix stroke width token application (#7039) 2025-07-31 14:59:48 +02:00
Elena Torró
76d725559e Set default new text fill color depending on background color (#6998) 2025-07-31 12:31:54 +02:00
luisδμ
d7ec8ccbc0 🐛 Fix property name cannot be empty (#7030) 2025-07-31 12:27:10 +02:00
Juanfran
6def5e285b 🐛 Apply design review fixes for variant connection help (#11186) (#7016) 2025-07-31 12:26:04 +02:00
Andrey Antukh
5170872961 Merge pull request #7031 from penpot/eva-fix-export-button-width
🐛 Fix export button width on inspect tab
2025-07-31 12:25:03 +02:00
Andrey Antukh
b46e9ee065 Merge remote-tracking branch 'origin/staging' into develop 2025-07-31 12:22:14 +02:00
Andrey Antukh
871ca68e1e 📎 Allow revert commits on github commit checker 2025-07-31 12:14:29 +02:00
Andrey Antukh
0ab896fc76 Revert " Highlight first font in font selector search, apply on Enter/click"
This reverts commit e62567d09e.
2025-07-31 12:14:29 +02:00
Andrey Antukh
6a4b548457 Revert "🐛 Fix font selector highlight inconsistency (#6990)"
This reverts commit 708a40bff1.
2025-07-31 12:14:29 +02:00
Elena Torró
0457ca4fe5 Use 'desvincular' instead of 'desacoplar' (#7020) 2025-07-31 11:50:46 +02:00
Elena Torro
083be7df88 🐛 Fix focus editor check 2025-07-31 10:05:37 +02:00
Eva Marco
695a399941 🐛 Fix export button width on inspect tab 2025-07-31 09:30:46 +02:00
luisδμ
200b69fae2 📚 Improve documentation for combobox and select in the storybook (#7006) 2025-07-31 09:05:54 +02:00
Eva Marco
a32463fada 🐛 Fix tooltip position after several shows and hides (#7022) 2025-07-31 09:00:05 +02:00
luisδμ
3b04cd37ff 🐛 Fix empty values should not have dimmed text (#7015) 2025-07-30 18:06:39 +02:00
Eva Marco
5d44c88988 🐛 Fix token pill not showing position application on dimension token type (#7018) 2025-07-30 14:24:10 +02:00
luisδμ
4d688b1d55 🐛 Fix title for button when trying to remove last variant property (#7017) 2025-07-30 13:28:42 +02:00
Andrey Antukh
e43b6fb0b7 Merge pull request #6992 from penpot/niwinz-artboard-defaults
 Add defaults for artboard drawing
2025-07-30 13:27:54 +02:00
Andrey Antukh
7895f03447 💄 Add minor cosmetic changes 2025-07-30 13:11:28 +02:00
Marina López
1f42b2f72d Show preset name when an option is selected 2025-07-30 13:11:28 +02:00
Andrey Antukh
f4adfe56be Add defaults for artboard drawing 2025-07-30 13:11:28 +02:00
Alejandro Alonso
33a679fbc0 Merge pull request #6940 from penpot/niwinz-develop-inplace-import
🎉 Add support for in-place binfile import
2025-07-30 12:42:37 +02:00
Pablo Alba
9db67cc5e8 🐛 Fix bad swap slot after two swaps (#6962)
* 🐛 Fix bad swap slot after two swaps

*  MR changes
2025-07-30 12:35:27 +02:00
luisδμ
9834f0596b 🐛 Fix move empty variant values to the end when component is selected (#7009)
* 🐛 Move empty variant values to the end when component is selected

* 📎 PR changes
2025-07-30 12:29:51 +02:00
Andrey Antukh
ce87d797d1 Merge pull request #7014 from penpot/niwinz-staging-regression-3
🐛 Fix several issues related to font/text related tokens
2025-07-30 12:25:28 +02:00
Andrey Antukh
37cec8891f 🎉 Add inplace binfile import support 2025-07-30 12:23:40 +02:00
Andrey Antukh
fd62141c04 Disable pointer-map feature (temporary)
Because the upcoming refactor changes several aspects
of that feature and it not make sense to continue have
this active for now, until refactor is merged.
2025-07-30 12:06:41 +02:00
Andrey Antukh
4bdba6894d Add get-with-sql helper to db module 2025-07-30 12:06:41 +02:00
Andrey Antukh
6c7fef29a8 Improve file data type constructor 2025-07-30 12:06:41 +02:00
Andrey Antukh
a77edc5aa2 Add better uri constructor function 2025-07-30 12:06:41 +02:00
Andrey Antukh
7fde1436e1 🐛 Add missing styles to the empty node on editor-v1 2025-07-30 11:45:39 +02:00
Andrey Antukh
e1c5a32fcb 💄 Fix indentation style on generate-unapply-tokens 2025-07-30 11:45:19 +02:00
Andrey Antukh
b262e6a46f 🐛 Fix incorrect condition on checking text shape attrs 2025-07-30 11:44:07 +02:00
Yamila Moreno
31f37a20e3 Merge pull request #7013 from penpot/yms-simplify-gh-actions
 Simplify gh-actions workflows
2025-07-30 11:42:39 +02:00
alonso.torres
06b4ae5c96 🐛 Fix problem with layout update touching geometry 2025-07-30 11:27:15 +02:00
Alejandro Alonso
a3e24785d3 Merge pull request #7003 from penpot/alotor-fix-transform
🐛 Fix wasm transform issues
2025-07-30 11:10:54 +02:00
Yamila Moreno
78102210a5 Simplify gh-actions workflows 2025-07-30 10:45:01 +02:00
Pablo Alba
7553d68100 🐛 Fix corner case of chained switch and libraries (#7008) 2025-07-30 08:44:27 +02:00
Andrey Antukh
2e726b62c3 📎 Update changelog 2025-07-29 20:07:05 +02:00
Andrey Antukh
02acd81c2c 🐛 Add missing profile prop to access style component (#7007)
* 💄 Fix request-access component style

* 🐛 Add missing profile prop to access style component
2025-07-29 16:04:15 +02:00
Andrey Antukh
44daa1cf65 Merge remote-tracking branch 'origin/staging' into develop 2025-07-29 15:22:14 +02:00
Andrey Antukh
bae2de75ff Merge branch 'main' into staging 2025-07-29 15:21:58 +02:00
Andrey Antukh
b68c426cd1 🐛 Fix exception on fills menu when binary-fills flag is active
And multiple shapes are selected.
2025-07-29 15:10:32 +02:00
Andrey Antukh
5161ef15bf 🐛 Fix regression on show access request dialog (#7005) 2025-07-29 14:58:02 +02:00
Andrey Antukh
bdbaa6d597 Merge remote-tracking branch 'origin/staging' into develop 2025-07-29 14:34:35 +02:00
Eva Marco
36d3d94ec9 🐛 Fix X & Y position do not sincronize with tokens (#7004) 2025-07-29 14:32:06 +02:00
Andrey Antukh
0e675a725d 📎 Fix linter issues on frontend
Caused by the merge from staging to develop
2025-07-29 14:15:01 +02:00
Andrey Antukh
17447d7610 Remove restriction of duplicate bindings on mousetrap 2025-07-29 14:14:19 +02:00
Andrey Antukh
2a3046ba2e 📎 Fix linter issue on common 2025-07-29 14:10:49 +02:00
Andrey Antukh
54d76123d0 Merge remote-tracking branch 'origin/staging' into develop 2025-07-29 14:06:53 +02:00
Andrey Antukh
6ffbf08826 Merge pull request #6969 from penpot/andy-show-keyboard-distance
 Show distance between layers while moving them with the keyboard
2025-07-29 13:32:53 +02:00
andrés gonzález
708a40bff1 🐛 Fix font selector highlight inconsistency (#6990)
* 🐛 Fix font selector highlight inconsistency

*  Add minor performance enhancements

---------

Co-authored-by: Andrey Antukh <niwi@niwi.nz>
2025-07-29 13:12:54 +02:00
Andrey Antukh
d84ee8bb65 Optimize mousetrap binding setup 2025-07-29 13:12:28 +02:00
Elena Torró
a16f40cb73 Set page objects once on wasm render(#6994) 2025-07-29 13:00:40 +02:00
Andrey Antukh
02cff2740f Remove restriction of duplicate bindings on mousetrap 2025-07-29 12:51:39 +02:00
Andres Gonzalez
6049d97ed9 Display continously the distances between layers
When a user moves a layer with the keyboard.
2025-07-29 12:51:04 +02:00
Andrey Antukh
3f657a0c04 Merge pull request #6997 from penpot/alotor-fix-wasm-bugs
🐛 Fix wasm problems
2025-07-29 12:42:26 +02:00
Marina López
efaf6573bd 📎 Update monetization texts (#7002) 2025-07-29 12:42:11 +02:00
alonso.torres
4b020dcc1a 🐛 Fix problem when changing size with user input 2025-07-29 12:16:08 +02:00
alonso.torres
223a468bbf 🐛 Fix problem when moving layout with measure input 2025-07-29 12:15:53 +02:00
alonso.torres
ddd0e447f6 🐛 Fix problem when creating shapes after new page 2025-07-29 12:15:27 +02:00
alonso.torres
0c0c81e9a5 🐛 Fix problem with shape to path not working 2025-07-29 12:15:27 +02:00
Yamila Moreno
001bcbce59 Merge pull request #6995 from penpot/yms-update-imagemagick-version
🐳 Update Imagemagick version
2025-07-29 10:58:32 +02:00
Yamila Moreno
c195c07a3f 🐳 Update Imagemagick version 2025-07-29 10:37:11 +02:00
Alejandro Alonso
f5298f51e7 🐛 Fix the context menu always closes after any action (#6944) 2025-07-29 09:50:55 +02:00
Alejandro Alonso
46c440fef2 🐛 Fix remove color button in the gradient editor (#6993) 2025-07-28 17:48:05 +02:00
Aitor Moreno
e6ac2c1159 Merge pull request #6880 from penpot/elenatorro-fix-editor-crash-on-deleting-entire-selection-firefox
🐛 Handle empty paragraph on entire selected text deletion
2025-07-28 17:39:25 +02:00
Florian Schrödl
4c605b8151 Implement text case token (#6978) 2025-07-28 17:36:06 +02:00
Elena Torro
2913899aa5 🐛 Fix auto-format on font 2025-07-28 17:31:36 +02:00
Elena Torro
ecd3245612 🐛 Fix request render after pending calls have finished on set-objects 2025-07-28 17:31:36 +02:00
Xaviju
dadeda4476 🐛 Display stroke properties in inspect tab (#6955) 2025-07-28 16:17:54 +02:00
Elena Torró
d129557f77 Merge pull request #6988 from penpot/superalex-fix-render-wasm-visible-0-width-strokes
🐛 Fix visible 0 width strokes in wasm render
2025-07-28 14:36:07 +02:00
Alejandro Alonso
e77f8b572a Merge pull request #6953 from penpot/superalex-fix-component-changes-not-propagated
🐛 Fix component changes not propagated
2025-07-28 12:53:37 +02:00
Alejandro Alonso
ade5eecf80 🐛 Fix component changes not propagated 2025-07-28 12:38:09 +02:00
Elena Torró
ff7e34e308 Merge pull request #6984 from penpot/superalex-fix-switching-theme-form-wasm-render
🐛 Fix switching theme for wasm render
2025-07-28 11:30:41 +02:00
Yamila Moreno
88055294a2 Reuse github workflows (#6989) 2025-07-28 09:03:47 +02:00
Alejandro Alonso
e473f45048 🐛 Fix visible 0 width strokes in wasm render 2025-07-28 08:46:47 +02:00
Alejandro Alonso
bcee670ac6 🐛 Fix switching theme for wasm render 2025-07-28 07:44:56 +02:00
andrés gonzález
97fc7702b8 📚 Improve and clarify 'Hide and lock layers' section (#6975) 2025-07-25 14:53:32 +02:00
andrés gonzález
54fcd58531 📚 Add doc for resizing text (#6974)
* 📚 Add doc for resizing text

* 📚 Update docs for text resizing

Co-authored-by: Madalena Melo <madalena.melo@kaleidos.net>
Signed-off-by: andrés gonzález <andres.gonzalez79@gmail.com>

---------

Signed-off-by: andrés gonzález <andres.gonzalez79@gmail.com>
Co-authored-by: Madalena Melo <madalena.melo@kaleidos.net>
2025-07-25 13:20:52 +02:00
andrés gonzález
b7a8747f00 📚 Add doc for tokens zip file import option (#6973) 2025-07-25 13:20:39 +02:00
Elena Torró
b93e96a18d Merge pull request #6958 from penpot/superalex-fix-texts-bigger-than-selrects-in-multiple-tiles
🐛 Fix rendering texts bigger than their selrects in mutiple tiles
2025-07-25 13:14:29 +02:00
Alejandro Alonso
b70f6af2df 🐛 Fix rendering texts bigger than their selrects in mutiple tiles 2025-07-25 12:56:57 +02:00
Andrey Antukh
d00de7d5a4 Merge pull request #6960 from penpot/xaviju-remove-image-shape-type-fix
🐛 Remove image type from inspect tab panels
2025-07-25 12:49:57 +02:00
andrés gonzález
5ae4dde222 📚 Add font size token doc (#6972) 2025-07-25 12:30:56 +02:00
Elena Torro
0e20bb6271 🐛 Fix text width calculation 2025-07-25 12:27:26 +02:00
Xaviju
2fbd4b07e0 🐛 Remove image type from inspect tab panels 2025-07-25 12:08:01 +02:00
Elena Torró
bd15ef4618 Merge pull request #6854 from penpot/ladybenko-11522-fix-missing-font
🐛 Fix missing font when pasting text
2025-07-25 11:55:56 +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
Belén Albeza
a242962113 🐛 Fix missing font when pasting text (editor v1) 2025-07-25 09:48:20 +02:00
Elena Torro
2b95e6b7a9 🐛 Fix update canvas background color 2025-07-25 09:19:59 +02:00
Florian Schroedl
58a843ea23 Remove token when applying tyopgraphic asset style 2025-07-24 17:51:53 +02:00
Florian Schroedl
4189d01844 Remove token when applying tyopgraphic asset style 2025-07-24 17:14:04 +02:00
Andrés Moya
57330f53e2 🔧 Use id instead of name for tokens crud 2025-07-24 15:21:18 +02:00
Florian Schroedl
f6b97af148 🐛 Fix spacing menu not available in dimensions token 2025-07-24 15:20:10 +02:00
Florian Schroedl
1c79e726af 🐛 Fix spacing menu not available in dimensions token 2025-07-24 15:16:01 +02:00
Alejandro Alonso
76b7287bf1 Merge pull request #6864 from penpot/niwinz-staging-snapshot-migrations
 Add migrations handling on file snapshots
2025-07-24 11:41:17 +02:00
Andrey Antukh
019bc2f183 Add migrations handling on file snapshots 2025-07-24 11:40:54 +02:00
Florian Schroedl
8c96a617be Add test for spacing token application rules 2025-07-24 11:01:49 +02:00
Florian Schroedl
1f15e9b81e Fix spacing token for frame children 2025-07-24 11:01:49 +02:00
Alejandro Alonso
f7627e515a Merge pull request #6876 from penpot/niwinz-develop-minor-changes-logical-deletion
 Change default status filtering for logical deletion
2025-07-24 10:58:49 +02:00
Andrey Antukh
d08c94d5a6 Change default status filtering for logical deletion 2025-07-24 10:43:45 +02:00
Florian Schroedl
cccea3dc71 Add test for spacing token application rules 2025-07-24 10:42:08 +02:00
Florian Schroedl
c82c39caf3 Fix spacing token for frame children 2025-07-24 10:42:08 +02:00
Xaviju
01896501c1 🐛 Remove image type from inspect tab panels (#6959) 2025-07-24 09:37:38 +02:00
Andrey Antukh
33cf75e933 Merge remote-tracking branch 'origin/staging' into develop 2025-07-24 09:00:29 +02:00
Andrey Antukh
3f9a1525ca Merge pull request #6954 from penpot/alotor-fix-gradient-stroke
🐛 Fix opacity on stroke gradients
2025-07-24 08:59:02 +02:00
alonso.torres
52c1e227d5 🐛 Fix change from gradient to solid color 2025-07-24 08:58:48 +02:00
alonso.torres
955538b12a 🐛 Fix opacity on stroke gradients 2025-07-24 08:58:46 +02:00
Alonso Torres
dfc8a1da4a Fix problem with booleans selection (#6950) 2025-07-24 08:57:02 +02:00
Alonso Torres
8254af27cb 🐛 Fix problem when changing between flex/grid layout (#6949) 2025-07-24 08:54:07 +02:00
Pablo Alba
b477ca0508 🐛 Fix design review bugs on variants advanced retrieve (#6948) 2025-07-24 08:53:26 +02:00
Elena Torró
f76391ecbb 🐛 Enable switch to system theme on options menu (#6946) 2025-07-24 08:43:03 +02:00
Andrés Moya
c49e9fbf18 🐛 Fix last migration of token sets (#6957) 2025-07-24 08:42:16 +02:00
Marina López
122701ee7b 🐛 Fix modal submit button for unpaid or canceled subscriptions (#6947) 2025-07-24 08:41:39 +02:00
Andrés Moya
351362bb50 🐛 Fix migration from tokens lib version 1.2 2025-07-23 15:28:53 +02:00
Andrey Antukh
9a6989d2ca 📎 Fix linter issues introduced on merging staging into develop 2025-07-23 12:27:04 +02:00
Andrey Antukh
8aebe1a41e Merge remote-tracking branch 'origin/staging' into develop 2025-07-23 12:26:09 +02:00
Andrey Antukh
1acf78d57c Merge branch 'main' into staging 2025-07-23 12:09:37 +02:00
Andrey Antukh
523373dfa2 📎 Update .gitignore file 2025-07-23 12:09:15 +02:00
Andrés Moya
f55e7d8165 🐛 Keep shape level groups for token sync later 2025-07-23 12:04:31 +02:00
Andrés Moya
9fdc6be465 🐛 Fix bad touched attributes when applying tokens to text shapes 2025-07-23 12:04:31 +02:00
Alejandro Alonso
9390c1e7be 🐛 Fix "Copy as SVG" generates different code from the Inspect panel (#6945) 2025-07-23 11:46:58 +02:00
Florian Schroedl (aider)
d788a4d252 Implement new token-type :font-families 2025-07-23 11:26:28 +02:00
Eva Marco
b20b272eae 📚 Update changelog 2025-07-23 09:53:49 +02:00
Aitor Moreno
2cddc6fb5b Merge pull request #6583 from penpot/niwinz-fills-binary-type
🎉 Fills as binary type
2025-07-23 09:26:26 +02:00
Alejandro Alonso
d46b519524 🐛 Fix remove color button in the gradient editor (#6942) 2025-07-23 09:04:54 +02:00
Andrey Antukh
4effd375a9 Add several improvements to admin pannel 2025-07-23 08:33:33 +02:00
Andrey Antukh
4e753dc474 💄 Use resolved schemas instead of references
For several schemas on common types
2025-07-23 08:33:28 +02:00
Andrey Antukh
fbf63b98c3 Reuse file data checkers on file validate ns 2025-07-23 08:33:23 +02:00
Marina López
3df557b370 ♻️ Remove the workaround for updating the subscription after subscribing (#6938) 2025-07-23 08:10:20 +02:00
Aitor Moreno
cdb600b081 Remove unused code 2025-07-23 08:03:23 +02:00
Aitor Moreno
ffb688696b 🎉 Add keep-aspect-ratio integration 2025-07-23 08:03:23 +02:00
Andrey Antukh
8bb210e7b6 🎉 Add binary fills integration 2025-07-23 08:03:23 +02:00
Andrey Antukh
9ee488009f ♻️ Add substantial refactor on how types are organized
This mainly affects types related to colors, fills and texts, moving library
based operations from color namespace.
2025-07-23 08:03:23 +02:00
Andrey Antukh
96d9b102b6 Add type hints on config ns 2025-07-23 07:32:11 +02:00
Andrey Antukh
16fba49937 Expose flags for common submodule 2025-07-23 07:32:11 +02:00
Andrey Antukh
af99bd620c Use binary fills to write data to wasm memory 2025-07-23 07:32:11 +02:00
Andrey Antukh
8a58b9d459 Use new write-bool helper on fills metadata 2025-07-23 07:32:11 +02:00
Andrey Antukh
e3c62075b8 Write keep-aspect-ration on fill binary format 2025-07-23 07:32:11 +02:00
Andrey Antukh
22a70eb5b2 🎉 Add write-bool helper to buffer ns helpers 2025-07-23 07:32:11 +02:00
Andrey Antukh
4e2998a366 ♻️ Rename fill to fills namespace 2025-07-23 07:32:11 +02:00
Andrey Antukh
158f759cde Add binary fills initialization on workspace fetch 2025-07-23 07:32:11 +02:00
Aitor Moreno
3e3be95420 Merge pull request #6927 from penpot/elenatorro-test-fix-text-shadows
🐛 Fix text shadows apply text opacity
2025-07-23 06:59:28 +02:00
Elena Torró
b5808701ec Merge pull request #6873 from penpot/niwinz-develop-enhancements-1
 Add improvements for backend admin/debug page
2025-07-22 15:14:08 +02:00
Xaviju
35f3125fff 🐛 Fix null when copying shadow color on inspect tab (#6923)
Co-authored-by: Xavier Julian <xaviju@proton.me>
2025-07-22 14:49:36 +02:00
Elena Torro
5427d207cd 🐛 Fix text shadows apply text opacity 2025-07-22 14:34:10 +02:00
Xaviju
ee23d72d13 🐛 Fix null when copying shadow color on inspect tab (#6923)
Co-authored-by: Xavier Julian <xaviju@proton.me>
2025-07-22 14:06:06 +02:00
Francis Santiago
f22aa606ce 📚 Clarify OpenShift requirements (#6937)
* 📚 Clarify OpenShift requirements

* 📚 Remove the click for expanding
2025-07-22 14:05:02 +02:00
Andrey Antukh
d914314c1c Merge remote-tracking branch 'origin/staging' into develop 2025-07-22 13:04:57 +02:00
Pablo Alba
4aa9f1f62b 🐛 On component swap do not show secondary variants (#6928) 2025-07-22 12:33:37 +02:00
David Barragán Merino
9d288486d7 🐛 Subscription current period dates could be null (#6931)
`current-period-start` and `current-period-end` can be null if the invoice has not yet been created in stripe. This happens after the subscription is created, before the webhook is sent.
2025-07-22 12:32:42 +02:00
Pablo Alba
ea5521485a ♻️ Remove redundant flag on text overrides (#6933) 2025-07-22 12:32:24 +02:00
Marina López
f768ffbdad 🐛 Fix wrong behaviour for unpaid or canceled subscriptions (#6932) 2025-07-22 12:31:45 +02:00
Andrey Antukh
4f0d3660de 🎉 Add imagemagick docker image build scripts (#6925)
* 🎉 Add imagemagick docker image build scripts

* 📎 Add PR feedback changes
2025-07-22 11:51:13 +02:00
Andrey Antukh
fa72bb4adf Add several improvements to admin pannel 2025-07-22 10:06:29 +02:00
Andrey Antukh
ea0044f69a 💄 Use resolved schemas instead of references
For several schemas on common types
2025-07-22 10:06:29 +02:00
Andrey Antukh
7e493376a4 Reuse file data checkers on file validate ns 2025-07-22 10:06:29 +02:00
Andrey Antukh
8c5afe5ab3 📎 Add next release entries to the changelog 2025-07-21 21:20:46 +02:00
Andrey Antukh
7ccb742ef3 Merge remote-tracking branch 'origin/develop' into staging 2025-07-21 21:15:54 +02:00
Andrey Antukh
7bc29c22ed Merge remote-tracking branch 'origin/develop' into staging 2025-07-21 21:07:24 +02:00
Andrey Antukh
1d550eaa18 Merge remote-tracking branch 'origin/staging' into develop 2025-07-21 21:03:19 +02:00
Andrey Antukh
b71ec4bfe0 Simplify docker build script (#6924) 2025-07-21 20:45:03 +02:00
Andrey Antukh
827bbf6a7f Merge pull request #6926 from penpot/juanfran-close-libraries-modal-on-esc
🐛 Fix ESC key not closing Add/Manage Libraries modal
2025-07-21 15:48:40 +02:00
Juanfran
2db0cc0cbf 🐛 Fix ESC key not closing Add/Manage Libraries modal 2025-07-21 15:23:54 +02:00
Andrey Antukh
42ef01b339 Merge pull request #6871 from penpot/niwinz-develop-login-enhancements
 Allow login dialog on settings
2025-07-21 15:19:06 +02:00
Aitor Moreno
fdaef2be69 Merge pull request #6891 from penpot/elenatorro-test-style-decoration-blending
🔧 Add text decoration styles
2025-07-21 15:18:18 +02:00
Pablo Alba
ae3213f5d4 🐛 Fix text override corner case 2025-07-21 12:40:03 +02:00
Andrey Antukh
6dfd05fdd1 Merge remote-tracking branch 'origin/staging' into develop 2025-07-21 12:05:24 +02:00
Andrey Antukh
51107c3fc9 🐛 Fix incorrect event name on event constructor 2025-07-21 11:58:48 +02:00
Andrey Antukh
b6863efb3a Merge pull request #6874 from penpot/xaviju-11355-tokens-import-details-layout
 Improve legibility on import token notification details
2025-07-21 11:54:08 +02:00
Andrey Antukh
799bceb8b7 🐛 Check if profile is logged-in on subscriptions internal redirects 2025-07-21 11:40:31 +02:00
Andrey Antukh
9e573128c1 🐛 Fix incorrect event name on event constructor 2025-07-21 11:40:31 +02:00
Andrey Antukh
1f05511add Allow login dialog on settings 2025-07-21 11:40:30 +02:00
Elena Torro
eeee52a738 🐛 Ensure line height is properly handled on line breaks 2025-07-21 11:37:56 +02:00
Xavier Julian
7f53860296 📎 Add warning on feature flag temporary fix for font-size tokens 2025-07-21 11:23:27 +02:00
Andrey Antukh
16d0077393 Merge pull request #6920 from penpot/mdbenito-feature/wheel-scrolling-for-templates
 Enable wheel scrolling over templates-section in the dashboard
2025-07-21 11:22:47 +02:00
Andrey Antukh
622fed2f0d 💄 Add minor formating enhancements to dashboard templates ui code 2025-07-21 10:39:50 +02:00
Andrey Antukh
d22ade3289 Remove duplicated code 2025-07-21 10:38:18 +02:00
Miguel de Benito Delgado
7febf330ac Enable wheel scrolling over templates-section in the dashboard 2025-07-21 10:34:50 +02:00
Andrey Antukh
75a50ac1ac Merge pull request #6912 from penpot/andy-highlight-font-selector
 Highlight first font in font selector search, apply on Enter/click
2025-07-21 10:33:53 +02:00
Andres Gonzalez
e62567d09e Highlight first font in font selector search, apply on Enter/click
[Taiga #11579](https://tree.taiga.io/project/penpot/issue/11579)

 Highlight first font in font selector search, apply on Enter/click
2025-07-21 10:13:36 +02:00
Andrey Antukh
8d80eebeb1 Merge pull request #6906 from penpot/andy-enhance-text-auto-resize
 Switch auto-width to auto-height on horizontal resize on text shapes
2025-07-21 10:11:35 +02:00
Andres Gonzalez
ee9a42238d Switch auto-width to auto-height on horizontal resize on text shapes 2025-07-21 09:56:45 +02:00
Andrey Antukh
758c76d661 Merge pull request #6905 from penpot/andy-enhance-text-resize-behavior
 Allow double-click on text bounding box to set auto-width/auto-height
2025-07-21 09:55:18 +02:00
Andrey Antukh
1dec46cbfa Merge pull request #6903 from penpot/superalex-fix-page-duplication
🐛 Fix error on validating file referential integrity when duplicating a page
2025-07-21 09:46:12 +02:00
Andrey Antukh
ae25d704c1 📎 Add missing use-fn hook 2025-07-21 09:32:44 +02:00
Andres Gonzalez
e05f8c0329 Improve text layer resize behavior
Text layers now only switch to fixed grow-type on vertical resize, not on horizontal resize, for a more intuitive UX. See #4602.
2025-07-21 09:27:42 +02:00
Alejandro Alonso
ce62e11626 🐛 Fix error on validating file referential integrity when duplicating a page 2025-07-21 09:26:23 +02:00
Andrey Antukh
9f04c2fc1d Merge pull request #6901 from penpot/superalex-hide-bb-when-editing-effects
 Hide bounding box while editing visual effects
2025-07-21 09:23:18 +02:00
Andrey Antukh
05a405a82d Merge pull request #6893 from penpot/xaviju-11144-copy-color-attr
 Keep color data when copying from info tab into CSS
2025-07-21 09:22:57 +02:00
Andrey Antukh
3c8c21c378 Merge pull request #6899 from abedef/patch-1
📚 Fix broken link in self-hosting docs
2025-07-21 09:19:39 +02:00
Xavier Julian
2dbeb884a5 Keep color data when copying from info tab into CSS 2025-07-21 09:07:20 +02:00
Andrey Antukh
931d72b41f Merge pull request #6887 from dfelinto/fix-trackpad-swipe
🐛 Fix touchpad swipe back/forward #4246
2025-07-21 08:58:32 +02:00
Alejandro Alonso
2e3cdd872c Revert " Highlight first found font in font list when searching [Taiga #3204]"
This reverts commit 55a13c3139.
2025-07-17 13:01:24 +02:00
Andres Gonzalez
55a13c3139 Highlight first found font in font list when searching [Taiga #3204]
This enhancement highlights the first found font in the font list when searching, and allows pressing Enter to select it, for a more intuitive font selection experience.

See [Taiga #3204](https://tree.taiga.io/project/penpot/issue/3204).
2025-07-17 12:09:50 +02:00
Andrey Antukh
f63d1c87e3 Merge pull request #6904 from penpot/andy-fix-email-change-message
 Update email change confirmation message for clarity
2025-07-17 11:31:21 +02:00
Alejandro Alonso
abbfd44534 Hide bounding box while editing visual effects 2025-07-17 09:33:10 +02:00
Andres Gonzalez
f772724f9a Update email change confirmation message for clarity 2025-07-16 10:22:53 +02:00
Andrey Antukh
f3abd0f190 Merge pull request #6902 from penpot/andy-clarify-invite-member-message
 Clarify invite member message for existing team members
2025-07-15 15:48:45 +02:00
Andres Gonzalez
5d4042c861 Clarify invite member message for existing team members
Update the English message shown when inviting team members whose emails are already part of the team, as suggested in issue #6785.
2025-07-15 14:05:20 +02:00
Dalai Felinto
1fbcec98fb 🐛 Fix touchpad swipe back/forward #4246
This prevents the browser to take over the trackbad swipe gesture both
for the dashboard and the workspace.

At an early attempt I did get the code to work only for the workspace,
but it is too unreliable and I could every now and then get it to misbehave.

I believe it is better to be safe and always prevent the browser from
going back/forth, regardless of workspace/dashboard.

Signed-off-by: Dalai Felinto <dalai@blender.org>
2025-07-15 00:24:20 +02:00
Alejandro Alonso
abef9f3cf7 Merge pull request #6889 from penpot/niwinz-staging-bugfix
🐛 Fix unexpected exception on processing old texts
2025-07-14 07:08:31 +02:00
Abed Fayyad
6f1958f9f2 📚 Fix broken link in self-hosting docs
Replaced broken Markdown link to the unofficial self-hosting section.

Signed-off-by: Abed Fayyad <yo@abedef.ca>
2025-07-13 09:16:13 -04:00
Andrey Antukh
6b2ce86d5f Merge pull request #6896 from penpot/juanfran-issue-show-main-component-focus
🐛 Fix initialize-page namespace when showing main component
2025-07-11 18:31:37 +02:00
Pablo Alba
0cfd70da2e 🐛 Fix corner cases on variants text overrides 2025-07-11 15:28:55 +02:00
Xavier Julian
4167faf39d 📎 Add blend-mode in code editor feature to CHANGELOG 2025-07-11 15:14:29 +02:00
Pablo Alba
90e6e8c5eb 🐛 Fix double undo on text partial overrides 2025-07-11 15:05:30 +02:00
Andrey Antukh
e2c5a1378e Merge pull request #6724 from penpot/elenatorro-improve-create-profile-command
🔧 Add option to skip tutorial/walkthrough when creating a profile from the script
2025-07-11 14:15:49 +02:00
Xavier Julian
81f99458e5 📎 Add new font-size token type to CHANGELOG 2025-07-11 14:09:39 +02:00
Elena Torro
b40b1fa2e4 🔧 Refactor ParagraphBuilder and fix auto height 2025-07-11 13:29:22 +02:00
Juanfran
bb1ec109d8 🐛 Fix initialize-page namespace when showing main component 2025-07-11 13:09:20 +02:00
Florian Schroedl
9c5a13c4ac Enable font-size token 2025-07-11 10:37:17 +02:00
Elena Torro
4c21468850 🔧 Add text decoration styles 2025-07-10 14:26:41 +02:00
Xavier Julian
02ae934e25 📎 Add import tokens from zip file to CHANGELOG 2025-07-10 13:40:42 +02:00
Andrey Antukh
95cfb26b38 Merge pull request #6882 from penpot/xaviju-11283-info-tab-visibility-attrs-review
♻️ Fix tab info not updating and suggested code refactor
2025-07-10 11:56:38 +02:00
Andrey Antukh
935c22d124 Merge pull request #6885 from penpot/marina-change-text-capitalize
🐛 Fix title button from Title case to Capitalize
2025-07-10 11:55:50 +02:00
Marina López
ba6a02d1d9 🐛 Add fixes from subscription design review (#6870)
* 🐛 Fixes from subscription design review

* 🐛 Fix to consider professional plan the unpaid and canceled status

* 📎 Fixes PR feedback
2025-07-10 11:55:16 +02:00
Xavier Julian
0b681effe7 ♻️ Fix tab info not updating and suggested code refactor 2025-07-10 11:38:53 +02:00
Marina López
6826db8498 🐛 Fix title button from Title case to Capitalize 2025-07-10 11:29:48 +02:00
Andrey Antukh
66c5841d48 Merge pull request #6886 from penpot/alotor-fix-create-layout
🐛 Fix problem when creating a layout from an existing layout
2025-07-10 11:28:19 +02:00
Xavier Julian
af10705b4c ♻️ Review import message text 2025-07-10 10:18:59 +02:00
Andrey Antukh
40c300fa1a 🐛 Fix unexpected exception on processing old texts 2025-07-10 09:22:00 +02:00
Pablo Alba
41146ef71d 🐛 Fix text overrides when there are structure changes 2025-07-09 21:58:01 +02:00
Pablo Alba
abb6aee57d 🐛 On texts overrides, keep also vertical-align property 2025-07-09 21:58:01 +02:00
alonso.torres
aa01d3b707 🐛 Fix problem when creating a layout from an existing layout 2025-07-09 15:44:15 +02:00
alonso.torres
a003687256 🐛 Fix problem with grid assignments 2025-07-09 14:55:14 +02:00
Elena Torro
e2b55d814b 🐛 Fix select all deletion error on Firefox 2025-07-09 14:50:35 +02:00
Andrey Antukh
51a6d61be6 Merge pull request #6865 from penpot/xaviju-11283-info-tab-visibility-attrs
 Add visibility group and attributes to info tab
2025-07-09 12:18:10 +02:00
Xavier Julian
0daa8be0b5 Add visibility group and attributes to info tab 2025-07-09 11:19:30 +02:00
Andrey Antukh
00599f76d0 Merge pull request #6875 from penpot/ladybenko-fix-devenv-mac-ubuntu
🔧 Fix building and running devenv (Mac / Linux)
2025-07-09 08:28:49 +02:00
Belén Albeza
cb8aae4d5f 🔧 Drop the -R in chown (dockerfile mac) 2025-07-08 15:45:34 +02:00
Belén Albeza
927228fc8f 🔧 Remove COPY of apt.sources (linux issue) 2025-07-08 15:44:42 +02:00
Xavier Julian
77a47e4b2b Improve legibility on import token notification details 2025-07-08 15:09:50 +02:00
Andrés Moya
88bb9bfe52 🐛 Detach styles from assets when applying tokens 2025-07-08 13:15:45 +02:00
Andrey Antukh
e554b9fcb7 Merge remote-tracking branch 'origin/staging' into develop 2025-07-08 11:04:29 +02:00
Aitor Moreno
4548310235 Merge pull request #6867 from penpot/azazeln28-fix-missing-solid-color
🐛 Fix missing required SolidColor
2025-07-08 09:11:12 +02:00
Aitor Moreno
ea9261b0b2 🐛 Fix missing required SolidColor 2025-07-08 08:45:03 +02:00
Aitor Moreno
6ffcd58368 Merge pull request #6846 from penpot/alotor-wasm-refactor-mut-2
♻️ Refactor wasm shapes state management
2025-07-08 08:31:15 +02:00
alonso.torres
69135ef8c7 ♻️ Refactor wasm shapes state management 2025-07-08 08:30:40 +02:00
Aitor Moreno
747427daa4 Merge pull request #6841 from penpot/superalex-fix-frame-clipping
🐛 Fix frame clipping
2025-07-08 08:26:48 +02:00
Alejandro Alonso
5b704faf79 Merge pull request #6862 from penpot/niwinz-develop-minor-fixes
 Add several improvements
2025-07-07 15:40:20 +02:00
Andrey Antukh
d24eab7241 📎 Update changelog 2025-07-07 15:07:07 +02:00
Andrey Antukh
c8fef97598 Add missing field on get-teams rpc method 2025-07-07 13:36:00 +02:00
Andrey Antukh
44e3e4a641 🔥 Remove image shape inspect pannel
Image shapes are long ago deprecated not used
on penpot
2025-07-07 13:36:00 +02:00
Andrey Antukh
f3616c68a0 Improve decode empty string for path content 2025-07-07 13:36:00 +02:00
Andrey Antukh
9ea3f81bc4 🐛 Clean invalid library colors 2025-07-07 13:35:59 +02:00
Pablo Alba
cfec023585 ♻️ Rename flag :component-swap to :allow-altering-copies 2025-07-07 12:07:36 +02:00
Pablo Alba
469d47eaf3 🐛 Fix variants combobox and select to new options format 2025-07-07 11:46:50 +02:00
Alejandro Alonso
51bb6583d2 🐛 Fix frame clipping 2025-07-07 11:09:29 +02:00
Pablo Alba
a44c70ef69 Keep the swapped childs if the copies when doing a variant switch 2025-07-07 10:50:49 +02:00
Andrés Moya
4fddf34a73 🐛 Fix error when there exists a tokens lib with no sets 2025-07-07 10:02:49 +02:00
Xavier Julian
8f840daa91 Improve token import error copy 2025-07-07 09:59:57 +02:00
Juanfran
0a7d6d98e1 Integrate plugin runtime as npm library (#6852) 2025-07-07 09:46:07 +02:00
Álvaro Tejero-Cantero
bcb69b6227 🐛 Restore viewport and selection when exiting focus mode (#6827)
* 📚 Provide guidance on how to exit focus mode

* 🐛 Restore viewport & selection post focus mode

* 📎 Update changelog
2025-07-07 09:44:06 +02:00
Andrey Antukh
92d708d52c Merge remote-tracking branch 'origin/staging' into develop 2025-07-07 09:37:55 +02:00
Alonso Torres
accd5226d7 🐛 Fix sidebar width in localhost (#6732) 2025-07-07 09:28:52 +02:00
Andrey Antukh
16a1fd14e5 🐛 Fix media translation on text nodes on paste (#6845)
Fix incorrect media translation on paste text with fill images
2025-07-07 09:03:35 +02:00
Aitor Moreno
824bb19c7e Merge pull request #6848 from penpot/niwinz-staging-library-referer
 Add referer field to binfile v3
2025-07-07 09:02:13 +02:00
Aitor Moreno
d0f3e0f0b0 Merge pull request #6853 from penpot/niwinz-staging-path-bool-fixes
🐛 Fix exception on a corner case of creating bool shape
2025-07-07 09:00:57 +02:00
Andrey Antukh
43ba2b05e8 📎 Change current config values for error report explain 2025-07-04 14:51:08 +02:00
Andrey Antukh
d5ccb704b2 🐛 Fix unexpected exception on creating bool shapes 2025-07-04 14:42:09 +02:00
Andrey Antukh
0374e4f3eb Merge remote-tracking branch 'origin/staging' into develop 2025-07-04 12:02:12 +02:00
David Barragán Merino
6d21fcc9de 🔧 Fix condition for automatic events (#6849) 2025-07-04 11:57:57 +02:00
Andrey Antukh
77741b49a7 Add tracking for referer on the import-binfile 2025-07-04 11:02:36 +02:00
Andrey Antukh
a7e0cfc609 🎉 Bump 1.0.7 release of the penpot library
Includes the ability to pass referer
2025-07-04 11:02:36 +02:00
Andrey Antukh
50a6355537 🎉 Add options for creating library build context
With the ability to pass referer.
2025-07-04 11:02:36 +02:00
Alejandro Alonso
264aef277d Merge pull request #6847 from penpot/niwinz-staging-error-reports-2
 Add minor improvements to error report on calc bool content
2025-07-04 10:53:02 +02:00
Andrey Antukh
78d0e6d059 Add minor improvements to error report on calc bool content 2025-07-04 10:13:24 +02:00
Alonso Torres
6d41d36b3a 🐛 Fix problem when double click on hidden shapes (#6833) 2025-07-04 09:01:20 +02:00
David Barragán Merino
bb97df373e 🔧 Add Github Action to build and upload artifact (#6840)
Co-authored-by: Francis Santiago <francis.santiago@kaleidos.net>
2025-07-04 08:41:46 +02:00
David Barragán Merino
528c819323 🔧 Add Github Action to build and upload artifact (#6840)
Co-authored-by: Francis Santiago <francis.santiago@kaleidos.net>
2025-07-04 08:25:23 +02:00
Florian Schrödl
21746144b7 Add letter spacing token (#6814)
* 🐛 Fix merge schema not working with key generation

*  Add letter-spacing token

* ♻️ Remove comments

* ♻️ Inline line-height for now
2025-07-03 16:00:58 +02:00
Andrey Antukh
3165761bac Merge remote-tracking branch 'origin/staging' into develop 2025-07-03 15:32:30 +02:00
Andrés Moya
c09f72c3d5 🐛 Sanitize wrong ids in token themes (#6843) 2025-07-03 15:31:45 +02:00
Alejandro Alonso
a41af032cd Merge pull request #6844 from penpot/niwinz-staging-enhancements
 Improve error reporting
2025-07-03 15:31:20 +02:00
Andrey Antukh
86ee4f55c5 📚 Update docstring 2025-07-03 14:54:00 +02:00
Andrey Antukh
63cd3ae025 Add better error handling for bool creation 2025-07-03 14:54:00 +02:00
Andrey Antukh
cafb7abb53 🎉 Add better syntax facility for ex/try! macro 2025-07-03 14:54:00 +02:00
Andrey Antukh
e5b6c4a9e0 Add minor improvement to error reporter logger 2025-07-03 14:54:00 +02:00
Andrey Antukh
1d5bad5523 💄 Report file-id on file changes exception 2025-07-03 14:54:00 +02:00
Andrey Antukh
96d6868b45 🐛 Add missing fields on get-team-shared-files query 2025-07-03 14:54:00 +02:00
Andrey Antukh
b739d8bd0c 💄 Change default depth on params for error reports 2025-07-03 14:54:00 +02:00
Alejandro Alonso
dd803dc1de Merge pull request #6839 from penpot/niwinz-staging-fix-broken-path
🐛 Add migration for fix undecoded path content
2025-07-03 13:43:59 +02:00
Florian Schrödl
7dd61968b5 Implement object type specific tokens (#6816)
*  Allow token applying for supported shape types only

* 🐛 Remove x/y attribute keys from spacing token

*  Shape specific context-menu

*  Only apply tokens to supported shapes when doing multi selection apply

*  Handle groups not supported by tokens yet

* 🐛 Fix outdated tests

* ♻️ Commentary

*  Add helper functions for attribute applicability checks

* ♻️ Groups don't have own attributes

* ♻️ Remove unused function

* ♻️ Move attribute logic to common.types.token
2025-07-03 12:22:04 +02:00
Juanfran
669d6d9ae2 Merge pull request #6837 from penpot/juanfran-us-11186-rules-help
 Add in-app help to guide users about variant rules
2025-07-03 11:30:16 +02:00
Andrey Antukh
b627c10737 🔥 Remove duplicated check-fn 2025-07-03 10:50:09 +02:00
María Valderrama
95f4a9bd29 Add missing start-plugin event (#6809)
*  Add missing start-plugin event

* 📎 Correct event origin
2025-07-03 10:29:43 +02:00
Miguel de Benito Delgado
b931547300 🐳 Add "postgres" network alias to default docker network in devenv (#6823) 2025-07-03 10:28:53 +02:00
Andrey Antukh
a2b8f19ff3 🐛 Add migration for fix undecoded path content 2025-07-03 08:40:23 +02:00
Belén Albeza
30274c4f5c 🔧 Restore arm64 build of devenv (#6826) 2025-07-03 08:28:07 +02:00
Andrés Moya
0a71134652 🔧 Sanitize and check tokens when deserializing from db (#6838) 2025-07-02 17:01:10 +02:00
Juanfran
72b1919e29 Add in-app help to guide users about variant rules 2025-07-02 14:46:36 +02:00
Andrey Antukh
898182e3d5 Add minor events props normalization (#6836) 2025-07-02 14:41:48 +02:00
Xavier Julian
be43365909 🐛 Fix broken import file type drodown options 2025-07-02 14:35:01 +02:00
Andrey Antukh
41994703a9 ♻️ Refactor tab-switcher* component (#6815)
* 💄 Add minor style adjustments to workspace sidebar

* 💄 Add style enhacement to sitemap component

* ♻️ Refactor tab-switcher* component
2025-07-02 14:08:47 +02:00
Marina López
3d45080e3c 🐛 Fixes from subscription design review (#6812) 2025-07-02 10:49:16 +02:00
Miguel de Benito Delgado
28c055e3f9 📚 Fix and extend backend repl doc (#6819) 2025-07-02 10:38:35 +02:00
Prithvi Tharun
4f993bf4ae 💄 Replace 'Verify new email' label with 'Confirm new email' (#6831)
Improves clarity by using more accurate and familiar terminology.

Signed-off-by: Prithvi Tharun <ptrithu8@gmail.com>
2025-07-02 10:32:09 +02:00
Alejandro Alonso
3cb0e1b6ee 🐛 Fix exif rotation detection when auto-rotation isn't supported (#6818) 2025-07-02 10:31:05 +02:00
Miguel de Benito Delgado
e03c822b51 🐛 Fix internal error on missing theme setting in profile (#6822) 2025-07-02 10:17:22 +02:00
Andrey Antukh
1432b211a6 Merge remote-tracking branch 'origin/staging' into develop 2025-07-02 10:13:30 +02:00
Miguel de Benito Delgado
3e45e4fb25 🐛 Fix internal error on missing theme setting in profile (#6822) 2025-07-02 09:57:56 +02:00
Eva Marco
a3aabf3b7d 🐛 Fix tooltip position after click (#6830) 2025-07-02 09:56:14 +02:00
Andrés Moya
953287ea33 🐛 Avoid crash in combobox with empty options 2025-07-02 08:57:25 +02:00
Elena Torró
493831f110 Merge pull request #6821 from penpot/alotor-refactor-mutability
♻️ Refactor mutability modifiers in wasm
2025-07-01 13:52:39 +02:00
alonso.torres
3d374e8e97 ♻️ Refactor mutability modifiers in wasm 2025-07-01 12:47:31 +02:00
Andrés Moya
f0f01af55c 🔧 Make TokenSet an abstract data type 2025-06-30 16:59:00 +02:00
Xavier Julian
6de9de9e38 Add new metric for token update and provide token type 2025-06-30 13:21:49 +02:00
Kelp
b893a62e40 Add new typography icon to the DS (#6808)
Signed-off-by: Kelp <5446186+NatachaMenjibar@users.noreply.github.com>
2025-06-30 11:06:54 +02:00
alonso.torres
8dcb376b18 Add drop grid cells in wasm 2025-06-30 10:28:59 +02:00
alonso.torres
52a4fc6030 🐛 Fix drop index on flex layout wasm 2025-06-30 10:28:59 +02:00
Andrey Antukh
403d92838a ♻️ Add minor refactor to options dropdown options handling and validation (#6739)
* ♻️ Refactor options-dropdown* and related components

* 🐛 Fix props error

* 🐛 Fix test

* 📎 Update rumext

---------

Co-authored-by: Eva Marco <evamarcod@gmail.com>
2025-06-29 11:52:29 +02:00
Xavier Julian
6bd3253e5e ♻️ Restructure UI files for tokens editor 2025-06-27 13:23:42 +02:00
Pablo Alba
20b5b7f6e4 🐛 Fix variant switch in another page (#6802) 2025-06-27 12:23:54 +02:00
Andrés Moya
5c4fd97541 🐛 Allow importing file without any token but with themes or sets (#6796) 2025-06-27 11:32:14 +02:00
Pablo Alba
804146ae9a 🐛 Fix text partial change doesn't show up on another page (#6799) 2025-06-27 10:21:21 +02:00
Juanfran
24e78e6a10 🐛 Display error message on register form (#6797) 2025-06-27 10:01:54 +02:00
Pablo Alba
daca26e54f 🐛 On variants override use the component name instead of the copy name 2025-06-26 17:37:21 +02:00
Aitor Moreno
29016cef49 Merge pull request #6794 from penpot/alotor-wasm-fix-grid-fr
🐛 Fix problem with fr allocation
2025-06-26 14:39:42 +02:00
alonso.torres
fb07788e8f 🐛 Fix problem with fr allocation 2025-06-26 13:17:26 +02:00
Alejandro Alonso
3010abbf64 Merge pull request #6793 from penpot/alotor-fix-plugins-system-theme
🐛 Fix problem with plugins on system theme
2025-06-26 12:30:51 +02:00
alonso.torres
e6a7eed7a9 🐛 Fix problem with plugins on system theme 2025-06-26 12:15:06 +02:00
Andrey Antukh
c75a617d26 Merge remote-tracking branch 'origin/staging' into develop 2025-06-26 11:19:29 +02:00
Andrey Antukh
f2c4a1eb1f Merge pull request #6674 from penpot/niwinz-develop-enhacements-3
 Refactor fills-menu and related components
2025-06-26 11:09:30 +02:00
Marina López
62371fded0 🐛 Fix libraries position in dashboard sidebar (#6791) 2025-06-26 11:08:18 +02:00
Alejandro Alonso
daf3b5caa8 🐛 Fix slow color picker (#6780) 2025-06-26 11:07:35 +02:00
Andrey Antukh
e72d31a082 🔥 Remove unused and commented code 2025-06-26 10:50:38 +02:00
Andrey Antukh
6b4a85cd15 🐛 Fix issue on changing from gradient to solid color on colorpicker 2025-06-26 10:50:38 +02:00
Andrey Antukh
027a7a457d Add minor style improvements for reorder-handler component 2025-06-26 10:50:38 +02:00
Andrey Antukh
20d2d22f39 Add performance oriented refactor to fill-menu component 2025-06-26 10:50:36 +02:00
Andrey Antukh
34d65ed1c8 Merge pull request #6775 from penpot/superalex-fix-entering-long-project-name
🐛 Fix entering long project name
2025-06-26 10:48:54 +02:00
Andrey Antukh
a191fe63a1 Merge remote-tracking branch 'origin/staging' into develop 2025-06-26 09:18:23 +02:00
luisδμ
2de0c90fc7 🐛 Remove empty properties starting with the last one (#6757)
* 🐛 Remove empty properties starting with the last one

*  MR changes

---------

Co-authored-by: Pablo Alba <pablo.alba@kaleidos.net>
2025-06-26 09:16:59 +02:00
Alejandro Alonso
27c624ae0f Merge pull request #6787 from penpot/niwinz-staging-hotfix-4
🐛 Several fixes
2025-06-26 09:13:49 +02:00
Andrey Antukh
3831b3034e 🐛 Fix boolean shape migration that causes issues on import 2025-06-26 08:55:09 +02:00
Luis de Dios
7cd0e28c3b Allow variants with no properties 2025-06-26 08:42:34 +02:00
Andrey Antukh
00390a1349 🐛 Add correct is-text-node? predicate to text processing methods 2025-06-26 08:32:11 +02:00
Andrey Antukh
17bfed137c 📎 Add better defaults for text processing on old migrations 2025-06-26 08:32:11 +02:00
Andrey Antukh
77ef26b207 📎 Add srepl script for validate file schema 2025-06-26 08:32:11 +02:00
Andrey Antukh
26239a15f2 📎 Add missing changes on lost-colors fix script 2025-06-25 20:13:35 +02:00
Andrey Antukh
25ef1800d0 Merge remote-tracking branch 'origin/staging' into develop 2025-06-25 19:30:57 +02:00
Andrey Antukh
207974fe6c Add minor improvement to color cleaning migration 2025-06-25 19:26:43 +02:00
Andrey Antukh
b52e2fa681 🐛 Add missing version field on get-team-shared-files internal query 2025-06-25 19:24:18 +02:00
Andrey Antukh
bf719b587f Add better shadow cleaning migration 2025-06-25 19:17:58 +02:00
Alejandro Alonso
61109c91e3 Merge pull request #6784 from penpot/niwinz-staging-hotfix-3
🐛 Fix incorrect library color cleaning mechanism
2025-06-25 16:21:58 +02:00
Andrey Antukh
4915a97c2c 📎 Add script for restoring lost colors 2025-06-25 16:10:35 +02:00
Andrey Antukh
903aba5642 🐛 Fix incorrect library color cleaning mechanism 2025-06-25 14:36:33 +02:00
Andrey Antukh
9760911fce Merge remote-tracking branch 'origin/staging' into develop 2025-06-25 14:24:26 +02:00
Alejandro Alonso
82583f5079 🐛 Fix entering long project name 2025-06-25 14:21:52 +02:00
Alejandro Alonso
4561392791 🐛 Fix shortcut error pressing G+W from the View Mode (#6772) 2025-06-25 14:14:44 +02:00
Marina López
f81a973a4d 🐛 Fix text decoration line through value in inspect tab (#6778) 2025-06-25 14:11:58 +02:00
Alejandro Alonso
ca99671d3c 📚 Update CHANGES with support for exif rotated images (#6782) 2025-06-25 14:10:13 +02:00
Alejandro Alonso
8e8b2acddd Merge pull request #6781 from penpot/niwinz-staging-hotfix-2
🐛 Hot fixes
2025-06-25 13:53:58 +02:00
Marina López
1f42f032fc 🐛 Add fixes for subscription design review (#6751)
* 🐛 Fix from subscription design review

* 📎 Fixes PR feedback
2025-06-25 13:41:45 +02:00
Andrey Antukh
93cbd99932 🐛 Clear invalid keys from color libraries 2025-06-25 13:38:35 +02:00
Andrey Antukh
15c91a5de5 Make the bool-content normalize migration idempotent 2025-06-25 13:26:32 +02:00
Andrey Antukh
7f2e819789 🐛 Fix migration persistence ordering issue
When migrations are applied to old files
2025-06-25 13:26:25 +02:00
Alejandro Alonso
4947bf480b Merge pull request #6779 from penpot/niwinz-staging-hotfix-2
🐛 Fix regression on changing color type on fills
2025-06-25 12:27:34 +02:00
Marina López
67ca8ccb22 🐛 Fix copy font-size doesn't copy the unit (#6776) 2025-06-25 12:14:33 +02:00
Alejandro Alonso
c51ae35fc5 Merge pull request #6777 from penpot/niwinz-staging-hotfix-1
🐛 Remove qualified keyword keys from colors
2025-06-25 12:13:53 +02:00
Andrey Antukh
81564dbfa9 🐛 Fix regression on changing color type on fills 2025-06-25 12:12:04 +02:00
Andrey Antukh
56472a95de 🐛 Add missing file migration to get-team-shared-files rpc method 2025-06-25 11:56:11 +02:00
Andrey Antukh
9e5bc3675c 🐛 Remove cider nrepl handler from default nrepl server 2025-06-25 11:41:24 +02:00
Xavier Julian
ce59070fd1 ♻️ Restructure UI files for token sets 2025-06-25 11:27:13 +02:00
Andrey Antukh
787c066357 🐛 Remove qualified keyword keys from colors 2025-06-25 11:23:39 +02:00
Marina López
82bedda604 Add tokens library to dashboard carousel (#6769) 2025-06-25 10:22:19 +02:00
Marina López
e258030bc0 💄 Change 'save color' button (#6774) 2025-06-25 10:21:22 +02:00
Alejandro Alonso
8f00292f8f 🎉 Support for exim rotated images (#6767) 2025-06-25 10:20:37 +02:00
Alejandro Alonso
1b67be2f36 Merge pull request #6773 from penpot/niwinz-staging-paste-regression
🐛 Fix minor regression on paste shapes with fill-image
2025-06-25 10:02:36 +02:00
Andrey Antukh
1a8a9df2b7 🐛 Fix minor regression on paste shapes with fill-image 2025-06-25 09:40:17 +02:00
Alejandro Alonso
e1ce7ec787 Merge pull request #6752 from penpot/niwinz-staging-path-editor-fixes
🐛 Fix incorrect path tool handling on shapes not coerced to path
2025-06-25 07:25:13 +02:00
Andrey Antukh
546b7d5f60 🐛 Fix incorrect path tool handling on shapes not coerced to path 2025-06-24 19:09:38 +02:00
Florian Schroedl
fe91201431 Keep warning for unsupported token types when FF is disabled 2025-06-24 15:41:24 +02:00
Florian Schroedl
00c7411f92 🐛 Fix dtcg token type name 2025-06-24 15:41:24 +02:00
Xavier Julian
e585cbd673 ♻️ Restructure UI files for import/export and common files 2025-06-24 13:58:54 +02:00
Alejandro Alonso
bdc10ac173 Merge pull request #6754 from penpot/azazeln28-issue-11401-fix-wrong-aspect-ratio
🐛 Fix image aspect ratio rendering on oriented images
2025-06-24 13:23:35 +02:00
Elena Torró
9f5cb61a19 Merge pull request #6766 from penpot/elenatorro-fix-text-auto-height
🐛 Fix text auto height
2025-06-24 13:18:28 +02:00
Alejandro Alonso
fb6121bf92 Merge pull request #6765 from penpot/alotor-update-plugins-runtime
⬆️ Update plugins runtime
2025-06-24 13:14:53 +02:00
Alejandro Alonso
e442d8adad Add tests for exif rotated images 2025-06-24 13:08:18 +02:00
Elena Torro
925af4e1e9 🐛 Fix text auto height 2025-06-24 12:36:12 +02:00
alonso.torres
a45886c86c Small cosmetic change 2025-06-24 10:26:37 +02:00
alonso.torres
36b6f6323a ♻️ Refactor modifiers methods 2025-06-24 10:26:37 +02:00
alonso.torres
afec3b9bc1 🐛 Fix problem with margin in flex layout 2025-06-24 10:26:37 +02:00
alonso.torres
ac6a814026 🐛 Fix problem with flex layout in wasm 2025-06-24 10:26:37 +02:00
Alejandro Alonso
89fb802362 Merge pull request #6764 from penpot/alotor-fix-problem-lines
🐛 Fix wasm problem with horizontal/vertical lines
2025-06-24 09:43:11 +02:00
alonso.torres
8cdcfb70e2 ⬆️ Update plugins runtime 2025-06-24 09:25:12 +02:00
alonso.torres
b0d858df2b 🐛 Fix wasm problem with horizontal/vertical lines 2025-06-24 09:24:00 +02:00
Aitor Moreno
f54497194a Merge pull request #6762 from penpot/elenatorro-10901-add-text-vertical-alignment
🔧 Add vertical alignment for text shapes
2025-06-23 17:05:47 +02:00
Elena Torro
134fb1ab4c 🔧 Add vertical alignment for text shapes 2025-06-23 16:45:25 +02:00
andrés gonzález
8c2dc1f22d 📚 Add DT import/export options to the docs (#6753) 2025-06-23 15:37:57 +02:00
Aitor Moreno
833546d754 🐛 Fix wrong aspect ratio on oriented image 2025-06-23 15:30:01 +02:00
Elena Torró
0010d61ae2 Merge pull request #6758 from penpot/elenatorro-text-rendering-fixes-and-tests
🔧 Add tests to cover text styles
2025-06-23 14:06:19 +02:00
Elena Torro
747f72be47 🔧 Add tests to cover text styles 2025-06-23 13:43:09 +02:00
Alejandro Alonso
1882efe3f7 🐛 Fix paths rendered initially ony in tile 0 0 2025-06-23 12:23:49 +02:00
Florian Schrödl
580bb46a05 Implement font-size token type (#6708)
*  Implement font-size token type

*  Hide typography tokens behind FF

* 💄 Update icon

* 🔧 Add font-size to unapply check

* ♻️ Generalize status-icon logic and remove icon for font-size
2025-06-23 12:12:40 +02:00
Alejandro Alonso
9ea0875e65 Merge pull request #6742 from penpot/ladybenko-fix-wasm-debug-text-hi-dpr
 Fix size of 'wasm renderer' debug text on dpr > 1
2025-06-23 11:47:20 +02:00
Alejandro Alonso
43b19ba33e Merge pull request #6738 from penpot/ladybenko-11247-enable-dpr-when-render-wasm
🔧 Enable render-wasm-dpr by default
2025-06-23 11:46:24 +02:00
Andrey Fedorov
130cd52f79 Notify user if imported file or directory doesn't contain token files 2025-06-23 11:44:00 +02:00
Aitor Moreno
21fd56076c Merge pull request #6756 from penpot/superalex-fix-empty-fills
🐛 Fix empty fills
2025-06-23 11:31:34 +02:00
Alejandro Alonso
c97314ddb5 🐛 Fix empty fills 2025-06-23 11:14:58 +02:00
Andrey Antukh
34bbce5089 Merge remote-tracking branch 'origin/staging' into develop 2025-06-23 10:06:05 +02:00
ºelhombretecla
9a0538e5e3 Add visual indicator for new comments in the workspace (#6728)
* 🎉 Add comment notification to workspace

* 💄 Add info to changelog

*  Add minor efficiency improvements

---------

Co-authored-by: Andrey Antukh <niwi@niwi.nz>
2025-06-23 09:51:41 +02:00
ºelhombretecla
1b041d949c 💄 Add new content for 2.8 release slides (#6729)
* 💄 Add new content for 2.8 release slides

* 📎 Fix linter issues

---------

Co-authored-by: Andrey Antukh <niwi@niwi.nz>
2025-06-23 09:43:55 +02:00
Belén Albeza
56d96aaf07 🔧 Enable render-wasm-dpr by default 2025-06-20 12:48:49 +02:00
Eva Marco
1a8f36562b 🐛 Fix export button width on design tab (#6744) 2025-06-20 12:04:49 +02:00
luisδμ
70f3988046 Show warning when selecting a copy of conflicted variant (#6743) 2025-06-20 11:52:07 +02:00
Andrey Antukh
ec021d944d Merge remote-tracking branch 'origin/staging' into develop 2025-06-20 11:37:50 +02:00
Alejandro Alonso
3d0c3013e5 Merge pull request #6746 from penpot/niwinz-staging-path-editor-fixes
 Add missing fixes to the path edition mode
2025-06-20 11:31:17 +02:00
Elena Torró
f1a6b46165 Merge pull request #6745 from penpot/superalex-bug-fix-text-image-strokes
🐛 Fix image fill strokes are not rendered correctly for texts
2025-06-20 11:14:24 +02:00
Andrey Antukh
3274a74611 Add missing fixes to the path edition mode 2025-06-20 11:06:48 +02:00
Belén Albeza
2412402a23 Fix size of 'wasm renderer' debug text on dpr > 1 2025-06-20 10:55:33 +02:00
Alejandro Alonso
5375029497 🐛 Fix image fill strokes are not rendered correctly for texts 2025-06-20 10:52:26 +02:00
Alejandro Alonso
3a0ac577f8 Merge pull request #6720 from penpot/niwinz-staging-path-editor-fixes
 Fix path edition/drawing state on workspace
2025-06-20 10:34:19 +02:00
Andrés Moya
cf78e68787 🐛 Fix token unapply for text shapes 2025-06-20 10:15:49 +02:00
Aitor Moreno
8bfc314b17 Merge pull request #6700 from penpot/superalex-fix-async-content-rendering
🐛 Fix asynchronous content rendering
2025-06-20 10:11:28 +02:00
Elena Torró
38112e287a Merge pull request #6734 from penpot/ladybenko-11392-no-ui-in-tests
🔧 Make visual regression tests to hide the UI when taking a screenshot (render-wasm tests only)
2025-06-20 09:05:30 +02:00
Alejandro Alonso
43ba30c694 Merge pull request #6741 from penpot/niwinz-staging-join-nodes
🔥 Remove incorrect assert on path segment helper
2025-06-20 08:22:27 +02:00
Andrey Antukh
520ea0e094 🔥 Remove incorrect assert on path segment helper 2025-06-20 08:01:59 +02:00
Alejandro Alonso
5c7a4ce5b7 🐛 Fix fill images for text 2025-06-20 07:45:28 +02:00
Andrey Antukh
0c260c626b Make the path creation flow consistent 2025-06-20 07:41:06 +02:00
Andrey Antukh
db4721f692 Forward path edition state from vieweport to editor 2025-06-20 07:41:06 +02:00
Andrey Antukh
f8d63f5d9d 🐛 Fix incorrect path drawing/edition state management 2025-06-20 07:41:06 +02:00
Andrey Antukh
7e909dfbe8 Merge remote-tracking branch 'origin/staging' into develop 2025-06-19 15:35:19 +02:00
Alonso Torres
7f7f0893d0 🐛 Fix sidebar width in localhost (#6732) 2025-06-19 15:31:27 +02:00
Andrey Antukh
0f46efc117 Merge pull request #6733 from penpot/eva-bugfixing
🐛 Fix some bugs
2025-06-19 15:29:34 +02:00
María Valderrama
22fbc3fa5f 💄 Improve dashboard's sidebar (#6736) 2025-06-19 15:28:32 +02:00
Alejandro Alonso
d71fa659d5 🐛 Fix asynchronous content rendering 2025-06-19 14:03:40 +02:00
Alejandro Alonso
d0425cabda Merge pull request #6721 from penpot/ladybenko-11276-fix-modifiers-dpr
🐛 Fix panning and scroll when dpr > 1 (render wasm)
2025-06-19 14:01:47 +02:00
Eva Marco
909838c8c4 🐛 Fix snap nodes shortcut 2025-06-19 14:01:15 +02:00
Eva Marco
86e36061fb 🐛 Fix multiple values on text 2025-06-19 13:41:35 +02:00
Belén Albeza
9852d24b83 🔧 Make visual regression tests to hide the UI when taking a screenshot (render-wasm tests only) 2025-06-19 13:37:52 +02:00
Alejandro Alonso
2239482049 Merge pull request #6717 from penpot/alotor-grid-editor
 Support grid editor with wasm modifiers
2025-06-19 13:32:27 +02:00
Xavier Julian
4ea4a1e130 ♻️ Restructure UI files for token settings 2025-06-19 13:10:09 +02:00
alonso.torres
11467e26a2 🐛 Fix problem with flex wrap in wasm 2025-06-19 13:03:25 +02:00
alonso.torres
b997d5a320 🐛 Fix problem with grid layout wasm 2025-06-19 13:03:25 +02:00
alonso.torres
5b4cd9f4f1 🐛 Fix problem when moving masks, bools, groups with wasm 2025-06-19 13:03:25 +02:00
alonso.torres
58e5748b4f 🐛 Fix wasm layout problems 2025-06-19 13:03:25 +02:00
alonso.torres
b2647f30c2 Support grid editor with wasm modifiers 2025-06-19 13:03:25 +02:00
Eva Marco
fbdabcd913 🐛 Fix button width 2025-06-19 12:51:53 +02:00
luisδμ
72f2a409f9 Show warning when duplicated variant prop name and value (#6639)
*  Show warning when duplicated variant prop name and value

* 📎 PR changes
2025-06-19 12:34:28 +02:00
Alejandro Alonso
191ea3d02a Merge pull request #6637 from penpot/mavalroot-missing-events
 Add missing user experience events
2025-06-19 12:11:07 +02:00
Xavier Julian
62a6f2c2f1 ♻️ Restructure UI files for theme creation modal 2025-06-19 11:59:25 +02:00
Andrey Antukh
b747ccc382 🎉 Add shortcut helper for creating events 2025-06-19 11:38:08 +02:00
Andrey Antukh
892c9ab12c Add minor code consistency fixes 2025-06-19 11:38:08 +02:00
Eva Marco
b595d5abf8 🐛 Fix radio buttons gap 2025-06-19 11:23:32 +02:00
María Valderrama
cb46d643ac Add missing user experience events 2025-06-19 11:22:58 +02:00
Xavier Julian
105e0ba75f ♻️ Create themes folder and themes root file 2025-06-19 10:53:31 +02:00
Belén Albeza
4a9f6ea04e 🐛 Fix panning and scroll when dpr > 1 (render wasm) 2025-06-19 10:42:19 +02:00
Andrey Antukh
03a82c18cb Merge pull request #6726 from penpot/eva-fix-comment-icon
🐛 Fix comment icon fill
2025-06-19 09:43:02 +02:00
Andrey Antukh
a559547f97 Merge pull request #6727 from penpot/bameda-fix-typo
🐛 Fix a typo
2025-06-19 09:42:35 +02:00
David Barragán Merino
b91d703060 🐛 Fix a typo 2025-06-19 09:34:53 +02:00
luisδμ
e7e39a5521 Avoid duplicated property names adding a number (#6681)
*  Avoid repeated property names appending a number

* 📎 PR changes

* 🐛 Adjust rules for incrementing numbers in prop names
2025-06-19 09:11:41 +02:00
Belén Albeza
70a29c43ec 🔧 Fix race condition in colorpicket gradient tests (#6722) 2025-06-19 08:57:38 +02:00
Eva Marco
7bde3d0ec1 🐛 Fix comment icon fill 2025-06-19 08:51:29 +02:00
Andrey Antukh
386c729507 Merge remote-tracking branch 'origin/staging' into develop 2025-06-19 08:49:11 +02:00
Alejandro Alonso
219dca3ab8 Merge pull request #6723 from penpot/elenatorro-11385-fix-text-gradients
🐛 Fix text fill gradients and add visual regression test for text…
2025-06-19 07:03:19 +02:00
Elena Torro
5c120b601c 🐛 Fix text fill gradients and add visual regression test for text styles 2025-06-18 18:02:28 +02:00
Andrey Antukh
54643b79f6 🐛 Fix exception on changing hex color on colorpicker gradient editor (#6718) 2025-06-18 17:59:14 +02:00
Elena Torro
cf8006ce9c 🔧 Add option to skip tutorial/walkthrough when creating profiles for dev purposes 2025-06-18 17:00:46 +02:00
Kelp
71afccbeb5 Adds new font-size icon to the DS
Signed-off-by: Kelp <5446186+NatachaMenjibar@users.noreply.github.com>
2025-06-18 15:55:13 +02:00
Andrey Antukh
f0b82864dd Merge pull request #6719 from penpot/andy-changelog-update
📚 Update changelog
2025-06-18 15:04:28 +02:00
Andres Gonzalez
29244776f0 📚 Update changelog 2025-06-18 14:11:35 +02:00
Andrey Antukh
bbb9713f97 Merge remote-tracking branch 'origin/staging' into develop 2025-06-18 14:09:49 +02:00
Andrey Antukh
40c33c7dcc Merge pull request #6715 from penpot/alotor-bug-fix-workaround
🐛 Fix problem fetching images
2025-06-18 14:09:29 +02:00
Andrey Antukh
063c6e7771 Merge remote-tracking branch 'origin/staging' into develop 2025-06-18 13:34:47 +02:00
alonso.torres
1a6fcb5daf 🐛 Fix problem fetching images 2025-06-18 13:26:15 +02:00
Andrey Antukh
34febfc833 📎 Update indirect dependencies 2025-06-18 13:20:45 +02:00
Andrey Antukh
2c0abea254 📎 Add missing deps for build wasm tests 2025-06-18 12:45:25 +02:00
Andrey Antukh
4524782282 📎 Adapt backend test to devenv changes 2025-06-18 12:35:58 +02:00
Andrey Antukh
b8b56d5aa4 Merge remote-tracking branch 'origin/staging' into develop 2025-06-18 10:54:17 +02:00
Alejandro Alonso
2a5b087aa4 Merge pull request #6714 from penpot/niwinz-staging-fix-path-edition
🐛 Fix unexpected exception on selectiong node on non path shape
2025-06-18 10:45:36 +02:00
Andrey Antukh
402508a710 Merge remote-tracking branch 'origin/staging' into develop 2025-06-18 10:41:30 +02:00
Alejandro Alonso
1f034654a0 Merge pull request #6705 from penpot/niwinz-staging-docker-improvements
 Major improvement and update to docker images and devenv
2025-06-18 10:39:51 +02:00
Andrey Antukh
88ed08916e Merge remote-tracking branch 'origin/staging' into develop 2025-06-18 10:39:23 +02:00
Andrey Antukh
a9a0970001 Merge pull request #6679 from penpot/niwinz-develop-enhacements-4
 Add editors count to get-owned-teams rpc method response
2025-06-18 10:38:48 +02:00
Andrey Antukh
1576016999 Merge pull request #6711 from penpot/elenatorro-11212-fix-right-sidebar-overflow
🐛 Fix right-sidebar width overflow
2025-06-18 10:38:18 +02:00
Andrey Antukh
5ea515cc9f Merge pull request #6713 from mdbenito/doc/undo-ns
📚 Document app.main.data.workspace.undo
2025-06-18 10:37:42 +02:00
Andrey Antukh
e3cce104e1 🐛 Fix unexpected exception on selectiong node on non path shape 2025-06-18 10:12:24 +02:00
Alejandro Alonso
a24631ac66 Merge pull request #6710 from penpot/niwinz-staging-path-make-curve-point
🐛 Fix incorrect behavior of `make-curve-point` fn
2025-06-18 10:06:28 +02:00
Miguel de Benito Delgado
c0df527b3d 📚 Document app.main.data.workspace.undo 2025-06-18 09:52:15 +02:00
Andrey Antukh
fd81ea6a84 🔥 Remove commented code 2025-06-18 09:46:15 +02:00
Andrey Antukh
a3c7151157 ⬆️ Update indirect exporter module dependencies 2025-06-18 09:46:15 +02:00
Andrey Antukh
2d4fc3e05f ♻️ Refactor devenv build mechanism
This introduces multistage build process for devenv making
different dependencies build depend on its own (per example, when
jvm version is changed, only the jvm stage is rebuild)

This commit also introduces imagemagick 7.x custom build
in the same way as we have on public docker images, so on
devenv we use the same version.
2025-06-18 09:46:15 +02:00
Andrey Antukh
b01dea20d6 Add imagemagick custom build to backend docker image
This allows us be in control of the imagemagick version and not
depend on the version available on the distro repository, which
right now only ships the legacy 6.x version
2025-06-18 09:46:15 +02:00
Andrey Antukh
3f40a830fd Revisit exporter docker image dependencies
And remove cache for not include unnecessary files on
the docker image.
2025-06-18 09:46:15 +02:00
Andrey Antukh
50e9816526 Use custom jre for backend image
Mainly for reduce the size of the image and not include
not necessary modules. It also starts using multistage
dockerfiles for fetch and setup jdk and node and then
only copy the required files.
2025-06-18 09:46:15 +02:00
Andrey Antukh
4c0165da62 ⬆️ Update node dependency on devenv 2025-06-18 09:46:15 +02:00
Andrey Antukh
42d36bae0a Update several node based dependencies 2025-06-18 09:46:15 +02:00
Andrey Antukh
6dd0f4f164 🔥 Remove unused jvm options from backend start-dev script 2025-06-18 09:46:15 +02:00
Elena Torro
f7c4bd77be 🐛 Fix right-sidebar width overflow 2025-06-18 09:10:01 +02:00
Alejandro Alonso
5d72954611 Merge pull request #6707 from penpot/niwinz-staging-fix-path-join-nodes
🐛 Fix incorrect type handling on path join nodes operation
2025-06-18 07:37:58 +02:00
Alejandro Alonso
9930f54558 Merge pull request #6706 from penpot/niwinz-staging-opacity-fix
🐛 Fix incorrect handling of opacity change on gradient stop
2025-06-18 07:32:34 +02:00
Alejandro Alonso
667c9ddbb9 Merge pull request #6698 from penpot/niwinz-staging-fix-exporter
🐛 Fix incorrect params handling on exporter
2025-06-18 07:29:36 +02:00
Alejandro Alonso
4f09005586 Merge pull request #6694 from penpot/niwinz-staging-fix-profile-lang
🐛 Fix bad initial state on profile settings
2025-06-18 07:26:42 +02:00
Alejandro Alonso
cbc98a761f Merge pull request #6693 from penpot/niwinz-staging-register-regression
🐛 Fix regression on singup flow
2025-06-18 07:23:37 +02:00
Andrey Antukh
c3b306201d 🐛 Fix incorrect behavior of make-curve-point fn 2025-06-17 23:18:34 +02:00
Andrey Antukh
a772b442c8 🐛 Fix incorrect type handling on path join nodes operation 2025-06-17 17:34:37 +02:00
Alejandro Alonso
6a46110f80 Merge pull request #6672 from penpot/superalex-fix-focus-mode-wasm
🐛 Fix focus mode for wasm render
2025-06-17 16:55:47 +02:00
Alejandro Alonso
1c7aea4b84 🐛 Fix focus mode for wasm render 2025-06-17 16:42:45 +02:00
Andrey Antukh
90116c207f Merge remote-tracking branch 'origin/staging' into develop 2025-06-17 16:23:35 +02:00
Pablo Alba
46fe3a6239 📚 Add comments on convoluted variants code (#6704) 2025-06-17 16:17:56 +02:00
Andrey Antukh
332bbc71c3 🐛 Fix incorrect handling of opacity change on gradient stop 2025-06-17 16:14:10 +02:00
Andrey Antukh
c5b0206bf0 🐛 Add workaround for webkit issue on fileReader (#6697)
On reading blob as data uri
2025-06-17 15:25:58 +02:00
Elena Torró
01311225c7 Merge pull request #6695 from penpot/superalex-fix-allocate-0-bytes-path-attrs
🐛 Fix wasm render path issues
2025-06-17 14:44:15 +02:00
Elena Torró
717f3e1b32 Merge pull request #6703 from penpot/elenatorro-update-render-wasm-docs
📚 Add schemas and links to render-wasm README
2025-06-17 14:24:47 +02:00
Elena Torro
9a44bd0967 📚 Add schemas and links to render-wasm README 2025-06-17 14:06:46 +02:00
Belén Albeza
b92e108205 Are more visual regression tests for wasm (#6702) 2025-06-17 12:39:38 +02:00
Alejandro Alonso
8c6a80829f Merge pull request #6671 from penpot/azazeln28-refactor-minor-perf-issues
♻️ Refactor some minor perf issues
2025-06-17 11:30:43 +02:00
Elena Torró
039a544990 Merge pull request #6675 from penpot/alotor-grid-helpers
 Add grid helpers to wasm
2025-06-17 11:14:18 +02:00
Alejandro Alonso
60dbf02896 Merge pull request #6701 from penpot/elenatorro-fix-custom-font-load
🐛 Fix storing custom fonts
2025-06-17 10:06:02 +02:00
Elena Torro
d248dd09bc 🐛 Fix storing custom fonts 2025-06-17 09:38:17 +02:00
Alejandro Alonso
81d2b9a82e 🐛 Fix group fills propagation when fill is none 2025-06-17 09:17:54 +02:00
Alejandro Alonso
1bb6f2754c 🐛 Fix allocate 0 bytes for path attrs 2025-06-17 08:43:00 +02:00
Andrey Antukh
22ca1ab5f9 🐛 Fix incorrect params handling on exporter
that caused unexpected exception on multiple exports
2025-06-16 16:58:03 +02:00
Andrey Antukh
df84396fea Merge remote-tracking branch 'origin/staging' into develop 2025-06-16 16:51:14 +02:00
Andrey Antukh
acf0d02c5d Merge pull request #6696 from penpot/eva-add-export-metrics
🎉 Add token export event tag
2025-06-16 16:50:49 +02:00
Eva Marco
5ccf34fdae 🐛 Fix reposition on tooltip 2025-06-16 16:34:53 +02:00
Eva Marco
41c8bba1df ♻️ Remove anonym fn 2025-06-16 16:23:53 +02:00
Eva Marco
325a78a967 🎉 Add token export event tag 2025-06-16 16:20:14 +02:00
mirakernel
409ff31c30 🐛 Avoid crash on empty string in interaction prototype (#6687)
Fixes #6469

Using `uuid/parse` caused a crash when "Relative to" field was set to "auto",
producing an empty string. This change uses `uuid/parse*` instead, which safely
returns nil for invalid or empty inputs, preventing the crash.

Signed-off-by: Dmitriy Mikheev <mirakernel.disroot.org>
Co-authored-by: kira <kira@kira.kira>
2025-06-16 15:19:45 +02:00
mirakernel
a56822ad99 🐛 Avoid crash on empty string in interaction prototype (#6687)
Fixes #6469

Using `uuid/parse` caused a crash when "Relative to" field was set to "auto",
producing an empty string. This change uses `uuid/parse*` instead, which safely
returns nil for invalid or empty inputs, preventing the crash.

Signed-off-by: Dmitriy Mikheev <mirakernel.disroot.org>
Co-authored-by: kira <kira@kira.kira>
2025-06-16 15:18:59 +02:00
Andrey Antukh
8cb42a63e5 🐛 Fix bad initial state on profile settings 2025-06-16 15:05:29 +02:00
Andrey Antukh
2af1feafb6 Merge pull request #6667 from penpot/niwinz-develop-enhacements-2
 Add internal changes to tooltip* ds component
2025-06-16 15:03:42 +02:00
Eva Marco
691a67b595 🐛 Fix tooltip height on safari 2025-06-16 14:45:12 +02:00
Andrey Antukh
f7e94accc3 Add internal performance oriented changes to tooltip* 2025-06-16 14:45:12 +02:00
Andrey Antukh
fc655224af Add memorization to icon-button* ds component 2025-06-16 14:45:12 +02:00
Andrey Antukh
8b0ead6832 🐛 Fix regression on singup flow
Move all params handling to prepare-register, just for consistency
2025-06-16 14:31:30 +02:00
Alejandro Alonso
10ae4dd3f7 Merge pull request #6689 from penpot/niwinz-staging-add-sr-lang
 Add several fixes & enhancements
2025-06-16 13:43:24 +02:00
Andrey Antukh
34d6e86e42 🐛 Fix incorrect theem selection on export progress bar color 2025-06-16 13:42:43 +02:00
Andrey Antukh
481d1ec53a Normalize layout schemas 2025-06-16 13:42:43 +02:00
Andrey Antukh
c6f4ee1974 ⬆️ Update cuerdas dependency
Fixes a corner case with camel->kebab casing
2025-06-16 13:42:41 +02:00
Andrey Antukh
f20032199a 🎉 Add Serbian lang 2025-06-16 13:42:22 +02:00
Elena Torró
4869373a43 🔧 Add methods to render text as path (#6624)
* 🔧 Refactor text strokes drawing

* 🔧 Add text to path methods for future usage

* 📚 Add text as paths internal documentation
2025-06-16 13:37:29 +02:00
María Valderrama
d0aac65c76 🐛 Fix misalignments at create account (#6692) 2025-06-16 13:26:33 +02:00
Pablo Alba
2d36a1f3e0 🐛 Fix when retrieving a variant from several with same props, it get the last one 2025-06-16 12:23:40 +02:00
Alejandro Alonso
38941d4811 Merge pull request #6676 from penpot/elenatorro-fix-load-pending-single-attr
🐛 Fix parsing pending callback on setting single shape attr
2025-06-16 11:50:57 +02:00
María Valderrama
f21e546bc1 Add import error event (#6690) 2025-06-16 10:39:56 +02:00
alonso.torres
0be8a6e0e6 Add grid helpers to wasm 2025-06-16 09:55:35 +02:00
Marina López
3624a14141 Subscription tests (#6669)
*  Subscription tests

*  Subscription tests
2025-06-16 09:31:50 +02:00
Peter Kahoun
141431bb9e Update cs.po - inflection fixes (#6677)
Signed-off-by: Peter Kahoun <kahi.cz@gmail.com>
2025-06-16 09:29:47 +02:00
Alonso Torres
874a658369 Adds generateFontFaces method to the plugins api (#6682)
*  Adds generateFontFaces method to the plugins api

* ⬆️ Update plugin runtime
2025-06-16 09:28:04 +02:00
Alonso Torres
c254ebd7c3 🐛 Fix problem with import modal style (#6683) 2025-06-16 09:26:35 +02:00
Elena Torro
f58ee2c89f 🔧 Add visual regression tests for font load 2025-06-11 13:22:23 +02:00
Pablo Alba
925b6c02d6 🎉 Separate the content of the text of the rest of properties on variants 2025-06-11 11:22:43 +02:00
Pablo Alba
9761cba337 ♻️ Restore separate the content of the text of the rest of properties on components updates
This reverts commit b2aaa5f0df.
2025-06-11 11:21:54 +02:00
Florian Schrödl
267a3af1e5 💄 Fixes export dialog styling issues (#6673)
* 🐛 Fix text overflow in file list
* 💄 Set monospace font for code-block component
* 💄 Reduce padding
2025-06-11 10:43:02 +02:00
Andrey Antukh
71f5806e23 Add editors count to get-owned-teams rpc method response 2025-06-11 08:40:58 +02:00
Elena Torro
330bee7839 🐛 Fix parsing pending callback on setting single shape attr 2025-06-10 21:34:41 +02:00
Andrey Fedorov
d44e4e5275 Add zip file format import for tokens 2025-06-10 17:32:06 +02:00
Aitor Moreno
369e134bed ♻️ Refactor some minor perf issues 2025-06-10 16:00:10 +02:00
Andrey Antukh
b8ee7cad26 Merge pull request #6663 from penpot/alotor-plugins-bugfixes
 Plugins fixes and enhancements
2025-06-10 15:30:32 +02:00
alonso.torres
26efc9f0c8 📚 Add documentation for new plugin permission 2025-06-10 15:09:22 +02:00
alonso.torres
1d593e1287 ⬆️ Updates plugins runtime 2025-06-10 15:09:22 +02:00
alonso.torres
b34c161fc3 Adds local store proxy in plugins 2025-06-10 15:09:22 +02:00
alonso.torres
ed0c84a069 Exposes board clipContent and showInViewMode properties in plugins 2025-06-10 15:06:31 +02:00
alonso.torres
29466b47fe Adds skipChildren to export parameters 2025-06-10 15:06:30 +02:00
Elena Torró
f02dd9f8dc Merge pull request #6651 from penpot/superalex-path-fixes
🐛 Path fixes
2025-06-10 12:11:25 +02:00
David Barragán Merino
b385f055e0 🐳 Migrate from Redis to Valkey (#6666) 2025-06-10 10:08:10 +02:00
Alejandro Alonso
e91550cd9d Merge pull request #6646 from penpot/ladybenko-10904-playwright-wasm
🔧 Set up visual regression tests for wasm renderer
2025-06-10 09:24:59 +02:00
Alejandro Alonso
5faa619bc4 Merge pull request #6664 from penpot/niwinz-hotfix-1
🐛 Add better fix for path transformation
2025-06-10 08:51:51 +02:00
Alejandro Alonso
ed76b1b1ee 🎉 Support for webp images (#6665) 2025-06-10 08:40:30 +02:00
Belén Albeza
afdbb5cf2f 📚 Add documentation specific for wasm visual regression tests 2025-06-09 17:46:18 +02:00
Belén Albeza
971b92a75b 🔧 Make mockAsset to accept an array of asset ids too 2025-06-09 17:46:18 +02:00
Belén Albeza
479406b884 🔧 Add initial snapshots 2025-06-09 17:46:18 +02:00
Belén Albeza
1a10b7ebfd 🔧 Wait for first render using a custom event (visual regression tests) 2025-06-09 17:46:18 +02:00
Belén Albeza
59a4b51d2c 🔧 Set up playwright project for render wasm 2025-06-09 17:01:29 +02:00
Andrey Antukh
74430aad21 📎 Add missing emsd loading to devenv bashrc 2025-06-09 15:57:31 +02:00
Alejandro Alonso
78d6166bac 🐛 Fix caps for rounded paths 2025-06-09 14:40:54 +02:00
Alejandro Alonso
8db910baee 🐛 Fix rendering vertical and horizontal paths 2025-06-09 13:04:18 +02:00
Alejandro Alonso
a9702f104d 🐛 Fix shapes without fills contained in a group with fills 2025-06-09 13:04:18 +02:00
Andrey Antukh
01dda6dd6b 🐛 Add better fix for path transformation 2025-06-09 12:46:53 +02:00
Andrey Antukh
b2bc481672 Merge remote-tracking branch 'origin/develop' into staging 2025-06-09 12:21:09 +02:00
Andrey Antukh
8c337f508b Merge remote-tracking branch 'origin/staging' into develop 2025-06-09 12:20:55 +02:00
Andrey Antukh
f9f45dc612 🐛 Fix path rotation issue (#6662) 2025-06-09 12:14:09 +02:00
Anonymous
93542854c1 🌐 Add translations for: Swedish
Currently translated at 86.6% (1610 of 1857 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/sv/
2025-06-09 11:13:39 +02:00
Anonymous
858f94c6d2 🌐 Add translations for: Dutch
Currently translated at 96.5% (1793 of 1857 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/nl/
2025-06-09 11:13:38 +02:00
Anonymous
f932d663b0 🌐 Add translations for: Latvian
Currently translated at 96.5% (1793 of 1857 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/
2025-06-09 11:13:38 +02:00
Anonymous
63631e60cd 🌐 Add translations for: Ukrainian (ukr_UA)
Currently translated at 96.5% (1793 of 1857 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/
2025-06-09 11:13:38 +02:00
Anonymous
6018cd67c5 🌐 Add translations for: Croatian
Currently translated at 87.1% (1619 of 1857 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hr/
2025-06-09 11:13:37 +02:00
Anonymous
4856d0e957 🌐 Add translations for: Portuguese (Portugal)
Currently translated at 85.7% (1592 of 1857 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_PT/
2025-06-09 11:13:37 +02:00
Anonymous
995ca4d7d9 🌐 Add translations for: Czech
Currently translated at 87.1% (1618 of 1857 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/cs/
2025-06-09 11:13:37 +02:00
Anonymous
d5d254a7f3 🌐 Add translations for: Italian
Currently translated at 96.5% (1793 of 1857 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/it/
2025-06-09 11:13:36 +02:00
Anonymous
69f45dc811 🌐 Add translations for: Chinese (Traditional Han script)
Currently translated at 87.3% (1623 of 1857 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hant/
2025-06-09 11:13:35 +02:00
Anonymous
7534ad283c 🌐 Add translations for: Hebrew
Currently translated at 96.5% (1793 of 1857 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/
2025-06-09 11:13:34 +02:00
Anonymous
3d6695171d 🌐 Add translations for: Indonesian
Currently translated at 92.7% (1722 of 1857 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/id/
2025-06-09 11:13:34 +02:00
Anonymous
8fa28ce176 🌐 Add translations for: German
Currently translated at 89.9% (1670 of 1857 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/
2025-06-09 11:13:34 +02:00
Anonymous
f03a0de665 🌐 Add translations for: French
Currently translated at 95.7% (1778 of 1857 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/
2025-06-09 11:13:34 +02:00
Anonymous
555af2fa52 🌐 Add translations for: English
Currently translated at 99.7% (1852 of 1857 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/en/
2025-06-09 11:13:33 +02:00
Andrey Antukh
0683b20b25 🌐 Rehash and validate translation files 2025-06-09 11:01:08 +02:00
Hosted Weblate
163ae639ff 🌐 Update translation files
Updated by "Cleanup translation files" hook in Weblate.

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/
2025-06-09 10:57:51 +02:00
Andrey Antukh
354ba91aa6 Merge remote-tracking branch 'weblate/develop' into develop 2025-06-09 10:57:13 +02:00
Andrey Antukh
38d9a9d2d5 📎 Update changelog 2025-06-09 10:29:18 +02:00
Yamila Moreno
beb3d16693 📎 Fix minor typo (#6661) 2025-06-09 10:25:16 +02:00
Andrey Antukh
5770c0cb02 Merge pull request #6625 from penpot/niwinz-develop-enhacements-1
 Several enhacements
2025-06-09 10:24:44 +02:00
Eva Marco
46ce9500fc 🐛 Fix absolute position tooltip message (#6660) 2025-06-09 09:52:35 +02:00
Alejandro Alonso
d008ea9edd Merge pull request #6652 from penpot/elenatorro-fix-load-fonts
🐛 Fix fonts initialization
2025-06-09 09:31:00 +02:00
Eva Marco
eba8d02c18 📚 Update changelog 2025-06-06 15:48:39 +02:00
Florian Schrödl
bb9daf7c03 Add export tokens modal with multi-file export (#6649) 2025-06-06 15:37:10 +02:00
Andrey Antukh
f1232fc461 🐛 Fix issues with old profile theme data 2025-06-06 15:25:49 +02:00
Andrey Antukh
9584e1b02d 📎 Add missing playwright chromium install to devenv 2025-06-06 15:10:52 +02:00
Edgars Andersons
96ccac5085 🌐 Add translations for: Latvian
Currently translated at 99.9% (1807 of 1808 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/
2025-06-06 13:03:07 +00:00
Ingrid Pigueron
2540d58096 🌐 Add translations for: French
Currently translated at 98.7% (1786 of 1808 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/
2025-06-06 13:03:05 +00:00
Andrey Antukh
de2695682d Allow encode mailto and self target link in markdown
On translation files
2025-06-06 14:03:52 +02:00
Andrey Antukh
e464d8cf9c 📎 Add library tests to circle-ci config 2025-06-06 14:03:52 +02:00
Andrey Antukh
a8433bcef3 🐛 Fix incorrect decoding of library color 2025-06-06 14:03:52 +02:00
Andrey Antukh
644dd9ff44 🎉 Add support for progress reporting to library export method 2025-06-06 14:03:52 +02:00
Andrey Antukh
27d2724153 🐛 Fix incorrect shape filtering on bool creation on library 2025-06-06 14:03:52 +02:00
Andrey Antukh
c647d122d8 ⬆️ Update frontend dependencies 2025-06-06 14:03:52 +02:00
Andrey Antukh
e4a65f3a04 ⬆️ Update backend dependencies 2025-06-06 14:03:52 +02:00
Andrey Antukh
389f1d6502 ⬆️ Update common dependencies 2025-06-06 14:03:52 +02:00
Andrey Antukh
b91a670198 Replace redis with valkey on devenv compose file 2025-06-06 14:03:52 +02:00
Andrey Antukh
5650629b73 Add minimal wait to run-devenv when no compose is started 2025-06-06 14:01:10 +02:00
Andrey Antukh
a4310b4213 🔥 Remove usage of dm/assert on data.profile ns file 2025-06-06 14:01:10 +02:00
Elena Torro
a8d4b293dc 🐛 Fix loading same resources multiple times 2025-06-06 12:26:35 +02:00
Alejandro Alonso
fec7d5cff2 🐛 Fix detach stroke (#6655) 2025-06-06 12:24:18 +02:00
Alejandro Alonso
5e254ff3f6 Merge pull request #6643 from penpot/azazeln28-refactor-performance-improvements
♻️ Minor performance improvements
2025-06-06 11:38:53 +02:00
Elena Torro
8c20159fb0 🐛 Cache emoji font correctly 2025-06-06 11:28:50 +02:00
Elena Torro
79e1c29306 🐛 Fix emoji detection and load 2025-06-06 11:28:50 +02:00
Aitor Moreno
fcd3e5c34c ♻️ Refactor surface iteration 2025-06-06 10:21:31 +02:00
Eva Marco
8b9f15f414 🐛 Fix select color tooltip error (#6648) 2025-06-05 21:15:00 +02:00
Pablo Alba
b2aaa5f0df ♻️ Remove separate the content of the text of the rest of properties on components updates 2025-06-05 16:43:23 +02:00
Aitor Moreno
8922e7454f ♻️ Refactor some allocations 2025-06-05 15:37:03 +02:00
Alejandro Alonso
4f7d97a31e Merge pull request #6641 from penpot/ladybenko-fix-fills-wasm
🐛 Fix set-shape-fills serialization (wasm renderer)
2025-06-05 14:24:27 +02:00
Stas Haas
e32af5e71e 🌐 Add translations for: German
Currently translated at 92.4% (1672 of 1808 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/
2025-06-05 14:09:36 +02:00
Ingrid Pigueron
6cb5b812da 🌐 Add translations for: French
Currently translated at 98.0% (1772 of 1808 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/
2025-06-05 14:09:36 +02:00
Belén Albeza
ca24e23775 🐛 Fix set-shape-fills serialization (wasm renderer) 2025-06-05 14:04:41 +02:00
Alejandro Alonso
28ed62fb2c Merge pull request #6640 from penpot/niwinz-develop-hotfix-1
🐛 Remove fills from paragraph-set nodes on text shapes
2025-06-05 14:03:18 +02:00
Andrey Antukh
9c4b60e95f 🐛 Fix incorrect opacity assignation on changing fill from solid to gradient 2025-06-05 13:34:13 +02:00
Andrey Antukh
6719902647 Add color checks and test of event creation for fills 2025-06-05 13:34:13 +02:00
Andrey Antukh
cf8307af8f 📎 Update changelog 2025-06-05 13:29:51 +02:00
Andrey Antukh
8c54cb764f 🐛 Remove fills from paragraph-set nodes on text shapes 2025-06-05 13:11:39 +02:00
Eva Marco
4a9fef12eb 🐛 Fix url params on invitation link (#6638) 2025-06-05 12:28:53 +02:00
Alejandro Alonso
ea4e69f381 Merge pull request #6633 from penpot/niwinz-develop-hotfix-1
🐛 Fix library color detach operation
2025-06-05 11:04:57 +02:00
Anderson Paulo
5fed12d807 🌐 Add translations for: Portuguese
Currently translated at 5.1% (93 of 1808 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt/
2025-06-05 11:01:50 +02:00
Edgars Andersons
a2f41a7a40 🌐 Add translations for: Latvian
Currently translated at 99.3% (1797 of 1808 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/
2025-06-05 11:01:47 +02:00
Stas Haas
f4fd9fa13d 🌐 Add translations for: German
Currently translated at 92.3% (1669 of 1808 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/
2025-06-05 11:01:47 +02:00
Andrés Moya
8a0aa20789 🔧 Renames, privacy adjustments and other small enhancements 2025-06-05 10:58:23 +02:00
Andrés Moya
1b3a200010 🔧 Reorder code for more legibility 2025-06-05 10:58:23 +02:00
Andrés Moya
70263ba901 🔥 Remove unused code 2025-06-05 10:58:23 +02:00
Andrés Moya
5c8f6dd498 🔧 Add internal id to all token entities 2025-06-05 10:58:23 +02:00
Eva Marco
a2abaea637 ♻️ Update button-icon with tooltip component (#6539)
* 🐛 Add tooltip to base icon button

* 🎉 Update id prop

* 🐛 Fix test
2025-06-05 10:18:56 +02:00
Alejandro Alonso
55997a3d4a Merge pull request #6634 from penpot/ladybenko-fit-set-shape-fills
🐛 Fix wasm crash in set_shape_fills (wasm) when fill list is empty
2025-06-05 10:07:34 +02:00
Belén Albeza
a30ab17605 🐛 Fix wasm crash in set_shape_fills (wasm) when fill list is empty 2025-06-05 09:52:51 +02:00
Eva Marco
ab0219876e Add numeric token type (#6575)
*  Add numeric type token

* 🐛 Fix comments
2025-06-05 09:33:54 +02:00
Andrey Antukh
19961f440a 🐛 Fix library color detach operation 2025-06-05 09:33:06 +02:00
Alejandro Alonso
db84eb365b 🐛 Fix strokes migration (#6632) 2025-06-05 08:42:57 +02:00
Marina López
b7f97dbeea 🐛 Subscription review fixes (#6628) 2025-06-04 21:01:48 +02:00
Elenzakaleidos
4cbaef1451 💄 New video in the README.md (#6629)
I added a new video in the readme page cause the previous one had the wrong name

Signed-off-by: Elenzakaleidos <elena.scilinguo@kaleidos.net>
2025-06-04 21:00:49 +02:00
andrés gonzález
e1adbdfd9f 📚 Update changelog (#6616) 2025-06-04 15:12:33 +02:00
Alejandro Alonso
687e1e7b0b Merge pull request #6569 from penpot/niwinz-fills-cleanup
♻️ Clean and sanitize color types
2025-06-04 14:26:12 +02:00
Alejandro Alonso
055ee27be0 🐛 Add migrations to fix colors 2025-06-04 14:01:48 +02:00
Andrés Moya
47af278f5e 🐛 Remove unneeded check 2025-06-04 13:11:16 +02:00
Andrey Antukh
29ad99d685 🐛 Fix incorrect declaration of tokens lib schema decoder 2025-06-04 13:03:51 +02:00
Andrey Antukh
3a8b312f6d 🐛 Fix calculate hash on empty path data instance 2025-06-04 13:03:51 +02:00
Andrey Antukh
8f55269522 🐛 Remove unknown types from stroke style schema 2025-06-04 13:03:51 +02:00
Andrey Antukh
f86ce38f04 🎉 Add Fills binary data type 2025-06-04 13:03:51 +02:00
Andrey Antukh
b97a3f9783 Add tests for common buffers namespace to the cljs test runner 2025-06-04 12:46:49 +02:00
Andrey Antukh
91807151ba Add stricter validation for gradient stop offset
It should be from a number from 0 to 1 inclusive
2025-06-04 12:46:49 +02:00
Andrey Antukh
5c225a51ce Add the ability to retrieve a set of keys from map schemas 2025-06-04 12:46:49 +02:00
Andrey Antukh
3d61924162 ♻️ Change internal naming for PathData cljs impl
For make it more consistent with CLJ impl and move
the equals helper to buffers for make it reusable by
other binary types.
2025-06-04 12:46:49 +02:00
Andrey Antukh
580013bc3f ⬆️ Update shadow-cljs to 3.1.5 2025-06-04 12:46:49 +02:00
Andrey Antukh
9ec5467e2a 🐛 Fix incorrect neested data structure validation on components
This commit upgrades rumext where the issue is fixed. It also
adapts the swatch component for correct data passing.
2025-06-04 12:46:49 +02:00
Andrey Antukh
b113736321 📎 Disable shadow-cljs reload on storybook build 2025-06-04 12:46:49 +02:00
Andrey Antukh
22db773b2e 🔥 Remove unused code from worker import ns 2025-06-04 12:46:49 +02:00
Andrey Antukh
91636ffc41 🐛 Adapt inspect code to color type changes
Still contains broken code because it was already broken
2025-06-04 12:46:49 +02:00
Andrey Antukh
7160334cb9 ♻️ Add stricter validation for colors, fills and strokes 2025-06-04 12:46:49 +02:00
Andrey Antukh
d08d2f49ac Add better defaults for several number schema generators 2025-06-04 12:46:49 +02:00
Andrey Antukh
8f774a3611 Simplify media mime types structs 2025-06-04 12:46:49 +02:00
Andrey Antukh
d9d2cc7b4e Split byte buffer helpers from types path impl 2025-06-04 12:46:49 +02:00
Andrey Antukh
2e0fd6ec1b Merge pull request #6626 from penpot/niwinz-develop-fixes-4
🐛 Several bugfixes
2025-06-04 12:39:39 +02:00
Andrey Antukh
d2d39aad30 Make theme toggle skip "system" theme 2025-06-04 12:24:01 +02:00
Andrey Antukh
d6e0001ac4 🐛 Fix encoding and decoding issue with tokens lib type 2025-06-04 12:12:31 +02:00
Elena Torró
793c01a0a1 Merge pull request #6611 from penpot/elenatorro-add-new-render-texts-docs
📚 Add texts documentation
2025-06-04 10:11:31 +02:00
Elena Torró
bbac5d050e Merge pull request #6623 from penpot/ladybenko-11106-send-all-fills
 Send all fills of a shape in a single wasm call
2025-06-04 09:18:39 +02:00
Alejandro Alonso
5a7d9e3f18 Merge pull request #6609 from penpot/elenatorro-11213-fix-language-font-fallback
🎉 Implement font fallback to support multiple languages
2025-06-03 17:19:39 +02:00
Edgars Andersons
1a921c2750 🌐 Add translations for: Latvian
Currently translated at 99.1% (1792 of 1808 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/
2025-06-03 14:04:12 +00:00
Yaron Shahrabani
39f145b8b1 🌐 Add translations for: Hebrew
Currently translated at 99.9% (1807 of 1808 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/
2025-06-03 14:04:10 +00:00
Stas Haas
6611769dc9 🌐 Add translations for: German
Currently translated at 92.2% (1667 of 1808 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/
2025-06-03 14:04:08 +00:00
Eva Marco
b3d230ba16 📚 Add copyright to docs files (#6618) 2025-06-03 15:49:24 +02:00
Eva Marco
ddae0026fe 🎉 Add metrics to new multi file import (#6610) 2025-06-03 15:48:22 +02:00
Belén Albeza
9fc3f4858a Send all fills of a shape in a single wasm call 2025-06-03 15:37:36 +02:00
andrés gonzález
1120c7c7fb 🐛 Fix copy in error message (#6615) 2025-06-03 12:28:49 +02:00
Andrey Antukh
e9bd44b819 Merge remote-tracking branch 'origin/staging' into develop 2025-06-03 10:44:11 +02:00
Andrey Antukh
2244bf6aa7 Merge remote-tracking branch 'origin/main' into staging 2025-06-03 10:43:39 +02:00
Andrey Antukh
f4ef4a705c Merge tag '2.7.2-RC1' 2025-06-03 10:43:14 +02:00
Elena Torro
c40de5fb87 🎉 Implement font fallback to support multiple languages 2025-06-03 08:21:59 +02:00
Elena Torro
9733c41ae4 🐛 Fix blend mode on merge fills 2025-06-03 08:21:59 +02:00
Alejandro Alonso
fe8d9fdd76 Merge pull request #6614 from penpot/niwinz-staging-backport-1
 Make the hash optional on binfile-v3
2025-06-03 08:13:42 +02:00
Alejandro Alonso
401fa823a0 Merge pull request #6612 from penpot/niwinz-develop-devenv
🐛 Fix build issues on devenv
2025-06-03 07:49:34 +02:00
Andrey Antukh
3da3281a56 🐛 Fix library compatibility issue on media encoding with penpot 2.7 (#6613) 2025-06-02 23:25:39 +02:00
Andrey Antukh
3131eec271 Make the hash optional on binfile-v3
Backport the change from develop
2025-06-02 23:24:35 +02:00
Andrey Antukh
1909189ce0 Use different approach for setup cargo home 2025-06-02 22:29:39 +02:00
Andrey Antukh
0ec0917b6d Add isolated-shell to manage.sh
Instead of attaching to an existing devenv, starts a new one.
2025-06-02 19:13:20 +02:00
Andrey Antukh
0e4c535edc 📎 Print current path on frontend scripts build script 2025-06-02 19:11:55 +02:00
Andrey Antukh
46f330fef3 Move several logic from init to entrypoint on devenv
For make commands consistent independently if they are executed
inside devenv or from manage.sh
2025-06-02 19:10:48 +02:00
Andrey Antukh
f067c86b02 🔥 Remove unnecesary env vars from bashrc (devenv) 2025-06-02 19:10:20 +02:00
Andrey Antukh
2b6a91819b Reduce verbosity of frontend build script 2025-06-02 18:05:11 +02:00
Andrey Antukh
1f652fe364 Remove arm64 build of devenv
Looks unused right now
2025-06-02 17:44:22 +02:00
Elena Torro
4c10aeefe6 📚 Add texts documentation 2025-06-02 16:36:25 +02:00
Andrey Antukh
e70da78a77 Merge remote-tracking branch 'origin/staging' into develop 2025-06-02 12:55:22 +02:00
Andrey Antukh
27ab910a64 📚 Update changelog 2025-06-02 12:36:47 +02:00
Alejandro Alonso
c1fa6be7c4 Merge pull request #6591 from penpot/azazeln28-refactor-render-iteration
♻️ Refactor render iteration
2025-06-02 12:33:19 +02:00
Andrey Antukh
2398c1fc2b Merge pull request #6604 from penpot/alotor-fix-sandbox-runtime
🐛 Add sandbox runtime
2025-06-02 12:30:51 +02:00
Alejandro Alonso
13859f90b9 Merge pull request #6601 from penpot/alotor-fix-move-guides
 Move guides and comments for wasm modifiers
2025-06-02 12:28:01 +02:00
Yamila Moreno
e2724d180b Merge pull request #6497 from penpot/yms-update-coc
📚 Update Code of conduct
2025-06-02 12:20:57 +02:00
Andrey Antukh
c6bccafd98 Merge pull request #6607 from penpot/andy-update-changelog
📚 Update changelog
2025-06-02 12:17:53 +02:00
Andrey Antukh
1357ab34eb 📚 Move library rework changes to its own changelog 2025-06-02 12:16:27 +02:00
Andres Gonzalez
6e9ee3d310 📚 Update changelog 2025-06-02 12:10:32 +02:00
Yamila Moreno
5816695246 📚 Update Code of Conduct 2025-06-02 12:09:20 +02:00
Yamila Moreno
0d9160506b 📚 Add direct link to the CoC 2025-06-02 12:09:20 +02:00
Yamila Moreno
c3c6628bf1 📚 Minor improvement in README / Getting started 2025-06-02 12:09:20 +02:00
Alejandro Alonso
8642ffba46 🐛 Fix frontend build (#6608) 2025-06-02 12:03:08 +02:00
Andrey Antukh
25372c3edf Persist ruler layout flag to local storage 2025-06-02 11:43:13 +02:00
Andrey Antukh
e13d1743da Merge pull request #6598 from penpot/superalex-deprecate-old-image-type
♻️ Migrations for deprecated types and attributes
2025-06-02 11:29:44 +02:00
luisδμ
02d1a1f0b1 Delete variant property when it has no value anywhere after editing a formula (#6586) 2025-06-02 09:50:27 +02:00
Alejandro Alonso
08aeb93710 Merge pull request #6606 from penpot/niwinz-develop-fixes-2
 Fix several issues on penpot library
2025-06-02 07:04:22 +02:00
Alejandro Alonso
04f0f77cd8 Merge pull request #6605 from penpot/niwinz-develop-fixes-1
🐛 Fix default theme setup
2025-06-02 07:02:59 +02:00
Andrey Antukh
15adf1bd06 📎 Set penpot library version to 1.0.2 2025-06-01 11:29:31 +02:00
Andrey Antukh
1080ffc6b8 Add correct library version on the metadata 2025-06-01 11:28:42 +02:00
Andrey Antukh
1450672341 Remove obsolete props from bool style attrs 2025-06-01 11:20:26 +02:00
Andrey Antukh
483e88d6a3 Add more descriptive names for playground samples 2025-06-01 11:20:26 +02:00
Andrey Antukh
9fee16f4a9 🐛 Fix compatibility issue with penpot 2.7 2025-06-01 11:20:26 +02:00
Andrey Antukh
89a09346a5 🐛 Fix incorrect boolean shapes generation on builder 2025-06-01 11:06:00 +02:00
Andrey Antukh
77fa235965 🐛 Fix incorrect boolean shape generation on file builder 2025-06-01 10:25:11 +02:00
Andrey Antukh
03e4ca12be ♻️ Move update-bool from common geom to types path 2025-06-01 10:24:09 +02:00
Andrey Antukh
229c9b8385 📎 Add minor changes to circleci cache management 2025-06-01 09:34:05 +02:00
Andrey Antukh
a4fab5c5bd 🐛 Fix default theme setup
broken on previous commits
2025-06-01 09:30:57 +02:00
Andrey Antukh
d8913ab18b Add minor changes to devenv for avoid repeated deps download (#6600)
*  Add minor changes to devenv for avoid repeated dependency download

*  Add minor changes to devenv for integrate payments service

*  Remove playwright deps install from circleci config

*  Move cargo_home to userspace on devenv start

*  Improve cache management on CI

*  Improve cargo installation

*  Add missing playwright install cmd on CI

*  Install cargo-watch on devenv

---------

Co-authored-by: David Barragán Merino <david.barragan@kaleidos.net>
2025-06-01 09:16:28 +02:00
Edgars Andersons
7ef2f4e67e 🌐 Add translations for: Latvian
Currently translated at 98.8% (1787 of 1808 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/
2025-05-31 12:03:08 +02:00
Alejandro Alonso
1d065e68f4 🎉 Allow force render mode from get param (#6594) 2025-05-30 20:05:58 +02:00
Miguel de Benito Delgado
c9ceceb7e9 🔥 Remove old code for theme support (#6597) 2025-05-30 16:54:23 +02:00
luisδμ
ad26efaa5d Limit the length of property names and values to 60 chars (#6587) 2025-05-30 16:15:18 +02:00
alonso.torres
a3e17047a4 🐛 Add sandbox runtime 2025-05-30 15:40:36 +02:00
Alejandro Alonso
0552ef55cf Merge pull request #6603 from penpot/alotor-fix-duplicate-shapes
🐛 Fix problem in wasm when duplicate objects
2025-05-30 14:08:01 +02:00
Belén Albeza
d4c6063378 Avoid intercepting get-file-fragment in the playwright test 2025-05-30 13:53:00 +02:00
Belén Albeza
f23e460b2a Fix broken tokens test 2025-05-30 13:53:00 +02:00
Belén Albeza
35b29bb203 🐛 Fix font size input not displaying 'mixed' when needed 2025-05-30 13:53:00 +02:00
Alejandro Alonso
cd02905d1f ♻️ Migrate old fill text attributes 2025-05-30 13:51:05 +02:00
Alejandro Alonso
87d917bc2e ♻️ Deprecate old image type 2025-05-30 13:51:05 +02:00
alonso.torres
e8d1ea24d1 🐛 Fix problem in wasm when duplicate objects 2025-05-30 13:49:56 +02:00
Andrey Antukh
ad842872fb 🐛 Fix unexpected exception on get-team internal method
Because of invalid SQL
2025-05-30 13:49:05 +02:00
Alejandro Alonso
90744c182e Merge pull request #6602 from penpot/elenatorro-11214-use-text-decoration-from-leaf
🐛 Fix reading text-decoration and text-transform from leaf, and fallback to paragraph values
2025-05-30 13:33:58 +02:00
Alejandro Alonso
78aaf28532 Merge pull request #6498 from penpot/niwinz-develop-update-fonts
⬆️ Update google fonts
2025-05-30 13:28:08 +02:00
Elena Torro
4e2f905a26 🐛 Fix reading text-decoration and text-transform from leaf, and fallback to paragraph values 2025-05-30 13:22:39 +02:00
Andrey Antukh
d2cd99ed44 ⬆️ Update google fonts 2025-05-30 13:08:57 +02:00
Alejandro Alonso
885231e9a1 Merge pull request #6512 from penpot/niwinz-develop-custom-deletion-rules
♻️ Normalize logical deletion delay handling
2025-05-30 12:53:37 +02:00
Pablo Alba
baabfe2de8 🎉 Split text and its properties on components updates 2025-05-30 12:36:10 +02:00
alonso.torres
facb0227a0 Move guides and comments for wasm modifiers 2025-05-30 12:15:21 +02:00
Elena Torró
f6fe41af96 🔧 Add texts playground (#6599) 2025-05-30 12:10:34 +02:00
Edgars Andersons
f225fce9a1 🌐 Add translations for: Latvian
Currently translated at 98.4% (1780 of 1808 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/
2025-05-30 11:01:47 +02:00
Yaron Shahrabani
3570d29575 🌐 Add translations for: Hebrew
Currently translated at 97.1% (1756 of 1808 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/
2025-05-30 11:01:45 +02:00
Andrey Antukh
f8489a521f Merge pull request #6590 from penpot/niwinz-develop-library-fixes
 Add minor enhancements to penpot library
2025-05-30 10:35:41 +02:00
Andrey Antukh
cc76a42088 Merge pull request #6561 from mdbenito/feature/5030-use-system-theme
 Use system theme
2025-05-30 10:34:46 +02:00
Andrey Antukh
50cc70201d Merge pull request #6578 from penpot/ladybenko-11105-cap-fills
🎉 Disable adding fills in UI when limit has been reached
2025-05-30 10:11:05 +02:00
Belén Albeza
e88b3bae5a 🔥 Remove gulp (#6592) 2025-05-30 10:03:22 +02:00
Aitor Moreno
2b2939b4b7 ♻️ Remove unnecesary sort operation 2025-05-30 09:56:58 +02:00
Miguel de Benito Delgado
6b25720155 🌐 Add missing translation 2025-05-29 20:11:11 +00:00
Miguel de Benito Delgado
96d099b71e Mock .matchMedia in global/window 2025-05-29 20:11:11 +00:00
Miguel de Benito Delgado
fab9e842e8 Support following system color scheme 2025-05-29 22:10:00 +02:00
Miguel de Benito Delgado
ee022e225c 🚧 UI to support switching to system theme 2025-05-29 22:10:00 +02:00
Andrey Antukh
1b3fcb0432 📎 Update circleci workflow 2025-05-29 13:50:39 +02:00
Andrey Antukh
37f88067b9 🔥 Remove library method addComponentInstance 2025-05-29 13:07:44 +02:00
Alejandro Alonso
2650eccd09 🐛 Fix set path attrs (#6589) 2025-05-29 12:27:08 +02:00
Andrey Antukh
969b171510 📎 Prepare for release 1.0.1 of the penpot library 2025-05-29 12:15:17 +02:00
Andrey Antukh
4b22a0ebfb 🐛 Make the library generate output compatible with penpot 2.7.x 2025-05-29 12:08:50 +02:00
Andrey Antukh
eafea7aec9 Merge pull request #6588 from penpot/niwinz-develop-fix-boolean
🐛 Fix incorrect bool shape creation
2025-05-29 11:38:47 +02:00
Belén Albeza
ce23fee292 Limit the amount of fills shown in the UI 2025-05-29 11:26:18 +02:00
Alejandro Alonso
f3d734357a Merge pull request #6409 from penpot/azazeln28-feat-compare-wasm
🎉 Add comparison tool to WASM playground
2025-05-29 11:20:54 +02:00
Andrey Antukh
d31f64796f 🐛 Fix incorrect bool shape creation issue 2025-05-29 11:16:12 +02:00
Andrey Antukh
3a27a5a542 Add minor naming change on process selected fn 2025-05-29 11:15:46 +02:00
Andrey Antukh
2a04f78337 Add common transducers section to common data ns 2025-05-29 11:14:53 +02:00
Aitor Moreno
aeee05c90d 🎉 Add comparison tool to WASM playground 2025-05-29 10:46:38 +02:00
Yamila Moreno
6fc63f14a0 Add configuration for air gapped installations (#6567) 2025-05-29 10:34:47 +02:00
Belén Albeza
f33c1fb530 Update binary fills flag name and add it to supported flags 2025-05-29 10:32:49 +02:00
Andrey Antukh
75170bb043 Merge pull request #6537 from penpot/niwinz-library-publish
 Add minor enhancements to penpot-library for publish it on npm
2025-05-29 09:49:51 +02:00
Belén Albeza
c0a98288d0 🔧 Gate cap with config flag 2025-05-29 09:45:31 +02:00
Belén Albeza
7d5739b663 Add playwright test for disabling adding fills 2025-05-29 09:45:31 +02:00
Elena Torró
fe60016124 Merge pull request #6573 from penpot/elenatorro-11021-text-fixes
🔧 Fix text parsing and transformation
2025-05-29 09:33:05 +02:00
Alejandro Alonso
5c58a04fc2 🐛 Fix inner strokes black background effect 2025-05-29 09:05:30 +02:00
Alejandro Alonso
04a1f8475d Merge pull request #6585 from penpot/alotor-scale-content
 Add scale content to render wasm
2025-05-29 07:32:47 +02:00
Belén Albeza
3c05f09fd1 🔧 Fix unnecessary playwright dependency in root dir (#6577) 2025-05-28 17:09:05 +02:00
María Valderrama
5eaea63ca8 🐛 Fix palette is over sidebar (#6581) 2025-05-28 17:08:23 +02:00
alonso.torres
bcfa9a82ea Add scale content to render wasm 2025-05-28 16:40:57 +02:00
Denys Kisil
d9649eaedd 🌐 Add translations for: Ukrainian (ukr_UA)
Currently translated at 99.7% (1803 of 1808 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/
2025-05-28 16:01:45 +02:00
Belén Albeza
170d35dde2 Disable new fills in UI when the cap is reached 2025-05-28 14:01:26 +02:00
andrés gonzález
2943f80db5 📚 Change help links at the Help Center (#6582) 2025-05-28 13:22:42 +02:00
luisδμ
46b0e4f0e7 Manage empty property values in the combobox in design tab (#6574)
*  Manage empty property values in the combobox in design tab

* 📎 PR changes
2025-05-28 12:41:04 +02:00
Marina López
878952f7b5 Add subscription events (#6563)
*  Add subscription events

* 📎 Fixes PR feedback

* 📎 Fixes PR feedback
2025-05-28 10:50:36 +02:00
Marina López
f84ffc3562 Add history version days for subscriptions (#6571) 2025-05-28 10:49:53 +02:00
Aitor Moreno
e9edebbbb5 📚 Add tile rendering documentation (#6568) 2025-05-28 09:41:07 +02:00
Xavier Julian
14afd58eac 🐛 Display color swatch only on color type tokens 2025-05-28 09:29:26 +02:00
Belén Albeza
827d39a406 💄 Remove ununsed prop on fill-menu component 2025-05-27 15:30:16 +02:00
Belén Albeza
e4a1c373bb Only take N amount of fills 2025-05-27 15:30:11 +02:00
Pablo Alba
be13704934 🐛 Fix access to libs on migration during an import (#6572) 2025-05-27 14:54:17 +02:00
Elena Torro
88e77e3218 🔧 Fix text parsing and transformation 2025-05-27 14:04:27 +02:00
Pablo Alba
443cabe94e Add the ability to access libraries from file migrations 2025-05-27 13:12:34 +02:00
Alejandro Alonso
c7c8e91183 🐛 Fix keep aspect ratio support 2025-05-27 12:20:40 +02:00
Alejandro Alonso
327db5a1a3 🐛 Fix render of paths with empty selrects 2025-05-27 12:20:05 +02:00
Edgars Andersons
bcb74822d2 🌐 Add translations for: Latvian
Currently translated at 97.9% (1771 of 1808 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/
2025-05-27 09:01:55 +00:00
Yaron Shahrabani
790d422100 🌐 Add translations for: Hebrew
Currently translated at 96.4% (1743 of 1808 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/
2025-05-27 09:01:54 +00:00
laurentiucotet
419a949816 🌐 Add translations for: Romanian
Currently translated at 71.7% (1298 of 1808 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ro/
2025-05-27 09:01:53 +00:00
Ingrid Pigueron
1ad6ee6e38 🌐 Add translations for: French
Currently translated at 97.4% (1761 of 1808 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/
2025-05-27 09:01:51 +00:00
Andrey Antukh
da10425800 📚 Add readme for library directory 2025-05-27 10:55:49 +02:00
Andrey Antukh
3e4c80fa27 Prepare library to be published on npm 2025-05-27 10:55:49 +02:00
Marina López
179a5654e7 🐛 Fix get current user for plugins api 2025-05-27 10:50:01 +02:00
Marina López
bc38bd6a9c 🐛 Fix team name dropdown menu from dashboard (#6562) 2025-05-27 10:05:19 +02:00
Alejandro Alonso
1c5d182a90 Merge pull request #6559 from penpot/alotor-perf-fixes
🐛 Fix some problems with modifiers
2025-05-27 09:46:37 +02:00
alonso.torres
a85a42d367 🐛 Fix some problems with modifiers 2025-05-27 09:33:33 +02:00
Alejandro Alonso
1a705cee24 Merge pull request #6555 from penpot/niwinz-develop-fix-path-bug-1
🐛 Fix path node type change operation
2025-05-27 09:04:11 +02:00
Eva Marco
a771ca91ab 🐛 Add token units flag to common/flags file (#6557) 2025-05-26 13:53:56 +02:00
Andrey Antukh
4326e2c5a4 Merge remote-tracking branch 'origin/staging' into develop 2025-05-26 13:25:05 +02:00
Andrés Moya
050ffa235c ⬆️ Update cuerdas library (#6556) 2025-05-26 13:22:30 +02:00
Eva Marco
3dfccdaf9b ♻️ Put token settings under config flag (#6551) 2025-05-26 12:57:32 +02:00
Marina López
e5bc369e56 Visual indicators subscription for teams and project settings (#6546)
*  Visual indicators subscription for teams and project settings

* 📎 Fixes PR feedback

---------

Co-authored-by: Andrey Antukh <niwi@niwi.nz>
2025-05-26 12:56:40 +02:00
Andrey Antukh
fdd6502671 📚 Update changelog 2025-05-26 12:41:34 +02:00
Andrey Antukh
e698fd7d35 🐛 Fix path node type change operation 2025-05-26 12:13:52 +02:00
Andrés Moya
5e8929e504 🔧 Refactor token json file import/export 2025-05-26 12:02:26 +02:00
Alejandro Alonso
3ee3ee2059 Merge pull request #6553 from penpot/alotor-bug-fix-grid-editor-problem
🐛 Fix problem with grid editing
2025-05-26 11:40:24 +02:00
alonso.torres
9eacde567d 🐛 Fix problem with grid editing 2025-05-26 11:20:09 +02:00
Alejandro Alonso
ac0b74e11a Merge pull request #6549 from penpot/niwinz-staging-hotfix-1
🐛 Fix incorrect relink operation for stroke image
2025-05-26 09:50:52 +02:00
Stephan Paternotte
24d4871b23 🌐 Add translations for: Dutch
Currently translated at 99.9% (1807 of 1808 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/nl/
2025-05-25 04:01:45 +00:00
Andrey Antukh
9638fd274f Merge pull request #6547 from penpot/eva-remove-deprecated-props
♻️ Update docs and remove deprecated props
2025-05-24 11:18:53 +02:00
Andrey Antukh
b5d96d312a 🐛 Fix incorrect relink operation for stroke image 2025-05-24 09:16:10 +02:00
Edgars Andersons
f88420efb5 🌐 Add translations for: Latvian
Currently translated at 96.7% (1750 of 1808 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/
2025-05-23 20:01:44 +02:00
Nicola Bortoletto
c301d95f20 🌐 Add translations for: Italian
Currently translated at 99.7% (1804 of 1808 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/it/
2025-05-23 20:01:44 +02:00
Eva Marco
7c072abe28 📚 Update docs without props obj 2025-05-23 12:57:24 +02:00
Eva Marco
603e41bbfd ♻️ Remove mf/props obj from DS components 2025-05-23 12:57:02 +02:00
Pablo Alba
b561ad033c 🐛 Fix restore component when its original parent with layout is deleted 2025-05-23 12:11:35 +02:00
luisδμ
7373056037 Improve formula validating and parsing (#6527) 2025-05-23 12:08:50 +02:00
luisδμ
a9173f672d 🐛 Sanitize inputs for variant property names and values (#6532) 2025-05-23 12:08:39 +02:00
luisδμ
44829ff1ae Use different copies for different variant selection cases (#6544)
*  Use different copies for different variant selection cases

* 📎 PR changes
2025-05-23 12:08:24 +02:00
Andrey Antukh
927ee9e55e Add get-owned-teams rpc method 2025-05-23 11:20:35 +02:00
Xavier Julian
066b252522 Add composition and slots documentation to storybook 2025-05-23 10:12:20 +02:00
luisδμ
556a68a78f Select all variants with errors (#6533) 2025-05-23 09:21:57 +02:00
Belén Albeza
f9bbf2d524 Improve paths deserialization (wasm) (#6501)
* ♻️ Refactor path wasm code to its own wasm submodule

* ♻️ Use unified enum for RawSegmentData and transmute to deserialize

* ♻️ Move set_shape_path_attrs to wasm::paths module

* 💄 Unify repr declarations
2025-05-23 08:48:55 +02:00
alonso.torres
eaaca5629e 🐛 Fix problem with sidebar layout 2025-05-22 18:35:08 +02:00
Andrey Antukh
0df2a12814 Merge remote-tracking branch 'origin/staging' into develop 2025-05-22 13:34:46 +02:00
Andrey Antukh
df27db1996 Merge pull request #6531 from mdbenito/fix/choppy-closest-point
 Fix choppy behaviour of new node on path
2025-05-22 13:24:04 +02:00
Miguel de Benito Delgado
7fc0d15418 🐛 Fix cursor overlap query (#6530)
* 🐛 Fix cursor overlap query. Closes #4472

* 📎 Update CHANGES.md

---------

Signed-off-by: Miguel de Benito Delgado <m.debenito.d@gmail.com>
2025-05-22 13:22:52 +02:00
Eva Marco
99fb905070 🐛 Fix at icon (#6540) 2025-05-22 13:15:09 +02:00
Stephan Paternotte
e74cf1836f 🌐 Add translations for: Dutch
Currently translated at 99.9% (1807 of 1808 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/nl/
2025-05-22 13:06:02 +02:00
Edgars Andersons
dfdc1ac35b 🌐 Add translations for: Latvian
Currently translated at 96.4% (1743 of 1808 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/
2025-05-22 13:06:01 +02:00
Yaron Shahrabani
97a5a93694 🌐 Add translations for: Hebrew
Currently translated at 96.2% (1740 of 1808 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/
2025-05-22 13:06:00 +02:00
Ingrid Pigueron
dd0b8f8f6e 🌐 Add translations for: French
Currently translated at 97.3% (1760 of 1808 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/
2025-05-22 13:05:58 +02:00
Alejandro Alonso
413fc6de16 Merge pull request #6536 from penpot/niwinz-update-promesa
⬆️ Update dependencies
2025-05-22 12:49:00 +02:00
Aitor Moreno
d54a7d0401 Merge pull request #6526 from penpot/superalex-improve-zoom-performance-and-behaviour
🐛 Fix zoom performance and behaviour
2025-05-22 12:15:38 +02:00
Alejandro Alonso
ed53793d9d 🐛 Fix render shapes in multiple tiles with high dprs (#6538) 2025-05-22 12:10:51 +02:00
María Valderrama
faa68784af 💄 Add styles for external widgets on workspace (#6509)
* 💄 Add styles for Inkeep Chat at workspace

* 📎 Styles review
2025-05-22 11:56:45 +02:00
Aitor Moreno
58b1cf6b0c Merge pull request #6491 from penpot/alotor-perf-pixel-precision
 Pixel precision for new renderer
2025-05-22 11:37:11 +02:00
Andrey Antukh
f9c9e865b5 🐛 Remove unexpected modified-at on binfile-v3 import 2025-05-22 10:53:23 +02:00
Andrey Antukh
ebe321d9d3 ⬆️ Update dependencies on exporter 2025-05-22 10:53:23 +02:00
Andrey Antukh
0683fbd17c ⬆️ Update backend dependencies 2025-05-22 10:53:23 +02:00
Andrey Antukh
09a7ef3e45 ⬆️ Upgrade frontend dependendencies 2025-05-22 10:53:23 +02:00
Andrey Antukh
172b70d8a7 ⬆️ Upgrade promesa library to latest version
That fixes a workaround introduced in previous commits
2025-05-22 10:53:23 +02:00
Alejandro Alonso
3597e5bb54 🐛 Fix zoom performance and behaviour 2025-05-22 10:29:43 +02:00
Eva Marco
949b6d1205 🎉 Add missing translation (#6534) 2025-05-22 10:24:41 +02:00
Eva Marco
c0af77faf7 📚 Add css rules to the UI guide (#6521)
* 📚 Add css rules to UI guide

* 🐛 Solve comments on PR

* 🐛 Add missing class

* 🐛 Improve css modules improvement

* 🐛 Fix width

* 🐛 Fix note
2025-05-22 10:06:03 +02:00
Miguel de Benito Delgado
8f7a674000 🔥 Remove unused fn types.path.segment.path-closest-point 2025-05-21 21:32:18 +02:00
Miguel de Benito Delgado
e4f2dfaa11 Make precision closest point computation depend on zoom 2025-05-21 21:29:40 +02:00
Andrey Antukh
ec29c4f5fe Merge pull request #6528 from penpot/ladybenko-11076-fix-xywh-inputs
🐛 Fix misalignment in measure section (design tab)
2025-05-21 21:05:38 +02:00
Elena Torró
c21f5221bb Merge pull request #6453 from penpot/elenatorro-10900-add-text-fills
🎉 Add text fills
2025-05-21 18:46:04 +02:00
Elena Torro
42ef2f929a 🎉 Add text fills 2025-05-21 18:32:50 +02:00
Belén Albeza
2b21401368 🐛 Fix clip buttons size 2025-05-21 17:08:56 +02:00
Belén Albeza
a5c8063b2c 🐛 Fix presets menu alignment 2025-05-21 17:01:23 +02:00
Belén Albeza
2ad2af2aea 🐛 Fix measures inputs' alignment 2025-05-21 16:58:49 +02:00
Eva Marco
c2ce7c6cf6 🐛 Remove unnecesary icon (#6524) 2025-05-21 15:44:25 +02:00
María Valderrama
47490db4be 💄 Add styles for external widgets on workspace (#6509)
* 💄 Add styles for Inkeep Chat at workspace

* 📎 Styles review
2025-05-21 14:17:48 +02:00
andrés gonzález
a2ac2bc6c6 Change copy as SVG menu order (#6523) 2025-05-21 13:12:33 +02:00
Elena Torró
e80ca7e332 Merge pull request #6439 from penpot/elenatorro-11035-fix-overflow-x-scroll-on-sidebar
🐛 Fix default scroll visibility on layers sidebar
2025-05-21 11:51:32 +02:00
Elena Torro
e4644ff506 🔧 Use scroll only on layers and refactor layer element name 2025-05-21 11:36:24 +02:00
Andrey Antukh
662b926b4b 🌐 Rehash all translations 2025-05-21 11:20:36 +02:00
Miguel de Benito Delgado
6319ed78f9 🌐 Add missing translation strings for error messages (#6519)
* 🌐 Add i18n strings for some error messages

* 🌐 Add fr, de, es translations for some error messages
2025-05-21 11:17:53 +02:00
Eva Marco
3abc8774f6 ♻️ Change translation string from workspace.token to workspace.tokens (#6508)
* ♻️ Change string translation for tokens

* ♻️ Apply find-and-replace on translation files

---------

Co-authored-by: Andrey Antukh <niwi@niwi.nz>
2025-05-21 11:17:05 +02:00
Anonymous
af1c90c252 🌐 Add translations for: Swedish
Currently translated at 89.4% (1612 of 1803 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/sv/
2025-05-21 10:44:23 +02:00
Anonymous
8019ae7840 🌐 Add translations for: Dutch
Currently translated at 95.7% (1726 of 1803 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/nl/
2025-05-21 10:44:22 +02:00
Anonymous
6bd615ff8b 🌐 Add translations for: Latvian
Currently translated at 95.7% (1726 of 1803 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/
2025-05-21 10:44:22 +02:00
Anonymous
c4a793d306 🌐 Add translations for: Ukrainian (ukr_UA)
Currently translated at 95.7% (1726 of 1803 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/
2025-05-21 10:44:22 +02:00
Anonymous
631b3ac062 🌐 Add translations for: Croatian
Currently translated at 89.9% (1621 of 1803 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hr/
2025-05-21 10:44:22 +02:00
Anonymous
48995850fa 🌐 Add translations for: Portuguese (Portugal)
Currently translated at 88.4% (1594 of 1803 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_PT/
2025-05-21 10:44:21 +02:00
Anonymous
a5c7a2c97b 🌐 Add translations for: Czech
Currently translated at 89.8% (1620 of 1803 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/cs/
2025-05-21 10:44:20 +02:00
Anonymous
3a8285bc69 🌐 Add translations for: Italian
Currently translated at 95.6% (1724 of 1803 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/it/
2025-05-21 10:44:20 +02:00
Anonymous
02e3cc089e 🌐 Add translations for: Chinese (Traditional Han script)
Currently translated at 90.1% (1625 of 1803 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hant/
2025-05-21 10:44:20 +02:00
Anonymous
17e19afcbd 🌐 Add translations for: Hebrew
Currently translated at 95.7% (1726 of 1803 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/
2025-05-21 10:44:19 +02:00
Anonymous
a2b52a6408 🌐 Add translations for: Indonesian
Currently translated at 95.7% (1726 of 1803 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/id/
2025-05-21 10:44:19 +02:00
Anonymous
8cc4b69291 🌐 Add translations for: German
Currently translated at 92.1% (1661 of 1803 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/
2025-05-21 10:44:19 +02:00
Anonymous
045ddf5829 🌐 Add translations for: Portuguese (Brazil)
Currently translated at 70.9% (1279 of 1803 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_BR/
2025-05-21 10:44:18 +02:00
Anonymous
1d0335aba6 🌐 Add translations for: French
Currently translated at 95.7% (1727 of 1803 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/
2025-05-21 10:44:18 +02:00
Anonymous
5412d72236 🌐 Add translations for: Spanish
Currently translated at 98.8% (1782 of 1803 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/es/
2025-05-21 10:44:17 +02:00
Anonymous
896ee43212 🌐 Add translations for: English
Currently translated at 99.8% (1800 of 1803 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/en/
2025-05-21 10:44:17 +02:00
alonso.torres
5d42b9793b 🐛 Fix some problems with layouts 2025-05-21 10:42:03 +02:00
alonso.torres
6cd2c712ab Pixel precision for new renderer 2025-05-21 10:42:03 +02:00
Elena Torro
a575410a29 🐛 Fix default scroll visibility on layers sidebar 2025-05-21 10:38:27 +02:00
Hosted Weblate
6b5703c1fe 🌐 Update translation files
Updated by "Cleanup translation files" hook in Weblate.

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/
2025-05-21 10:38:18 +02:00
Andrey Antukh
22c3d4d807 Merge remote-tracking branch 'weblate/develop' into develop 2025-05-21 10:37:42 +02:00
luisδμ
b0701f6bb4 Control malformed variant formulas (#6473)
*  Control malformed variant strings

* 📎 PR changes

* 📎 PR changes
2025-05-21 10:18:11 +02:00
Alejandro Alonso
0748ef7267 Merge pull request #6518 from penpot/niwinz-staging-tokenslib-json-encoding
🐛 Add json encoding for tokenslib type
2025-05-21 10:17:37 +02:00
Pablo Alba
9bad9b8e91 🐛 Fix restore component when its original parent is deleted (#6517) 2025-05-21 10:05:22 +02:00
Andrey Antukh
9ca4fa752c 🐛 Add json encoding for tokenslib type 2025-05-21 09:59:28 +02:00
Andrey Antukh
b6563f620b 📎 Allow merge commits on commit linter 2025-05-21 09:34:05 +02:00
Andrey Antukh
a63fa2944d Merge remote-tracking branch 'origin/staging' into develop 2025-05-21 09:23:15 +02:00
Miguel de Benito Delgado
fd89c9d82c Avoid double id lookup when calling lookup-page-objects (#6513) 2025-05-20 22:31:40 +02:00
Andrey Antukh
a706907b26 ♻️ Normalize logical deletion to future dates
Instead of managing the ...
2025-05-20 22:25:57 +02:00
Andrey Antukh
a3b4fc9545 🔥 Remove unused function from workspace.media ns 2025-05-20 22:25:57 +02:00
Miguel de Benito Delgado
71bb2556f9 ♻️ Move page setup out of the data.workspace ns (#6502)
* ♻️ Split history workspace.cljs to workspace/pages.cljs - rename file to target-name

* ♻️ Split history workspace.cljs to workspace/pages.cljs - rename source-file to git-split-temp

* ♻️ Split history workspace.cljs to workspace/pages.cljs - restore name of source-file

* ♻️ Cleanup after adding new ns, add exports

* ♻️ Move set-plugin-data to main.data.plugins

* 🐛 Possible bugfix, cherry-picked from commit 8f7c63d6e2 (conflict during refactor)

---------

Co-authored-by: Eva Marco <eva.marco@kaleidos.net>
2025-05-20 22:11:05 +02:00
Miguel de Benito Delgado
f36aa30525 Add copy-as-svg to contextual menu (#6510)
*  Add "copy as svg" to contextual menu

* 🌐 Add a few translations of the new string

* 📚 Document commit message format for translations

* 📎 Log SVG import errors to the console

* 📎 Update CHANGES.md (two PRs)

---------

Signed-off-by: Miguel de Benito Delgado <m.debenito.d@gmail.com>
2025-05-20 22:06:36 +02:00
Eva Marco
8f7c63d6e2 Add base font fallback (#6468)
*  Add base font fallback

* ♻️ Add asserts to change-builder

* 🐛 Change fn name
2025-05-20 17:27:04 +02:00
Andrey Antukh
965b22718f 📚 Update changelog 2025-05-20 15:46:56 +02:00
Miguel de Benito Delgado
48a3d38d82 Add the Shift+ctrl+drag to deselect (#6494)
*  Allow shape deselection using Ctrl+Shift+Drag

*  Allow point deselection using Ctrl+Shift+Drag

*  Properly remember previous selection during addition/removal of shapes

*  Preload point selection in path handle-area-selection

Also: prefer dm/get-in over get-in

*  Highlight path nodes in selection rectangle incrementally
2025-05-20 15:23:05 +02:00
Florian Schroedl
31f642ed25 ♻️ Use rx streams for style dictionary interface 2025-05-20 14:55:07 +02:00
andrés gonzález
9f414b6ecd 📚 Update changelog (#6511) 2025-05-20 14:14:17 +02:00
Alejandro Alonso
334d7833d5 Merge pull request #6490 from penpot/azazeln28-refactor-iteration-performance
♻️ Refactor tile iteration
2025-05-20 13:56:37 +02:00
Alejandro Alonso
ff9c8f5929 Merge pull request #6483 from penpot/niwinz-staging-bugfixes-error-report
🐛 Several bugfixes
2025-05-20 13:54:54 +02:00
Xavier Julian
f7311cbb6b ♻️ Ensure tokens feature integrates design system 2025-05-20 13:52:38 +02:00
Alejandro Alonso
e4c563f917 Merge pull request #6479 from penpot/niwinz-develop-json-encoding-fix
🐛 Fix exception on rendering openapi.json
2025-05-20 13:46:16 +02:00
Andrey Antukh
2d3ad5a88f 📎 Update changelog 2025-05-20 13:30:04 +02:00
Andrey Antukh
1334d733cd 🐛 Fix openapi json generation for :re schemas 2025-05-20 13:29:44 +02:00
Andrey Antukh
004a9f17d3 Add minor js-like type schema formatting improvements 2025-05-20 13:29:44 +02:00
Andrey Antukh
c87fa4f723 Make the rpc doc generation lazy 2025-05-20 13:29:44 +02:00
Andrey Antukh
9378a5786f Replace json library used for generate openapi json 2025-05-20 13:29:44 +02:00
Andrey Antukh
3224ba26f1 ♻️ Replace :any schema with own ::sm/any
That a more specific, json friendly generator
2025-05-20 13:29:44 +02:00
Andrey Antukh
d33a5e6df1 Backport from develop partial improvements to sm/register! helper 2025-05-20 13:29:44 +02:00
Alejandro Alonso
0d60e3d997 Merge pull request #6486 from penpot/niwinz-library-export
 Add .penpot export support for penpot library
2025-05-20 13:27:11 +02:00
Andrey Antukh
645c4a57db Add playground file with example of how to create a component
This also fixes several internal issues related to component
creaton.
2025-05-20 13:06:07 +02:00
Andrey Antukh
778de6adaf Add minimal testing structure 2025-05-20 13:06:07 +02:00
Andrey Antukh
29d23577d2 🎉 Add .penpot (binfile-v3) support for library 2025-05-20 13:06:07 +02:00
Andrey Antukh
1fea1e8f5b 🔥 Remove unused svg parsing code from common 2025-05-20 13:06:07 +02:00
Andrey Antukh
c8a211742a 🔥 Remove already broken and unused internal components-v2 migration code 2025-05-20 13:06:06 +02:00
Andrey Antukh
2da8747485 ♻️ Move library to its own directory 2025-05-20 13:05:52 +02:00
Andrey Antukh
6803c78e80 Change naming and schema registation on tokens lib 2025-05-20 13:05:52 +02:00
Andrey Antukh
d8daea72de ⬆️ Update promesa library 2025-05-20 13:05:52 +02:00
Andrey Antukh
36b162b4fa ♻️ Replace jszip usage with zip.js library 2025-05-20 13:05:52 +02:00
Andrey Antukh
4c487834f0 Add the ability to deref internal state on library file instance 2025-05-20 13:05:52 +02:00
Andrey Antukh
dc7e53881a 🔥 Remove legacy-zip exportation support 2025-05-20 13:05:52 +02:00
Alejandro Alonso
1a01c9ee4a Merge pull request #6500 from penpot/niwinz-develop-svg-fixes
🐛 Fix svg path parsing on uploading svg image
2025-05-20 12:58:48 +02:00
Yamila Moreno
b6be416c7b 📎 Add wasm envvar to manage script 2025-05-20 12:15:14 +02:00
Florian Schroedl
4a27e8d1dd 🐛 Prevent unkown tokens hint always showing 2025-05-20 10:53:04 +02:00
Aitor Moreno
1bc97f9ad0 Merge pull request #6505 from penpot/supearlex-fix-avoid-unncesary-clone-for-new-render
🐛 Avoid unnecesary clone call
2025-05-20 10:07:23 +02:00
Aitor Moreno
aaa57cb17f 🐛 Fix inline styles in code tab (#6428) 2025-05-20 10:05:35 +02:00
Alejandro Alonso
b2d6342422 🐛 Avoid unnecesary clone call 2025-05-20 09:45:19 +02:00
Andrés Moya
ba1e16b55b 🐛 Fix token directory import 2025-05-20 09:42:38 +02:00
Aitor Moreno
ef95e3ecb0 ♻️ Refactor tile iteration 2025-05-19 16:24:52 +02:00
Eva Marco
55d21761fc Add multi file import on tokens (#6444)
*  Implement token multi-file import

* ♻️ Refactor import modal UI

* 🐛 Fix comments

---------

Co-authored-by: Florian Schroedl <flo.schroedl@gmail.com>
2025-05-19 16:12:46 +02:00
Andrey Antukh
0b4a367e9e 🐛 Fix svg path parsing on uploading svg image 2025-05-19 15:35:58 +02:00
Andrey Antukh
8f2ca15ec0 Merge pull request #6495 from mdbenito/refactor/frontend-app-main-data-workspace-clipboard
♻️ Factor clipboard code out of frontend/src/app/main/data/workspace.cljs
2025-05-19 15:20:52 +02:00
Aitor Moreno
21041eb925 Merge pull request #6496 from penpot/superalex-fix-path-performance
🐛 Fix paths performance in new render
2025-05-19 13:57:20 +02:00
Pablo Alba
53cfc29a1f Merge pull request #6425 from penpot/palba-variants-overrides-same-name
 Manage layers with the same name on variants overrides
2025-05-19 13:51:16 +02:00
Alejandro Alonso
96d44e0631 🐛 Fix paths performance in new render 2025-05-19 12:22:42 +02:00
Belén Albeza
8afd217a80 🔧 Enable back clippy rules (#6492)
* 🔧 Fix lint script (rust)

* 🔧 Temporarily add clippy rules to ignore so lint script passes

* 💄 Fix clippy rule crate_in_macro_def

* 💄 Fix clippy rule redundant-static-lifetimes

* 💄 Fix clippy rule unnecessary_cast

* 💄 Fix clippy rule nonminimal_bool

* 💄 Fix clippy rule redundant_pattern_matching

* 💄 Fix clippy rule assign_op_pattern

* 💄 Fix clippy rule needless_lifetimes

* 💄 Fix clippy rule for_kv_map

* 💄 Fix clippy rule ptr_arg

* 💄 Fix clippy rule match_like_matches_macro

* 💄 Fix clippy rule macro_metavars_in_unsafe

* 💄 Fix clippy rule map_clone

* 💄 Fix clippy rule wrong_self_convention

* 💄 Fix clippy rule vec_box

* 💄 Fix clippy rule useless_format

* 💄 Fix clippy rule unwrap_or_default

* 💄 Fix clippy rule unused_unit

* 💄 Fix clippy rule unnecessary_to_owned

* 💄 Fix clippy rule too_many_arguments

* 💄 Fix clippy rule slow_vector_initialization

* 💄 Fix clippy rule single_match

* 💄 Fix clippy rule redundant_field_names

* 💄 Fix clippy rule rendudant_closure

* 💄 Fix clippy rule needless_return

* 💄 Fix clippy rule needless_range_loop

* 💄 Fix clippy rule needless_borrows_for_generic_args

* 💄 Fix clippy rule needless-borrow

* 💄 Fix clippy rule missing_transmute_annotations

* 💄 Fix clippy rule map_entry

* 💄 Fix clippy rule manual_map

* 💄 Fix clippy rule len_zero

* 💄 Fix clippy rule from_over_into

* 💄 Fix clippy rule field_reassign_with_default

* 💄 Fix clippy rule enum_variant_names

* 💄 Fix clippy rule derivable_impls

* 💄 Fix clippy rule clone_on_copy

* 💄 Fix clippy rule box_collection

* 🔧 Make lint script also check test config target

* 🔧 Remove cargo-watch as a lib dependency

* 💄 Fix clippy rule for join_bounds

* 🔧 Fix lint script return code

---------

Co-authored-by: alonso.torres <alonso.torres@kaleidos.net>
2025-05-19 11:14:55 +02:00
Miguel de Benito Delgado
330e49db56 ♻️ Cleanup after adding new ns, add exports 2025-05-18 18:49:59 +02:00
Miguel de Benito Delgado
aa39170d47 ♻️ Split history workspace.cljs to workspace/clipboard.cljs - restore name of source-file 2025-05-18 18:49:07 +02:00
Miguel de Benito Delgado
8fa7a69094 ♻️ Split history workspace.cljs to workspace/clipboard.cljs - resolve conflict and keep both files 2025-05-18 18:49:07 +02:00
Miguel de Benito Delgado
33d989feb2 ♻️ Split history workspace.cljs to workspace/clipboard.cljs - rename source-file to git-split-temp 2025-05-18 18:49:07 +02:00
Miguel de Benito Delgado
e309a57223 ♻️ Split history workspace.cljs to workspace/clipboard.cljs - rename file to target-name 2025-05-18 18:49:07 +02:00
Andrey Antukh
0b289153cb Add the ability to disable wasm on build script 2025-05-18 17:30:41 +02:00
Andrey Antukh
cf274099c4 Improve events/sse internal API
For make code cleaner and more evident for a quick view
2025-05-18 17:30:41 +02:00
Andrey Antukh
6524e75770 💄 Fix check-fn naming on types.container 2025-05-18 17:30:41 +02:00
Andrey Antukh
9b80f7c9b3 💄 Don't return unnecesary object from db query
the return value is already ignored
2025-05-18 17:30:41 +02:00
Andrey Antukh
bf76f328c8 Remove duplicate error logging on sse response 2025-05-18 17:30:41 +02:00
Xavier Julian
051c2a7e99 🐛 Fix sloppy behaviour on tokens value inputs 2025-05-16 15:42:25 +02:00
Xavier Julian
887fa6b77b Add slots feature to DS input component 2025-05-16 15:42:25 +02:00
Andrey Fedorov
d9f98008f4 Add unknown token type reporting 2025-05-16 15:09:36 +02:00
Alejandro Alonso
0cb6e0dee2 🐛 Fix new render zoom (#6488)
* 🐛 Fix new render zoom

* 🐛 Use scale instead of just zoom in get_tiles_for_viewbox

---------

Co-authored-by: Belén Albeza <belen@hey.com>
2025-05-16 10:49:03 +02:00
Andrey Antukh
ad87e9842d Merge pull request #6429 from penpot/yms-update-ubuntu-in-docker-images
🐳 Update docker images and dependencies
2025-05-16 10:38:56 +02:00
Miguel de Benito Delgado
e22a55334e 💄 Rename some namespace aliases for consistency (#6485) 2025-05-15 17:43:02 +02:00
Elena Torró
f5e81debbc Merge pull request #6478 from penpot/ladybenko-11030-fix-dpr-fills
🐛 Fix fills & strokes when dpr > 1
2025-05-15 16:04:30 +02:00
andrés gonzález
ddfd55261d :Books: Update design tokens doc (#6487) 2025-05-15 14:44:51 +02:00
Belén Albeza
300e24b403 🐛 Fix drawing shapes when dpr > 1 2025-05-15 11:01:14 +02:00
Andrey Antukh
a00e7c1061 Merge remote-tracking branch 'origin/staging' into develop 2025-05-15 09:52:31 +02:00
Alonso Torres
ba25ce3098 🐛 Fix share button being displayed with no permissions (#6476)
* 🐛 Fix share button being displayed with no permissions

*  Simplify impl by accessing perms from teams directly

---------

Co-authored-by: Andrey Antukh <niwi@niwi.nz>
2025-05-15 09:49:29 +02:00
Miguel de Benito Delgado
968ea56197 ♻️ Reorganize index management on worker code (#6477)
* ♻️ Factor index management out of app.worker.impl

* 💄 Fix silly spacing

* 💄 Lint
2025-05-15 09:46:49 +02:00
Miguel de Benito Delgado
2635873b9a 📚 Update CONTRIBUTING.md with formatting and linting (#6480) 2025-05-15 09:41:33 +02:00
Alejandro Alonso
f5f1316f0b Merge pull request #6474 from penpot/superalex-develop-paste-html-fix
🐛 Fix exception on paste invalid html
2025-05-14 16:16:53 +02:00
Andrey Antukh
79a164be6d 🐛 Fix exception on paste invalid html 2025-05-14 16:07:01 +02:00
alonso.torres
ecb85778bc 🐛 Fix problem with path edition of shapes 2025-05-14 14:45:29 +02:00
Elena Torró
676c4d2dfe Merge pull request #6472 from penpot/alotor-perf-selrect-modifiers
 Set selrect for new render modifiers
2025-05-14 14:19:38 +02:00
Andrés Moya
5b8d1c1ca6 Merge branch 'hiru-update-tech-guide' 2025-05-14 13:23:38 +02:00
Andrés Moya
24e2948407 📚 Update code samples 2025-05-14 13:22:49 +02:00
Andrés Moya
c569c71306 📚 Update Tech Guide about abstraction levels 2025-05-14 13:22:38 +02:00
Andrés Moya
2cdc241e68 Merge branch 'hiru-update-tech-guide' into staging 2025-05-14 12:00:03 +02:00
Andrés Moya
057bf9bf25 📚 Update code samples 2025-05-14 11:38:55 +02:00
Andrés Moya
2ddcd0ce15 📚 Update Tech Guide about abstraction levels 2025-05-14 11:37:28 +02:00
alonso.torres
fef08dfa18 Set selrect for new render modifiers 2025-05-14 11:21:43 +02:00
Andrey Antukh
831422feaf ⬆️ Update several npm dependencies on frontend module 2025-05-14 10:39:34 +02:00
Andrey Antukh
d01e3085f4 ⬆️ Update yarn to 4.9.1 2025-05-14 10:39:34 +02:00
Andrey Antukh
d9ca82dc15 ⬆️ Update dependencies 2025-05-14 10:39:34 +02:00
Yamila Moreno
1e7127d98a 🐳 Update frontend image to nginx:1.28.0 2025-05-14 10:39:34 +02:00
Yamila Moreno
002ae8b91a 🐳 Update docker images to ubuntu 24.04 2025-05-14 10:39:34 +02:00
Aitor Moreno
6831acb71d Merge pull request #6465 from penpot/superalex-fix-render-wasm-maks
🐛 Fix new render masks
2025-05-14 10:33:52 +02:00
Alejandro Alonso
1f44d53f6b 🐛 Fix new render masks 2025-05-13 15:41:41 +02:00
Alonso Torres
ca2891d441 🐛 Fix problem syncing library colors and typographies (#6467) 2025-05-13 13:28:16 +02:00
Belén Albeza
91fbe8f8ef 🎉 Cap stop amount in UI for wasm (#6438)
* 🎉 Cap in the colorpicker the amount of stops a gradient can have

* 🎉 Cap the stops amount in gradient handlers

* 🎉 Disable add stop in gradient handlers (viewport + colorpicker)

*  Add integration test for gradient limits

* 💄 Address PR suggestion
2025-05-13 10:37:05 +02:00
Miguel de Benito Delgado
69cc4fb4c2 📚 Add missing command to open a repl on frontend process (#6458)
* 📚 Add missing command to open a repl on frontend process

* 📚 Add further information on starting a REPL on the frontend process
2025-05-13 08:10:52 +02:00
Elenzakaleidos
37abb7b237 💄 Update video in readme page (#6461)
Signed-off-by: Elenzakaleidos <elena.scilinguo@kaleidos.net>
2025-05-13 08:10:19 +02:00
Ramiro Andres Sanchez Balo
5fc2208c16 📚 Improve metadata descriptions (#6457) 2025-05-13 08:09:59 +02:00
Alejandro Alonso
c2b67d7c67 Merge pull request #6459 from penpot/superalex-fix-wasm-playground-fills-size
🐛 Fix wasm playground fills size
2025-05-13 06:23:48 +02:00
Pablo Alba
294ce7bb1b 🐛 Fix variants override for nested components (#6421) 2025-05-12 15:50:06 +02:00
Andrey Antukh
a558bfdb2f Merge remote-tracking branch 'origin/staging' into develop 2025-05-12 15:16:19 +02:00
Andrey Antukh
86bcd1b681 🐛 Fix issue on shortcuts restore operation (#6462)
* 🐛 Fix issue on shortcuts restore operation

Happens when the order of shortcuts pop events is inconsistent with
push events. Using less strictly order policy for pop operations
allows relax this and make it eventually consistent.

* 💄 Add cosmetic changes on shortcuts hooks on colorpicker and    wport

* 📎 Update changelog

* 📎 Add PR feedback changes
2025-05-12 15:08:14 +02:00
Elena Torró
33c260c35b Merge pull request #6456 from penpot/alotor-perf-text-grow-2
 Reflow flex on grow text height
2025-05-12 14:16:29 +02:00
Andrey Antukh
94312bb35c Merge remote-tracking branch 'origin/staging' into develop 2025-05-12 13:44:24 +02:00
Andrey Antukh
70b1989f10 Merge tag '2.7.0-RC2' 2025-05-12 13:11:40 +02:00
Alejandro Alonso
eb76d16b3b 🐛 Fix wasm playground fills size 2025-05-12 12:05:10 +02:00
Xavier Julian
c0eaa75232 💄 Fix errors UI on input token for value 2025-05-12 12:03:23 +02:00
Alejandro Alonso
dbb9971482 Merge pull request #6351 from penpot/niwinz-develop-improve-cleaner
 Add cleaner to file-gc
2025-05-12 11:52:01 +02:00
Alejandro Alonso
0828994840 Merge pull request #6419 from penpot/niwinz-refactor-library
♻️ Refactor penpot library
2025-05-12 11:47:00 +02:00
ºelhombretecla
e6b5618bd3 🎉 Add 2.7 release slides (#6440) 2025-05-12 11:38:00 +02:00
Aitor Moreno
9c24d3a521 Merge pull request #6370 from penpot/superalex-improve-zoom-in-zoom-out-performance-2
🎉 Improve zoom in/out performance
2025-05-12 11:22:57 +02:00
Alejandro Alonso
480e0887e3 🎉 Improve zoom in/out performance 2025-05-12 11:10:21 +02:00
Alejandro Alonso
e0e381bdfc Merge pull request #6451 from penpot/niwinz-develop-features-binfile-v1
🐛 Apply migrations in correct order for binfile-v1
2025-05-12 11:08:10 +02:00
Alejandro Alonso
5199b306aa Merge pull request #6446 from penpot/niwinz-staging-bugfixes-2
🐛 Properly propagate export errors from worker to main thread
2025-05-12 10:47:46 +02:00
Alejandro Alonso
8febfaa21e Merge pull request #6447 from penpot/niwinz-staging-bugfixes
 Ensure read-only mode on non-workspace access to file
2025-05-12 10:43:02 +02:00
Aitor Moreno
69062f03ee Merge pull request #6449 from penpot/superalex-add-shapes-buffer
🎉 Add shapes buffer to improve memory allocation
2025-05-12 10:23:34 +02:00
alonso.torres
eb04fa19e1 Reflow flex on grow text height 2025-05-12 09:48:57 +02:00
Alejandro Alonso
03b4fe3558 🎉 Add shapes buffer to improve memory allocation 2025-05-09 15:00:02 +02:00
Andrey Antukh
b349d08155 🐛 Apply migrations in correct order for binfile-v1
The patch was already existed but only applied to binfile-v3,
with this commit, the fix is properly applied to all binfile
formats and for duplicate file operation.
2025-05-09 13:38:13 +02:00
Elena Torró
15e9d92094 Merge pull request #6445 from penpot/elenatorro-11044-fix-parsing-text-spaces
🐛 Fix parsing text spaces
2025-05-09 12:31:17 +02:00
andrés gonzález
5e675dbf0b 📚 Update changelog for 2.7 (#6448) 2025-05-09 12:20:39 +02:00
Elena Torro
a5660819de 🐛 Fix stroke paragraphs 2025-05-09 11:54:51 +02:00
luisδμ
d277fefc87 Improve combobox component (#6424) 2025-05-09 11:33:57 +02:00
Elena Torro
1383010826 🔧 Remove log 2025-05-09 11:23:06 +02:00
Elena Torro
59982c9056 🐛 Fix parsing text spaces 2025-05-09 11:23:00 +02:00
Alejandro Alonso
afcff84e38 Merge pull request #6443 from penpot/niwinz-develop-feaures-bugfix
🐛 Fix incorrect features asignation after file migration
2025-05-09 11:17:27 +02:00
Andrey Antukh
fc5d9659d6 🐛 Properly propagate export errors from worker to main thread 2025-05-09 11:15:04 +02:00
Andrey Antukh
8fa7fa8c4b 🐛 Fix incorrect features asignation after file migration 2025-05-09 10:53:16 +02:00
Elena Torró
23bde76192 Merge pull request #6437 from penpot/elenatorro-add-fill-text-strokes
🎉 Add text stroke fills
2025-05-09 10:41:12 +02:00
BDVGitHub
ca7a80fb83 📚 Update framework version
Fix Svelte version number
2025-05-09 08:46:33 +02:00
BDVGitHub
cf0d9a433d 📚 Chore: Update create-a-plugin.md
Add Svelte and change version to the updated version of in the examples on https://github.com/penpot/plugin-examples
2025-05-09 08:46:33 +02:00
Andrey Antukh
bc20598b3d Don't persist file on several read operations
after applying migrations
2025-05-08 19:15:28 +02:00
Andrey Antukh
9de8ebb52c Add read-only option for files/get-file 2025-05-08 19:12:50 +02:00
alonso.torres
568af52ebc Text grow width/height 2025-05-08 17:59:18 +02:00
Elena Torro
eddabc0d68 🎉 Add text stroke fills 2025-05-08 15:49:58 +02:00
Pablo Alba
6b300d516b 🐛 Fix restore totally deleted variant should add props as name 2025-05-08 15:01:29 +02:00
Andrey Antukh
e271caa32b Merge remote-tracking branch 'origin/staging' into develop 2025-05-08 13:41:11 +02:00
Alonso Torres
9be569c54c 🐛 Fix problem when duplicating grid layout (#6426) 2025-05-08 13:39:47 +02:00
Alonso Torres
7e6a621484 🐛 Restore component fix order inside flex (#6432) 2025-05-08 13:37:59 +02:00
Eva Marco
66b47f9444 🐛 Fix resize bar background (#6435) 2025-05-08 13:37:00 +02:00
Andrey Antukh
694a2084e2 Add file cleaner to file-gc process 2025-05-08 13:35:25 +02:00
Andrey Antukh
fef19a3c80 Add legacy flex dir cleaner 2025-05-08 13:35:25 +02:00
Andrey Antukh
3da8b945ca 📎 Don't send unnecesary features to worker 2025-05-08 13:35:24 +02:00
Andrey Antukh
8f27b82edd Extend cleaner to fix invalid root shapes 2025-05-08 13:34:48 +02:00
Andrés Moya
8b529d308c Merge pull request #6338 from penpot/hiru-rework-abstraction-levels
📚 Update Tech Guide about abstraction levels
2025-05-08 13:32:23 +02:00
Alejandro Alonso
71aa8e5a86 Merge pull request #6434 from penpot/niwinz-staging-webhook-audit
 Add webhook trigger to the audit events
2025-05-08 13:00:04 +02:00
Andrey Antukh
ab01f0b274 Merge remote-tracking branch 'origin/staging' into develop 2025-05-08 12:22:50 +02:00
Andrey Antukh
e203536506 Add webhook trigger to audit events 2025-05-08 11:56:06 +02:00
Eva Marco
b71b9edee7 🐛 Tooltip positioning tunning (#6418) 2025-05-08 11:09:58 +02:00
Elena Torró
bd514c0594 🔧 Fix linting warnings and errors (#6431) 2025-05-08 11:07:36 +02:00
Xavier Julian
36e1ad287c 💄 Fix design review for input component 2025-05-08 10:55:07 +02:00
Florian Schrödl
92f5b5f92b Allow importing token files with reference errors (#6374)
*  Allow importing token files with reference errors

*  Add test for missing references
2025-05-08 10:11:02 +02:00
Andrey Antukh
0b7b6e2c23 ♻️ Refactor penpot library 2025-05-08 09:51:25 +02:00
Elena Torró
46709fb02e Merge pull request #6379 from penpot/ladybenko-10753-fills-serialization
🎉 Serialize as bytes all fill kinds
2025-05-07 18:03:42 +02:00
Elena Torró
61eb2f4a19 🎉 Add text solid strokes (#6384)
* 🎉 Add text strokes

* 🔧 Minor refactor
2025-05-07 17:28:36 +02:00
Belén Albeza
3fe16bd8f9 🐛 Fix history panel shortcut (#6420)
*  Remove duplicate ID in file menu

* 🐛 Fix shortcut for Show Version History

*  Add regression test
2025-05-07 16:49:54 +02:00
Alejandro Alonso
a9725a1aac Merge pull request #6422 from penpot/superalex-add-even-to-power-up-link-from-workspace-menu
🐛 Add event to power up link from workspace menu
2025-05-07 15:13:31 +02:00
Belén Albeza
8f9298fac8 ♻️ Remove redundant calls to add_shape_fill 2025-05-07 14:55:54 +02:00
Alejandro Alonso
c3e76817cd 🐛 Add event to power up link from workspace menu 2025-05-07 13:45:57 +02:00
Andrey Antukh
8bdec66927 Remove the ILazySchema internal abstraction from schema ns 2025-05-07 12:17:24 +02:00
Andrey Antukh
66ee9edaf8 Add minor enhacements and naming fixes on schemas 2025-05-07 12:17:24 +02:00
Andrey Antukh
ffd7bc883d ⬆️ Update shadow-cljs to 3.0.3 on common and frontend 2025-05-07 12:17:23 +02:00
Andrey Antukh
1bcfa4b8dc 🎉 Add facility to define custom js class 2025-05-07 12:17:23 +02:00
Andrey Antukh
99e325acaf 🔥 Remove support from legacy-zip format 2025-05-07 12:14:52 +02:00
Andrey Antukh
8badd1f2eb 💄 Add cosmetic improvements to common scripts/repl
Make it consistent with backend scripts/repl
2025-05-07 12:14:51 +02:00
alonso.torres
44bf276c49 🐛 Remove print 2025-05-07 12:13:47 +02:00
Eva Marco
0f3a4db71e ♻️ Refactor modal/hide! function calls (#6415) 2025-05-07 09:53:07 +02:00
Pablo Alba
751bed4117 Manage overrides on variants switch 2025-05-07 09:29:41 +02:00
Alejandro Alonso
ea095a98ba Merge pull request #6367 from penpot/azazeln28-refactor-flush-and-submit
♻️ Flush and submit
2025-05-07 07:03:22 +02:00
Eva Marco
348a9c82bf Merge pull request #6413 from penpot/eva-fix-tooltip-display-prop
🐛 Fix tooltip display on hide
2025-05-06 19:36:29 +02:00
Eva Marco
e2918f4148 🎉 Create tooltip DS component (#6340)
*  Add new tooltip DS component

* 🎉 Add delay

* 🎉 Update docs and stories

* 🎉 Add configurable delay

* ♻️ Fix comments

* ♻️ Fix comments
2025-05-06 17:15:22 +02:00
Aitor Moreno
c45187eedd Merge pull request #6381 from penpot/alotor-perf-modifiers-refactor
 Apply modifiers changes into data
2025-05-06 15:52:57 +02:00
Elena Torró
eeea5f2cc8 Merge pull request #6411 from penpot/alotor-perf-fix-text-editor-v2-error
🐛 Fix problem with editor v2
2025-05-06 15:03:15 +02:00
alonso.torres
05b6aeef3e 🐛 Fix problem with editor v2 2025-05-06 14:50:10 +02:00
Belén Albeza
6323031b40 📚 Add serialization docs for fills 2025-05-06 14:41:40 +02:00
Andrey Antukh
6ccb6cafaa Merge pull request #6263 from penpot/niwinz-develop-path-data-optimizations-1
 Performance optimizations to path related functions
2025-05-06 13:53:56 +02:00
Andrey Antukh
be26985ca5 Make the fdata/path-data feature no-team-inheritable
And also add helpers for revert it to plain format
2025-05-06 13:39:17 +02:00
Andrey Antukh
2aa2525d0e Add db conn dynamic binding for srepl helpers 2025-05-06 13:39:17 +02:00
Andrey Antukh
7cb2f307d8 Move path-editor from selection handlers 2025-05-06 13:39:17 +02:00
Andrey Antukh
f1a557c372 Add minor performance enhacements to viewport top-bar 2025-05-06 13:39:17 +02:00
Andrey Antukh
202337b135 💄 Add cosmetic improvements for start-editing-selected event fn 2025-05-06 13:39:16 +02:00
Andrey Antukh
4e3abcbd45 🐛 Prevent NPE on get-points 2025-05-06 13:39:16 +02:00
Andrey Antukh
122e5a4b57 🐛 Fix path content json decoding mechanism 2025-05-06 13:39:16 +02:00
Andrey Antukh
1981946480 🐛 Fix incorrect path content handling on converting from shape 2025-05-06 13:39:16 +02:00
Andrey Antukh
7d327d23a2 Make consistent use of .toString with path content 2025-05-06 13:39:16 +02:00
Andrey Antukh
500c27859b 🐛 Fix geom/point zero? predicate to work correctly with mixed numeric types
Using numeric indpendent equality check: `==`
2025-05-06 13:39:16 +02:00
Andrey Antukh
c6f68e6ed1 ♻️ Use LITTLE_ENDIAN instead of BIG_ENDIAND for path encoding 2025-05-06 13:39:15 +02:00
Andrey Antukh
b48faf8fe0 Simplify impl with sharing more code
and use macros for abstract platform differences
2025-05-06 13:39:15 +02:00
Andrey Antukh
fa24ced3a3 🐛 Don't render path editor on editing grid on frame 2025-05-06 13:39:15 +02:00
Andrey Antukh
b9ea2425b9 🔥 Remove legacy path formating code 2025-05-06 13:39:15 +02:00
Andrey Antukh
1abaff9c52 Add minor improvements to curve drawing internal impl 2025-05-06 13:39:15 +02:00
Andrey Antukh
6f2ccabaa2 Coerce PathData float values to double
For avoid equality issues on JVM
2025-05-06 13:39:14 +02:00
Andrey Antukh
1c77126fe6 Implement get-handlers in term of internal reduce
That has an average performance improvement of 64% over
original impl and reduction of generation of object garbage
2025-05-06 13:39:14 +02:00
Andrey Antukh
7196be2a23 🎉 Add support for internal reduce on PathData type 2025-05-06 13:39:14 +02:00
Andrey Antukh
d509b840dc 🔥 Remove unused get-commands fn 2025-05-06 13:39:14 +02:00
Andrey Antukh
61c23877c1 Rename handler->point to get-handler-point 2025-05-06 13:39:14 +02:00
Andrey Antukh
0e61398d67 Optimize handler->point path segment helper fn
More or les x2 speed improvement and reduced the generation
of objects garbage.
2025-05-06 13:39:13 +02:00
Andrey Antukh
f12656463d Add a helper for perform internal lookup on path content 2025-05-06 13:39:13 +02:00
Andrey Antukh
ba9fc37226 🔥 Remove unused fn content->points
Replaced by get-points
2025-05-06 13:39:13 +02:00
Andrey Antukh
60f754f172 Add minor improvements to get-segments-with-points
And rename it from `get-segments`
2025-05-06 13:39:13 +02:00
Andrey Antukh
3a22545158 Replace cmd name usage with segment name
For fix naming inconsistency
2025-05-06 13:39:13 +02:00
Andrey Antukh
1d0020f6e6 Replace duplicate fn get-point with segment->point 2025-05-06 13:39:13 +02:00
Andrey Antukh
f3c3f3e2d8 🔥 Remove legacy-parser1
Unused
2025-05-06 13:39:12 +02:00
Andrey Antukh
9ba0ae5532 Replace command->point with segment->point helper 2025-05-06 13:39:12 +02:00
Andrey Antukh
db73c2eea0 Fix segment param naming on path type helpers 2025-05-06 13:39:12 +02:00
Andrey Antukh
753823c0b3 Reorganize path toString impl 2025-05-06 13:39:12 +02:00
Andrey Antukh
44e8eacb8d Add the ability to provide initial value on path -walk 2025-05-06 13:39:12 +02:00
Andrey Antukh
33bcbd89f1 Optimize calculate-extremities path helper
Heavily used on path edition
2025-05-06 13:39:11 +02:00
Andrey Antukh
b0cbe3cec8 Replace content->points with faster get-points 2025-05-06 13:39:11 +02:00
Andrey Antukh
3ca76c9ef7 ♻️ Refactor path-editor component 2025-05-06 13:39:11 +02:00
Andrey Antukh
93199e1a70 ♻️ Refactor path editor component: path-snap 2025-05-06 13:39:11 +02:00
Andrey Antukh
93a601a1e7 ♻️ Refactor path editor component: path-preview 2025-05-06 13:39:11 +02:00
Andrey Antukh
3d864c4ff1 ♻️ Refactor path editor components: path-handler and path-point 2025-05-06 13:39:11 +02:00
Andrey Antukh
da2f519805 Add get-points helper, a faster alternative to content->points 2025-05-06 13:39:10 +02:00
Andrey Antukh
230e330eb2 Add cache and faster way to iterate over PathData 2025-05-06 13:39:10 +02:00
Andrey Antukh
4f6dffabb4 ♻️ Use new call convention for path drawing components 2025-05-06 13:39:10 +02:00
Andrey Antukh
09c3490cae Add naming improvement to bool content update fn 2025-05-06 13:39:10 +02:00
Andrey Antukh
1fc0203c38 🎉 Add full integration with path data type feature 2025-05-06 13:39:10 +02:00
Andrey Antukh
f545d7b3ea ♻️ Refactor bool shape creation and modification events 2025-05-06 13:39:09 +02:00
Andrey Antukh
b242eb5b32 🔥 Remove unused components-v2 binding on fdata creation 2025-05-06 13:39:09 +02:00
Andrey Antukh
be9e3fa355 Add better error reporting for test check tests 2025-05-06 13:39:09 +02:00
Andrey Antukh
fac93e4ff8 Add serialization support for PathData
For transit and fressian
2025-05-06 13:39:09 +02:00
Belén Albeza
8609db2182 ♻️ Remove unused deserialization code 2025-05-06 13:00:25 +02:00
Belén Albeza
ec73bd640c Use mem::transmute to deserialize raw fill data 2025-05-06 12:38:30 +02:00
Belén Albeza
cba65972dd Use same wasm function to add all types of fills 2025-05-06 12:33:14 +02:00
luisδμ
e62231cfed ♻️ Rename, move and refactor the input-with-values component (#6387)
* 💄 Adapt behaviour when hovering

* ♻️ Rename, refactor and move component

* 📎 PR changes
2025-05-06 11:19:18 +02:00
Aitor Moreno
3249fb43c3 Merge pull request #6378 from penpot/elenatorro-10914-fix-children-render-order
🐛 Render children in the correct order
2025-05-06 09:59:59 +02:00
Pablo Alba
ee0ba15f9e ♻️ Refactor update attrs
* Extract token update from update-attrs

* Split update-attrs in smaller functions for legibility and reusability
2025-05-05 18:14:04 +02:00
Belén Albeza
784aecd1a1 🎉 Add a DTO that handles all fill types 2025-05-05 16:55:00 +02:00
Belén Albeza
173d6c23b0 Serialize image fills in binary 2025-05-05 15:51:21 +02:00
Aitor Moreno
abc1241402 ♻️ Refactor flush and submit 2025-05-05 15:10:20 +02:00
Belén Albeza
f30441626e ♻️ Refactor fills DTOs into separate submodules 2025-05-05 12:33:40 +02:00
Belén Albeza
5ae125db94 Serialize stroke solid fills as bytes (wasm) 2025-05-05 12:33:40 +02:00
Belén Albeza
093fa18839 Serialize solid fills as bytes (wasm) 2025-05-05 12:33:40 +02:00
Belén Albeza
81f18ad7f4 ♻️ Normalize opacity in fills to u8 2025-05-05 12:33:40 +02:00
Belén Albeza
875e019d4f ♻️ Refactor raw gradient data into wasm module 2025-05-05 12:33:40 +02:00
Belén Albeza
8e18a0880e ♻️ Use a single byte to store gradient stop count (wasm) 2025-05-05 12:33:39 +02:00
alonso.torres
36b78e5e21 🐛 Fix restore component restore layout 2025-05-05 11:50:08 +02:00
María Valderrama
86a498fc29 Optimize profile setup flow for better user experience (#6223)
*  Optimize profile setup flow for better user experience

* 📎 Remove extra onboarding step

* 📎 Code review

* 📎 Update changelog

---------

Co-authored-by: Andrey Antukh <niwi@niwi.nz>
2025-05-05 10:42:08 +02:00
Alejandro Alonso
aae81b8a04 🎉 Add wasm playground environment 2025-05-05 09:45:59 +02:00
Xaviju
486f036a11 ♻️ Redesign form input tokens (#6294)
* ♻️ Redesign form input tokens

* ♻️ Redesign form input tokens

---------

Co-authored-by: Xavier Julian <xaviju@proton.me>
2025-05-05 09:05:14 +02:00
Alonso Torres
a2c9d307df 🐛 Fix problem in viewer with the back button (#6385) 2025-05-05 08:54:05 +02:00
Andrés Moya
e52fd90963 💄 Add copyright header to all tokens source files (#6389) 2025-05-01 10:06:17 +02:00
Elena Torro
f8602810eb 🐛 Fix font id serialization 2025-04-30 11:48:07 +02:00
Pablo Alba
219ddfabaf Restore a deleted variant 2025-04-30 11:40:00 +02:00
alonso.torres
d8b3b216e9 🐛 Fix import modal style problem 2025-04-30 10:48:48 +02:00
alonso.torres
88e5209856 Apply modifiers changes into data 2025-04-30 09:34:13 +02:00
Andrey Antukh
c2b13a6d5d 📚 Update changelog 2025-04-29 14:46:15 +02:00
Elena Torro
9eefe13e8b 🐛 Render children in the correct order 2025-04-29 13:39:57 +02:00
Elena Torró
7eab6a2f1d Merge pull request #6372 from penpot/elenatorro-10892-load-emoji-font-lazily
 Load emoji font dynamically when initializing
2025-04-29 13:18:09 +02:00
Elena Torro
2306df5fb7 Load emoji font dynamically when initializing 2025-04-29 13:07:06 +02:00
Andrey Antukh
56ecacee21 Merge remote-tracking branch 'origin/staging' into develop 2025-04-29 11:30:16 +02:00
Andrey Antukh
a60b3d4b08 Merge pull request #6375 from penpot/hiru-move-tokens-staging
🔧 Reorganize tokens data functions
2025-04-29 10:43:13 +02:00
Andrés Moya
b14798b405 🔧 Make private function 2025-04-29 10:28:00 +02:00
Andrés Moya
8382a88efe 🔧 Move errors and warnings to workspace.data 2025-04-29 10:27:56 +02:00
Andrés Moya
53057c4bf2 🔧 Move token update to workspace.data and rename to propagation 2025-04-29 10:27:50 +02:00
Andrés Moya
3e0f38e8c3 🔧 Move token helpers to common.files 2025-04-29 10:27:46 +02:00
Andrés Moya
a5bbe765b9 🔧 Move style-dictionary and tinycolor to main.data 2025-04-29 10:27:42 +02:00
Andrés Moya
4455adc813 🔧 Move token lib edit to workspace.data and remove unused code 2025-04-29 10:27:38 +02:00
Andrés Moya
abca763aa5 🔧 Move token application to workspace.data 2025-04-29 10:27:20 +02:00
Andrés Moya
5c74349de0 🔧 Make private function 2025-04-29 10:11:40 +02:00
Andrés Moya
4a7b72dae1 🔧 Move errors and warnings to workspace.data 2025-04-29 10:11:40 +02:00
Andrés Moya
23e17d7f30 🔧 Move token update to workspace.data and rename to propagation 2025-04-29 10:11:40 +02:00
Andrés Moya
37cf829188 🔧 Move token helpers to common.files 2025-04-29 10:11:40 +02:00
Andrés Moya
f213ffabe1 🔧 Move style-dictionary and tinycolor to main.data 2025-04-29 10:11:40 +02:00
Andrés Moya
a1921bb767 🔧 Move token lib edit to workspace.data and remove unused code 2025-04-29 10:11:40 +02:00
Andrés Moya
213c04bc8a 🔧 Move token application to workspace.data 2025-04-29 10:11:40 +02:00
Pablo Alba
916eb530a0 Close swap panel after doing a swap 2025-04-28 11:23:42 +02:00
Andrey Antukh
1f0644ea91 Merge pull request #6314 from penpot/niwinz-subscriptions-internal-api
 Add prepl api for subscriptions
2025-04-28 10:34:29 +02:00
Andrey Antukh
b20147255a Add better approach for returning subscription on teams response 2025-04-28 10:23:02 +02:00
Andrey Antukh
38728eb342 Add the ability to known the subscription status on teams list 2025-04-28 10:23:02 +02:00
Andrey Antukh
18c7890f65 Add proper impl for retrieving num of editors 2025-04-28 10:23:02 +02:00
Andrey Antukh
1c224609b9 Add prototype for returning number of used slots on customer 2025-04-28 10:23:02 +02:00
Andrey Antukh
4b81468c9c Allow subscription to be nil 2025-04-28 10:23:02 +02:00
Andrey Antukh
cffac2a56a Change schema for subscription 2025-04-28 10:23:02 +02:00
Andrey Antukh
05c0f8d69f 🎉 Add update-customer-subscription prepl method 2025-04-28 10:23:02 +02:00
Andrey Antukh
5db5bc65de 🎉 Add get-customer-prfile prepl rpc method 2025-04-28 10:23:02 +02:00
Andrey Antukh
952ab032f9 🎉 Add authenticate prepl rpc method 2025-04-28 10:23:02 +02:00
Andrey Antukh
2df6f2b8b1 ♻️ Refactor prepl interface
Make prepl to be json message based protocol
instead of clojure expression. This facilitates
implementing internal RPC over socket server.
2025-04-28 10:23:02 +02:00
Andrey Antukh
62a12a64a3 Merge branch 'staging' into develop 2025-04-28 08:44:05 +02:00
Andrey Antukh
6935d54870 Merge branch 'main' into staging 2025-04-28 08:43:54 +02:00
Andrey Antukh
049427c6ca Merge branch 'main' into develop 2025-04-28 08:43:39 +02:00
Andrey Antukh
65e8526ee2 Merge tag '2.6.2-RC4' 2025-04-28 08:43:04 +02:00
alonso.torres
8ce71e792e Add dynamic properties modifiers to WASM 2025-04-25 15:03:24 +02:00
Andrés Moya
202762027f 🐛 Handle swapped nested instances when detaching 2025-04-25 10:00:14 +02:00
Andrés Moya
d95551e651 🔧 Add debug traces to detach copy operation 2025-04-25 10:00:14 +02:00
Elena Torro
44d68ad723 🐛 Calculate text-length in bytes correctly 2025-04-25 09:48:12 +02:00
Elena Torró
9e4c9d3101 Merge pull request #6353 from penpot/ladybenko-10867-comment-crash
🐛 Fix comment loading crash (new renderer viewport)
2025-04-25 08:41:51 +02:00
Andrey Antukh
050692952e Merge remote-tracking branch 'origin/staging' into develop 2025-04-24 15:11:12 +02:00
Xaviju
c96fbfdcd6 📚 Update tokens changelog for 2.6.2 (#6364)
Co-authored-by: Xavier Julian <xaviju@proton.me>
2025-04-24 13:29:56 +02:00
Belén Albeza
ab90d9d01c 🔧 Increase the cap for gradient stops 2025-04-24 12:20:34 +02:00
Belén Albeza
281c0068d9 Embed stop data into RawGradientData 2025-04-24 12:20:34 +02:00
Belén Albeza
e7b74939cb 💄 Change to more idiomatic code in main.rs functions 2025-04-24 12:20:34 +02:00
Elena Torró
c2ae58bf08 🎉 Add text shadows (#6335) 2025-04-24 12:19:41 +02:00
Elena Torró
14e8026e30 🐛 Fix take new lines into account when rendering text (#6337) 2025-04-24 12:16:21 +02:00
Xaviju
eb29a42209 📚 Update tokens changelog for 2.6.2 and 2.7 (#6363)
Co-authored-by: Xavier Julian <xaviju@proton.me>
2025-04-24 11:40:06 +02:00
Pablo Alba
6fdaad1bf4 🐛 Fix corner case when selecting component to switch (#6350) 2025-04-24 10:38:32 +02:00
Elena Torró
dfa6c502dc Improve left sidebar horizontal layers scroll (#6317) 2025-04-24 10:00:15 +02:00
Belén Albeza
b958dcb891 🐛 Fix positioning of comment thread draft (#6357)
* 🐛 Fix positioning of comment thread draft

* 📚 Update changelog
2025-04-24 09:53:07 +02:00
Alejandro Alonso
6e5d64d403 Merge pull request #6362 from penpot/niwinz-staging-bugfixes-2
🐛 Add migration for fix old broken root shapes (file migration)
2025-04-24 09:28:04 +02:00
Andrey Antukh
3e0c2bf1a1 🐛 Add migration for fix root shape 2025-04-24 09:17:33 +02:00
Andrey Antukh
9c4896d72b Merge remote-tracking branch 'origin/staging' into develop 2025-04-24 09:00:13 +02:00
Andrey Antukh
283cdee5d6 Ensure consistency on using d/update-vals on file migrations 2025-04-24 08:55:54 +02:00
Andrey Antukh
ab5e01e54a Ensure we don't leave :components with nil on file data
after aplying migrations
2025-04-24 08:53:30 +02:00
Alejandro Alonso
01fec1a0cf Merge pull request #6339 from penpot/azazeln28-refactor-rebuild-tiles
♻️ Refactor how rebuild_tiles works
2025-04-24 07:38:56 +02:00
Aitor Moreno
caf13eb774 ♻️ Refactor how rebuild_tiles works 2025-04-24 07:34:35 +02:00
Alejandro Alonso
373248e304 Merge pull request #6360 from penpot/niwinz-staging-bugfixes-2
🐛 Fix issues on file data migration handling
2025-04-24 07:30:50 +02:00
Marina López
fef342b489 🐛 Fixed team info settings alignment (#6354) 2025-04-23 22:59:07 +02:00
Pablo Alba
6e9adece1f 🐛 Fix problems cutting-paste a variant to another page or file (#6359) 2025-04-23 22:58:12 +02:00
Andrey Antukh
80308ceafa 🐛 Make http cache aware of missing file data migrations 2025-04-23 18:15:33 +02:00
Andrey Antukh
f65518f865 🐛 Fix incorrect migration application after binfile import 2025-04-23 18:10:52 +02:00
Andrés Moya
c0315e2c30 🔥 Remove redundant schemas (and add some tooling) 2025-04-23 12:27:01 +02:00
Andrés Moya
2f20ccf289 🔥 Remove unused functions 2025-04-23 12:27:01 +02:00
Belén Albeza
1a7d60bb88 🐛 Fix comment loading crash 2025-04-23 12:15:16 +02:00
Alejandro Alonso
90b1895f19 Merge pull request #6352 from penpot/alotor-update-scripts
🐛 Fix wasm scripts
2025-04-23 11:39:15 +02:00
alonso.torres
7945a95522 🐛 Fix wasm scripts 2025-04-23 11:21:24 +02:00
Andrey Antukh
40fe6369cb Merge remote-tracking branch 'origin/staging' into develop 2025-04-23 08:59:33 +02:00
Alejandro Alonso
f155042958 Merge pull request #6345 from penpot/niwinz-staging-add-interaction-cleaning
🐛 Add migration for decoding and cleaning shape interactions
2025-04-23 08:08:31 +02:00
Andrey Antukh
1dd23a3f47 🐛 Invalidate http cache on apply migrations to file on read operation 2025-04-23 07:57:56 +02:00
Alejandro Alonso
55da3ee275 Merge pull request #6349 from penpot/azazeln28-fix-rendering-order
🐛 Fix rendering order
2025-04-23 07:07:27 +02:00
Andrey Antukh
1194e40222 🐛 Properly dispose rx subscription on grid thumbnail component 2025-04-22 21:39:57 +02:00
Andrey Antukh
05fac41534 🐛 Remove feature checking from get-file-data-for-thumbnail rpc method
The prev code has feature resolution race condition and it
in reallity does not need that check.
2025-04-22 21:38:40 +02:00
Andrey Antukh
3f85e89f62 🐛 Send frontend version on worker http requests 2025-04-22 21:26:51 +02:00
Alonso Torres
ee0f8ad19a 🐛 Fix horizontal scroll in viewer (#6347) 2025-04-22 21:03:45 +02:00
Andrey Antukh
b7d7cf233a Fix shadow colors on import penpot files 2025-04-22 19:58:10 +02:00
Aitor Moreno
38a708e12b 🐛 Fix rendering order 2025-04-22 18:49:57 +02:00
Alonso Torres
53dcd94f0d Add support for self mentions (#6341) 2025-04-22 18:49:10 +02:00
Pablo Alba
a3ccc3dfef Select correct component to switch when changing variant property (#6346) 2025-04-22 18:48:18 +02:00
Alonso Torres
bd208c31e2 🐛 Fix update layout on component restore (#6348) 2025-04-22 18:46:21 +02:00
Andrey Antukh
151dc352c8 Don't register shadow schema
It is not really necessary, we can use the
schema var directly.
2025-04-22 17:21:52 +02:00
luisδμ
77d8504baf Selection of several components of a variant at the same time 2025-04-22 15:56:38 +02:00
Andrey Antukh
ccbf17106d 🐛 Add migration for decoding and cleaning shape interactions 2025-04-22 15:04:22 +02:00
Andrey Antukh
95c4d95fd3 📎 Use d/update-vals instead of update-vals on migrations 2025-04-22 15:01:33 +02:00
Aitor Moreno
484772e3b2 Merge pull request #6313 from penpot/superalex-improve-images-performance-wasm
🎉 Improve images performance
2025-04-22 11:36:24 +02:00
Alejandro Alonso
5c7a1fb407 🎉 Improve tile caching 2025-04-22 11:03:21 +02:00
Pablo Alba
064981ff3d Merge remote-tracking branch 'origin/staging' into develop 2025-04-22 10:44:29 +02:00
Pablo Alba
fe003d7496 Add removal of variant container when it becomes empty (#6311) 2025-04-22 09:22:18 +02:00
Pablo Alba
fae1df7f4b 🐛 Fix extract component variant from variant with path (#6303) 2025-04-22 09:18:31 +02:00
Andrey Antukh
a72c07b657 Merge pull request #6309 from penpot/niwinz-staging-bugfixes-2
🐛 Several bugfixes
2025-04-22 09:15:02 +02:00
Florian Schrödl
0bff76e5f1 Don't override user provided color format (#6231) 2025-04-22 09:10:07 +02:00
Elena Torró
c7b062f483 Merge pull request #6278 from penpot/elenatorro-send-leaf-attrs-uint-arr
🔧 Parse text leaves all at once
2025-04-21 14:27:26 +02:00
Elena Torro
83f72f3e41 🔧 Parse text leaves all at once 2025-04-21 13:24:39 +02:00
Aitor Moreno
d8b71d76dd Merge pull request #6225 from penpot/elenatorro-10710-render-text-while-typing
🎉 Render text while typing
2025-04-21 12:33:08 +02:00
Aitor Moreno
a6d2f385af Merge pull request #6266 from penpot/superalex-fix-path-unions
🐛 Fix unions for new render
2025-04-21 11:23:14 +02:00
Pablo Alba
db9e397531 🐛 Fix variant from a shared lib doesnt't show props 2025-04-21 09:25:00 +02:00
Elena Torró
18dea6c3a3 Merge pull request #6298 from penpot/ladybenko-10752-gradient-stops
 Send fill + Stops in a single wasm call
2025-04-21 09:17:26 +02:00
Alejandro Alonso
8ebaecc472 🐛 Fix unions for new render 2025-04-21 08:10:15 +02:00
Unreal Vision
58e0b26493 🌐 Add translations for: French
Currently translated at 100.0% (1730 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/
2025-04-17 15:01:43 +02:00
Corentin Noël
c75380e063 🌐 Add translations for: French
Currently translated at 100.0% (1730 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/
2025-04-17 15:01:42 +02:00
Andrey Antukh
708492afeb 💄 Add mainly cosmetic changes to dashboard placeholder components 2025-04-17 09:20:35 +02:00
Andrey Antukh
1305ab3cc6 🐛 Fix issue with empty placeholder on team change 2025-04-17 09:20:34 +02:00
Andrey Antukh
29cc6b4f9c Print the current seed on test.check fail 2025-04-17 09:20:34 +02:00
Andrey Antukh
cc7f0b145c 🐛 Make shape interaction properly decode on binfile import 2025-04-17 09:20:34 +02:00
Andrey Antukh
e69c0c3e27 Make schema uuid parsing fns private 2025-04-17 09:20:34 +02:00
Andrey Antukh
a209966427 🐛 Don't use schema uuid parsing function on websocket ns 2025-04-17 09:20:34 +02:00
Andrey Antukh
d5abbd4220 📎 Add missing entries on the changelog 2025-04-17 09:20:32 +02:00
Andrey Antukh
43a75b64b4 Merge pull request #6318 from penpot/ladybenko-10781-rust-devenv
🔧 Improve Rust dev env
2025-04-17 08:48:50 +02:00
Pablo Alba
70a23a14c4 🐛 Fix allow moving a main component into another 2025-04-16 22:54:30 +02:00
Marina López
93c81ea49c 🐛 Fix pricing CTA to be under a config flag (#6304) 2025-04-16 17:17:47 +02:00
Xaviju
3a741d1c14 🐛 Hide inactive warning if sets are empty (#6295)
* 🐛 Hide inactive warning if sets are empty

* 📎 Add simplified impl with proper comment

---------

Co-authored-by: Xavier Julian <xaviju@proton.me>
Co-authored-by: Andrey Antukh <niwi@niwi.nz>
2025-04-16 17:17:13 +02:00
Pablo Alba
ba442e1549 Allow copy-paste variants into another file (#6319) 2025-04-16 17:12:12 +02:00
Andrés Moya
8c15296d07 Merge branch 'tokens-studio-hyma/99-improve-token-error-messages' into develop 2025-04-16 16:31:53 +02:00
Florian Schroedl
d26464c810 Catch invalid name errors in json 2025-04-16 16:30:47 +02:00
Belén Albeza
8ee202e5a1 🔧 Fix emscripten version in devenv 2025-04-16 15:30:29 +02:00
Belén Albeza
689cddfd0c 🔧 Use cargo env variable for target and allow to override it as well as SKIA_BINARIES_URL 2025-04-16 15:05:31 +02:00
Elena Torró
25950bb5a5 Merge pull request #6312 from penpot/elenatorro-fix-children-removal-regression
🐛 Fix last shape removal
2025-04-16 15:03:26 +02:00
Belén Albeza
1da623e63f 💄 Change naming and args order of write-gradient-fill! 2025-04-16 14:09:24 +02:00
Belén Albeza
4bf9e24d43 ♻️ Avoid using get-prop when unneeded in serializers 2025-04-16 14:09:24 +02:00
Belén Albeza
b41a7b8547 💄 Remove no longer used functions in wasm serialization 2025-04-16 14:09:23 +02:00
Belén Albeza
f500a00d04 ♻️ Extract wasm-functions for fills and strokes out of main.rs 2025-04-16 14:09:19 +02:00
Belén Albeza
64a2a08d24 ♻️ Refactor gradient parsing from bytes 2025-04-16 14:08:38 +02:00
Belén Albeza
1f58f96e88 ♻️ Refactor serializing gradient fill 2025-04-16 14:07:35 +02:00
Belén Albeza
dc3d802d3d 🎉 Serialize radial fills in one go 2025-04-16 14:07:35 +02:00
Belén Albeza
5765d1c56c ♻️ Switch to a f32 offset for gradient stops 2025-04-16 14:07:35 +02:00
Belén Albeza
abcd050c69 ♻️ Adapt linear gradient type so it can be used for radial too (wasm) 2025-04-16 14:07:33 +02:00
Belén Albeza
f40ef26c69 ♻️ Move color and fill serializers to their own sub-namespaces 2025-04-16 14:06:22 +02:00
Belén Albeza
fccd1a5bd7 Send fill + stops data in one call for linear fills 2025-04-16 14:05:39 +02:00
Alejandro Alonso
16012a3881 Merge remote-tracking branch 'origin/staging' into develop 2025-04-16 13:15:18 +02:00
Alejandro Alonso
ddc41027ab Merge pull request #6316 from penpot/palba-fix-instanciate-component
🐛 Fix error while drag an drop a component to the canvas
2025-04-16 13:15:07 +02:00
Pablo Alba
4f931fbe6a 🐛 Fix error while drag an drop a component to the canvas 2025-04-16 13:05:56 +02:00
Marina López
7ada3692cf Design improvements to the Invitations page with an empty state 2025-04-16 12:38:47 +02:00
Elena Torro
1ab5d5027f 🐛 Fix last shape removal 2025-04-16 12:37:29 +02:00
Alejandro Alonso
1f16816fe4 Merge pull request #6310 from penpot/alotor-perf-reparent-modifiers
 Reparent modifiers
2025-04-16 12:21:20 +02:00
alonso.torres
daf048e258 Reparent modifiers 2025-04-16 11:27:51 +02:00
Alejandro Alonso
f3d13005b2 🐛 Fix avoid uncacheable tiles (#6281) 2025-04-16 10:59:24 +02:00
Elena Torró
25a44e1387 Merge pull request #6306 from penpot/ladybenko-fix-raf-macros
🐛 Fix broken test build for rust wasm
2025-04-16 07:15:27 +02:00
Belén Albeza
9e9612cf1f 🐛 Fix broken test build for rust wasm 2025-04-15 16:58:49 +02:00
Aitor Moreno
304c44048f ♻️ Refactor how rAF/cAF is handled (#6241) 2025-04-15 15:45:28 +02:00
Alejandro Alonso
99e64ad387 Merge pull request #6274 from penpot/alotor-perf-grid-layout-modifiers-3
 Modifiers grid multi-span
2025-04-15 13:39:45 +02:00
Marina López
0f0c45af8e Propagate sharing a prototype to editors and viewers (#6297) 2025-04-15 12:50:01 +02:00
Marina López
f2977cf938 Visual indicators for unlimited tier users (#6270)
*  Visual indicators for unlimited tier users

* ♻️ Refactor to organize properly subscription

* ♻️ Refactor with PR feedback

* 💄 Add minor cosmetic changes

---------

Co-authored-by: Andrey Antukh <niwi@niwi.nz>
2025-04-15 12:47:37 +02:00
Andrey Antukh
bb80da137d Merge remote-tracking branch 'origin/staging' into develop 2025-04-15 12:10:53 +02:00
Pablo Alba
f4b16a255c Copy values of same named properties moving a variant into another (#6288)
*  Copy values of same named properties moving a variant into another

*  Add MR changes
2025-04-15 12:06:58 +02:00
Andrey Antukh
b49a4734ff 🐛 Fix srepl helper for restore file snapshots 2025-04-15 11:03:50 +02:00
Marina López
ec8c30f060 Update board presets with newer devices (#6296) 2025-04-15 10:42:46 +02:00
Andrey Antukh
7990400c7a 🐛 Fix srepl helper for restore file snapshots (#6300) 2025-04-15 10:39:51 +02:00
Alejandro Alonso
2aaa2f3033 🐛 Fix template import (#6299) 2025-04-15 10:39:22 +02:00
Alejandro Alonso
202b9f3075 Merge pull request #6284 from penpot/niwinz-staging-several-bugfixes
🐛 Several bugfixes and enhacements
2025-04-15 10:33:59 +02:00
Eva Marco
eee5cf5fb4 Add duplicate sets feature (#6240)
*  Add duplicate sets feature

*  Add test to each module

* 🎉 Fix comments

* 🎉 Remove duplicate from groups

* 🎉 Remove create theme from test

* 🎉 Remove ' from names
2025-04-14 16:22:40 +02:00
Andrey Antukh
be0814cdac Improve internal error reporting 2025-04-14 13:26:12 +02:00
Xavier Julian
f5c699ab7a Improve copy on inactive set warning title 2025-04-14 10:30:48 +02:00
Andrey Antukh
80d719353c Make auth data available before request parsing
For properly report profile-id
2025-04-14 09:23:41 +02:00
Andrey Antukh
fa3fc12594 Sanitize uuid on the rest of code 2025-04-14 09:23:29 +02:00
Andrey Antukh
422a9db07b Sanitize uuid parsing on legacy zip import code 2025-04-14 09:13:35 +02:00
Andrey Antukh
a4145a30f5 🐛 Fix uuid encode/decode on schema 2025-04-14 09:13:34 +02:00
TheScientistPT
3d67c7930c 🌐 Add translations for: Portuguese (Portugal)
Currently translated at 92.3% (1598 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_PT/
2025-04-13 20:18:26 +02:00
TheScientistPT
b55ec38c35 🌐 Add translations for: Portuguese (Portugal)
Currently translated at 92.2% (1596 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_PT/
2025-04-11 23:02:00 +02:00
Stas Haas
02a1cfb457 🌐 Add translations for: German
Currently translated at 96.1% (1663 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/
2025-04-11 23:01:59 +02:00
Corentin Noël
b2ba38b5de 🌐 Add translations for: French
Currently translated at 98.7% (1708 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/
2025-04-11 23:01:57 +02:00
Pablo Alba
dcf1a593f7 Add playwright tests for cut-copy-paste variants 2025-04-11 15:17:33 +02:00
Pablo Alba
785b61be2f Fix corner cases of duplicate/copy-paste/cut-paste variants 2025-04-11 15:17:33 +02:00
Elena Torró
39c7782019 Merge pull request #6264 from penpot/elenatorro-10681-update-component-color-preview
🐛 Update the component thumbnail on component change
2025-04-11 14:33:07 +02:00
Alejandro Alonso
1c5c51907a Merge remote-tracking branch 'origin/staging' into develop 2025-04-11 14:05:00 +02:00
andrés gonzález
e004671346 📚 Update Recommended storage info (#6275) 2025-04-11 14:02:35 +02:00
alonso.torres
a59014cad0 Modifiers grid multi-span 2025-04-11 13:35:16 +02:00
Andrey Antukh
38e5c161e7 Sanitize plugins uuid parsing 2025-04-11 13:21:26 +02:00
Aitor Moreno
87650de9bc 🐛 Fix color gradient on text positioned incorrectly (#6253) 2025-04-11 11:36:31 +02:00
Florian Schrödl
ee5596067e ⬆️ Upgrade style_dictionary dependency to v5-rc1 (#6283) 2025-04-11 11:31:28 +02:00
Eva Marco
870fec6bbd 🐛 Fix modal hint as context notification (#6276) 2025-04-11 11:27:30 +02:00
Alejandro Alonso
686ab14b43 Merge pull request #6282 from penpot/alotor-fix-bool-wasm
🐛 Fix problem with booleans in wasm
2025-04-11 11:06:31 +02:00
alonso.torres
fced0cf3b1 🐛 Fix problem with booleans in wasm 2025-04-11 10:56:08 +02:00
Andrey Antukh
25dd53290c 🐛 Fix component thumbnail refresh on change
Happens when a component is nested in an other top level frame
2025-04-11 10:40:56 +02:00
Andrey Antukh
a7c1f7ba69 🐛 Fix incorrect undo handling on path edition 2025-04-11 08:54:02 +02:00
Elena Torró
de8e27feb8 Merge pull request #6242 from penpot/ladybenko-10666-builtin-fonts
🎉 Load built-in font and its variants (wasm)
2025-04-11 08:48:31 +02:00
luisδμ
e7144142e5 Add, edit and delete variant properties from layer panel (#6257) 2025-04-10 21:15:23 +02:00
Xavier Julian
b6f2a434cf Display inactive set warning 2025-04-10 15:02:30 +02:00
Alonso Torres
caf558f8dd 🐛 Fix import error messages (#6265) 2025-04-10 14:46:50 +02:00
Florian Schrödl
6f2f1b7a76 ⬆️ Update style dictionary to 4.3.3 (#6260)
Co-authored-by: Andrey Fedorov <oran9e.red@gmail.com>
2025-04-10 14:42:24 +02:00
Elena Torró
744ef1958b Merge pull request #6269 from penpot/elenatorro-fix-render-wasm-tests
🔧 Return the test output
2025-04-10 14:19:02 +02:00
Elena Torro
08b44e1857 🔧 Return the test output 2025-04-10 14:10:05 +02:00
Eva Marco
580b60550c 🐛 Fix notification vertical alignment (#6272) 2025-04-10 13:53:20 +02:00
Florian Schroedl
e9755d437e 🐛 Fix sets and set groups with same name cannot be renamed 2025-04-10 13:27:49 +02:00
Elena Torró
20f695e8d7 Merge pull request #6271 from penpot/ladybenko-fix-test-run
🔧 Update test script to use the right architecture
2025-04-10 13:04:22 +02:00
Belén Albeza
1d7ff1f9e4 🔧 Fix requiring an emscripten macro in non-wasm architectures 2025-04-10 12:52:56 +02:00
Belén Albeza
5b18f1d76d 🔧 Update test script to use the right architecture 2025-04-10 12:50:22 +02:00
Aitor Moreno
d880307a9b 🎉 Add performance measuring functions (#6229) 2025-04-10 11:33:22 +02:00
Eva Marco
e5db66351e 🐛 Fix scroll on token themes modal (#6251)
* 🐛 Fix scroll on token themes modal

* 🐛 Fix collapse set group error
2025-04-10 10:25:08 +02:00
ºelhombretecla
89153eef23 🎉 Increase height presets dropdown (#6185)
* 🎉 Add new measures dropdown height

* 🎉 Add enhancement to CHANGES.md
2025-04-10 10:01:52 +02:00
Alejandro
97c24c8b9c 🐛 Fix merge path nodes with only one node selected (#6248) 2025-04-10 09:08:44 +02:00
Alejandro Alonso
43535ae573 Merge remote-tracking branch 'origin/staging' into develop 2025-04-10 08:40:29 +02:00
Alejandro
b7a8677036 Merge pull request #6262 from penpot/niwinz-staging-clean-data
🐛 Clean workspace state on exit or url change
2025-04-10 08:38:55 +02:00
Alejandro
61643f676c Merge pull request #6249 from penpot/elenatorro-10750-fix-path-nil-svg-attrs
🔧 Do not try to set svg path attrs if none
2025-04-10 06:51:50 +02:00
Alejandro
9b8c8c4971 Merge pull request #6258 from penpot/elenatorro-10756-delete-last-shape
🐛 Remove children correctly
2025-04-10 06:49:41 +02:00
Alejandro
033ca0d56b 🐛 Fix error when an external user tries to export a shape on viewer (#6252) 2025-04-09 16:48:49 +02:00
Alonso Torres
28a6797595 🐛 Fix problem with error detail in toast (#6259) 2025-04-09 16:36:11 +02:00
Andrey Antukh
9ff2160c77 🐛 Clean workspace state on exit or url change 2025-04-09 16:31:49 +02:00
Elena Torro
953db56a0d 🐛 Remove children correctly 2025-04-09 14:39:21 +02:00
Denys Kisil
68ce13368e 🌐 Add translations for: Ukrainian (ukr_UA)
Currently translated at 100.0% (1730 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/
2025-04-09 14:01:41 +02:00
Alejandro Alonso
82cf474863 Merge remote-tracking branch 'origin/staging' into develop 2025-04-09 13:52:54 +02:00
Alejandro
4c77b32171 Merge pull request #6256 from penpot/niwinz-staging-fix-backend-tests
📎 Fix backend tests
2025-04-09 13:52:30 +02:00
Andrey Antukh
34141ce9af 📎 Fix backend tests
Caused by update of image procesing libraries on the devenv docker
image update from debian to ubuntu
2025-04-09 13:37:52 +02:00
Andrey Antukh
edfcac3d5c 🐛 Restore uid assignation on devenv entrypoint 2025-04-09 13:11:12 +02:00
Alejandro Alonso
774e11c827 Merge remote-tracking branch 'origin/staging' into develop 2025-04-09 12:53:18 +02:00
Alejandro
58c867885c Merge pull request #6250 from penpot/alotor-bug-colorpicker
🐛 Fix colorpicker scroll when dropdown displayed
2025-04-09 12:51:17 +02:00
alonso.torres
ccb6e25914 🐛 Fix colorpicker scroll when dropdown displayed 2025-04-09 12:50:55 +02:00
Alejandro
965d2d4036 🐛 Fix webhooks not shown in list (#6254) 2025-04-09 12:46:00 +02:00
Yamila Moreno
9f8d7c9e41 🐳 Improve https documentation 2025-04-09 12:24:43 +02:00
Andrey Antukh
8d352c1f82 Merge branch 'main' into staging 2025-04-09 10:59:37 +02:00
Andrey Antukh
faead09174 Merge tag '2.6.0' 2025-04-09 10:58:39 +02:00
Elena Torro
43f77376b6 🔧 Do not try to set svg path attrs if none 2025-04-09 10:13:39 +02:00
Yamila Moreno
ae3ce1220b 🐳 Improve https documentation 2025-04-09 10:05:18 +02:00
Andrey Antukh
6e3673136a 📎 Update changelog 2025-04-09 09:19:05 +02:00
Belén Albeza
c0ba92f503 🎉 Add support for default font variants (wasm) 2025-04-08 16:45:27 +02:00
Belén Albeza
90cb0357c6 🎉 Swap default font for source sans (wasm) 2025-04-08 14:48:28 +02:00
Alejandro
d55e55ebcc Merge pull request #6237 from penpot/niwinz-upgrade-devenv
⬆️ Upgrade devenv (ubuntu, jvm, node)
2025-04-08 10:50:50 +02:00
Aitor Moreno
c2522329fd Merge pull request #6235 from penpot/alotor-perf-grid-layout-modifiers-2
 Grid layout modifiers
2025-04-08 09:47:42 +02:00
Alejandro
2470c1788e 🐛 Fix render wasm build (#6239) 2025-04-08 09:06:32 +02:00
Pablo Alba
230d259551 Merge pull request #6238 from penpot/luis-improve-input-with-values-doc
📚 Update documentation for input-with-values component
2025-04-07 23:31:40 +02:00
Denys Kisil
a55db1d52b 🌐 Add translations for: Ukrainian (ukr_UA)
Currently translated at 100.0% (1730 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/
2025-04-07 16:01:42 +00:00
Luis de Dios
cb533335c4 📚 Update documentation for input-with-values component 2025-04-07 17:18:21 +02:00
Andrés Moya
a8890e4b13 Merge branch 'tokens-studio-florian-70-sets-in-theme-create' into develop 2025-04-07 17:08:33 +02:00
Florian Schroedl
0281e0dba4 🚧 Explicit state handling 2025-04-07 16:42:43 +02:00
Florian Schroedl
1c209f49fc 🚧 Don't expose state 2025-04-07 16:36:02 +02:00
Yamila Moreno
28caa1d47d 🐛 Fix docker-compose.yaml (#6236) 2025-04-07 16:29:47 +02:00
Andrey Antukh
a4701866a4 ⬆️ Upgrade devenv (ubuntu, jvm, node) 2025-04-07 16:26:04 +02:00
Florian Schroedl
12f72c8ca9 🚧 Show back button only when coming from a modal view 2025-04-07 16:04:18 +02:00
Florian Schroedl
c1165bd12d 🚧 Convert rumext 2025-04-07 16:04:18 +02:00
Florian Schroedl
215fb53c52 🚧 Use use-fn 2025-04-07 16:04:18 +02:00
Florian Schroedl
8df780b237 Allow editing of sets in create theme dialog
♻️ theme-state -> current-theme
2025-04-07 16:04:18 +02:00
Andrés Moya
79679cbb16 Merge branch 'tokens-studio-andrei/91-single-set-import-refactoring' into develop 2025-04-07 15:56:22 +02:00
Andrey Fedorov
fb2db4b918 ♻️ Refactor single set import functionality 2025-04-07 15:48:27 +02:00
Andrey Antukh
05b66f1dcf Merge remote-tracking branch 'origin/develop' into develop 2025-04-07 14:45:29 +02:00
Andrey Antukh
0f1b2003be Merge branch 'staging' into develop 2025-04-07 14:45:08 +02:00
Andrey Antukh
ea6f0abf7c 🐛 Fix regresion on features calculate method on workspace load 2025-04-07 14:32:48 +02:00
Belén Albeza
6f91da9461 🔧 Fix Rust tests (#6208)
* 🔧 Fix test script (rust wasm)

* 🔧 Make code compile in test mode + using aarch64 as a target for tests
2025-04-07 14:08:41 +02:00
Andrey Antukh
45cdfff128 🐛 Fix backend notifications on dashboard 2025-04-07 14:00:26 +02:00
Marina López
8c38e41261 🎉 Consolidate first state of a project (#6150) 2025-04-07 13:15:32 +02:00
alonso.torres
63666fca48 Grid layout modifiers 2025-04-07 11:51:28 +02:00
Andrey Antukh
d279b6c232 📎 Fix linter issues 2025-04-07 11:40:19 +02:00
Andrey Antukh
17f7f920c4 Merge branch 'staging' into develop 2025-04-07 11:32:41 +02:00
Alejandro
3197dfddd9 Merge pull request #6234 from penpot/niwinz-staging-bugfixes-3
🐛 Several bugfixes and backports
2025-04-07 11:15:32 +02:00
Andrey Antukh
b55c86544b 📎 Fix linter issues 2025-04-07 10:52:07 +02:00
Pablo Alba
af1d5b86e1 Merge pull request #6214 from penpot/palba-cleanup-components-v2
♻️ Cleanup of componentsv2
 Add check to avoid open files with components v1
2025-04-07 10:18:53 +02:00
Andrey Antukh
d900516302 Merge branch 'main' into staging 2025-04-07 09:59:27 +02:00
Andrey Antukh
fa68a25bea Merge branch 'warrenjokinen-patch-1' 2025-04-07 09:59:08 +02:00
warrenjokinen
2cc2d34719 📚 Update shortcuts.njk (docs)
minor typo
2025-04-07 09:57:05 +02:00
Andrey Antukh
4640d043e3 ⬆️ Update yarn 2025-04-07 09:21:56 +02:00
Alonso Torres
137e8d042f 🐛 Fix problem with boolean edges (#6218) 2025-04-07 09:19:43 +02:00
Andrey Antukh
bc957893f4 Make feature resolved on team load
That simplifies features retrieval to simple get
2025-04-07 07:50:40 +02:00
Andrey Antukh
b8107ee497 Ensure workspace page loading and intialization process 2025-04-07 07:42:09 +02:00
Andrey Antukh
6b3a988526 Send version and build data to worker configuration 2025-04-07 07:10:40 +02:00
Andrey Antukh
5cb39874a2 Add better error hints on auth ns 2025-04-07 07:10:40 +02:00
Rick Benetti
ee96c5599c 🌐 Add translations for: Portuguese (Brazil)
Currently translated at 74.0% (1281 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_BR/
2025-04-05 14:07:11 +00:00
Elena Torro
4ceaedcbe8 🎉 Render text while typing 2025-04-04 14:02:02 +02:00
Pablo Alba
f375cc9a82 Add check to avoid open files with components v1 2025-04-04 11:08:30 +02:00
Marina López
9fc671cc17 🐛 Fix wrong path to list all icons in storybook 2025-04-04 10:36:51 +02:00
Elena Torró
5937ed57ce 🎉 Update font and variant on change (#6220) 2025-04-04 10:17:39 +02:00
Aitor Moreno
2e3ed0c23f Merge pull request #6230 from penpot/azazeln28-fix-mem-bytes-alloc-32
🐛 Fix bytes-alloc-32
2025-04-04 09:55:34 +02:00
Aitor Moreno
5d1d2ef289 🐛 Fix bytes-alloc-32 2025-04-04 09:43:48 +02:00
Elena Torró
480c224250 🐛 Fix long file names (#6216)
* 🔧 Add truncate str macro

* 🐛 Use truncate instead of prune to prevent title override

* 💄 Use text-overflow ellipsis on file names

* 📎 Add #10662 to 2.7 bugfixes
2025-04-03 16:06:02 +02:00
Aitor Moreno
cd731c3ad2 ♻️ Refactor heap usage (#6204) 2025-04-03 16:04:51 +02:00
Pablo Alba
3fb3b45fdc Merge pull request #6219 from penpot/niwinz-staging-bugfixes-2
🐛 Several bugfixes and enhancements
2025-04-03 15:49:09 +02:00
Andrey Antukh
9bc49e3381 Merge pull request #6209 from penpot/niwinz-features-enhancement
 Make feature resolved on team load
2025-04-03 15:43:12 +02:00
Andrey Antukh
0816adbaec Send ws messages in verbose format when on development build 2025-04-03 11:40:40 +02:00
Andrey Antukh
1d69941882 🐛 Fix backend notification dialogs 2025-04-03 11:40:40 +02:00
Pablo Alba
f961b75bba ♻️ Cleanup of componentsv2 2025-04-03 11:38:35 +02:00
Andrey Antukh
8f600f334f 🐛 Make accept and cancel handlers optional on actionable* 2025-04-03 11:21:02 +02:00
Andrey Antukh
cf55d12991 📚 Add better docstring for srepl.main/notify! helper 2025-04-03 11:21:02 +02:00
Andrey Antukh
78919df886 🐛 Fix incorrect topic sending on internal srepl notify helper 2025-04-03 10:58:10 +02:00
Marina López
1e16fb8ca2 🐛 Fix horizontal scroll from design tab (#6213) 2025-04-02 20:00:22 +02:00
Elena Torró
c332528185 🐛 Fix render object with pending status (#6215) 2025-04-02 19:58:03 +02:00
Pablo Alba
387c5e67f3 🐛 Fix flick on create variant (#6217) 2025-04-02 19:54:48 +02:00
Elena Torró
2ed780e14d Merge pull request #6205 from penpot/elenatorro-10528-fix-google-font-variant-styles
🐛 Fix Google Fonts load by parsing italic variant ids correctly
2025-04-02 17:16:51 +02:00
Pablo Alba
1b8714fe7f 🐛 Fix position problems cutting-pasting a component 2025-04-02 12:10:18 +02:00
Andrey Antukh
e28f8cae74 Merge remote-tracking branch 'origin/staging' into develop 2025-04-02 10:34:31 +02:00
Andrés Moya
5d600c6715 Change behavior of single set json file import to be coherent (#6211) 2025-04-02 09:41:12 +02:00
Andrey Antukh
ea031a2161 Merge pull request #6210 from penpot/niwinz-staging-bugfixes
🐛 Several bugfixes
2025-04-02 09:19:57 +02:00
Andrey Antukh
87ef98dad5 Consolidate layout/grid feature 2025-04-01 21:15:38 +02:00
Andrey Antukh
4d4a04e9aa Add minor enhacement for error reporting 2025-04-01 20:43:55 +02:00
Andrey Antukh
e6e71e9278 Add minor enhacement for error reporting 2025-04-01 20:24:07 +02:00
Andrey Antukh
02220d02ed ⬆️ Update svgo 2025-04-01 20:01:21 +02:00
Andrey Antukh
ff7b77bda7 ⬆️ Update yarn 2025-04-01 20:01:21 +02:00
Andrey Antukh
f8ffae75c4 Make feature resolved on team load
That simplifies features retrieval to simple get
2025-04-01 20:01:21 +02:00
Andrey Antukh
3ec797f56e 🐛 Validate and decode params on export-binfile 2025-04-01 19:16:35 +02:00
Andrey Antukh
cb350b26a1 Merge remote-tracking branch 'origin/develop' into develop 2025-04-01 18:27:02 +02:00
Andrey Antukh
dccebb0bea Merge remote-tracking branch 'origin/staging' into develop 2025-04-01 18:26:37 +02:00
Elena Torró
4cefbb52e1 Merge pull request #6206 from penpot/azazeln28-fix-not-enough-surfaces
🐛 Fix not enough surfaces
2025-04-01 15:47:59 +02:00
Elena Torro
d757009b48 🐛 Fix Google Fonts load by parsing italic variant ids correctly 2025-04-01 14:01:54 +02:00
Aitor Moreno
ca202711e1 🐛 Fix not enough surfaces 2025-04-01 13:41:33 +02:00
Eva Marco
74f11859e4 🐛 Fix max lenght on assets inputs (#6201) 2025-04-01 13:28:35 +02:00
Andrey Antukh
47f80cf3db 🐛 Make error middleware capture profile-id 2025-04-01 12:30:51 +02:00
Pablo Alba
f04229d8cb 🎉 Allow duplicate/copy-paste/cut-paste variants 2025-04-01 11:07:22 +02:00
Andrey Antukh
076d64df8f Merge remote-tracking branch 'origin/staging' into develop 2025-04-01 11:02:32 +02:00
Andrey Fedorov
a20dd3f955 Fix single set import 2025-04-01 10:57:17 +02:00
Andrey Antukh
982118c942 🐳 Update devenv corepack setup 2025-04-01 10:47:49 +02:00
Andrey Antukh
a51feb8638 📎 Update changelog 2025-04-01 10:47:13 +02:00
Elena Torró
3d7479f9aa 🐛 Fix stroke image rendering (#6189) 2025-04-01 09:55:19 +02:00
Yamila Moreno
9663964790 🐳 Make traefik example easier (#6198) 2025-04-01 09:34:46 +02:00
Elena Torró
76ffc2d268 🔧 Log error on process animation frame (#6182) 2025-04-01 09:01:49 +02:00
Elena Scilinguo
d0d118b31e 📚 Update README.md
Signed-off-by: Elena Scilinguo <elena.scilinguo@kaleidos.net >
2025-04-01 08:51:23 +02:00
Andrés Moya
2c0e18ce1c 🐛 Fix sync of margin and padding tokens in components 2025-03-31 16:19:45 +02:00
Eva Marco
89876ef96f 🐛 Fix UI with long named colors (#6193) 2025-03-31 15:33:30 +02:00
Elena Torró
895b5b2ee1 🐛 Fix new line parsing (#6180) 2025-03-31 14:59:34 +02:00
Rick Benetti
21702c090d 🌐 Add translations for: Portuguese (Brazil)
Currently translated at 73.9% (1280 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_BR/
2025-03-31 11:06:36 +00:00
Elena Torró
9fd0e9af66 Merge pull request #6178 from penpot/ladybenko-10528-google-fonts
🎉 Render text that uses a google font (wasm)
2025-03-31 11:55:57 +02:00
luisδμ
648a8f9237 Allow modifying property name when a variation is selected (#6174)
*  Change property name when a variation is selected

* 📎 PR changes
2025-03-31 09:12:43 +02:00
Edgars Andersons
c4254106e8 🌐 Add translations for: Latvian
Currently translated at 100.0% (1730 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/
2025-03-29 13:01:53 +01:00
Xavier Julian
c259b8ed46 🐛 Fix overflow on tokens sidebar 2025-03-28 23:45:01 +01:00
Xavier Julian
b1df0ac194 Add a default 256 maxlength value to all input fields 2025-03-28 23:45:01 +01:00
Aitor Moreno
4e1ae1bc1a Merge pull request #6181 from penpot/superalex-tada-avoid-full-tiles-rebuild-on-set-modifiers
🎉 Avoid full tiles rebuild on set modifiers
2025-03-28 16:27:30 +01:00
Aitor Moreno
b6ac1dea4d 🐛 Fix TileSurfaceCache not deref surfaces 2025-03-28 16:14:37 +01:00
Belén Albeza
219d9af885 ♻️ Simplify font ids 2025-03-28 15:21:42 +01:00
Belén Albeza
c6bba54573 ♻️ Refactor font-related wasm code into a sub-namespace 2025-03-28 15:17:13 +01:00
Belén Albeza
f53cae0faa 🎉 Render text that uses a Google Font 2025-03-28 15:17:12 +01:00
Eva Marco
c1853a71a9 🐛 Fix available resize area (#6186) 2025-03-28 13:15:35 +01:00
Edgars Andersons
981336ed5e 🌐 Add translations for: Latvian
Currently translated at 98.4% (1704 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/
2025-03-28 11:01:58 +00:00
Linerly
3864ce6855 🌐 Add translations for: Indonesian
Currently translated at 100.0% (1730 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/id/
2025-03-28 11:01:57 +00:00
Alejandro Alonso
6953a57333 🎉 Avoid full tiles rebuild on set modifiers 2025-03-28 11:55:54 +01:00
Alejandro
a109f11926 Merge pull request #6187 from penpot/azazeln28-fix-surface-pool-missing-deallocation
🐛 Fix SurfacePool missing deallocation
2025-03-28 11:55:45 +01:00
Alejandro
45c9904e05 Merge pull request #6155 from penpot/azazeln28-feat-cache-extra-tiles
🎉 Cache extra tiles
2025-03-28 11:55:31 +01:00
Aitor Moreno
08fc32cdc6 🎉 Cache extra tiles 2025-03-28 11:34:18 +01:00
Aitor Moreno
6c10f1e364 🐛 Fix SurfacePool missing deallocation 2025-03-28 11:34:04 +01:00
Alejandro
e8549ffb79 Merge pull request #6177 from penpot/azazeln28-feat-sort-viewport-tiles
🎉 Sort viewport tiles by distance to center
2025-03-28 11:32:08 +01:00
Aitor Moreno
8a8d89dfc0 🎉 Sort viewport tiles by distance to center 2025-03-28 11:22:10 +01:00
Pablo Alba
b6c4376217 🐛 Fix bugs from varaints design review 2025-03-28 11:20:10 +01:00
Eva Marco
cbb3f6672f 🐛 Fix asset name on inspect tab (#6173)
Signed-off-by: Eva Marco <eva.marco@kaleidos.net>
2025-03-28 10:38:35 +01:00
Alejandro
bd5e47f5fc Merge pull request #6126 from penpot/elenatorro-10516-fix-stroke-shadows
🐛 Fix stroke shadows
2025-03-28 09:54:39 +01:00
Alejandro
2aa756af38 Merge pull request #6175 from penpot/niwinz-develop-binfile-path-fix
🐛 Fix binfile-v3 importation related to bool shape normalization
2025-03-28 09:46:16 +01:00
Andrey Antukh
78c2840b22 Merge remote-tracking branch 'origin/staging' into develop 2025-03-28 09:45:34 +01:00
Aitor Moreno
af0a516a79 🐛 Fix path editing with wrong selrect (#6168) 2025-03-28 09:43:46 +01:00
Alejandro
cc97a8ffcc Merge pull request #6158 from penpot/niwinz-staging-task-result
🐛 Fix incorrect task result handling
2025-03-28 09:43:11 +01:00
ºelhombretecla
535e8653a0 🎉 Add slides for version 2.6 (#6176) 2025-03-28 09:42:09 +01:00
Andrey Antukh
210e5b0023 🐛 Fix incorrect task result handling
That caused that many task rows in a table not properly marked
as completed and leaved just as scheduled.
2025-03-28 09:10:46 +01:00
Andrey Antukh
651beb4b9c 🐛 Fix binfile-v3 importation related to bool shape normalization 2025-03-28 08:57:47 +01:00
Elena Torro
f4d04a3dcb 🐛 Fix Stroke Shadows
- Move shadows surface responsibility
- Draw shadows directly into DropShadows and InnerShadows surfaces
- Draw stroke shadows directly into Strokes in order
- Clean up old shadow surfaces (Shadow & Overlay)
2025-03-28 08:56:37 +01:00
Elena Torró
d573da55b0 Merge pull request #6179 from penpot/elenatorro-10530-fix-paragraph
🐛 Revert offset change to fix paragraph rendering
2025-03-27 17:29:50 +01:00
Elena Torro
3c4be537d9 🐛 Revert offset change to fix paragraph rendering 2025-03-27 17:17:36 +01:00
Andrés Moya
6a87d5eea9 🐛 Rewrite active tokens calculation algorithm (#6165) 2025-03-27 15:53:17 +00:00
Elena Torró
9800331505 🎉 Improve performance reducing unnecessary calls to set-objects
🎉 Improve performance reducing unnecessary calls to set-objects
2025-03-27 16:19:36 +01:00
Alejandro Alonso
7728d5b317 🎉 Improve performance reducing unnecessary calls to set-objects 2025-03-27 15:47:03 +01:00
Aitor Moreno
8f47ed8b0a Merge pull request #6136 from penpot/superalex-disable-svg-viewport-texts-for-wasm-render
🐛 Disable svg viewport texts for wasm render
2025-03-27 14:46:38 +01:00
Alejandro
c137e682dc Merge pull request #6172 from penpot/elenatorro-10530-fix-text-drag-and-drop
 Render text properly while dragging and resizing the text Shape
2025-03-27 14:18:11 +01:00
Andrey Antukh
14c639a425 🐛 Fix bool type shape normalize migration 2025-03-27 14:15:13 +01:00
Elena Torró
06bfb1ad26 🎉 Add PathData data type
🎉 Add PathData data type
2025-03-27 13:39:54 +01:00
Elena Torro
33c3611345 Render text properly while dragging and resizing the text Shape 2025-03-27 13:04:45 +01:00
Alejandro Alonso
e012046f62 Merge remote-tracking branch 'origin/staging' into develop 2025-03-27 12:12:57 +01:00
Alejandro Alonso
237d9d067d Merge remote-tracking branch 'origin/main' into staging 2025-03-27 12:12:37 +01:00
Alejandro
6519db82d1 Merge pull request #6171 from penpot/mavalroot-install-plugin-bug
🐛 Fix plugin installation error by penpot hub
2025-03-27 12:12:19 +01:00
María Valderrama
0a60cbedb5 🐛 Fix plugin installation error by penpot hub 2025-03-27 11:57:23 +01:00
Andrey Antukh
ebf3730454 Normalize the content prop from bool type (#6162)
Make it the same as path shape, because they are essentially the
same data type
2025-03-27 11:15:48 +01:00
Edgars Andersons
ec0183ce94 🌐 Add translations for: Latvian
Currently translated at 97.6% (1690 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/
2025-03-27 11:01:53 +01:00
Aitor Moreno
3cf823ffb3 Merge pull request #6137 from penpot/superalex-rendering-wasm-performance
🎉 Avoid rendering too small shapes
2025-03-27 10:22:02 +01:00
Aitor Moreno
6231a9f931 Merge pull request #6130 from penpot/azazeln28-fix-tile-cache-exhaustion
🐛 Fix tile cache exhaustion
2025-03-27 09:51:16 +01:00
Elena Torró
dd30e939ae 📎 Add #9489 bug fix to CHANGELOG
📎 Add #9489 bug fix to CHANGELOG
2025-03-26 14:14:34 +01:00
Elena Torro
6f2e1d3794 📎 Add #9489 bug fix to CHANGELOG 2025-03-26 13:55:42 +01:00
Eva Marco
d7c709607d 🐛 Fix line height on token pills (#6164) 2025-03-26 13:46:55 +01:00
Elena Torró
2e41bd7607 🐛 Fix linecap SVG path property (#6163) 2025-03-26 13:46:35 +01:00
Andrey Antukh
bb7301fb63 Improve libraries loading on workspace (#6141)
*  Improve libraries loading on workspace

*  Add improvements to CSS

---------

Co-authored-by: Eva Marco <evamarcod@gmail.com>
2025-03-26 13:19:48 +01:00
Andrey Antukh
b9907ec401 🎉 Add PathData data type
That replaces the ad-hoc helpers for convert path content from
plain with encapsulated type that implements the appropriate
clojure protocols and interfaces that helps interacting with
binary encoded path data
2025-03-26 13:17:25 +01:00
Andrey Antukh
416e9e8e1d Merge remote-tracking branch 'origin/staging' into develop 2025-03-26 13:15:58 +01:00
Eva Marco
2918c57fb8 🐛 Show broken pills when all sets are disabled (#6161) 2025-03-26 13:13:45 +01:00
Eva Marco
f55e0bf6e3 🐛 Eva Fix context menu for viewer role (#6159) 2025-03-26 12:50:23 +01:00
Alonso Torres
83d41dba6f Serialization of grid layout data (#6148)
*  Add serializators for grid layout properties

*  Extract serializers for wasm api module
2025-03-26 12:10:31 +01:00
Pablo Alba
7284fb539f 🐛 Fix when editing a property name, the wrong property changes name (#6156) 2025-03-26 11:17:48 +01:00
andrés gonzález
3d16fa6f19 📚 Add Design Tokens documentation (#6026)
* 📚 Add Design Tokens documentation

* 📚 Update docs/user-guide/design-tokens/index.njk

Co-authored-by: Madalena Melo <madalena.melo@kaleidos.net>

* 📚 Update docs/user-guide/design-tokens/index.njk

Co-authored-by: Madalena Melo <madalena.melo@kaleidos.net>

* 📚 Update docs/user-guide/design-tokens/index.njk

Co-authored-by: Madalena Melo <madalena.melo@kaleidos.net>

* 📚 Update docs/user-guide/design-tokens/index.njk

Co-authored-by: Madalena Melo <madalena.melo@kaleidos.net>

* 📚 Update docs/user-guide/design-tokens/index.njk

Co-authored-by: Madalena Melo <madalena.melo@kaleidos.net>

* 📚 Changing several things after the PR review

---------

Co-authored-by: Madalena Melo <madalena.melo@kaleidos.net>
2025-03-26 10:51:17 +01:00
Yamila Moreno
c65c4270c3 Merge pull request #6128 from orhtej2/patch-1
📚 Add YunoHost as a self-hosting option
2025-03-26 10:17:51 +01:00
Andrey Antukh
0099c282b6 🐛 Fix tokens set reordering corner case 2025-03-26 09:06:54 +01:00
luisδμ
f932f3efb1 Filter variant by name on layers panel 2025-03-25 21:50:29 +01:00
Andrés Moya
9115e1a3a3 🐛 Fix resolved value when opening the token edit form 2025-03-25 17:12:04 +01:00
Aitor Moreno
60bc88a075 🐛 Fix tile cache exhaustion 2025-03-25 16:35:49 +01:00
ºelhombretecla
a7044c73ba 🐛 Fix libraries carrousel styles (#6140) 2025-03-25 15:51:34 +01:00
luisδμ
dc84ab3e41 🐛 Fix calculate zoom to avoid bubbles to get outside viewbox (#6138)
* 🐛 Fix calculate zoom to avoid bubbles to get outside vbox

* 📎 PR changes
2025-03-25 15:39:47 +01:00
Aitor Moreno
6eb686c06b ♻️ Refactor Custom Fonts allocations (#6146)
* ♻️ Refactor Custom Fonts allocations

* 💄 Remove commented code

---------

Co-authored-by: Belén Albeza <belen@hey.com>
2025-03-25 15:34:11 +01:00
Edgars Andersons
f587ed4ade 🌐 Add translations for: Latvian
Currently translated at 97.1% (1680 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/
2025-03-25 11:01:54 +00:00
Eva Marco
e81adb241b 🐛 Add underscore as posible name character (#6135) 2025-03-25 10:57:23 +01:00
Alejandro
065b50f5a2 🐛 Fix asynchronous content dependant rendering (#6142)
* 🐛 Fix custom fonts rendering

* 🐛 Fix asynchronous content dependant rendering

* 🎉 Renaming clear_cache to clear_drawing_cache
2025-03-25 09:49:47 +01:00
Marina López
a6133e9c48 🐛 Fix actions when workspace is visited first time (#6129)
* 🐛 Fix actions when workspace is visited first time

* 📎 Fix linter errors

* 🐛 Fix problem with integration test

* 📎 Fix linter errors

* 📎 Fix linter errors

---------

Co-authored-by: alonso.torres <alonso.torres@kaleidos.net>
2025-03-24 18:02:05 +01:00
Alejandro Alonso
85b24e1e8d 🎉 Disable antialias for small shapes 2025-03-24 16:27:43 +01:00
Eva Marco
7bc000517f 🐛 Fix modal position when colopicker is open (#6139) 2025-03-24 16:10:16 +01:00
Xavier Julian
95d9403790 Resize tokens panel on resize 2025-03-24 13:59:51 +01:00
Pablo Alba
9653e72e47 ♻️ Refactor variants
* ♻️ Refactor variants

*  Add MR changes
2025-03-24 13:15:02 +01:00
Alejandro Alonso
a80f114d66 🎉 Avoid rendering too small shapes 2025-03-24 11:49:38 +01:00
Alejandro Alonso
74ae4743d8 🐛 Disable svg viewport texts for wasm render 2025-03-24 11:06:14 +01:00
Andrey Antukh
d1d30e7eb5 Revert "📎 Add workaround for wasm production build failure"
This reverts commit f8a2291a55.
2025-03-24 10:48:22 +01:00
Andrey Antukh
e83be01475 Merge remote-tracking branch 'origin/staging' into develop 2025-03-24 10:42:14 +01:00
Alejandro
5d66eedcc7 Merge pull request #6134 from penpot/azazeln28-fix-render-wasm-build-env
🐛 Fix _build_env release EMCC_CFLAGS
2025-03-24 10:28:28 +01:00
Aitor Moreno
974d43cb08 🐛 Fix _build_env release EMCC_CFLAGS 2025-03-24 10:17:16 +01:00
Aitor Moreno
22efd6574d Merge pull request #6125 from penpot/alotor-perf-flex-layout-2
 Improvements on flex layout positioning
2025-03-24 09:53:30 +01:00
Nicola Bortoletto
bb5a103944 🌐 Add translations for: Italian
Currently translated at 99.8% (1728 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/it/
2025-03-23 19:01:53 +00:00
Rick Benetti
34b3520fb2 🌐 Add translations for: Portuguese (Brazil)
Currently translated at 70.9% (1228 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_BR/
2025-03-23 19:01:52 +00:00
Stephan Paternotte
3217ba5a77 🌐 Add translations for: Dutch
Currently translated at 100.0% (1730 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/nl/
2025-03-22 18:01:53 +01:00
Nicola Bortoletto
a91caded9e 🌐 Add translations for: Italian
Currently translated at 96.4% (1669 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/it/
2025-03-22 18:01:52 +01:00
Stephan Paternotte
05ba1c3e64 🌐 Add translations for: Dutch
Currently translated at 99.0% (1714 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/nl/
2025-03-21 15:02:01 +00:00
Edgars Andersons
77f025eb8d 🌐 Add translations for: Latvian
Currently translated at 96.0% (1662 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/
2025-03-21 15:02:00 +00:00
Yaron Shahrabani
aacec1809b 🌐 Add translations for: Hebrew
Currently translated at 100.0% (1730 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/
2025-03-21 15:01:59 +00:00
Linerly
0435f560a4 🌐 Add translations for: Indonesian
Currently translated at 95.4% (1652 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/id/
2025-03-21 15:01:58 +00:00
Stas Haas
766f034e5e 🌐 Add translations for: German
Currently translated at 94.1% (1628 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/
2025-03-21 15:01:56 +00:00
Ally Tiago
8502d9d21b 🌐 Add translations for: Portuguese (Brazil)
Currently translated at 70.4% (1218 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_BR/
2025-03-21 15:01:55 +00:00
Rick Benetti
6c874b2bb7 🌐 Add translations for: Portuguese (Brazil)
Currently translated at 70.4% (1218 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_BR/
2025-03-21 15:01:55 +00:00
Andrey Antukh
f8a2291a55 📎 Add workaround for wasm production build failure 2025-03-21 14:07:02 +01:00
Andrey Antukh
8c302e314f Merge remote-tracking branch 'origin/staging' into develop 2025-03-21 11:17:26 +01:00
Eva Marco
752f74767e 🐛 Fix error copy (#6132) 2025-03-21 10:47:32 +01:00
Andrey Antukh
e5319e04c7 ♻️ Fix naming on token-set group move change operation 2025-03-21 10:23:27 +01:00
Andrey Antukh
e8e9037ef1 🐛 Fix inconsistencies on parsing tokens dtcg json 2025-03-21 10:23:27 +01:00
Andrey Antukh
c6bfae0d63 🐛 Normalize set names on importing themes dtcg json 2025-03-21 10:23:27 +01:00
alonso.torres
a830c27ceb Improvements on flex layout positioning 2025-03-21 10:18:34 +01:00
Andrey Antukh
93bf198073 🐛 Prevent theme replacement on ranaming 2025-03-21 09:22:16 +01:00
Alejandro
4c12af957c Merge pull request #6121 from penpot/superalex-tada-improve-tile-shapes-iteration-2
🎉 Improve tile shapes iteration
2025-03-21 07:30:52 +01:00
Alejandro Alonso
9ea3c54b92 🎉 Improve tile shapes iteration 2025-03-21 07:20:45 +01:00
orhtej2
4be8d77a79 📚 Update unofficial-options.md
Signed-off-by: Mateusz Szymański <2871798+orhtej2@users.noreply.github.com>
2025-03-20 23:59:30 +01:00
Aitor Moreno
4620764111 Merge pull request #6127 from penpot/superalex-fix-wasm-state-warning
🐛 Fix wasm state warning
2025-03-20 18:47:49 +01:00
Alejandro Alonso
ca86137d0f 🐛 Fix wasm state warning 2025-03-20 18:18:50 +01:00
Alejandro Alonso
b299a732c0 Merge remote-tracking branch 'origin/staging' into develop 2025-03-20 18:08:06 +01:00
Alejandro
9fb7456b38 Merge pull request #6111 from penpot/superalex-fix-pen-shortcut-multiple-times
🐛 Fix opening pen with shortcut multiple times breaks toolbar
2025-03-20 18:05:35 +01:00
Eva Marco
b3a3cca9fe 🐛 Fix stroke width validation (#6124) 2025-03-20 17:35:19 +01:00
andrés gonzález
f98009ec54 📚 Add Design Tokens to the Changelog (#6112) 2025-03-20 16:39:14 +01:00
Alejandro
7a4c9d9933 Merge pull request #6122 from penpot/elenatorro-10516-fix-inner-shadow-rendering
🐛 Fix Fill Inner Shadow rendering
2025-03-20 15:46:15 +01:00
Elena Torro
91d15ea221 🐛 Fix Fill Inner Shadows 2025-03-20 15:20:15 +01:00
Andrey Antukh
b043fec0d5 🌐 Validate and rehash translation files 2025-03-20 14:46:46 +01:00
Andrey Antukh
0bab46eb5c Merge remote-tracking branch 'weblate/develop' into develop 2025-03-20 14:45:42 +01:00
Andrey Antukh
82bff09373 🐛 Fix incorrect syntax on spanish translation file 2025-03-20 14:45:20 +01:00
Andrey Antukh
329b2d30d0 Revert "🌐 Sync, validate and rehash translations"
This reverts commit 37a8bf7bfc.
2025-03-20 14:44:57 +01:00
Anonymous
0d65b652d4 🌐 Add translations for: Swedish
Currently translated at 93.1% (1612 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/sv/
2025-03-20 14:42:44 +01:00
Anonymous
9d3c19e86a 🌐 Add translations for: Yoruba
Currently translated at 69.1% (1196 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/yo/
2025-03-20 14:42:43 +01:00
Anonymous
56a7800519 🌐 Add translations for: Hausa
Currently translated at 72.9% (1262 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ha/
2025-03-20 14:42:43 +01:00
Anonymous
ba0cebd713 🌐 Add translations for: Dutch
Currently translated at 94.0% (1627 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/nl/
2025-03-20 14:42:43 +01:00
Anonymous
e28628d148 🌐 Add translations for: Latvian
Currently translated at 94.0% (1627 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/
2025-03-20 14:42:42 +01:00
Anonymous
40bc860dc6 🌐 Add translations for: Ukrainian (ukr_UA)
Currently translated at 93.9% (1626 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/
2025-03-20 14:42:42 +01:00
Anonymous
decf32fdd5 🌐 Add translations for: Croatian
Currently translated at 93.8% (1623 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hr/
2025-03-20 14:42:42 +01:00
Anonymous
d9d6ee9922 🌐 Add translations for: Portuguese (Portugal)
Currently translated at 88.9% (1539 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_PT/
2025-03-20 14:42:42 +01:00
Anonymous
903609a38f 🌐 Add translations for: Czech
Currently translated at 93.6% (1621 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/cs/
2025-03-20 14:42:41 +01:00
Anonymous
4504903b4c 🌐 Add translations for: Italian
Currently translated at 93.9% (1626 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/it/
2025-03-20 14:42:40 +01:00
Anonymous
4bf4972b6e 🌐 Add translations for: Chinese (Traditional Han script)
Currently translated at 93.9% (1626 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hant/
2025-03-20 14:42:40 +01:00
Anonymous
47e4b41dd2 🌐 Add translations for: Hebrew
Currently translated at 94.0% (1627 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/
2025-03-20 14:42:39 +01:00
Anonymous
af413ff1c0 🌐 Add translations for: Indonesian
Currently translated at 94.0% (1627 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/id/
2025-03-20 14:42:39 +01:00
Anonymous
5fcf0808c6 🌐 Add translations for: German
Currently translated at 94.0% (1627 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/
2025-03-20 14:42:39 +01:00
Anonymous
fb956b3aa1 🌐 Add translations for: Chinese (Simplified Han script)
Currently translated at 79.3% (1373 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hans/
2025-03-20 14:42:38 +01:00
Anonymous
93986af181 🌐 Add translations for: Russian
Currently translated at 83.5% (1446 of 1730 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ru/
2025-03-20 14:42:38 +01:00
Andrey Antukh
37a8bf7bfc 🌐 Sync, validate and rehash translations 2025-03-20 14:41:50 +01:00
Elena Torro
e60e36a0e2 🔧 Refactor RenderState scale calculation 2025-03-20 14:36:45 +01:00
Hosted Weblate
199e182399 🌐 Update translation files
Updated by "Cleanup translation files" hook in Weblate.

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/
2025-03-20 14:31:52 +01:00
Andrey Antukh
a9f4b29f32 Merge remote-tracking branch 'weblate/develop' into develop 2025-03-20 14:31:09 +01:00
Andrey Antukh
22cd43b8a2 Merge remote-tracking branch 'origin/staging' into develop 2025-03-20 14:27:37 +01:00
Andrey Antukh
669533cae6 Merge pull request #6115 from penpot/niwinz-staging-tokens-1
🐛 Fix incorrect absolute frame positioning with measures sidebar
2025-03-20 13:20:08 +01:00
Andrey Antukh
d6efd469e4 🎉 Make the design tokens feature enabled by default 2025-03-20 12:22:37 +01:00
Andrey Antukh
0d4a6fc75f 🐛 Clear selected token set on leave file on workspace 2025-03-20 12:22:37 +01:00
Andrey Antukh
e403194bba 💄 Remove incorrect use of rx/concat on update-shape-position 2025-03-20 12:22:37 +01:00
Andrey Antukh
b8c5a10551 💄 Add minor cosmetic changes to measures menu 2025-03-20 12:22:37 +01:00
Andrey Antukh
7fdb0873db 🐛 Fix incorrect absolute frame positioning with measures sidebar 2025-03-20 12:22:37 +01:00
Alejandro
2d61644b05 Merge pull request #5914 from penpot/azazeln28-feat-tile-rendering
🎉 Tile rendering
2025-03-20 11:25:58 +01:00
Aitor Moreno
084816fb9f 🎉 Tile rendering system 2025-03-20 11:14:14 +01:00
Xavier Julian
68a89556d6 🐛 Add tooltip to empty sets button on theme creation modal 2025-03-20 10:18:28 +01:00
william chen
b5ea90f740 🌐 Add translations for: Chinese (Traditional Han script)
Currently translated at 100.0% (1646 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hant/
2025-03-20 10:02:52 +01:00
Alejandro Alonso
1a77c1fe36 🐛 Fix opening pen with shortcut multiple times breaks toolbar 2025-03-20 09:19:27 +01:00
Aitor Moreno
4aa1bb7246 Merge pull request #6116 from penpot/alotor-fix-group-constraints
🐛 Fix problem with constraints when creating group
2025-03-19 16:43:54 +01:00
alonso.torres
3a80120bf6 🐛 Fix problem with constraints when creating group 2025-03-19 16:33:50 +01:00
Aitor Moreno
d01eccf912 Merge pull request #6114 from penpot/alotor-fix-plugins-shapows
🐛 Fix problem with default shadows in plugins
2025-03-19 16:15:41 +01:00
alonso.torres
25621f8deb 🐛 Fix problem with default shadows in plugins 2025-03-19 14:51:39 +01:00
Yamila Moreno
dc006bd7f2 Merge pull request #6108 from penpot/yms-improve-self-host-documentation
📚 Improve self host documentation
2025-03-19 14:05:22 +01:00
Eva Marco
629f09089b 🐛 Fix tooltip with only one set and no active (#6107) 2025-03-19 13:54:00 +01:00
Andrey Antukh
e6839e4983 Merge pull request #6106 from penpot/palba--variants-inspect-header
 Add subtitle to inspect tab for components
2025-03-19 13:42:57 +01:00
Andrey Antukh
344ec94a3f Merge pull request #6109 from penpot/superalex-fix-hovering-dashboard-templates
🐛 FIx hovering dashboard templates
2025-03-19 13:42:04 +01:00
Andrey Antukh
62e89258e4 Merge pull request #6101 from penpot/niwinz-develop-token-fixes-4
 Add several improvements to tokens (part 4)
2025-03-19 13:38:46 +01:00
Andrey Antukh
b6bb93f0b6 Improve code convetion related to changes protocol
Partial work, still pending to make changes to other related
changes definitions
2025-03-19 12:52:03 +01:00
Andrey Antukh
39a1d5cc89 🐛 Fix set unexpected deletion on reordering 2025-03-19 12:42:05 +01:00
Andrey Antukh
8fa24de3d4 Merge pull request #6096 from penpot/niwinz-develop-token-fixes-3
 Add several improvements and fixes to tokens (part 3)
2025-03-19 12:30:05 +01:00
Alejandro Alonso
1def5015fb 🐛 FIx hovering dashboard templates 2025-03-19 12:27:13 +01:00
Yamila Moreno
1dbc924d31 📚 Remove docker installation in favour of the official documentation 2025-03-19 12:19:07 +01:00
Yamila Moreno
95da007107 📚 Add a warning about technical knowledge 2025-03-19 12:18:04 +01:00
Pablo Alba
82d3e466be Add subtitle to inspect tab for components 2025-03-19 10:34:19 +01:00
Alejandro
b0dacf6b11 Merge pull request #6105 from penpot/superalex-add-changelog-for-2.7.0
📎 Update changelog (add entry for 2.7.0)
2025-03-19 10:02:49 +01:00
Alejandro Alonso
64d090839d 📎 Update changelog (add entry for 2.7.0) 2025-03-19 09:51:22 +01:00
Alejandro Alonso
633a7eac4e Merge remote-tracking branch 'origin/staging' into develop 2025-03-19 09:47:32 +01:00
Alejandro
357fba5d2b 🐛 Fix selected team not saved (#6104) 2025-03-19 09:46:08 +01:00
Alejandro
b727f2fe1f Merge pull request #6077 from penpot/elenatorro-10516-fix-shadow-rendering
🐛 Fix drop shadows viewport clipping
2025-03-19 08:48:03 +01:00
Andrey Antukh
4453eec687 Persist migrated files on srepl process-file helper 2025-03-18 17:57:52 +01:00
Andrey Antukh
c169eef161 ♻️ Remove tokens lib migrations from file migrations 2025-03-18 17:57:52 +01:00
Eva Marco
17af55d3c8 🐛 Fix lost resolved value on tooltip (#6102) 2025-03-18 17:13:45 +01:00
Andrey Antukh
8df12e5e9c Remove state assignation round-trip on update-dimensions event
Using the lower-level apply-modifiers event, introduced in previous
commit
2025-03-18 16:19:55 +01:00
Andrey Antukh
cd423f23c6 Remove get-hidden-theme from tokens lib protocol 2025-03-18 16:19:55 +01:00
Andrey Antukh
86c2c4cd41 ♻️ Add lower-level impl of apply-modifiers event 2025-03-18 16:19:55 +01:00
Andrey Antukh
d9c4fc3721 Calculate uuid lazily on creating token theme 2025-03-18 16:19:55 +01:00
Andrey Antukh
b91e72d8a1 🐛 Fix typo 2025-03-18 16:19:55 +01:00
Andrey Antukh
6cc96ef679 Add logging for tokens update event operation 2025-03-18 16:19:55 +01:00
Andrey Antukh
28fe951c40 ♻️ Replace usage of dm/assert on several namespaces
And remove the `!` from the name on check functions
2025-03-18 16:19:55 +01:00
Andrey Antukh
22f789e77c Don't put timeout on tokens changes transaction 2025-03-18 16:19:55 +01:00
Eva Marco
2e5138eddc 🐛 Fix error message on invalid json (#6099) 2025-03-18 16:19:17 +01:00
Elena Torro
731c21f082 🐛 Fix drop shadows viewport clipping 2025-03-18 15:56:43 +01:00
Xavier Julian
99d7672284 Validate token name while typing 2025-03-18 14:14:16 +01:00
Andrés Moya
567fdd9619 🐛 Fix initial value of color bullet in form 2025-03-18 12:04:24 +01:00
Yamila Moreno
6067e438a3 📚 Document auto file snapshot (#6085) 2025-03-18 11:40:58 +01:00
Eva Marco
fc17a1742a 🐛 Fix copy on input placeholder (#6097) 2025-03-18 11:30:40 +01:00
al0cam
12d3994f45 🌐 Add translations for: Croatian
Currently translated at 99.6% (1641 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hr/
2025-03-18 10:01:54 +00:00
Eva Marco
f7f1598e71 🐛 Fix select same set after rename (#6095) 2025-03-18 10:55:44 +01:00
Eva Marco
8caf559a1a 🐛 Fix resolved value on tooltip (#6084) 2025-03-18 10:54:43 +01:00
Elena Torró
e927161ec1 Merge pull request #6066 from penpot/elenatorro-10387-test-emoji-rendering
 Support emoji default font in text rendering
2025-03-18 10:50:20 +01:00
Elena Torro
ba387a892f Support emoji default font in text rendering 2025-03-18 10:33:27 +01:00
Alejandro Alonso
18015bde4f Merge remote-tracking branch 'origin/staging' into develop 2025-03-18 10:14:16 +01:00
Alejandro Alonso
8affefbbab 📎 Update changelog 2025-03-18 10:13:12 +01:00
jdo-odoo
0225919a45 📚 Fix typos in shortcut and insert image section
Signed-off-by: jdo-odoo <108932862+jdo-odoo@users.noreply.github.com>
2025-03-18 10:09:58 +01:00
Pablo Alba
0901807db8 Update inspect-title-bar and copy-button to the new components format 2025-03-18 09:52:32 +01:00
Pablo Alba
625cbfc50a 🎉 Add variants properties to inspect panel 2025-03-18 09:52:32 +01:00
Eva Marco
b2bc5aff68 🐛 Add lost spanish translation (#6089) 2025-03-18 09:25:35 +01:00
Eva Marco
337c61db2c 🐛 Fix not active sets on json import (#6087) 2025-03-18 09:14:30 +01:00
Andrey Antukh
5c2c96fc2e Merge pull request #6086 from penpot/niwinz-develop-token-fixes-2
 Several bugfixes related to tokens (part 2)
2025-03-17 15:50:33 +01:00
Andrey Antukh
04c77a8532 🔥 Remove unused double token resolve operation on sidebar 2025-03-17 14:56:55 +01:00
Andrey Antukh
ebcf5b3177 🐛 Avoid theme overwrite on creating a theme with existing name 2025-03-17 14:56:55 +01:00
Andrey Antukh
9d2117e2ac 📎 Replace use-callback with use-fn on token themes modal 2025-03-17 14:56:55 +01:00
Andrey Antukh
c1c22dc6c6 Merge pull request #6075 from penpot/niwinz-develop-token-fixes-1
 Add several fixes and improvements to tokens
2025-03-17 14:47:21 +01:00
Andrey Antukh
1e10e3818e 🔥 Remove not necessary API from tokens-lib: add-sets 2025-03-17 14:24:55 +01:00
Andrey Antukh
802c67ace4 🔥 Remove unused API from tokens-lib
Removes the protocol method: `get-set-prefixed-path-string`
2025-03-17 14:24:54 +01:00
Andrey Antukh
5c3709b5d8 🔥 Remove unused API from tokens-lib
Removes the protocol method: `get-tokens-tree`
2025-03-17 14:24:54 +01:00
Andrey Antukh
626c65df02 🔥 Remove unnecesary API from tokens lib
Removes the `get-dtcg-tokens-tree` protocol method
2025-03-17 14:24:54 +01:00
Andrey Antukh
f2f492bf3f 🔥 Remove commented code 2025-03-17 14:24:54 +01:00
Andrey Antukh
40f69d320e Show proper toast message on token-set rename error 2025-03-17 14:24:52 +01:00
Andrey Antukh
1893cd306a Improve translation strings for token set drop errors 2025-03-17 14:24:33 +01:00
Andrey Antukh
096b685e2c 🐛 Prevent token-set overwrite on creation and edition 2025-03-17 14:24:02 +01:00
Andrey Antukh
1965490bee 📎 Use proper catch matching on tokens drop operation 2025-03-17 14:24:02 +01:00
Andrey Antukh
559dcabf0e Normalize token name on creation 2025-03-17 14:24:02 +01:00
Andrey Antukh
a9e8d8f8f7 Make the calculate-move-token-set-or-set-group fn private 2025-03-17 14:24:02 +01:00
Alejandro Alonso
dba67eea91 Merge remote-tracking branch 'origin/staging' into develop 2025-03-17 12:52:56 +01:00
Andrey Antukh
70fe6fda83 🔥 Remove unused code 2025-03-17 12:27:20 +01:00
luisδμ
5155cf2b23 🐛 Fix clicking on a comment at the viewer's sidebar is not opening threads (#6083) 2025-03-17 12:25:23 +01:00
elhombretecla
5ca9b95cca 🎉 Adds tips to the file loading screen (#6063)
* 🎉 Add tips to the default loader component

* 📎 Use simplier approach for show tips

This commit also fixes other minor issues

* 📎 Extract to constants the loader path data

* 📎 Use properly tracked translations for loader tips

---------

Co-authored-by: Andrey Antukh <niwi@niwi.nz>
2025-03-17 12:24:44 +01:00
Alonso Torres
fa0da3a695 Flex layout modifiers wasm implementation
*  Flex layout modifiers wasm implementation

*  Flex auto modifiers propagation
2025-03-17 10:46:32 +01:00
Xavier Julian
fa9d8a9b15 Add a tooltip explanation on themes modal sets 2025-03-17 10:21:50 +01:00
Tummas Jóhan Sigvardsen
e3b6b24c5f 🌐 Add translations for: Faroese
Currently translated at 10.0% (165 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fo/
2025-03-17 00:01:53 +01:00
Louis Chance
1eb7205c12 🌐 Add translations for: French
Currently translated at 85.3% (1405 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/
2025-03-17 00:01:52 +01:00
al0cam
92f4bdae03 🌐 Add translations for: Croatian
Currently translated at 87.7% (1445 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hr/
2025-03-14 22:02:57 +01:00
Vin
bd63a460eb 🌐 Add translations for: Russian
Currently translated at 88.0% (1450 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ru/
2025-03-14 22:02:56 +01:00
Andrey Antukh
7403f60366 Merge pull request #6076 from penpot/alotor-fix-problem-inspect
🐛 Fix problem with readonly and inspect
2025-03-14 15:50:01 +01:00
Alejandro Alonso
66295b0adf Merge remote-tracking branch 'origin/staging' into develop 2025-03-14 12:55:44 +01:00
Belén Albeza
eb6d2fb0eb 🎉 Store custom fonts (ttfs) and use them to write texts (wasm) (#6050) 2025-03-14 12:45:15 +01:00
Alejandro
a8c34ccc1a Merge pull request #6070 from penpot/alotor-bugfix-grid-layout
🐛 Fix problem with grid component propagation
2025-03-14 12:39:54 +01:00
alonso.torres
8c501db2fa 🐛 Fix problem with readonly and inspect 2025-03-14 12:24:34 +01:00
alonso.torres
d2fbb9dfa7 🐛 Fix problem with grid component propagation 2025-03-14 11:50:55 +01:00
Andrey Antukh
e4c9b736f7 Merge remote-tracking branch 'origin/staging' into develop 2025-03-14 11:19:47 +01:00
Andrey Antukh
f02f446015 Merge pull request #6071 from penpot/xaviju-10527-tooltip-import-warning
 Add a warning tooltip over import tokens button
2025-03-14 10:00:18 +01:00
Andrey Antukh
05d6d2fcd4 🐛 Fix several corner cases that causes race conditions on workspace and dashboard loading
* 🐛 Fix several race conditions on workspace and dashboard code

It also fixes a corner case that happens when penpot workspace
is loaded in a background tab on firefox.

* 🐛 Add missing team-id prop to several file returning endpoints
2025-03-14 09:55:41 +01:00
Andrey Antukh
d5492442fb Merge pull request #6068 from penpot/alotor-fix-readonly
🐛 Fix problem with readonly and inspect
2025-03-14 09:34:30 +01:00
al0cam
02e975f594 🌐 Add translations for: Croatian
Currently translated at 77.8% (1282 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/hr/
2025-03-13 17:02:00 +00:00
Andrey Antukh
61800d8945 Merge pull request #6074 from penpot/dfelinto-export-webp
🎉 Add support for WEBP format for shape export
2025-03-13 16:24:55 +01:00
Dalai Felinto
f450c9dbe3 🎉 Add support for WEBP format on shape export
It is very convenient to be able to export WEBP right from penpot.
Otherwise users have to first download to PNG then convert it locally.

---

Playwright only supports JPEG and PNG. So in order to support WEBP I had
to first generate a PNG and then convert it afterwards.

Signed-off-by: Dalai Felinto <dalai@blender.org>
2025-03-13 16:15:30 +01:00
Xavier Julian
b46574bef6 Add a warning tooltip over import tokens button 2025-03-13 13:26:41 +01:00
Andrey Antukh
e3b3fa3342 📎 Update changelog 2025-03-13 09:32:19 +01:00
Eva Marco
21b2c0c26a 🐛 Fix token unset when flex layout is applied 2025-03-12 20:03:50 +01:00
alonso.torres
dcbf54fae1 🐛 Fix problem with readonly and inspect 2025-03-12 16:39:31 +01:00
Eva Marco
2fe6fb28e4 🐛 Fix tooltip update when set changes (#6058) 2025-03-12 15:49:07 +01:00
luisδμ
86022a967c Replace overlapping bubbles with a bubble group (#6059) 2025-03-12 14:37:39 +01:00
Eva Marco
0efbebd94f 🎉 Avoid setting token to group shapes (#6055)
* 🎉 Avoid setting token to group shapes

* 📎 Fix on update shape when double click
2025-03-12 14:18:59 +01:00
Marina López
2aee2ea79e 📚 Add US in changes.md 2025-03-12 14:03:50 +01:00
elhombretecla
60a20b6984 Add new toggle and translations 2025-03-12 14:03:50 +01:00
elhombretecla
fd753fb262 💄 Add new css styles 2025-03-12 14:03:50 +01:00
elhombretecla
0ae57a017e Add new carrousel layout 2025-03-12 14:03:50 +01:00
Alejandro
88772a9ced Merge pull request #6061 from penpot/alotor-bug-fills
🐛 Fix problem adding fill
2025-03-12 12:31:43 +01:00
Alejandro Alonso
65647f4aae Merge remote-tracking branch 'origin/staging' into develop 2025-03-12 12:30:11 +01:00
Alejandro
fe04f3e45d Merge pull request #6065 from penpot/superalex-fix-sync-issues-components
🐛 Fix sync issues components
2025-03-12 12:27:25 +01:00
Alejandro Alonso
363c1d5b56 🐛 Fix sync libraries of components 2025-03-12 12:15:00 +01:00
alonso.torres
5e6ccc44fc 🐛 Fix problem adding fill 2025-03-12 10:22:04 +01:00
Andrei Fëdorov
b9df8ad038 ♻️ Simplifies RPC pattern for token themes (#6052)
* ♻️ Add set token theme method schema

* ♻️ Add `:set-token-theme` dispatcher for `process-change` multimenthod

* ♻️ Add `set-token-theme` to the changes builder

* ♻️ Use new method on the frontend

* ♻️ Remove unused token theme methods

* ♻️ Add tests

* ♻️ Add library data to changes

* ♻️ Add new test case

* ♻️ Remove unused binding
2025-03-12 09:29:03 +01:00
Yamila Moreno
3ee3df9b24 Merge pull request #6019 from penpot/yms-improve-troubleshooting-toc
📚 Improve TOC in Troubleshooting section
2025-03-11 16:30:03 +01:00
Yamila Moreno
332657bd1b 📎 Add minor improvements 2025-03-11 16:21:16 +01:00
Eva Marco
474cd1e55a 🐛 Fix migration keyword (#6057) 2025-03-11 16:19:51 +01:00
Andrei Fëdorov
b52e8bc87c ♻️ Simplifies RPC pattern for token sets (#6045)
* ♻️ Add set removal methods to tokens library

* ♻️ Add `set-token-set` method to changes

* ♻️ Add `set-token-set` to changes builder

* ♻️ Use new method in the token set creation

* ♻️ Use `set-token-set` in frontend events

* ♻️ Remove unused binding

* ♻️ Add tests

* ♻️ Remove old API methods

* ♻️ Remove unused parts of schema and multimethods

* ♻️ Make `:tokens` key optional in schema

* ♻️ Add `with-library-data` calls before `set-token-set`

* ♻️ Fix DOM properties error
2025-03-11 16:03:52 +01:00
Yamila Moreno
953f770fdd 📚 Improve TOC for self-hosting guide 2025-03-11 12:45:30 +01:00
Yamila Moreno
c83b9ea305 📚 Improve TOC in Troubleshooting section 2025-03-11 12:45:30 +01:00
Elena Torró
f35723e772 Merge pull request #6048 from penpot/elenatorro-10448-fix-clipping-over-groups
🐛 Fix children clip bounds inheritance
2025-03-11 12:06:40 +01:00
Pablo Alba
415d1a2668 Merge pull request #6032 from penpot/palba-variants-create-with-path
 Create variant from component with path
2025-03-11 11:40:31 +01:00
Alejandro Alonso
b3feb9bffd Merge remote-tracking branch 'origin/staging' into develop 2025-03-11 10:00:17 +01:00
Alejandro
3007aa19a2 Merge pull request #6046 from penpot/eva-fix-storybook-icons-list
🐛 Fix storybook icons list scroll
2025-03-11 09:59:42 +01:00
Eva Marco
e20adda766 🐛 Fix storybook icons list scroll 2025-03-11 09:43:35 +01:00
Denys Kisil
fdeabc15ab 🌐 Add translations for: Ukrainian (ukr_UA)
Currently translated at 99.6% (1641 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/
2025-03-11 09:02:04 +01:00
Alejandro
dfbf0d34b6 Merge pull request #6036 from penpot/elenatorro-10427-update-rust-last-version
🔧 Upgrade rust to v1.85
2025-03-11 08:40:33 +01:00
Eva Marco
0c3fd8a6d9 🎉 Add id to token theme (#6044)
* 🎉 Add id to token theme

* 📎 Fix tests

* 📎 Fixes from review
2025-03-10 18:38:52 +01:00
elenatorro
5b9dd96e02 🐛 Fix children clip bounds inheritance 2025-03-10 15:55:43 +01:00
Xavier Julian
46c89a1bcf Fix stories and add default state to toast 2025-03-10 14:43:41 +01:00
Xavier Julian
721760d679 Add a default appearance to context notifications 2025-03-10 14:43:41 +01:00
elenatorro
2cdb874484 🔧 Upgrade rust to v1.85 2025-03-10 13:33:12 +01:00
Andrés Moya
e5bccc470b Validate if token values are too large 2025-03-10 13:32:16 +01:00
Andrey Fedorov
ba768f8744 🐛 Fix Ci tests for shape proxy in plugin runtime 2025-03-10 13:29:10 +01:00
Andrey Fedorov
a33828467f ♻️ Rename bindings 2025-03-10 13:29:10 +01:00
Andrey Fedorov
6fed0f3b58 ♻️ Remove unused bidings and requirements 2025-03-10 13:29:10 +01:00
Andrey Fedorov
5f3599eaa7 🐛 Fix token dimension application for all relatively positioned shapes 2025-03-10 13:29:10 +01:00
Andrey Fedorov
44ca01aa27 🐛 Fix relative position application for flex children 2025-03-10 13:29:10 +01:00
Xavier Julian
451306f719 Add a maxlenght to input CRUD tokens 2025-03-10 13:25:07 +01:00
Elena Torró
29518f3ba5 Merge pull request #6042 from penpot/elenatorro-10436-fix-rounded-corners-for-images
🐛 Fix rounded corners in image fill
2025-03-10 12:49:50 +01:00
Elena Torró
d74bfd834d Merge pull request #6035 from penpot/elenatorro-10314-allow-mutable-static-only-on-state
🔧 Use with_state and with_current_state macros allowing static…
2025-03-10 12:42:47 +01:00
elenatorro
ac8b5a7bcc 🐛 Fix rounded corners in image fill 2025-03-10 12:16:41 +01:00
Denys Kisil
8363cb7449 🌐 Add translations for: Ukrainian (ukr_UA)
Currently translated at 99.6% (1641 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/
2025-03-09 19:02:05 +01:00
Xavier Julian
390cf6b642 Recalculate token context-menu submenu position 2025-03-07 19:14:07 +01:00
elenatorro
0dbf00a767 🔧 Use with_state and with_current_state macros allowing static_mut_refs only on STATE 2025-03-07 15:24:04 +01:00
Elena Torró
a361e0b990 Merge pull request #5992 from penpot/elenatorro-10314-use-mutex-for-static-mut
🔧 Do not use global static mut variables when possible
2025-03-07 15:20:05 +01:00
elenatorro
3a8ba4cbee 🔧 Avoid using global static mut variables when possible 2025-03-07 15:07:31 +01:00
Elena Torró
d5c9e68a3e 🔧 Update pull request GitHub template (#6022) 2025-03-07 14:45:29 +01:00
Alejandro
253d94c176 Merge pull request #6031 from penpot/fix-problem-flex-reverse
🐛 Fix problem with reverse config in flex
2025-03-07 14:08:25 +01:00
Pablo Alba
fd941e4701 🎉 Update package.json files 2025-03-07 13:59:20 +01:00
Pablo Alba
a99198de48 Filter variants on asset panel 2025-03-07 13:43:04 +01:00
Eva Marco
e729e85c42 ♻️ Create hidden theme on token lib creation (#5991)
* ♻️ Create hidden theme on token lib creation

* 📎 Fix tests

* 🎉 Add migration

* 🎉 Remove comment

* ♻️ Remove unused changes

* 📎 Remove unused fn
2025-03-07 13:17:36 +01:00
Pablo Alba
7eb9325047 Create variant from component with path 2025-03-07 09:54:38 +01:00
alonso.torres
ba4554da79 🐛 Fix problem with reverse config in flex 2025-03-07 09:23:07 +01:00
Alejandro
97fb1e00c2 Merge pull request #6028 from penpot/palba-fix-toolbar-tooltips
🐛 Fix hidden toolbar click event still available
2025-03-07 08:08:06 +01:00
Pablo Alba
3eb332f3d0 🐛 Fix hidden toolbar click event still available 2025-03-07 07:57:04 +01:00
Alejandro Alonso
0d11bafb57 Merge remote-tracking branch 'origin/staging' into develop 2025-03-07 07:54:05 +01:00
Alejandro
3d9fda7a21 Merge pull request #6025 from penpot/eva-fix-storybook-scroll
🐛 Fix scroll on storybook doc files
2025-03-07 07:52:30 +01:00
Alejandro
7a5dea5cfe Merge pull request #6023 from penpot/marina-consolidate-empty-workspace-board-tool
🎉 Consolidate when workspace empty, board tool selected
2025-03-07 07:49:27 +01:00
alonso.torres
e01dfd76e8 Merge remote-tracking branch 'origin/staging' into develop 2025-03-06 16:05:12 +01:00
alonso.torres
b47df2c230 🐛 Fix problem with components and grid layout 2025-03-06 15:43:55 +01:00
Marina López
b8b3cc641a 🎉 Consolidate when workspace empty, board tool selected 2025-03-06 13:31:12 +01:00
Alejandro
854145e435 Merge pull request #6024 from penpot/fix-resize-problem
🐛 Fix problem with new render resize
2025-03-06 12:33:09 +01:00
Eva Marco
09ff7372da 🐛 Fix scroll on storybook doc filesç 2025-03-06 12:29:48 +01:00
alonso.torres
707bfd4241 🐛 Fix problem with new render resize 2025-03-06 12:20:56 +01:00
Andrés Moya
02bc6e62e7 🔧 Use a more correct selector in one test 2025-03-06 10:36:10 +01:00
Andrés Moya
9fde4e2121 🐛 Unapply token when manually changing layout margin and padding 2025-03-06 10:07:59 +01:00
Elena Torró
66eb4fb5ad Merge pull request #6003 from penpot/superalex-update-rust-skia-version
 Update rust skia version to 0.81.0
2025-03-06 09:30:57 +01:00
Alejandro Alonso
e362f423c0 Merge remote-tracking branch 'origin/staging' into develop 2025-03-06 07:36:19 +01:00
Alejandro
f45fa95935 Merge pull request #6017 from penpot/alotor-bugfix
🐛 Fix problem with selection colors
2025-03-06 07:35:26 +01:00
Alejandro
dc08eb7899 Merge pull request #6014 from penpot/marina-plugins-list-lacks-scrolling
🐛 Add scroll to plugins menu list
2025-03-06 07:27:34 +01:00
Marina López
a1e307b4ce 🐛 Add scroll to plugins menu list 2025-03-06 07:26:36 +01:00
Alejandro
a0f16fc038 Merge pull request #6013 from penpot/palba-fix-duplicate-page
🐛 Fix duplicate page with component over frame
2025-03-06 07:25:54 +01:00
Pablo Alba
7c36c76b0d 🐛 Fix duplicate page with component over frame 2025-03-06 07:17:46 +01:00
Alejandro
8488be311e Merge pull request #6011 from penpot/palba-fix-cut-paste-copy
🐛 Fix cut and paste a copy inside its parent
2025-03-06 07:16:51 +01:00
Pablo Alba
2297862d81 🐛 Fix cut and paste a copy inside its parent 2025-03-06 07:08:37 +01:00
Alejandro
539fdfa016 Merge pull request #6010 from penpot/marina-dashboard-sidebar-horizontal-scroll
🐛 Hide horizontal scroll from dashboard sidebar
2025-03-06 07:07:58 +01:00
Marina López
a7f6797499 🐛 Hide horizontal scroll from dashboard sidebar 2025-03-06 07:00:14 +01:00
Alejandro
cc7f745a0a Merge pull request #5966 from penpot/alotor-bug-click-resize
🐛 Fix problem resizing on click
2025-03-06 06:56:45 +01:00
alonso.torres
265675795e 🐛 Fix problem resizing on click 2025-03-06 06:40:47 +01:00
Alejandro Alonso
2c789e48f3 Merge remote-tracking branch 'origin/staging' into develop 2025-03-05 17:07:23 +01:00
alonso.torres
ce02cbc3f1 🐛 Fix problem with selection colors 2025-03-05 14:34:08 +01:00
Alejandro Alonso
b386403fa8 🐛 Fix multiple nav events when open workspace 2025-03-05 12:09:05 +01:00
Alejandro Alonso
0a6e884584 🐛 Remove unnecesary console.log 2025-03-05 12:09:05 +01:00
Xavier Julian
9da6c50cbe Display tokens contextual menu in body through portal 2025-03-05 11:53:37 +01:00
Alejandro Alonso
5c53de8e76 Merge remote-tracking branch 'origin/staging' into develop 2025-03-05 11:00:19 +01:00
Alejandro
06f6a49bce Merge pull request #6008 from penpot/superalex-fix-multiple-nav-events-when-open-workspace
🐛 Fix multiple nav events when open workspace
2025-03-05 10:57:51 +01:00
Alejandro Alonso
afd309c62b 🐛 Fix multiple nav events when open workspace 2025-03-05 10:50:47 +01:00
Alejandro
3cdc826fca Merge pull request #6012 from penpot/hiru-integration-tests
📚 Add some more instructions on running integration tests
2025-03-05 10:48:21 +01:00
Andrés Moya
02292f99ab 📚 Add some more instructions on running integration tests 2025-03-05 10:30:39 +01:00
Xavier Julian
0279e75c4b 🐛 Fix unsetted custom property on notifications 2025-03-04 22:09:11 +01:00
Pablo Alba
44f1798dce 🐛 Fix add variant menu inside a variant 2025-03-04 17:34:04 +01:00
Alejandro Alonso
23468a9908 Update rust skia version to 0.81.0 2025-03-04 16:20:56 +01:00
Pablo Alba
8eb2aaa0a8 🎉 Create a new variant from an existing one 2025-03-04 13:52:40 +01:00
Belén Albeza
aa468e2153 🎉 Render plain text
* 🎉 Serialize text content (wasm)

* ♻️ Refactor functions in main to wasm module

* 🎉 Stub rendering of paragraph text (wasm)

* 📎 Clean up commented code
2025-03-04 11:54:52 +01:00
María Valderrama
9e5de82967 📚 Add mark all as read feature to CHANGES.md 2025-03-04 11:25:16 +01:00
Alonso Torres
856e2be1ca 🐛 Fix problem when creating layouts 2025-03-04 11:04:26 +01:00
elhombretecla
8d4b023d61 💄 Remove underline decoration 2025-03-03 17:12:19 +01:00
Nicola Bortoletto
da43a4d3b4 🌐 Add translations for: Italian
Currently translated at 99.6% (1641 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/it/
2025-03-03 16:04:07 +01:00
Andrés Moya
f06f11ad7a 🐛 Avoid crash when applying a token with no active value 2025-03-03 11:25:00 +01:00
Alejandro Alonso
c807e37525 Merge remote-tracking branch 'origin/staging' into develop 2025-03-03 07:16:31 +01:00
Alejandro Alonso
214a89e20d 📎 Update CHANGES.md file 2025-03-03 07:13:23 +01:00
Yamila Moreno
e64cf9f283 Merge pull request #5908 from penpot/yms-proxy-documentation
📚 Document how to use a proxy
2025-02-28 17:18:46 +01:00
Marina López
3a34c51e43 Add pricing page event 2025-02-28 13:04:15 +01:00
Andrey Antukh
c9a8d2bd23 🚧 Tokens (part4) (#5952)
*  Use reduce-kv for creating tokens tree

Instead of reduce

*  Avoid double iteration on spliting text shapes from shapes

On processing color changes

* ♻️ Move the undo transaction out of transform-fill

The undo transaction is a high level construct and it should
be called from the first level events. Low level impl should
not handle transactions at all

*  Use low-level primitives for update-fill token event

* 📎 Add performance logging for style dictionary resolution

* 📎 Replace inline code with a helper

* ♻️ Refactor how fill and stroke color is applied on tokens

* 💄 Fix call convention for component-item-thumbnail component

*  Clean component thumbnail when frame change received

* 📎 Fix tests

---------

Co-authored-by: Eva Marco <evamarcod@gmail.com>
2025-02-28 09:47:13 +01:00
Florian Schrödl
65c6c821e7 🐛 Fix set with spaces not being rename-able via context menu (#5956) 2025-02-28 09:46:52 +01:00
Yamila Moreno
0ff9c44246 🐳 Improve nginx resolvers (#5967) 2025-02-28 09:02:40 +01:00
Yamila Moreno
5bfab454f5 📚 Document how to use a proxy - caddy 2025-02-28 08:43:40 +01:00
Yamila Moreno
5ebde405ea 📚 Document how to use a proxy - nginx 2025-02-28 08:43:40 +01:00
Xavier Julian
6cccacaaab 💄 Improve context menu scanability 2025-02-27 22:45:06 +01:00
Elena Torró
7da97d69b0 🐛 Fix viewer style in fullscreen mode (#5964) 2025-02-27 17:57:05 +01:00
Belén Albeza
f7574009b5 🐛 Fix layout context menu width + position 2025-02-27 17:47:31 +01:00
Belén Albeza
0416e883ca 🐛 Fix rendering order of inner shadows when shape has no fills (wasm) 2025-02-27 17:45:39 +01:00
Alejandro Alonso
c0ccb86e3a Merge remote-tracking branch 'origin/staging' into develop 2025-02-27 15:34:39 +01:00
Alejandro
531b002a5c Merge pull request #5976 from penpot/hotfix-texts
🐛 Fix problems with empty position-data
2025-02-27 15:33:25 +01:00
alonso.torres
3eae3178a2 🐛 Fix problems with empty position-data 2025-02-27 14:31:49 +01:00
william chen
69d21e20c9 🌐 Add translations for: Chinese (Traditional Han script)
Currently translated at 100.0% (1646 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hant/
2025-02-27 04:02:34 +00:00
Alejandro Alonso
7885f413b8 Merge remote-tracking branch 'origin/staging' into develop 2025-02-26 18:00:51 +01:00
Eva Marco
dfd5c5b508 🐛 Fix height of combobox label (#5944) 2025-02-26 16:54:28 +01:00
Elena Torró
bffbccac50 Merge pull request #5968 from penpot/ladybenko-fix-sampling-options-merge
🐛 Fix messed up rebase re: sampling options
2025-02-26 15:32:26 +01:00
Belén Albeza
12c2d73846 🐛 Fix messed up rebase re: sampling options 2025-02-26 15:18:26 +01:00
luisδμ
2cf3e37b7a 🐛 Fix comment update fails in viewer (#5958)
* 🐛 Fix comment update fails in viewer

* 🐛 Reload team members in workspace but not in viewer
2025-02-26 14:29:51 +01:00
Elena Torró
27d15763f8 🐛 Override default SamplingOptions for ImageFill and set FilterMode (#5961)
* 🐛 Override default SamplingOptions for ImageFill and set FilterMode and MipmapMode to 'Linear' instead of 'Nearest'

* 📎 Use sampling_options from render_state in ImageFill
2025-02-26 14:27:25 +01:00
Alejandro
0eaa43f36b Merge pull request #5930 from penpot/ladybenko-10321-split-fill-strokes
 Split rendering of fills and strokes in separate surfaces
2025-02-26 11:57:37 +01:00
luisδμ
e0b9751b16 Merge pull request #5947 from penpot/luis-fix-design-panel-draft-comment-open
🐛 Fix design panel does not reappear if comment draft is open
2025-02-26 11:33:06 +01:00
Elena Torró
e30834bb2d Enable WEBGL_debug_renderer_info extension before initializing the render (#5959) 2025-02-26 11:32:27 +01:00
Juanfran
fefb946a25 Merge pull request #5951 from penpot/juanfran-expand-padding-margin-apply-token
🐛 Expand padding/margin values on apply token and show 'Mixed' placeholder
2025-02-26 11:15:33 +01:00
Juanfran
2d857ecf2f 🐛 Expand padding/margin values on apply token and show 'Mixed' placeholder 2025-02-26 10:57:51 +01:00
Belén Albeza
2cf179ccf6 ♻️ Add ShapeStrokes surface 2025-02-26 09:51:30 +01:00
Belén Albeza
5ebfc603e6 ♻️ Refactor surfaces (wasm) 2025-02-26 09:50:17 +01:00
Alejandro
ccea9b1564 Merge pull request #5962 from penpot/elenatorro-9339-fix-typo-libraries-es
🐛 Fix typo at libraries modal
2025-02-26 09:32:23 +01:00
luisδμ
5fcf889d3c Merge pull request #5960 from penpot/luis-fix-avoid-post-blank-comment
🐛 Fix avoid enabling post button if blank comment
2025-02-26 09:28:59 +01:00
luisδμ
7247db14b2 Merge pull request #5957 from penpot/luis-fix-mention-users-in-viewer
🐛 Fix mention users in viewer
2025-02-26 09:28:29 +01:00
elenatorro
658e5dce22 🐛 Fix ES typo in libraries modal 2025-02-26 09:22:45 +01:00
Elena Torró
f27cbfa0ec Merge pull request #5953 from penpot/marina-fix-typo-libraries
🐛 Fix typo at libraries modal
2025-02-26 09:12:21 +01:00
william chen
a925d6710a 🌐 Add translations for: Chinese (Traditional Han script)
Currently translated at 88.2% (1453 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hant/
2025-02-26 03:05:58 +00:00
Luis de Dios
5754c393b9 🐛 Fix avoid enabling post button if blank comment 2025-02-25 18:09:22 +01:00
Luis de Dios
c618efc29e 🐛 Fix mention users in viewer 2025-02-25 15:43:29 +01:00
alonso.torres
80d5272248 Serialize layout data 2025-02-25 15:43:12 +01:00
Andrey Antukh
b4f6177be7 🐛 Move team srepl helpers back to main from helpers (#5955) 2025-02-25 14:56:58 +01:00
Andrés Moya
3907a1783a Include active sets and themes in exported tokens json file (#5806)
*  Add active sets to json decode

* 📎 Fix tests

* 📎 Add encode tests

* 📎 Add decode test

---------

Co-authored-by: Eva Marco <evamarcod@gmail.com>
2025-02-25 14:05:07 +01:00
Marina López
3685f7b32b 🐛 Fix typo at libraries modal 2025-02-25 13:41:26 +01:00
andrés gonzález
06b5304926 📚 New section for Your account (#5941)
* 📚 New section for Your account

* Update docs/user-guide/the-interface/index.njk

Co-authored-by: Madalena Melo <madalena.melo@kaleidos.net>

* Update docs/user-guide/the-interface/index.njk

Co-authored-by: Madalena Melo <madalena.melo@kaleidos.net>

* Update docs/user-guide/the-interface/index.njk

Co-authored-by: Madalena Melo <madalena.melo@kaleidos.net>

---------

Co-authored-by: Madalena Melo <madalena.melo@kaleidos.net>
2025-02-25 13:05:49 +01:00
Andrey Antukh
b676ea7127 Merge remote-tracking branch 'origin/staging' into develop 2025-02-25 12:56:05 +01:00
Xavier Julian
ca65f5ad9a 💄 Improve theme modal with UX enhancements 2025-02-25 12:52:12 +01:00
Elena Torró
3e89b73ca0 📚 Add developer docs about how to test feature flags by team (#5949) 2025-02-25 12:51:00 +01:00
Marina López
8f06fa1026 🎉 Add AB test descriptive board tooltip (#5936)
* 🎉 Add AB test descriptive board tooltip

* 📎 Add changes from feedback
2025-02-25 12:50:16 +01:00
Andrey Antukh
a549d783ba Downgrade s3 sdk for compatibility with minio (#5946)
* 📚 Add `⬇️` emoji to the contributing guide

For cases where we need to downgrade dependencies

*  Downgrade S3 SDK version

Mainly for minio and other S3-compatible services
2025-02-25 12:49:33 +01:00
Alejandro
17e9e836f6 Merge pull request #5950 from penpot/alotor-fix-gradient-strokes
🐛 Fix problem with gradient in strokes
2025-02-25 11:43:49 +01:00
alonso.torres
c48d862d0f 🐛 Fix problem with gradient in strokes 2025-02-25 11:29:57 +01:00
alonso.torres
052282cff9 🐛 Fix problem updating layout when duplicating component 2025-02-25 11:21:41 +01:00
Luis de Dios
91efcd17a2 🐛 Fix design panel does not reappear if comment draft is open 2025-02-25 10:30:11 +01:00
Pablo Alba
6d40166de7 Remove menu options and shortcuts actions over variants 2025-02-25 10:11:14 +01:00
Elena Torró
ab7781b4fa Add dbg panel to enable a team feature flag (#5940)
*  Add dbg panel to enable and disable team feature flags

* 📎 Rename debug to skip-check and do not parse & cast the feature value
2025-02-25 10:09:43 +01:00
Andrey Antukh
6c1e8c3fe8 ⬆️ Update deps (fix compat issues with minio) 2025-02-25 09:39:13 +01:00
luisδμ
7f9a9ad774 🐛 Fix visual glitches in the comment dropdown at the dashboard (#5938) 2025-02-25 09:17:42 +01:00
luisδμ
2219d91e4d 🐛 Fix all comments appear in every page (#5943) 2025-02-25 09:16:46 +01:00
Yamila Moreno
fac2314d62 🔧 Relax secure cookies requirement when non-https public uri is set (#5939) 2025-02-25 09:10:53 +01:00
Andy Li
f5218e207b 🌐 Add translations for: Chinese (Traditional Han script)
Currently translated at 66.1% (1089 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hant/
2025-02-25 03:04:17 +01:00
william chen
7fb6a095c6 🌐 Add translations for: Chinese (Traditional Han script)
Currently translated at 66.1% (1089 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hant/
2025-02-25 03:04:16 +01:00
Eva Marco
88669d2e0f 🎉 Add translations to token errors (#5926) 2025-02-24 15:50:47 +01:00
Andrey Antukh
1187d64f69 Merge remote-tracking branch 'origin/staging' into develop 2025-02-24 12:49:04 +01:00
Yamila Moreno
aac61ff229 📚 Document how to troubleshoot Penpot (#5937) 2025-02-24 12:07:47 +01:00
Andrey Antukh
3074fc9ab5 ♻️ Remove deprecated with-atomic and refactor tx-run! (#5915)
* ♻️ Remove deprecated with-atomic and refactor tx-run!

*  Do not hold open connection for the whole clone-template operation
2025-02-24 11:15:44 +01:00
Andrey Antukh
15d09eb0d4 🐛 Fix incorrect data id assignation on creating a snapshot (#5934)
* 📎 Set proper name to relink-refs mechanism function

* 🐛 Fix incorrect id assignation on snapshot file resolution

* ♻️ Use uniform api for file retrieval on file snapshot code
2025-02-24 11:05:16 +01:00
Alejandro
786383c25d Merge pull request #5935 from penpot/niwinz-viewer-bugfix
🐛 Fix incorrect data returned on viewer subapp bundle
2025-02-24 10:41:17 +01:00
elhombretecla
662c3c64a9 Fix 2.5 slides wording (#5925) 2025-02-24 09:39:43 +01:00
Juanfran
9084c184e7 🐛 Filter out recent fonts from search results (#5927) 2025-02-24 09:12:12 +01:00
Elena Torró
bcea19001e Improve readability of RGBA and HSLA values in inspect mode (#5918)
*  Improve readability of RGBA and HSLA values in inspect mode

* 📎 Remove reader conditionals for format common methods
2025-02-24 09:08:42 +01:00
Andrey Antukh
ae718c3328 🐛 Fix incorrect data returned on viewer subapp bundle 2025-02-24 09:03:57 +01:00
Marina López
702bd41047 🐛 Fix error when getting file from libs 2025-02-24 08:26:27 +01:00
Aitor Moreno
9896275fa8 Merge pull request #5932 from penpot/niwinz-objects-gc-bugfix
 Remove automatic cascade on file_change table fk constraint
2025-02-21 14:32:24 +01:00
Andrey Antukh
d2c800fc0f 🐛 Add missing handling of file_change on delete-object task 2025-02-21 14:24:18 +01:00
Andrey Antukh
893f19fa5e Remove automatic cascade on file_change table fk constraint 2025-02-21 14:24:07 +01:00
Andrey Antukh
624750ad16 🐛 Fix incorrect order of execution of internal procs on objects-gc (#5929)
*  Improve efficiency on objects-gc tasks

Replacing db/cursor with db/plan

* 🐛 Use correct order of subprocs on objects-gc

Mainly affects the file deletion

* 📎 Increase chunk-size to 100 on objects-gc
2025-02-21 13:01:20 +01:00
Andrés Moya
1c98c53805 🔧 Add filtering to logs in component sync algorithm 2025-02-21 11:30:02 +01:00
Aitor Moreno
4799f6fe0a ♻️ Refactor rendering surfaces (#5921) 2025-02-21 11:04:12 +01:00
Andrey Antukh
24cb1728b0 🐛 Fix context menu event handling issues (#5917)
* 💄 Change call convention for dashboard grid component

* 🎉 Add helper component for easy portal to document

* 🐛 Fix context menu event handling issues

With this commit, the behavior of context menu and scroll is changed
to: close menu on scroll instead of disabling all pointer events while
menu is open. The previous behavior causes a second event of context
menu open a native browser context menu instead of penpot menu.
2025-02-21 07:57:56 +01:00
Alejandro
7470fb709f Merge pull request #5920 from penpot/alotor-test-apply-modifiers
 Modify shapes geometry instead of transformation matrix
2025-02-21 07:44:32 +01:00
alonso.torres
8c1e18b1cd 🐛 Fix problem with images 2025-02-20 17:57:36 +01:00
alonso.torres
9143187efd Modify shapes geometry instead of transformation matrix 2025-02-20 17:39:17 +01:00
Eva Marco
dda9f62504 🐛 Fix menu shadow color 2025-02-20 17:23:28 +01:00
Aitor Moreno
b661f39422 ♻️ Refactor render shape (#5916) 2025-02-20 16:33:18 +01:00
Aitor Moreno
3a764a9da6 Merge pull request #5919 from penpot/alotor-constraints-2
🐛 Fix problems with constraints resizing
2025-02-20 16:26:46 +01:00
alonso.torres
2341dfb95d 🐛 Fix problems with constraints resizing 2025-02-20 14:20:01 +01:00
Xavier Julian
ff121d2af5 💄 Differentiate empty and not empty token types 2025-02-20 14:12:51 +01:00
Xavier Julian
55d7bab0e6 💄 Spacing on token sets 2025-02-20 13:31:18 +01:00
Juanfran
4a3d951329 Merge pull request #5888 from penpot/juanfran-fix-flaky-add-new-test
 Add more integration tests for tokens
2025-02-20 10:10:00 +01:00
Pablo Alba
014c297458 🎉 Add drag components in or out a variant container 2025-02-20 10:05:01 +01:00
Juanfran
280da72e63 Add more integration tests for tokens 2025-02-20 09:57:31 +01:00
Alejandro Alonso
6277db8d45 🐛 Fix clip for frames with border radius (render wasm) 2025-02-20 09:24:55 +01:00
Andrey Antukh
479f39338b 🐛 Don't send invitation email to profiles that explicitly disallow that
* 🐛 Don't send invitation email to profiles that explicitly disallow that

* 📎 Add changes post feedback

* 📎 Fix typo on changelog
2025-02-20 09:20:28 +01:00
Andrey Antukh
60530a80d9 Merge remote-tracking branch 'origin/staging' into develop 2025-02-20 09:15:00 +01:00
Alejandro
befa5f4c7f Merge pull request #5906 from penpot/niwinz-libraries-fix
🐛 Fix incorrect libraries filtering on workspace
2025-02-20 07:40:24 +01:00
Andrey Antukh
6e92e3b765 🐛 Fix inconsistency on naming
This also a fix of passing incorrect prop :shared-libs
to a component that already expectes :libraries.

It also removes unnecesary use of refs/libraries ref
2025-02-20 07:32:11 +01:00
Andrey Antukh
0e73de17ec 🐛 Fix incorrect libraries filtering on workspace 2025-02-20 07:32:10 +01:00
Alejandro
2dcf692853 Merge pull request #5911 from penpot/niwinz-notifications-post-save-refresh
🐛 Fix incorrect notification assignation after update operation
2025-02-20 07:06:49 +01:00
Alejandro
66f2e0aa5e Merge pull request #5912 from penpot/niwinz-binfile-v3-fixes
🐛 Add proper feature handling for binfile imports
2025-02-20 07:03:59 +01:00
Andrey Antukh
dd6ae81e83 🐛 Add correct feature handling on dbg binfile import 2025-02-19 22:47:55 +01:00
Andrey Antukh
cb8e31e7f8 🐛 Add correct handling of features on clone-template 2025-02-19 22:47:54 +01:00
Andrey Antukh
ca9b5b1b8a 📎 Use standard asserts on binfile common ns 2025-02-19 22:47:54 +01:00
Andrey Antukh
a391d71b60 🐛 Add correct feature handling on binfile import 2025-02-19 22:47:40 +01:00
Andrey Antukh
7d0c19fcc7 🐛 Add correct feature check on manifest reading
Instead on the file save operation so we can raise
exception if something does not match without processing
the whole file
2025-02-19 22:45:08 +01:00
Andrey Antukh
e4ee585704 🐛 Fix incorrect notification assignation after update operation 2025-02-19 17:21:52 +01:00
Andrey Antukh
d79fac7729 Merge remote-tracking branch 'origin/staging' into develop 2025-02-19 17:17:54 +01:00
Marina López
5f61254a75 🐛 Fix library button condition and copy (#5889)
* 🐛 Fix library button condition and copy

* 📎 Add changes from feedback

* 📎 Add changes from feedback
2025-02-19 16:52:35 +01:00
Pablo Alba
195127b099 Add text selection on focus of an input-with-values (#5909) 2025-02-19 16:51:49 +01:00
luisδμ
0784d6b62a 🐛 Fix reposition comment bubbles under viewer role (#5905) 2025-02-19 16:47:53 +01:00
María Valderrama
a3e74c55f1 💄 Add cosmetic changes to notifications buttons (#5902) 2025-02-19 16:45:22 +01:00
Alejandro
7a7fa44f6b 🐛 Fix click prototype flow (#5896) 2025-02-19 16:00:17 +01:00
Juanfran
e408bc9113 Merge pull request #5904 from penpot/juanfran-themes-dropdown-scrollbar-styles
🐛 Fix scrollbar styles in themes dropdown
2025-02-19 15:22:19 +01:00
Yamila Moreno
4b5d304a40 📚 Improve technical guide
* 📚 Improve technical guide

* 📚 Improve technical guide

* 📚 Improve technical guide

* 📚 Improve technical guide

* 📚 Improve technical guide

* 📚 Improve technical guide

* 📚 Improve technical guide

* 📚 Improve technical guide

* 📚 Improve technical guide

* 📚 Improve technical guide
2025-02-19 14:35:40 +01:00
Juanfran
89dc917cb9 🐛 Fix scrollbar styles in themes dropdown 2025-02-19 14:25:43 +01:00
alonso.torres
e7b9ae6415 🐛 Remove fit content shortcut 2025-02-19 13:02:53 +01:00
Elena Torró
f83cdf2f5d 📎 Remove invalid aria label on div (#5898) 2025-02-19 11:42:44 +01:00
luisδμ
4ac52c138c Merge pull request #5895 from penpot/niwinz-bugfix-comments
🐛 Fix unexpected exception on clicking empty area on creating comment
2025-02-19 11:29:21 +01:00
Elena Torró
f3040fc10d 🐛 Pass color format to css formatter (#5890)
* 🐛 Pass color format to css formatter

* 📎 Use get method to retrieve format

* 📎 Add UI test to check background color is correctly copied to clipboard when changing the format
2025-02-19 11:23:52 +01:00
Andrey Antukh
4744085426 🐛 Fix incorrect handling request access with deleted profiles
* 📎 Add minor improvements to team tests

* 🐛 Fix incorrect handling request access with deleted profiles

* 🐛 Fix redirect loop on empty route

Happens when the current profile is deleted from team

* 🐛 Fix urls on request access emails

* 📎 Revert url changes on emails
2025-02-19 11:04:19 +01:00
Andrey Antukh
44acd79081 Merge remote-tracking branch 'origin/staging' into develop 2025-02-19 10:46:55 +01:00
Andrey Antukh
a3e4da0b3d 📎 Update changelog 2025-02-19 10:46:33 +01:00
Elena Torró
73a52e5395 🐛 Fix opacity in frame containers (#5858)
* 🐛 Fix opacity in frame containers

* 📎 Improve readability of frame containers by using class names
2025-02-19 10:44:24 +01:00
Alonso Torres
6cb1aa24cd Add constraints calculation on WASM (#5894)
*  Add constraints calculation on WASM

*  Fix after review
2025-02-19 10:40:04 +01:00
Alejandro
19bae05f41 Merge pull request #5884 from penpot/niwinz-bugfix-4
🐛 Fix update-libraries dialog disappear when clicking outside
2025-02-19 07:53:35 +01:00
Alejandro
02f78d80d7 Merge pull request #5883 from penpot/niwinz-bugfix-3
🐛 Fix incorrect navigation on show-main-component menu option
2025-02-19 07:42:02 +01:00
Alejandro
51202df105 Merge pull request #5885 from penpot/niwinz-bugfix-5
🐛 Fix regression on request-access dialog
2025-02-19 07:15:30 +01:00
Andrey Antukh
cd1eefb214 Add safety checks for node on comment-input* component 2025-02-18 18:33:02 +01:00
Andrey Antukh
869a412c74 🐛 Fix unexpected exception on clicking empty area on creating comment 2025-02-18 18:19:08 +01:00
Andrey Antukh
f5c913d26e Merge remote-tracking branch 'origin/staging' into develop 2025-02-18 17:28:38 +01:00
luisδμ
d019afe667 🐛 Fix incorrect number of replies in comments (#5893) 2025-02-18 17:25:43 +01:00
Andrey Antukh
c41aa56a60 Merge pull request #5869 from penpot/marina-empty-workspace-create-board-tool-default
🎉 Add AB test for empty workspace set board tool by default
2025-02-18 17:24:52 +01:00
Andrey Antukh
7d840722c4 Add abstraction for page emptiness checking 2025-02-18 16:59:00 +01:00
Marina López
272bbdd54a 🎉 Add AB test for empty workspace set board tool by default 2025-02-18 16:57:59 +01:00
Andrey Antukh
fe3fec7a50 🐛 Fix workspace hot reload race condtion
This reverts commit 8139ee3ef9.
2025-02-18 16:49:50 +01:00
Andrey Antukh
c86f14e75d 🐛 Fix color slider not updating the hue of the ramp (#5891)
* 🐛 Fix color slider not updating the hue

*  Add minor enhancements for ramp* component

---------

Co-authored-by: Andrey Fedorov <oran9e.red@gmail.com>
2025-02-18 16:42:11 +01:00
Pablo Alba
65a97167de 🐛 Fix bad value on combobox enter keydown (#5859) 2025-02-18 15:55:22 +01:00
Xavier Julian
0530c57d31 Add placeholder to themes modal 2025-02-18 14:51:33 +01:00
Andrey Antukh
63524dce8d 🐛 Fix regression on request-access dialog 2025-02-18 12:37:04 +01:00
Yamila Moreno
807b8d82e3 🔧 Improve flags documentation (#5863)
* 📎 Fix typo

* 🔧 Enable certain flags by default

* 🔧 Compile all flags in a single source of truth

* 📎 Move all default flags to common

---------

Co-authored-by: Andrey Antukh <niwi@niwi.nz>
2025-02-18 12:36:16 +01:00
Andrey Antukh
3f45863823 🐛 Fix update-libraries dialog disappear when clicking outside 2025-02-18 12:04:10 +01:00
Andrey Antukh
f9f5f0af7d ♻️ Refactor code style on actionable ds component 2025-02-18 12:04:09 +01:00
Andrey Antukh
f98dbef228 Simplify code and use lookup helpers 2025-02-18 12:04:09 +01:00
Andrey Antukh
713d6a31df Add better way to delay a stream for library notification 2025-02-18 12:04:09 +01:00
Andrey Antukh
77f906ae37 Improve notification show params validation assertion 2025-02-18 12:04:09 +01:00
María Valderrama
6a5538bb15 🐛 Fix unreachable Save color style button (#5879)
* 🐛 Fix unreachable Save color style button

* 📎 Fix unreachable Save color style button code review
2025-02-18 11:32:00 +01:00
Andrey Antukh
0ce99968b3 🐛 Fix incorrect navigation on show-main-component menu option 2025-02-18 10:53:32 +01:00
Andrey Antukh
adbe29e3d1 Merge remote-tracking branch 'origin/staging' into develop 2025-02-18 10:25:13 +01:00
Alejandro
5fae07af11 Merge pull request #5880 from penpot/alotor-render-wasm-cache
🐛 Fix problem with cache
2025-02-18 10:20:31 +01:00
Alonso Torres
0900b7a572 🐛 Fix problem with grid layout duplicate positioning (#5877) 2025-02-18 10:17:42 +01:00
alonso.torres
400e5f60f2 🐛 Fix problem with cache 2025-02-18 10:00:57 +01:00
Andrey Antukh
3412a0a18a Merge pull request #5868 from penpot/niwinz-terms-link-fix
🐛 Set correct default for terms link on fonts hero
2025-02-18 09:55:52 +01:00
Pablo Alba
3268225941 🎉 Add variations POC 2025-02-17 16:47:25 +01:00
Eva Marco
5e3b47e455 🎉 Add integration test for bug (#5875) 2025-02-17 16:29:28 +01:00
Xaviju
91fa39705d ♻️ Switch contextual notification component (#5874) 2025-02-17 16:03:13 +01:00
Andrey Antukh
83423a9509 Merge pull request #5864 from penpot/eva-fix-colorpicker-dnd
🐛 Fix add recent color while drag and drop
2025-02-17 15:22:49 +01:00
Andrey Antukh
c41f86f0a4 Merge remote-tracking branch 'origin/staging' into develop 2025-02-17 15:20:33 +01:00
Alonso Torres
ccabaf4552 🐛 Fix style problem with update lib notifications (#5871) 2025-02-17 13:31:29 +01:00
Alonso Torres
ad15ac6c1e 🐛 Fix several problems with navigation in viewer (#5872) 2025-02-17 13:24:15 +01:00
luisδμ
a9340709c8 🐛 Fix open comment in workspace from dashboard notification (#5865) 2025-02-17 12:29:19 +01:00
Alonso Torres
faa3451da9 🐛 Fix problem with board name input style (#5870) 2025-02-17 12:26:04 +01:00
Alonso Torres
0aa95ea058 🐛 Fix problem with copy/paste props (#5867) 2025-02-17 12:25:42 +01:00
Eva Marco
81b741478a 🐛 Fix a little regression on sidebar resize (#5866) 2025-02-17 12:25:07 +01:00
Andrey Antukh
66182152cb 🐛 Set correct default for terms link 2025-02-17 11:51:21 +01:00
Andrey Antukh
b9629b7be6 🔥 Remove unused default flags on frontend 2025-02-17 11:23:46 +01:00
Eva Marco
6c9875e4f9 🐛 Fix add recent color while drag and drop 2025-02-17 10:20:40 +01:00
Juanfran
f6fc2f8808 🐛 Prevent themes dropdown overflow hidden in set sidebar (#5850) 2025-02-17 09:51:10 +01:00
Edgars Andersons
6a0bb2f452 🌐 Add translations for: Latvian
Currently translated at 99.6% (1641 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/
2025-02-14 16:01:57 +01:00
Amerey.eu
d02f85315a 🌐 Add translations for: Czech
Currently translated at 99.3% (1635 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/cs/
2025-02-14 16:01:56 +01:00
Andrey Antukh
f90c63b5f0 Merge pull request #5834 from penpot/juan-slides-2.5
🎉 Add slides for 2.5 release
2025-02-14 15:52:57 +01:00
Elhombretecla
680e611266 🎉 Add slides for 2.5 version 2025-02-14 15:41:27 +01:00
Andrey Fedorov
aa180e9f3f 🐛 Fix max- min- width height not being applied 2025-02-14 15:26:49 +01:00
Belén Albeza
cad7d75590 🐛 Fix libraries context menu (#5854)
*  Add integration test for Bug #10421

* 🐛 Fix dashboard library item menu

*  Fixup integration test
2025-02-14 14:34:54 +01:00
luisδμ
8c81d48858 Merge pull request #5844 from penpot/luis-refactor-zero-width-space
♻️ Use constant for zero width space
2025-02-14 14:06:28 +01:00
Florian Schroedl
6b773d6b74 🐛 Dont allow hex values without # prefix 2025-02-14 13:52:54 +01:00
Belén Albeza
6cbaacf1e0 🎉 Implement inner shadows (wasm) (#5767)
* 🎉 Implement inner shadows (wasm)

* 🐛 Fix reset canvas problem

---------

Co-authored-by: alonso.torres <alonso.torres@kaleidos.net>
2025-02-14 13:46:30 +01:00
Eva Marco
2ffb77cb4d Merge pull request #5840 from penpot/niwinz-tokens-changes-3
♻️ Token changes (part 3)
2025-02-14 12:55:12 +01:00
Eva Marco
a7ed5228d3 🐛 Fix lost translation strings (#5846)
* 🐛 Fix lost translation strings

* 🐛 Fix form error management internal issues and inconsistencies

* 📎 Add better validation conditons for ::sm/text schema

* 🐛 Add better touched detection mechanism for input and textarea

---------

Co-authored-by: Andrey Antukh <niwi@niwi.nz>
2025-02-14 12:51:14 +01:00
María Valderrama
59a57d6c3f Mark all notifications as read from dashboard (#5805)
*  Mark all notifications as read from dashboard

* ♻️ Mark all notifications as read code review

* ♻️ Mark all notifications as read code review II
2025-02-14 11:48:24 +01:00
Eva Marco
6bb7fa26f4 🐛 Fix rename blocked boards (#5845) 2025-02-14 11:47:16 +01:00
Xaviju
8a332c1402 Add placeholder to set edition (#5848) 2025-02-14 11:46:04 +01:00
Andrey Antukh
37855bfe7f Merge remote-tracking branch 'origin/staging' into develop 2025-02-14 10:35:29 +01:00
Andrey Antukh
8b6a9b373d Improve efficiency and logging on process-files! srepl helper 2025-02-14 10:02:34 +01:00
Andrey Antukh
8139ee3ef9 Revert "🐛 Fix workspace hot reload race condtion (#5851)"
This reverts commit 5d56d28cb6.
2025-02-14 10:02:05 +01:00
Andrey Antukh
f68b0117c4 ♻️ Simplify token creation mechanism 2025-02-14 08:49:31 +01:00
Andrey Antukh
aa867adbd3 ♻️ Add minor refactor on tokenlib object construction and validation 2025-02-14 08:49:30 +01:00
Andrey Antukh
3fd429c72a Merge remote-tracking branch 'origin/staging' into develop 2025-02-13 21:04:52 +01:00
Marina López
af93325fd9 🎉 Consolidate suggested libraries and add library button (#5828) 2025-02-13 20:06:28 +01:00
Pablo Alba
d836cc66da 🐛 Fix unable to drag & drop assets into/outside component groups (#5849) 2025-02-13 17:30:33 +01:00
Andrey Antukh
5d56d28cb6 🐛 Fix workspace hot reload race condtion (#5851)
Mainly ensure that all required paramers for workspace
file and page bootstrap are always available from parameters
and not taken from context
2025-02-13 17:04:34 +01:00
Eva Marco
46d2359107 🐛 Fix empty translation strings (#5847) 2025-02-13 15:48:44 +01:00
Aitor Moreno
39bbb4c2bd Merge pull request #5827 from penpot/superalex-fix-wasm-glitches
🐛 Fix wasm glitches
2025-02-13 15:25:24 +01:00
Alejandro Alonso
64e6d0b1f8 🐛 Fix wasm glitches 2025-02-13 15:16:45 +01:00
Xavier Julian
26a2ef8fb7 ♻️ Create DS context notification component 2025-02-13 13:36:53 +01:00
Alejandro
a6c46ee55c Merge pull request #5819 from penpot/azazeln28-feat-masks
🎉 Feat masks
2025-02-13 13:26:21 +01:00
AzazelN28
f8d58cb74e 🎉 Feat masks 2025-02-13 12:54:18 +01:00
Alejandro
f8820695cc 🐛 Fix incorrect numbering files when new team (#5835) 2025-02-13 11:55:59 +01:00
Andrey Antukh
3ea52a0198 Merge pull request #5784 from penpot/niwinz-tokens-changes-2
 Several performance oriented changes to tokens code (part 2)
2025-02-13 11:47:28 +01:00
Andrey Antukh
054efb3435 Merge pull request #5766 from penpot/niwinz-tokens-changes
 Several changes to tokens
2025-02-13 11:46:58 +01:00
Edgars Andersons
fbd5c404d2 🌐 Add translations for: Latvian
Currently translated at 98.1% (1616 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/
2025-02-13 11:02:06 +01:00
Nicola Bortoletto
32b65e8dbc 🌐 Add translations for: Italian
Currently translated at 99.6% (1641 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/it/
2025-02-13 11:02:04 +01:00
andrés gonzález
2d1d1fee1c 📚 Info about gradients (#5843) 2025-02-13 10:42:56 +01:00
Alejandro
773b4fe02e Merge pull request #5824 from penpot/alotor-propagate-modifiers
 Use skia matrix for internal data
2025-02-13 10:21:58 +01:00
Luis de Dios
4c6f086f82 ♻️ Use constant for zero width space 2025-02-13 09:17:09 +01:00
Elena Torró
1a62e5e42d Merge pull request #5830 from penpot/elenatorro-10118-fix-action-button-size
🐛 Fix Action Buttons size and add example to Storybook
2025-02-12 17:30:43 +01:00
Alonso Torres
688b9f2194 🐛 Fix focus to main component (#5842) 2025-02-12 17:16:14 +01:00
luisδμ
8992eb98ec Merge pull request #5841 from penpot/luis-fix-comments-mentions-keyboard
🐛 Fix keyboard interactions with mentions
2025-02-12 17:03:44 +01:00
elenatorro
f812460158 🐛 Fix Action Buttons size and display, and add example to Storybook 2025-02-12 17:02:20 +01:00
Luis de Dios
638a8a8d3f 🐛 Fix keyboard interactions with mentions 2025-02-12 16:37:51 +01:00
Belén Albeza
fb6cd3d9d4 🐛 Fix "Publish empty library" modal appearing for non-empty libraries (#5838)
* 🐛 Fix 'Publish empty library' modal appearing for non-empty libraries

*  Add integration test for bug 10113
2025-02-12 15:36:01 +01:00
Alonso Torres
fb0e22c16b 🐛 Fix problem with team permissions redirection (#5839) 2025-02-12 15:35:28 +01:00
Andrey Antukh
654c070976 Merge remote-tracking branch 'origin/staging' into develop 2025-02-12 14:37:20 +01:00
Alejandro
6b26adb187 🐛 Fix team doesn't disappear after deletion (#5832) 2025-02-12 14:36:46 +01:00
Alonso Torres
8fe1271690 🐛 Fix problem opening url when page-id didn't exist (#5833)
Co-authored-by: Andrey Antukh <niwi@niwi.nz>
2025-02-12 14:36:05 +01:00
Alonso Torres
ceb90cd9e0 🐛 Fix problem with dashboard multiple selection (#5836) 2025-02-12 14:34:05 +01:00
Florian Schrödl
e776ba1b33 Add margin to spacing token & context menu (#5807) 2025-02-12 14:27:26 +01:00
Alonso Torres
51f924a5e1 🐛 Fix problem with onboarding team invite (#5829)
Co-authored-by: Andrey Antukh <niwi@niwi.nz>
2025-02-12 13:09:37 +01:00
Alonso Torres
fb24a37e83 🐛 Fix problem with grid layout crashing (#5831) 2025-02-12 13:07:41 +01:00
Andrey Antukh
7497371b32 🐛 Fix issue on renaming group 2025-02-12 10:47:39 +01:00
Andrey Antukh
50afc4c507 Remove selection workaround for undo
Always select the first one when no match is found
2025-02-12 10:47:39 +01:00
Andrey Antukh
064e51d24e 🐛 Clear token set edition state on rename 2025-02-12 10:47:38 +01:00
Andrey Antukh
a029ec18a6 🐛 Fix incorrect handling of selected token set 2025-02-12 10:47:36 +01:00
Andrey Antukh
b0a6e5c946 🐛 Fix regression: close context menu on edit token 2025-02-12 10:45:04 +01:00
Andrey Antukh
e8c85d13ff ♻️ Remove sets context abstraction 2025-02-12 10:45:02 +01:00
Andrey Antukh
b228438127 Refactor the rest fot token sets context menu components 2025-02-12 10:41:24 +01:00
Andrey Antukh
1fb48a1e8a Adapt call style convention for token sets context menu component 2025-02-12 10:41:24 +01:00
Andrey Antukh
91b6d498fe Add minor efficiency improvements to tokens import export 2025-02-12 10:41:24 +01:00
Andrey Antukh
efe204c346 Simplify access to can-edit? using react context 2025-02-12 10:41:24 +01:00
Andrey Antukh
4a4cd9492a ♻️ Refactor token set auto selection mechanism
This is a general purpose change that also allows perform
a best effort on selection sets when the name is changed
(per example by moving it into other group).
2025-02-12 10:41:23 +01:00
Andrey Antukh
5446464d7e 📎 Add fixme comment for confusing name 2025-02-12 10:40:36 +01:00
Andrey Antukh
baa5258a43 Declare transducer statically for path split function 2025-02-12 10:40:36 +01:00
Andrey Antukh
df6a679548 Remove duplicated operations from tokens sidebar 2025-02-12 10:40:36 +01:00
Andrey Antukh
3692f17e55 Adapt call style for set-lists component 2025-02-12 10:40:34 +01:00
Andrey Antukh
2bac94ad5c Use new call convention on all components of tokens sidebar 2025-02-12 10:24:48 +01:00
Andrey Antukh
d46d80bd5c Use value equals on selected shapes set 2025-02-12 10:24:48 +01:00
Andrey Antukh
f0e5196659 Add minor optimization to token-pill component 2025-02-12 10:24:48 +01:00
Andrey Antukh
05a459ea19 📎 Add missing license header 2025-02-12 10:24:48 +01:00
Andrey Antukh
8e85d5a02a Add performance oriented refactor to token sidebar and token-pill 2025-02-12 10:24:48 +01:00
Andrey Antukh
81036b9330 Improve handling open-status and tokens selection 2025-02-12 10:24:47 +01:00
Andrey Antukh
c91b7606a0 Add minor efficiency improvements using new call convention 2025-02-12 10:24:47 +01:00
Andrey Antukh
d6e7a331d5 ♻️ Move token-types to changes ns
And rename it to token-properties
2025-02-12 10:24:47 +01:00
Andrey Antukh
831b0baddd Improve efficiency of grouping and sorting token types 2025-02-12 10:24:47 +01:00
Andrey Antukh
e4bf2bd9ad 💄 Internal function rename on tokens sidebar 2025-02-12 10:24:47 +01:00
Andrey Antukh
7a4d8b824e 💄 Rename token-component* to token-group* 2025-02-12 10:24:47 +01:00
Andrey Antukh
ff34d1d5f9 Don't create an additional sequence on iterating for tokens 2025-02-12 10:24:47 +01:00
Andrey Antukh
c1ce24e5f0 Don't sort tokens on each rerender 2025-02-12 10:24:46 +01:00
Andrey Antukh
1f450c83ec Use new component definition convention for token-component 2025-02-12 10:24:46 +01:00
Andrey Antukh
769000da2d 💄 Add cosmetic changes to token-component component 2025-02-12 10:24:46 +01:00
Andrey Antukh
a53c37bc3c Don't create function references for token-pill callbacks 2025-02-12 10:24:46 +01:00
Andrey Antukh
333cc5996c 💄 Add mainly cosmetic changes to tokens pill
Simplify the component logic removing duplicate token prop handling
2025-02-12 10:24:46 +01:00
Andrey Antukh
bccc90f5a2 Don't create keys seq on each rerender on token-pill component 2025-02-12 10:24:45 +01:00
Andrey Antukh
5575a66b8d 📎 Add many FIXME comments on token-pill component 2025-02-12 10:24:45 +01:00
Andrey Antukh
0fee8143dd Don't use seq operations for string includes operation 2025-02-12 10:24:45 +01:00
Andrey Antukh
b6e26d15e1 💄 Add cosmetic changes to tokens sidebar component 2025-02-12 10:24:44 +01:00
Andrey Antukh
7e0b2702de 💄 Add minor cosmetic changes 2025-02-12 10:24:13 +01:00
Andrey Antukh
e46fb9dba7 📎 Add missing copyright header 2025-02-12 10:24:13 +01:00
Andrey Antukh
f4dee75a17 🔥 Remove unused workspace tokens common ns file 2025-02-12 10:24:13 +01:00
Andrey Antukh
6d1ff0cb49 🔥 Remove unused and incorrect ref passed to dropdown component 2025-02-12 10:24:12 +01:00
alonso.torres
3dcabc9502 Use skia matrix for internal data 2025-02-11 16:49:43 +01:00
Eva Marco
10174aa7bc 🐛 Fix uppercase text and copy (#5821) 2025-02-11 16:46:17 +01:00
Andrey Antukh
cd87cbe44e Merge remote-tracking branch 'origin/staging' into develop 2025-02-11 16:09:32 +01:00
Andrey Antukh
4f38d258b5 Merge pull request #5822 from penpot/niwinz-add-features-check-report
 Report restriction errors to logger
2025-02-11 16:00:32 +01:00
Aitor Moreno
4594c7bf0a Merge pull request #5823 from penpot/superalex-render-wasm-cloning
🎉 Remove extra clonings from render wasm
2025-02-11 15:55:58 +01:00
Andrey Antukh
6feae7f359 🐛 Register media-refs on mod-obj 2025-02-11 15:44:12 +01:00
Andrey Antukh
a3bc4ff9f3 🐛 Prevent exception when no file is found on process file srepl helper 2025-02-11 15:43:35 +01:00
Andrey Antukh
df7dd15705 🐛 Make the absorb library aware that file can be nil 2025-02-11 15:42:55 +01:00
Andrey Antukh
8dbf6adfda 🐛 Pass correct media-ref object on fixing media ref script 2025-02-11 15:42:21 +01:00
Andrey Antukh
35f44a6eb4 🐛 Remove duplicate decoding on srepl helper get-file 2025-02-11 14:44:37 +01:00
Stas Haas
bf153eb96b 🌐 Add translations for: German
Currently translated at 99.6% (1641 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/
2025-02-11 14:22:12 +01:00
Alejandro Alonso
d1a1dafcad 🎉 Remove unnecesary clone for cache image 2025-02-11 14:05:37 +01:00
Alejandro Alonso
246463a3ec 🎉 Remove shape cloning from render wasm 2025-02-11 14:05:37 +01:00
Andrey Antukh
895450c9d5 Report restriction errors to logger 2025-02-11 13:52:12 +01:00
Andrey Antukh
36518e0e6e Fix linter issues 2025-02-11 13:52:12 +01:00
Alejandro
4b4541515c Merge pull request #5809 from penpot/perf-transform-wasm
 Add support for WASM transforms
2025-02-11 12:52:55 +01:00
alonso.torres
1bb337c3dd Add support for WASM transforms 2025-02-11 12:36:44 +01:00
Florian Schrödl
8b380a01e6 ♻️ Simplifies RPC pattern for tokens (#5765)
* ♻️ Refactor to RPC pattern

Co-authored-by: andrei <andrei@hyma.io>

* ♻️ Remove unused alias

* ♻️ Change function signature

---------

Co-authored-by: andrei <andrei@hyma.io>
Co-authored-by: Andrey Fedorov <oran9e.red@gmail.com>
2025-02-11 12:32:28 +01:00
Xaviju
5c32ec8cfa ♻️ Create shared notification utility component 2025-02-11 11:42:06 +01:00
Eva Marco
9660307f00 🐛 Fix opacity valid values (#5820) 2025-02-11 11:28:25 +01:00
Andrey Antukh
a3a757f842 Merge remote-tracking branch 'origin/staging' into develop 2025-02-11 11:25:40 +01:00
Eva Marco
a2727a110e Add resize in percentage option (#5816) 2025-02-11 11:25:11 +01:00
andrés gonzález
898e66fd18 📚 Add info about direct links to boards (#5815) 2025-02-11 10:12:17 +01:00
Aitor Moreno
db55c06c67 🐛 Fix pasted text loses font-family style (#5808) 2025-02-11 10:07:59 +01:00
luisδμ
7eefbc5979 💄 Improve readability of some messages in the browser console (#5814) 2025-02-10 20:05:48 +01:00
luisδμ
bed79d7c27 Merge pull request #5817 from penpot/elenatorro-10135-change-copy-link-text
📎 Make 'Copy link' the default text when copying to clipboard
2025-02-10 18:07:28 +01:00
elenatorro
830be55ee8 📎 Make 'Copy link' the default text when copying to clipboard 2025-02-10 17:47:46 +01:00
andrés gonzález
7d52b55d21 📚 Add info for copy/paste options (#5803) 2025-02-10 16:18:34 +01:00
Juanfran
dd1aba0d05 Merge pull request #5812 from penpot/juanfran-create-edit-token-modal-enter-key
 Add missing enter key for button activation in edit/create tokens modal
2025-02-10 16:10:25 +01:00
Eva Marco
6692f8dce2 Add validation to token opacity (#5802) 2025-02-10 15:04:22 +01:00
luisδμ
7fd0ca2243 🐛 Fix allow a comment length of 750 chars and show error text if exceeded (#5810) 2025-02-10 15:03:07 +01:00
Juanfran
372b3145ea Add missing Enter key for button activation in edit/create tokens modal 2025-02-10 15:02:46 +01:00
Alejandro
8b7a102927 Merge pull request #5804 from penpot/superalex-fix-wasm-frame-clipping
🐛 Fix wasm frame clipping
2025-02-10 14:05:46 +01:00
Juanfran
24e1cf0d7d Merge pull request #5811 from penpot/juanfran-spacing-token-sets
💄 Improve spacing in design token sets
2025-02-10 13:57:02 +01:00
Alejandro Alonso
2ce88283a2 🐛 Fix wasm render frame clipping 2025-02-10 13:54:27 +01:00
Juanfran
2ae2e23b57 💄 Improve spacing in design token sets 2025-02-10 13:37:24 +01:00
Pablo Alba
9c7bb96b1c Add new DS component: InputWithValues (#5777)
*  Add new DS component: InputWithValues

*  Fix MR

*  Fix MR 2
2025-02-10 13:17:30 +01:00
Andrey Antukh
0f49208040 Merge branch 'staging' into develop 2025-02-10 12:01:15 +01:00
Andrey Antukh
f173e15bb3 Merge branch 'main' into staging 2025-02-10 12:00:57 +01:00
Alejandro
8f11a925df 🎉 Non blocking render wasm (#5726) 2025-02-10 11:46:56 +01:00
Andrey Antukh
ccce3bcb8f 🐛 Fix exporter build script 2025-02-10 11:40:14 +01:00
Andrey Antukh
6ca1a84557 🐛 Backport build issue from staging
Related to the devenv update
2025-02-10 10:59:29 +01:00
Andrey Antukh
f65f7d68e6 Merge remote-tracking branch 'origin/staging' into develop 2025-02-10 10:57:04 +01:00
TheScientistPT
f16fcf25e2 🌐 Add translations for: Portuguese (Portugal)
Currently translated at 93.9% (1546 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_PT/
2025-02-09 21:02:46 +01:00
andrés gonzález
debad85d6d 📚 Add info about fit board to content (#5800) 2025-02-07 16:41:04 +01:00
Linerly
0048f9725d 🌐 Add translations for: Indonesian
Currently translated at 100.0% (1646 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/id/
2025-02-07 15:01:51 +01:00
Robson Cardoso dos Santos
4bb5592e75 🌐 Add translations for: Portuguese (Brazil)
Currently translated at 72.7% (1198 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_BR/
2025-02-07 15:01:51 +01:00
Juanfran
f5b18f953d Enable Enter key for button activation in tokens modal (#5792) 2025-02-07 14:26:09 +01:00
luisδμ
92aa615da4 🐛 Fix users from another teams appear in mentions (#5789) 2025-02-07 12:33:29 +01:00
Eva Marco
b991a94685 🐛 Fix icon visualization on select component (#5801) 2025-02-07 12:32:44 +01:00
Marina López
a98111f68d 🔥 Remove unnecessary prevent and stop (#5799) 2025-02-07 11:07:47 +01:00
Marina López
5fa96315e3 Add event for A/B test first state project (#5791) 2025-02-07 09:51:25 +01:00
andrés gonzález
a4e35ec713 📚 Update FAQ about sharing plugins (#5794) 2025-02-07 09:05:29 +01:00
andrés gonzález
87295eab76 📚 Add info about boards renaming (#5797) 2025-02-07 09:05:12 +01:00
andrés gonzález
028a5ba596 📚 Remove the permissions table (#5795) 2025-02-07 09:04:56 +01:00
Eva Marco
ef9ead8072 🐛 Fix typo on integration test docs (#5796) 2025-02-06 17:42:15 +01:00
Eva Marco
73ff1b4fe5 🐛 Fix menu shadow color (#5793) 2025-02-06 15:56:45 +01:00
Renan Mayrinck
d7fbd3c3bc 🌐 Add translations for: Portuguese (Brazil)
Currently translated at 72.7% (1198 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_BR/
2025-02-06 14:41:03 +01:00
Robson Cardoso dos Santos
0b62bee90d 🌐 Add translations for: Portuguese (Brazil)
Currently translated at 72.7% (1198 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_BR/
2025-02-06 14:41:03 +01:00
luisδμ
00b0a59868 🐛 Fix user unread comments appear in every workspace (#5786) 2025-02-06 14:24:30 +01:00
Andres Gonzalez
518ba0ebe7 📚 Add info about import size limit at the user guide 2025-02-06 14:23:05 +01:00
elhombretecla
8a13ce5f91 💄 Change email button styles (#5785) 2025-02-06 14:17:32 +01:00
Florian Schrödl
0c275cf490 🐛 Fix token set selection & rename (#5783)
* 🐛 Fix set selection

* 🐛 Fix set name not being updated

* ♻️ Add better list assertion & test set renaming
2025-02-06 14:16:03 +01:00
Andrey Antukh
8b466ef0a3 Merge remote-tracking branch 'origin/staging' into develop 2025-02-06 12:57:33 +01:00
Eva Marco
09b3868b0e 🐛 Fix flakiness of playwright test for token (#5790) 2025-02-06 12:49:58 +01:00
Pablo Alba
95f727033e Merge pull request #5771 from penpot/superalex-fix-create-new-layers-component-copy
🐛 Fix create new layers in component copy
2025-02-06 12:45:32 +01:00
Belén Albeza
e78100a776 🐛 Fix flakiness of playwright test for bug 10090 (#5787) 2025-02-06 12:12:29 +01:00
Edgars Andersons
a4a88769af 🌐 Add translations for: Latvian
Currently translated at 97.5% (1605 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/
2025-02-06 12:02:04 +01:00
Denys Kisil
2dce8d09b8 🌐 Add translations for: Ukrainian (ukr_UA)
Currently translated at 99.6% (1641 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/
2025-02-06 12:02:03 +01:00
TheScientistPT
e6e6401702 🌐 Add translations for: Portuguese (Portugal)
Currently translated at 93.6% (1542 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_PT/
2025-02-06 12:02:01 +01:00
Robson Cardoso dos Santos
e83ece392c 🌐 Add translations for: Portuguese (Brazil)
Currently translated at 70.7% (1164 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_BR/
2025-02-06 12:02:00 +01:00
Alonso Torres
cdfc0fd988 🐛 Fix problem when changing colorpicker alpha (#5770) 2025-02-06 10:49:42 +01:00
Alejandro Alonso
8aae928796 🐛 Fix create new layers in component copy 2025-02-06 10:43:26 +01:00
Marina López
0b90722d5a 🐛 Fix change flex direction using plugins API 2025-02-06 09:55:25 +01:00
Andrey Antukh
33887711f7 Merge remote-tracking branch 'origin/staging' into develop 2025-02-06 09:38:47 +01:00
Belén Albeza
2cbc09a0e2 🐛 Fix local library being collapsed by default (#5775)
* 🐛 Fix local library being collapsed by default

* ♻️ Move layers tab spec code to its own file
2025-02-06 09:28:51 +01:00
Juanfran
947bd547aa 💄 Improve alignment of design token sets (#5782) 2025-02-06 08:58:02 +01:00
Pablo Alba
c774592b9e 🐛 Fix several bugs for the combination of status and share on workspace (#5773)
*  Add status notification bubble

*  Add file persistance functionality

*  Add new colors

*  Add status tooltips

*  Fix z-index share modal

* 🐛 Fix share modal doesn't register on workspace

* 💄 Fix files formatting

*  Add revision fixes

*  Add revision fixes CI

* 🔥 Remove unused require

---------

Co-authored-by: Elhombretecla <delacruzgarciajuan@gmail.com>
2025-02-05 19:11:44 +01:00
Alonso Torres
3012ccf90a 🐛 Fix problem with email notifications on deleted comments (#5772) 2025-02-05 17:48:41 +01:00
alonso.torres
508531cfc2 ⬆️ Update plugins runtime 2025-02-05 17:43:01 +01:00
alonso.torres
7aa1237833 🐛 Fix problem with root frame parent reference 2025-02-05 17:43:01 +01:00
alonso.torres
66076f1332 🐛 Added upload svg with images method 2025-02-05 17:43:01 +01:00
alonso.torres
9c626d22c7 🐛 Fix problem in plugins with renaming components 2025-02-05 17:43:01 +01:00
alonso.torres
8217bbc7a0 🐛 Fix problems with zoomIntoView 2025-02-05 17:43:01 +01:00
Florian Schrödl
86e0f8ad34 🐛 Fix toggling set groups in theme modal not working (#5733) 2025-02-05 12:21:21 +01:00
Late Night Defender
bb161f9da8 🌐 Add translations for: Thai
Currently translated at 12.5% (206 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/th/
2025-02-04 22:02:01 +01:00
Denys Kisil
07360efd17 🌐 Add translations for: Ukrainian (ukr_UA)
Currently translated at 99.6% (1641 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/
2025-02-04 22:01:59 +01:00
TheScientistPT
7c8eaaa4f9 🌐 Add translations for: Portuguese (Portugal)
Currently translated at 93.3% (1537 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_PT/
2025-02-04 22:01:58 +01:00
Andrey Antukh
48acc8715b Merge remote-tracking branch 'origin/staging' into develop 2025-02-04 16:01:14 +01:00
Aitor Moreno
b0d0abb0ad 🐛 Fix cursor not preserving white space (#5764) 2025-02-04 15:54:46 +01:00
Aitor Moreno
1f2e36774e 🐛 Fix pasting adds a newline (#5763) 2025-02-04 15:54:17 +01:00
Andrey Antukh
b913c75c41 🔥 Remove unused parameters from backend run template script 2025-02-04 15:36:22 +01:00
Marina López
9b64a6034b 🐛 Fix wrong text and styles from AB test (#5762) 2025-02-04 15:20:22 +01:00
Andrey Antukh
33da02421e 🐛 Fix unexepected exception on importing binfile
Happens when importing binfile with files that has deleted_at
property.
2025-02-04 14:07:23 +01:00
Andrey Antukh
b88ec13448 📎 Fix linter issues 2025-02-04 14:07:23 +01:00
Andrey Antukh
6106e56052 📎 Import from develop github workflows 2025-02-04 14:07:23 +01:00
Andrey Antukh
4bfe4ca230 🐛 Fix incorrect error handling on legacy workspace redirect 2025-02-04 13:35:24 +01:00
elhombretecla
1ac86aced0 Update CHANGES.md 2025-02-04 13:05:05 +01:00
Andrei Fëdorov
9db76f9a15 🎉 Import legacy format tokens (#5695) 2025-02-04 12:50:39 +01:00
Andrey Antukh
df0909483e Merge remote-tracking branch 'origin/staging' into develop 2025-02-04 11:35:03 +01:00
Aitor Moreno
774cf81fc8 🐛 Fix wrong blinking position after paste (#5756) 2025-02-04 11:29:25 +01:00
BDVGitHub
f8ba029b62 📚 Update Penpot Desktop link (#5521)
Change Penpot Desktop link
2025-02-04 11:25:16 +01:00
Aitor Moreno
dbf7b94651 🐛 Fix zoom to fit all didn't fit all (#5673) 2025-02-04 11:00:46 +01:00
Florian Schrödl
ec8109644b Create sets inside folders 2025-02-04 10:59:28 +01:00
elhombretecla
a5dc9eb458 Update CHANGES.md 2025-02-03 15:45:40 +01:00
Pablo Alba
43cde4e5e4 🎉 Add A/B test for first state of a project (#5691) 2025-02-03 12:52:51 +01:00
Andrey Antukh
315b389a66 🐛 Fix name generation and handling on creating objects (files, tokens, ...) (#5745)
*  Update function implementation

*  Add tests for a new function implementation

*  Update function usages according to new signature

*  Update docstrings

*  Use simpler assertion

* 💄 Replace concat with cons on name-seq

* 🐛 Fix incorrect error handling on legacy workspace redirect

---------

Co-authored-by: Andrey Fedorov <oran9e.red@gmail.com>
2025-02-03 12:49:56 +01:00
Andrey Antukh
bce30eb522 Merge pull request #5738 from penpot/niwinz-merge-two-prs
 Apply token value changes to all shapes in all pages
2025-02-03 12:31:07 +01:00
Andrey Antukh
d05d1c6a48 📎 Update changelog (add entry for 2.6.0) 2025-02-03 11:03:35 +01:00
Andrés Moya
1803e32322 🐛 Regenerate text shapes after changing token values 2025-02-03 10:16:31 +01:00
Andrey Antukh
22d5a43c92 Merge pull request #5742 from penpot/yms-improve-docker-compose
🐳 Improve docker compose
2025-02-03 09:53:08 +01:00
Belén Albeza
fe5de94db4 🐛 Fix "Mixed" not showing up for layout padding inputs (#5741)
* 🐛 Fix layout padding inputs not showing 'mixed' text

*  Add integration test
2025-02-03 09:51:26 +01:00
Denys Kisil
01e04843bf 🌐 Add translations for: Ukrainian (ukr_UA)
Currently translated at 99.6% (1641 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/
2025-02-02 14:01:52 +01:00
Linerly
3907f39c29 🌐 Add translations for: Indonesian
Currently translated at 98.9% (1628 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/id/
2025-02-01 02:01:53 +01:00
Eva Marco
24281b512e 🐛 Fix thumbnail regeration when changing sets of tokens 2025-01-31 16:35:30 +01:00
Andrés Moya
f4f0478975 Apply token value changes to shapes in all pages 2025-01-31 16:35:30 +01:00
Yamila Moreno
a3381b4880 🐳 Use the same PENPOT_VERSION envvar for all penpot services 2025-01-31 16:19:49 +01:00
Yamila Moreno
c42598d0c6 🐳 Add compose referer for telemetries 2025-01-31 16:05:59 +01:00
Marina López
e486bb4bec 🐛 Add missing shortcut translations (#5740) 2025-01-31 14:16:13 +01:00
Andrey Antukh
87eeb5031c 🐛 Fix issue on new migrations subsystem 2025-01-31 14:09:09 +01:00
Andrey Antukh
d15f0f1fd0 Improve build process
Remove hardcoded yarn version on devenv
2025-01-31 13:39:49 +01:00
Andrey Antukh
f871f88f30 ♻️ Refactor file data migrations subsystem (#5692)
* ♻️ Refactor file data migrations subsystem

* 📎 Add backend scripts/run helper script
2025-01-31 13:37:41 +01:00
Alonso Torres
96e99f6a78 🐛 Fix problem with build script wasm (#5739) 2025-01-31 13:14:38 +01:00
Andrey Antukh
a79315a61c ♻️ Move inspect code outside viewer 2025-01-31 12:24:48 +01:00
Xaviju
d62dc3b416 💄 Improve toast UI visualization (#5727) 2025-01-31 12:17:39 +01:00
luisδμ
0bd4a7d0fc 🐛 Fix bugs in comments (#5734)
* 🐛 Fix could not remove or update new comments without closing and reopening the thread

* 🐛 Fix scroll over long comments using the mouse wheel
2025-01-31 11:57:35 +01:00
Alejandro
d7477cd448 Merge pull request #5665 from penpot/niwinz-instantiate-component-bug-5
🎉 Add srepl fix function for process media refs on a file
2025-01-31 11:56:22 +01:00
Alonso Torres
14aa80e027 🐛 Fix edit name on read-only mode (#5737) 2025-01-31 11:48:52 +01:00
Alonso Torres
0483d1fd93 🐛 Fix paste properties on readonly state (#5736) 2025-01-31 11:47:28 +01:00
Alonso Torres
c3df84d812 🐛 Fix problem with colorpicker on change gradient stops (#5735) 2025-01-31 11:46:48 +01:00
Andrey Antukh
65504fbd91 🐛 Install corepack and yarn globally as user on devenv dockerfile 2025-01-31 10:58:31 +01:00
Stephan Paternotte
c570c0929f 🌐 Add translations for: Dutch
Currently translated at 99.6% (1641 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/nl/
2025-01-31 00:57:21 +01:00
Denys Kisil
f53473f9e9 🌐 Add translations for: Ukrainian (ukr_UA)
Currently translated at 99.6% (1641 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/
2025-01-31 00:57:20 +01:00
Nicola Bortoletto
39e6d28826 🌐 Add translations for: Italian
Currently translated at 99.6% (1641 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/it/
2025-01-31 00:57:18 +01:00
Yaron Shahrabani
0b56d07a67 🌐 Add translations for: Hebrew
Currently translated at 99.6% (1641 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/
2025-01-31 00:57:17 +01:00
Andrey Antukh
aae8295795 Merge remote-tracking branch 'origin/staging' into develop 2025-01-30 16:24:18 +01:00
Eva Marco
2f1daf0649 🐛 Fix color id on color bullet component (#5731) 2025-01-30 16:21:38 +01:00
Andrey Antukh
7cdb4719bf Merge pull request #5719 from penpot/niwinz-fix-selected-colors
♻️ Add performance refactor for several components related to colors
2025-01-30 16:21:06 +01:00
Andrey Antukh
eac18afa0c 📎 Fix linter issues 2025-01-30 16:19:28 +01:00
Eva Marco
44694eaebe 🐛 Fix padding on colorpicker when selecting an image (#5729) 2025-01-30 14:54:43 +01:00
Andrey Antukh
59c2732014 📎 Import from develop github workflows 2025-01-30 14:51:38 +01:00
Andrey Antukh
1af99f534b 📎 Fix linter issues 2025-01-30 14:41:33 +01:00
Andrey Antukh
f554de8859 Merge remote-tracking branch 'origin/staging' into develop 2025-01-30 14:38:32 +01:00
Andrey Antukh
0870910dcc 🐛 Fix nodejs incompatibility with common tests prepend script (#5730)
* 🐛 Fix nodejs incompatibility with common tests prepend script

* 📎 Fix linter issues

Related to the upcoming update of clj-kondo
2025-01-30 14:32:43 +01:00
Florian Schrödl
773debafda 🐛 Fix border-radius applied to all corners on token update (#5697) 2025-01-30 12:54:19 +01:00
Aitor Moreno
4524d6c216 Merge pull request #5725 from penpot/perf-label-viewport
 Add label to wasm renderer
2025-01-30 12:33:14 +01:00
Juanfran
c5d5fa7561 Merge pull request #5723 from penpot/juanfran-review-replace-combobox
🐛 Fix combobox bg color and dropdown only with options (#9753)
2025-01-30 12:22:24 +01:00
Juanfran
c5644a5fe8 🐛 Fix combobox dropdown visibility when no options are provided (#9753) 2025-01-30 12:12:18 +01:00
alonso.torres
8c310e6e5c Add label to wasm renderer 2025-01-30 11:45:06 +01:00
Andrey Antukh
10ca2b20e4 📎 Update changelog 2025-01-30 11:41:50 +01:00
Marina López
a2ce5efe69 Add has-files prop to create-file event 2025-01-30 11:31:45 +01:00
Alonso Torres
0325d43e96 Add watch script wasm (#5711)
*  Add watch script wasm

* ♻️ Extract common build params for build and watch scripts
2025-01-30 10:40:05 +01:00
luisδμ
45059d73da 🐛 Fix several bugs in comments (#5716)
* ♻️ Remove obsolete CSS code

* 🐛 Fix post a comment with keyboard

* 🐛 Fix show comments cursor on view mode

* 🐛 Fix avoid comment bubbles to appear on top of sidebars

* 🐛 Fix cancel native browser zoom when comment threads are visible
2025-01-30 10:35:47 +01:00
Andrey Antukh
15a896e050 🐛 Add migration for fix files with invalid token-data (#5712)
Because of previous bug that is already fixed
2025-01-30 09:17:02 +01:00
Andrey Antukh
6be3285b52 Merge remote-tracking branch 'weblate/develop' into develop 2025-01-29 23:23:48 +01:00
Anonymous
495f90b23e 🌐 Add translations for: Swedish
Currently translated at 98.6% (1624 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/sv/
2025-01-29 23:23:28 +01:00
Anonymous
ae26e2cc8f 🌐 Add translations for: Dutch
Currently translated at 98.6% (1624 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/nl/
2025-01-29 23:23:27 +01:00
Anonymous
e66a68f3bb 🌐 Add translations for: Latvian
Currently translated at 96.2% (1585 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/
2025-01-29 23:23:27 +01:00
Anonymous
845d58715d 🌐 Add translations for: Ukrainian (ukr_UA)
Currently translated at 98.6% (1624 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/
2025-01-29 23:23:26 +01:00
Anonymous
146c647c55 🌐 Add translations for: Czech
Currently translated at 95.6% (1574 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/cs/
2025-01-29 23:23:26 +01:00
Anonymous
886817a41d 🌐 Add translations for: Italian
Currently translated at 98.6% (1624 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/it/
2025-01-29 23:23:26 +01:00
Anonymous
431cb78ae0 🌐 Add translations for: Hebrew
Currently translated at 98.6% (1624 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/
2025-01-29 23:23:25 +01:00
Anonymous
24ae151e5b 🌐 Add translations for: Indonesian
Currently translated at 98.6% (1624 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/id/
2025-01-29 23:23:25 +01:00
Anonymous
e61217a337 🌐 Add translations for: Spanish
Currently translated at 99.2% (1633 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/es/
2025-01-29 23:23:24 +01:00
Anonymous
1836e11a7c 🌐 Add translations for: English
Currently translated at 99.5% (1639 of 1646 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/en/
2025-01-29 23:23:24 +01:00
Andrey Antukh
cbf104bd3a 📎 Add missing emoji check on commit-checker 2025-01-29 23:22:53 +01:00
Andrey Antukh
9b0f0c6904 🌐 Rehash and validate translations 2025-01-29 23:14:32 +01:00
Andrey Antukh
54bdc83ce4 🐛 Fix issue on translation management script 2025-01-29 23:13:39 +01:00
Aitor Moreno
8145eb89d7 🐛 Fix styles not being inherited (#5717) 2025-01-29 23:06:05 +01:00
Denys Kisil
2c683d849d 🌐 Add translations for: Ukrainian (ukr_UA).
Currently translated at 100.0% (1626 of 1626 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/
2025-01-29 23:02:01 +01:00
Stephan Paternotte
f477828440 🌐 Add translations for: Dutch.
Currently translated at 99.8% (1623 of 1626 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/nl/
2025-01-29 23:02:00 +01:00
Nicola Bortoletto
fd71872fe4 🌐 Add translations for: Italian.
Currently translated at 100.0% (1626 of 1626 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/it/
2025-01-29 23:02:00 +01:00
Linerly
8c04b98cb3 🌐 Add translations for: Indonesian.
Currently translated at 97.1% (1579 of 1626 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/id/
2025-01-29 23:01:59 +01:00
Andrey Antukh
8f37cd2c07 Add missing use-memo on page-menu 2025-01-29 21:20:44 +01:00
Andrey Antukh
01268ea14e Add major performance enhacements to shadow menu 2025-01-29 21:09:59 +01:00
Andrey Antukh
b449074425 ♻️ Refactor state management of shadow menu 2025-01-29 21:09:59 +01:00
Andrey Antukh
c2fae0fef2 Add performance enhancements to colorpicker gradients component 2025-01-29 21:09:59 +01:00
Andrey Antukh
e0efa63fa1 🔥 Remove commented code on colorpicker/gradients ns 2025-01-29 21:09:59 +01:00
Andrey Antukh
c504e38f6d 🐛 Fix incorrect key setup on color selection menu 2025-01-29 21:09:59 +01:00
Andrey Antukh
889902080b 📎 Fix linter issues
Related to the upcoming update of clj-kondo
2025-01-29 21:09:59 +01:00
Andrey Antukh
930ad359dd ♻️ Refactor color-row component to new style 2025-01-29 21:09:53 +01:00
Andrey Antukh
7809f2c7e4 💄 Convert color-selected-menu component to new style 2025-01-29 18:27:04 +01:00
Xaviju
995235d669 💄 Fix tokens modal block size when colorpicker is displayed (#5713) 2025-01-29 18:03:26 +01:00
Andrey Antukh
6fa08fc75e 🐛 Fix issue on importing binfile-v3 with tokens (#5714)
* 🐛 Fix issue on importing binfile-v3 with tokens

* 🐛 Fix thumbnails generation (regression)

* 🐛 Fix thumbnails clearing issues (regression)
2025-01-29 16:52:40 +01:00
Juanfran
c82e5f7681 ⬆️ Update plugins runtime (#5715) 2025-01-29 16:19:41 +01:00
Alejandro
16ec8b033a 🐛 Fix wasm render performance flushing drawing surface (#5709) 2025-01-29 14:17:20 +01:00
Andrey Antukh
58c6bbcc0b 🌐 Synchronize translations with weblate
commit c818fa967dca3f77b6d3dc89a2455d47b3695122
Author: Denys Kisil <ossenjoyer@proton.me>
Date:   Mon Jan 27 12:03:55 2025 +0000

    🌐 Add translations for: Ukrainian (ukr_UA).

    Currently translated at 100.0% (1626 of 1626 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/

commit 4deb86d68f6096a4d89102087e75ad56fa87a8d0
Author: AlexTECPlayz <alextec70@outlook.com>
Date:   Fri Jan 24 17:59:52 2025 +0000

    🌐 Add translations for: Romanian.

    Currently translated at 79.4% (1292 of 1626 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ro/

commit 6604b7773890b6dcd9b523dad87aa089f97654c2
Author: Denys Kisil <ossenjoyer@proton.me>
Date:   Tue Jan 21 19:00:43 2025 +0000

    🌐 Add translations for: Ukrainian (ukr_UA).

    Currently translated at 100.0% (1626 of 1626 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/

commit 2b2e51352cb79ff83a60858c1d61d8776aed0f3b
Author: Denys Kisil <ossenjoyer@proton.me>
Date:   Tue Jan 21 18:40:29 2025 +0000

    🌐 Add translations for: Ukrainian (ukr_UA).

    Currently translated at 100.0% (1626 of 1626 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/

commit 9c7ba8b7c8bd2a62c3c1144a1bae13cc987e5947
Author: Henrik Allberg <henrik@thexorb.com>
Date:   Mon Jan 20 09:41:44 2025 +0000

    🌐 Add translations for: Swedish.

    Currently translated at 100.0% (1626 of 1626 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/sv/

commit 1a21fa41b2d0919b42c2bea8210eea04132a807d
Author: Stephan Paternotte <stephan@paternottes.net>
Date:   Mon Jan 20 14:17:18 2025 +0000

    🌐 Add translations for: Dutch.

    Currently translated at 100.0% (1626 of 1626 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/nl/

commit c13a637a0f2836b8e01555e5e12a7572e2275cfe
Author: Nicola Bortoletto <nicola.bortoletto@live.com>
Date:   Sun Jan 19 22:53:13 2025 +0000

    🌐 Add translations for: Italian.

    Currently translated at 100.0% (1626 of 1626 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/it/

commit f81f866ec9154d20d785791a9a26464008bede23
Author: Stephan Paternotte <stephan@paternottes.net>
Date:   Sat Jan 18 02:39:14 2025 +0000

    🌐 Add translations for: Dutch.

    Currently translated at 99.8% (1623 of 1626 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/nl/

commit 74a1de142ad0c0be8f7404067696649f68efba77
Author: Edgars Andersons <Edgars+Weblate@gaitenis.id.lv>
Date:   Sat Jan 18 07:29:53 2025 +0000

    🌐 Add translations for: Latvian.

    Currently translated at 97.6% (1587 of 1626 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/

commit f42dfa0c79aef934079ae06a99965bd6878dc295
Author: Nicola Bortoletto <nicola.bortoletto@live.com>
Date:   Sat Jan 18 06:39:28 2025 +0000

    🌐 Add translations for: Italian.

    Currently translated at 100.0% (1626 of 1626 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/it/

commit 3f5462f3fb62d276cee7b4032f1362b5628299c3
Author: Yaron Shahrabani <sh.yaron@gmail.com>
Date:   Sat Jan 18 05:03:49 2025 +0000

    🌐 Add translations for: Hebrew.

    Currently translated at 100.0% (1626 of 1626 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/

commit 3fc5a3b3d594d45eff1ee4062ddb8484550178ec
Author: Linerly <linerly@proton.me>
Date:   Sat Jan 18 07:24:13 2025 +0000

    🌐 Add translations for: Indonesian.

    Currently translated at 100.0% (1626 of 1626 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/id/

commit a50c2e8f2ab24ff33831343e8e06a78c7d950d56
Author: Linerly <linerly@proton.me>
Date:   Thu Jan 9 01:25:43 2025 +0000

    🌐 Add translations for: Indonesian.

    Currently translated at 97.1% (1579 of 1626 strings)

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/id/

commit fe3fce673b88d26b75de52a635f4c56cf4327e91
Author: Hosted Weblate <hosted@weblate.org>
Date:   Fri Jan 17 10:53:34 2025 +0100

    Update translation files

    Updated by "Cleanup translation files" hook in Weblate.

    Translation: Penpot/frontend
    Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/
2025-01-29 13:00:54 +01:00
Andrey Antukh
a6485b93b7 Merge pull request #5707 from penpot/niwinz-update-selfhost-defaults
 Add the ability to set http body size on docker images
2025-01-29 12:43:17 +01:00
Andrei Fëdorov
51a34c0091 🐛 Fix swapped horizontal and vertical padding (#5708)
* 🐛 Fix swapped horizontal an vertical padding

* 🐛 Fix proper toggling when option `All` is selected
2025-01-29 12:29:41 +01:00
Andrey Antukh
47f1ca9627 Change backend defaults for http body 2025-01-29 12:26:30 +01:00
Andrey Antukh
f252ffb201 Add the ability to overwrite default http body size on docker images
And provide a compose file with good defaults
2025-01-29 12:22:05 +01:00
María Valderrama
48b225f3fe Merge pull request #5704 from penpot/ddb-copy-text
 Copy text content to clipboard
2025-01-29 12:00:26 +01:00
Marina López
0768ef1b8f Add A/B test switching '+' to 'Add file' on hover (#5705) 2025-01-29 11:42:08 +01:00
Andrey Antukh
d9ba107da2 🔧 Update default body size for docker images
Set it to 350MiB, the same as we have on our saas
2025-01-29 11:38:16 +01:00
Andrey Antukh
367d38c65e 🔧 Update commit checker workflow to include capital letters (#5706) 2025-01-29 11:22:10 +01:00
Andrey Antukh
754ba304a7 ⬆️ Update dependencies (#5694)
* ⬆️ Update system dependencies on devenv

* ⬆️ Update partially frontend dependencies

* ⬆️ Update application dependencies

* ⬆️ Update storybook dependency
2025-01-29 11:21:38 +01:00
alonso.torres
f1515a85bf Copy text content to clipboard 2025-01-29 10:52:20 +01:00
Alejandro
ce67550195 🐛 Avoid extra render calls on page initialization with wasm render (#5701) 2025-01-29 10:50:27 +01:00
Alejandro
979de39768 Merge pull request #5702 from penpot/niwinz-github-workflow
 Add github acction for check commit message format
2025-01-29 10:48:35 +01:00
Andrey Antukh
a3ab8e9eb0 📚 Update CONTRIBUTING.md file 2025-01-29 10:40:53 +01:00
Andrey Antukh
e6bc1e66f1 Add commit message format check github action 2025-01-29 10:40:40 +01:00
Andrey Antukh
c165303f83 Merge remote-tracking branch 'origin/staging' into develop 2025-01-29 09:37:39 +01:00
Alonso Torres
34e2eb829b Remove copying props for multiple elements (#5700) 2025-01-28 16:44:44 +01:00
luisδμ
1ebd5be3b1 Merge pull request #5699 from penpot/ddb-empty-comment-disable
🐛 Disable button on empty comments
2025-01-28 16:31:14 +01:00
Alejandro
8eb150fd93 🐛 Fix strokes for render wasm (#5684) 2025-01-28 16:19:09 +01:00
alonso.torres
d854398dae 🐛 Disale button on empty comments 2025-01-28 16:00:09 +01:00
Alejandro
09131f7533 🎉 Render drop shadows (wasm) (#5693)
Co-authored-by: Belén Albeza <belen@hey.com>
2025-01-28 15:10:06 +01:00
Alonso Torres
407b664910 🐛 Fix problem with plugin data null values (#5696) 2025-01-28 14:47:37 +01:00
Florian Schrödl
27dce6fcfa 🎉 Add alpha to token color (#5683)
* 🎉 Add alpha to token color
2025-01-28 14:27:10 +01:00
Xaviju
1d22658818 ♻️ Switch swatch component in style bar 2025-01-28 13:13:34 +01:00
elhombretecla
f1ccb00527 Update CHANGES.md 2025-01-28 13:08:29 +01:00
Alonso Torres
c215214120 Add new components to storybook (#5632)
*  Add new components to storybook

*  Changes after review

*  More changes after review

*  Add file history components to the application

*  Unnest selector
2025-01-28 12:34:15 +01:00
Eva Marco
0cf4d4636a 🐛 Fix set X position from dimensions token (#5685) 2025-01-28 12:24:41 +01:00
Florian Schrödl
b94afe143f 🐛 Update padding only on shapes with layout (#5688) 2025-01-28 11:41:03 +01:00
Eva Marco
10bc2276a6 🐛 Fix notification level on import error (#5689) 2025-01-28 11:40:35 +01:00
Belén Albeza
31145f2805 Merge pull request #5675 from penpot/azazeln28-fix-issue-9900
🐛 Fix Colorpicker shows RGBA inputs when HSVA mode is active
2025-01-28 11:35:04 +01:00
Eva Marco
b27324f903 Merge pull request #5679 from tokens-studio/45-florian-broken-token-create
🐛 Fix broken token create/update when set contains broken tokens
2025-01-28 10:02:42 +01:00
Florian Schroedl
62ca665d55 🐛 Fix tokens not being editable 2025-01-28 09:04:25 +01:00
Florian Schrödl
ef61f9c7aa 🐛 Fix CI breaking * (#5690)
* A rerender introduced by the warning message for token renames shifts
the submit button, which caused playwright to lose the element.
2025-01-27 18:51:10 +01:00
Florian Schrödl
ab72794994 🐛 Fix user cant submit existing token when editing name only (#5658)
* 🐛 Fix user cant submit existing token when editing it
2025-01-27 16:00:24 +01:00
AzazelN28
33192cfdb8 🐛 Fix colorpicker HSVA inputs 2025-01-27 15:38:21 +01:00
Andrey Antukh
6c0954aae9 📚 Update documentation about components-v2 migration script 2025-01-27 13:13:21 +01:00
Andrey Antukh
15f7fac8f4 Add more reasonable default fetch size for db/plan
Making it more general purpose and not only for streaming
2025-01-27 12:53:11 +01:00
Andrey Antukh
349552879e 🔥 Remove already broken v2 migration script 2025-01-27 12:53:11 +01:00
Andrey Antukh
bfe9a2b545 🎉 Add migration-like script for execute media-refs fix 2025-01-27 12:53:11 +01:00
Andrey Antukh
16934b734b 🎉 Add srepl fix function for process media refs on a file 2025-01-27 12:38:12 +01:00
Andrey Antukh
4c1312d4f6 Only create snapshot if file is modified (on srepl helper) 2025-01-27 12:38:12 +01:00
Andrey Antukh
541ed6282f Normalize file retrieving and persistence on binfile, file-gc and helpers 2025-01-27 12:38:10 +01:00
Alonso Torres
92d14e38b5 🐛 Fix problem with multiple color changes (#5680)
* 🐛 Fix problem with multiple color changes

* 🐛 Fixes after review
2025-01-27 12:36:00 +01:00
Alejandro
ea6c679b21 🐛 Fix click on the project name goes to blank dashboard from workspace (#5668) 2025-01-27 12:16:52 +01:00
Andrey Antukh
74bdd72d2f Merge remote-tracking branch 'origin/staging' into develop 2025-01-27 12:12:46 +01:00
Andrey Antukh
471699960f 🐛 Update media references after instantiation of a component (#5652)
🐛 Update media references after instantiation of a component
2025-01-27 11:58:13 +01:00
Alejandro
8f48396556 🐛 Fix remember decision when team hero banner is closed (#5669) 2025-01-27 11:53:10 +01:00
Pablo Alba
8bee050b5b 🐛 On viewer role, start with inspect tab selected (#5676) 2025-01-27 11:45:22 +01:00
Belén Albeza
2726fa04c0 Merge pull request #5667 from penpot/superalex-fix-blend-modes-render-wasm
🐛 Fix blend modes for wasm render
2025-01-27 11:00:38 +01:00
Xaviju
9751afaaec 🐛 Fix styles by webkit on autocomplete 2025-01-27 09:54:04 +01:00
Andrey Antukh
0447f2f861 Merge pull request #5682 from penpot/alotor-fix-component-menu
🐛 Fix problemws with components context menu
2025-01-27 09:53:23 +01:00
Juanfran
18607e6ed9 Merge pull request #5677 from penpot/juanfran-replace-group-select-with-combobox
[Tokens] :sparkles Add combobox to select group in token themes modal
2025-01-27 09:40:33 +01:00
alonso.torres
2d58a5095c 🐛 Fix problems with components context menu 2025-01-27 09:32:12 +01:00
Juanfran
fe3a2902bb :sparkles Add combobox to select group in token themes modal 2025-01-27 09:18:21 +01:00
Xaviju
da273c1168 Add warning when editing a token name 2025-01-24 23:23:59 +01:00
Andrey Antukh
71560c0a53 Backport and merge migrations from staging (#5681) 2025-01-24 19:11:03 +01:00
Eva Marco
48132711b6 Merge pull request #5672 from penpot/superalex-fix-viewer-forward-button-not-working
🐛 Fix view modem forward button not working
2025-01-24 13:58:07 +01:00
Alejandro Alonso
cf53e0d233 🐛 Fix view modem forward button not working 2025-01-24 12:17:22 +01:00
Alonso Torres
7458a35f31 🐛 Fix problem when pasting text (#5671) 2025-01-24 11:26:06 +01:00
Eva Marco
231d875f79 🐛 Fix stroke token errors (#5661)
* 🐛 Fix change on any stroke attribute remove tokens

* 🐛 Fix add new stroke, reorder stroke or remove stroke should remove applied tokens

* 📎 Review fixes
2025-01-24 11:24:26 +01:00
Marina López
25b89ec59f 🐛 added title to workspace page list to display long names 2025-01-24 10:36:09 +01:00
Florian Schroedl
19daffd1c0 Implement drag & drop for set groups
🚧 PR feedback

♻️ Remove unused functions

♻️ Throw on non-allowed changes

🚧 key fixes

🚧 Fix tests

🚧 FMT

🚧 Add set group test

🚧 Remove 'drop' in name

🚧 Add group tests

🚧 FMT

🚧 Always return changes
2025-01-24 09:50:50 +01:00
Andrey Antukh
32f0da7514 🐛 Fix color wrapper choppiness (#5655)
* ♻️ Remove unused state om tokens colorpicker ramp component

* 🐛 Fix color wrapper choppiness

*  Add performance related changes for colorpicker ramp selector

*  Add performance oriented changes to tokens ramp component

---------

Co-authored-by: Andrey Fedorov <oran9e.red@gmail.com>
2025-01-24 09:37:11 +01:00
Alejandro Alonso
f70b05a09e 🐛 Fix blend modes for wasm render 2025-01-24 09:17:46 +01:00
Alejandro Alonso
e7c06fed22 🎉 Improve clipping objects for wasm render 2025-01-24 09:15:41 +01:00
Pablo Alba
2ef22ecd08 🐛 Add migration fixing files with shape-ref cycles (#5663)
* 🐛 Add migration fixing files with shape-ref cycles

* :wip: Add optimized version of migration 62

---------

Co-authored-by: Andrey Antukh <niwi@niwi.nz>
2025-01-23 17:28:13 +01:00
luisδμ
cf25614afb Merge pull request #5662 from penpot/alotor-update-docs
📚 Update devenv documentation
2025-01-23 15:52:18 +01:00
alonso.torres
10f977b6c8 📚 Update devenv documentation 2025-01-23 15:41:49 +01:00
Andrey Antukh
9c60d1cdf9 Merge pull request #5660 from penpot/palba-consolidate-share-workspace
🎉 Consolidate add share button to the workspace
2025-01-23 13:06:16 +01:00
Andrey Antukh
dae7b7cd74 Merge remote-tracking branch 'origin/staging' into develop 2025-01-23 12:53:03 +01:00
Andrey Antukh
080dc4b93c Merge remote-tracking branch 'origin/main' into staging 2025-01-23 12:42:04 +01:00
Andrey Antukh
a123cc4bbe Merge pull request #5653 from penpot/xaviju-9132-implement-metrics
 Add tokens metrics events
2025-01-23 12:37:08 +01:00
Pablo Alba
f0966070eb 🎉 Consolidate add share button to the workspace 2025-01-23 12:33:58 +01:00
Andrey Antukh
ce9d283b7c Merge pull request #5659 from penpot/alotor-storybook-config
🔧 Improved storybook configuration
2025-01-23 12:23:44 +01:00
alonso.torres
33e8c8b3c9 🔧 Improved storybook configuration 2025-01-23 12:06:02 +01:00
Xaviju
7eb9142a4d Add tokens metrics events 2025-01-23 12:00:50 +01:00
Andrey Antukh
b1d053893c 📚 Add minor improvement to plugins creation documentation 2025-01-23 11:36:27 +01:00
Eva Marco
83fe2f35b4 Merge pull request #5647 from penpot/eva-fix-not-referenced-tokens
🐛  Fix not referenced token pills
2025-01-23 11:08:54 +01:00
Belén Albeza
c303b062cb Merge pull request #5645 from penpot/superalex-drag-and-drop-nested-frames
🐛 Fix render wasm frames anidated content drag and drop
2025-01-23 11:04:08 +01:00
Belén Albeza
91990e4e29 Merge pull request #5635 from penpot/superalex-render-wasm-fix-frames-anidated-content
🐛 Fix render wasm frames nested content issues
2025-01-23 11:00:27 +01:00
Andrey Antukh
c2fb9f4c6f 📎 Add missing entry on the changelog file 2025-01-23 10:49:09 +01:00
luisδμ
1787653703 Merge pull request #5646 from penpot/ddb-frame-fit-content
 Resize frame to fit content
2025-01-23 09:56:11 +01:00
Alejandro
19a26e46dc Merge pull request #5654 from penpot/niwinz-clone-template-bug
🐛 Add support for multiple file formats to clone-template
2025-01-23 09:01:39 +01:00
Andrey Antukh
efd4a11ae2 🐛 Add support for multiple formats on clone-template 2025-01-23 08:09:23 +01:00
Andrey Antukh
68bd8152b8 Merge pull request #5633 from penpot/eva-remove-tokens-from-measures
🐛  Fix errors from editable select on measures menu
2025-01-22 18:58:54 +01:00
Eva Marco
9e47a70adf 🐛 Fix errors from editable select on measures menu 2025-01-22 18:20:49 +01:00
Andrey Antukh
fae73a198c Merge remote-tracking branch 'origin/main' into staging 2025-01-22 17:44:24 +01:00
Andrey Antukh
361644b62c Merge pull request #5639 from penpot/superalex-fix-shadows-order
🐛 Fix shadows order
2025-01-22 17:41:33 +01:00
Andrey Antukh
6be1023c0a Merge tag '2.4.2' 2025-01-22 16:34:37 +01:00
Andrey Antukh
778b3dd6bd Merge remote-tracking branch 'origin/staging' into develop 2025-01-22 16:10:32 +01:00
Andrey Antukh
9bfee99672 Merge remote-tracking branch 'origin/main' into staging 2025-01-22 16:10:17 +01:00
Andrey Antukh
7ca98ddf21 📎 Add missing entry on changelog 2025-01-22 16:07:07 +01:00
Alejandro Alonso
5be92009bc 🐛 Fix extra rotations for frames contained elements with wasm render 2025-01-22 16:06:34 +01:00
Pablo Alba
15157c54b1 🐛 Fix shape-ref cycles 2025-01-22 16:05:50 +01:00
Eva Marco
a667256be9 ♻️ Fix some css errors 2025-01-22 15:56:43 +01:00
Eva Marco
482cb26b1a 🐛 Fix lost translation 2025-01-22 15:56:43 +01:00
Eva Marco
cd6e254edb 🐛 Fix broken reference pills 2025-01-22 15:56:34 +01:00
Belén Albeza
69cc72de61 Merge pull request #5447 from penpot/superalex-svg-render-wasm
🎉 SVG raw support and refactor render architecture
2025-01-22 15:56:02 +01:00
Pablo Alba
85d3a052c9 Merge pull request #5641 from penpot/palba-fix-shape-ref-cycle
🐛 Fix shape-ref cycles
2025-01-22 15:48:01 +01:00
AzazelN28
fb4e92d0e8 ♻️ Refactor to make it more ECS friendly 2025-01-22 15:47:36 +01:00
Alejandro Alonso
79df616108 🎉 Basic wasm support for svg attrs and svg defs 2025-01-22 15:47:36 +01:00
Alejandro Alonso
751df46dc9 🎉 Basic wasm fonts support 2025-01-22 15:46:23 +01:00
Alejandro Alonso
6335a183ba 🎉 Improve error messages 2025-01-22 15:46:23 +01:00
Alejandro Alonso
00e19697c6 🎉 Update editorconfig 2025-01-22 15:46:23 +01:00
alonso.torres
f9700eb32e Resize frame to fit content 2025-01-22 14:45:29 +01:00
Yamila Moreno
240f658c3a Merge pull request #5643 from penpot/yms-fix-docker-compose-configuration
🐳 fix docker compose documentation
2025-01-22 14:33:00 +01:00
Pablo Alba
7592530fb4 🐛 Fix shape-ref cycles 2025-01-22 14:08:32 +01:00
Alejandro Alonso
0feb0b0b81 🐛 Fix render wasm frames anidated content drag and drop 2025-01-22 14:03:10 +01:00
Belén Albeza
6573311aab Merge pull request #5642 from penpot/superalex-fix-board-titles-moving-when-drag-and-drop
🐛 Fix board titles movement when drag and drop using render wasm
2025-01-22 14:02:03 +01:00
Alejandro
d046feef28 Merge pull request #5644 from penpot/ladybenko-9784-fix-set-path-content
🐛 Fix crash on set-shape-path-content
2025-01-22 13:55:12 +01:00
Belén Albeza
15b5346922 🐛 Fix crash on set-shape-path-content 2025-01-22 13:40:57 +01:00
Yamila Moreno
31bc7e7c86 🐳 add advice for unsecure configuration 2025-01-22 13:34:48 +01:00
Alejandro Alonso
d987d68565 🐛 Fix board titles movement when drag and drop using render wasm 2025-01-22 12:23:21 +01:00
Yamila Moreno
b3a5e6710f 🐳 improve docs about custom configuration 2025-01-22 12:21:13 +01:00
David Barragán Merino
845f187690 Merge pull request #5630 from penpot/bameda-fix-docker-concurrency-issues
🐳 Ensure that postgresql and redis are running before starting Penpot services
2025-01-22 10:03:26 +01:00
Andrey Antukh
e01feab6c3 Merge pull request #5640 from penpot/superalex-fix-dump-selected
🐛 Fix debug.dump_selected()
2025-01-22 09:29:07 +01:00
Alejandro Alonso
625cfa4c97 🐛 Fix debug.dump_selected() 2025-01-22 08:24:50 +01:00
Alejandro Alonso
35b442d6a7 🐛 Fix shadows order 2025-01-22 07:58:25 +01:00
Andrey Antukh
83bd479176 Merge remote-tracking branch 'origin/staging' into develop 2025-01-21 18:40:28 +01:00
Eva Marco
a79f6a9946 Merge pull request #5634 from tokens-studio/florian/36-stroke-width
🐛 Fix stroke width not updating when applied from dimensions context …
2025-01-21 16:06:08 +01:00
Florian Schroedl
d82ac56d43 🐛 Fix stroke width not updating when applied from dimensions context menu 2025-01-21 14:24:32 +01:00
Eva Marco
aa46ea693e Merge pull request #5629 from penpot/eva-fix-pill-styles
🐛  Fix some styles on token pills
2025-01-21 13:56:24 +01:00
David Barragán Merino
c0c3c60645 🐳 Ensure that postgresql and redis are running before starting Penpot services 2025-01-21 11:40:34 +01:00
Xaviju
ad7dc5bed6 📚 Add semantics and accessibility requirements - review 2025-01-21 11:35:01 +01:00
Eva Marco
23f00e9fe7 🐛 Fix some styles on token pills 2025-01-21 11:09:07 +01:00
Pablo Alba
232b29cd89 Merge pull request #5627 from penpot/niwinz-file-gc-improvements
 Minor improvements to file-gc code merged in other commit
2025-01-21 09:58:29 +01:00
Andrey Antukh
642efcb47b Merge remote-tracking branch 'origin/staging' into develop 2025-01-20 23:29:54 +01:00
Andrey Antukh
da0704081f 📎 Normalize default opts for db/plan function 2025-01-20 23:23:31 +01:00
Andrey Antukh
066b1235a6 🐛 Pass correct default options on db/plan fn 2025-01-20 23:23:31 +01:00
Pablo Alba
141694dc8d Merge pull request #5598 from penpot/niwinz-file-gc-improvements
 Add efficiency improvements to file-gc task
2025-01-20 21:14:32 +01:00
Andrey Antukh
6ef6a50a1c Merge remote-tracking branch 'origin/staging' into develop 2025-01-20 17:34:21 +01:00
Andrey Antukh
aac52d70bc Merge pull request #5604 from penpot/eva-add-viewer-role-on-tokens 2025-01-20 17:20:04 +01:00
Andrei Fëdorov
69cb70a5ae 🐛 Fix issue where users can import tokens with invalid characters (#5623) 2025-01-20 17:13:58 +01:00
Eva Marco
b406a28d34 Add viewer role to token sets 2025-01-20 17:04:21 +01:00
Eva Marco
ec49ff2878 Add viewer role to token list 2025-01-20 17:04:21 +01:00
Eva Marco
3e2a6d7e0b Add viewer role to theme selection 2025-01-20 17:04:18 +01:00
Eva Marco
554311cd1f 🐛 Fix error with context-menu icon 2025-01-20 17:01:17 +01:00
Andrey Antukh
1395629e5a Merge pull request #5625 from penpot/eva-fix-long-token-names 2025-01-20 16:38:24 +01:00
Andrey Antukh
85c1de4bda Merge pull request #5624 from penpot/yms-update-selfhosting-guide
🐳 improve docker documentation related to the updates
2025-01-20 16:36:40 +01:00
Andrey Antukh
151aedcf91 ♻️ Make the components cleaning mechanism on file-gc task more efficient 2025-01-20 16:35:14 +01:00
Andrey Antukh
5513daf17d ♻️ Make the media cleaning mechanism on file-gc task more efficient
Replaces the use of db/cursor with db/plan, that teorethically allows
processing large results without consuming all result set in memory
2025-01-20 16:34:05 +01:00
Andrey Antukh
fde0f3c182 🐛 Pass correct default options on db/plan fn 2025-01-20 16:34:05 +01:00
Belén Albeza
3be11e853b Merge pull request #5606 from penpot/superalex-fix-outer-stroke-with-image-fill-artifacts
🐛 Fix outer stroke with image fill extra artifacts
2025-01-20 16:12:21 +01:00
Eva Marco
afcaee62f4 🐛 Add ellipsis to token name after groups if any 2025-01-20 15:51:07 +01:00
Yamila Moreno
d3ad15f19a 🐳 improve docker documentation related to the updates 2025-01-20 15:39:44 +01:00
Andrey Antukh
8dd0a4f275 Merge pull request #5603 from penpot/palba-bugfixing-04
Palba bugfixing 04
2025-01-20 15:36:19 +01:00
Aitor Moreno
7b408e4db1 Merge pull request #5622 from penpot/niwinz-api-doc-fix
🐛 Fix api docs page issue
2025-01-20 15:21:45 +01:00
Aitor Moreno
013a8c95df Merge pull request #5605 from penpot/niwinz-enhancements-2
 Add performance enhacements
2025-01-20 13:22:07 +01:00
Alejandro
47294dbd65 Merge pull request #5615 from penpot/ladybenko-wasm-cleanup
🐛 Fix WebGL warning when switching pages
2025-01-20 12:50:54 +01:00
Pablo Alba
b8fd829f9d Merge pull request #5621 from penpot/marina/testab-hover-state-add-file
 A/B test switching '+' to 'Add file' in an empty project
2025-01-20 12:49:19 +01:00
Belén Albeza
2f80d337ad 🐛 Fix WebGL warning when switching pages 2025-01-20 12:41:39 +01:00
Andrey Antukh
089a66881c Make frontend app setup logging message more easy to be read
Mainly printing flag per line, making it more easily for human eye look
if some feature is active or not
2025-01-20 12:40:28 +01:00
Andrey Antukh
402eacdb22 Merge remote-tracking branch 'origin/staging' into develop 2025-01-20 12:38:23 +01:00
Andrey Antukh
667b5fb6ee 🐛 Fix missing methods reference from api docs page 2025-01-20 12:30:20 +01:00
Andrey Antukh
f0f89151c5 Merge pull request #5620 from penpot/palba-consolidate-board-icon-change
Consolidate board icon change
2025-01-20 12:22:07 +01:00
Andrey Antukh
1221d60357 Merge pull request #5617 from penpot/alotor-hotfix-plugins
🐛 Fix problem in plugins with `replaceColor` method
2025-01-20 12:21:16 +01:00
alonso.torres
f553fa10d8 🐛 Fix problem in plugins with replaceColor method 2025-01-20 12:02:54 +01:00
Marina López
96947b0219 A/B test switching '+' to 'Add file' in an empty project 2025-01-20 11:56:15 +01:00
Pablo Alba
e2900d9012 🎉 Change of boards icon 2025-01-20 11:07:13 +01:00
Andrey Antukh
12ec3b4942 Merge remote-tracking branch 'origin/staging' into develop 2025-01-20 11:06:26 +01:00
Pablo Alba
1f0e470419 Revert "🎉 Add A/B test of use of boards if we just change the icon for “standard” one"
This reverts commit 0c586551c4.
2025-01-20 11:06:25 +01:00
Pablo Alba
21f4abf1b8 🐛 Fix history panel doesn't close on esc 2025-01-20 11:02:32 +01:00
Andrey Antukh
079a945c2f Merge branch 'main' into staging 2025-01-20 11:02:08 +01:00
Madalena Melo
542d709541 📚 Add viewer role documentation
Add viewer role to the team roles; also made some tweaks to the descriptions of the other roles
2025-01-20 11:01:38 +01:00
Madalena Melo
4f1d5a19e4 Change the order to add clarity to admin and owner roles
Switched the order of the roles to make it more logical and add more clarity about admins and owners ability to edit
2025-01-20 10:26:52 +01:00
Madalena Melo
91b0c47244 Add detail to role descriptions
Added more context to each role's description; I tried to keep it brief while including more information about what each role can do both within the team as well as in terms of team management
2025-01-20 10:26:46 +01:00
Madalena Melo
a7a49e4b39 Viewer Role - Update index.njk
Add viewer role to the team roles; also made some tweaks to the descriptions of the other roles
2025-01-20 10:26:39 +01:00
Andrey Antukh
83838eed8c Merge remote-tracking branch 'origin/staging' into develop 2025-01-20 09:56:08 +01:00
Alejandro Alonso
5f4f7e422d 🐛 Fix outer stroke with image fill extra artifacts 2025-01-20 09:47:32 +01:00
Andrey Antukh
e2b054bbd1 Merge pull request #5569 from penpot/hiru-export-tokens 2025-01-17 15:45:39 +01:00
Andrés Moya
42d2315f37 🎉 Include tokens library in .penpot files 2025-01-17 15:28:10 +01:00
Andrey Antukh
8bb0a5b28f Merge pull request #5616 from penpot/alotor-bugs-3 2025-01-17 15:25:13 +01:00
Andrey Antukh
ba81b2b14d Merge pull request #5613 from penpot/superalex-fix-staging-reply-to-comment
🐛 Fix reply to comment
2025-01-17 15:23:28 +01:00
Andrey Antukh
a8fd492748 Merge pull request #5612 from penpot/superalex-fix-delete-page
🐛 Fix delete page navigation to first page
2025-01-17 15:22:20 +01:00
alonso.torres
52e5978ed5 🐛 Fix problem with strokes not refreshing in Safari 2025-01-17 14:33:46 +01:00
alonso.torres
e0281b553c 🐛 Fix error when reseting stroke cap 2025-01-17 14:31:02 +01:00
alonso.torres
34a2a8815b 🐛 Fix problem with alt key measures being stuck 2025-01-17 12:30:27 +01:00
Alejandro Alonso
6c25e18f09 🐛 Fix delete page navigation to first page 2025-01-17 12:19:22 +01:00
Alejandro Alonso
423c237d42 🐛 Fix reply to comment 2025-01-17 11:57:44 +01:00
Andrey Antukh
77477e09a2 Merge pull request #5611 from penpot/translations
📎 Update translations
2025-01-17 10:52:38 +01:00
Andrey Antukh
59c877aac0 Merge remote-tracking branch 'weblate/develop' into translations 2025-01-17 10:42:31 +01:00
Andrey Antukh
2a63f8e966 Add performance oriented refactor on colorpicker libraries component 2025-01-16 21:33:11 +01:00
Andrey Antukh
de2475cca6 Add performance oriented refactor to color palette context menu 2025-01-16 21:04:57 +01:00
Andrey Antukh
068dd5f4bc Add performance oriented refactor for color palette components 2025-01-16 21:04:49 +01:00
Denys Kisil
505a2ecb40 🌐 Add translations for: Ukrainian (ukr_UA).
Currently translated at 99.1% (1582 of 1595 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/
2025-01-16 20:00:42 +01:00
Andrey Antukh
4389750c54 Merge pull request #5596 from penpot/xaviju-9419-swatch-storybook
[TOKENS] 📚 Add gradients to storybook swatch component
2025-01-16 19:00:05 +01:00
Andrey Antukh
6d666c4926 🐛 Fix not properly display library color 2025-01-16 18:58:48 +01:00
Andrey Antukh
f32531b39f ♻️ Refactor how click is handled on assets panel
Remove deep partial application with simple return value signal
if default click handler is intercepted or not.
2025-01-16 18:58:45 +01:00
Andrey Antukh
99d7b7ebf8 ♻️ Use correct function for color transformation
Regression introduced in previous refactor PR
2025-01-16 17:58:04 +01:00
Andrey Antukh
42acdbd135 ♻️ Reorganize common types tests 2025-01-16 17:55:28 +01:00
Andrey Antukh
6b3f70e94b Remove props conversion overhead from measures-menu component 2025-01-16 15:45:14 +01:00
Andrey Antukh
ef7fbc09b0 Add minor optimization to type->options resolution on measures-menu 2025-01-16 15:45:14 +01:00
Andrey Antukh
0b18177925 Add efficiency optimizations to frame options component 2025-01-16 15:45:14 +01:00
Andrey Antukh
9b2315d39d Remove props conversion overhead on shape-options component
With using new rumext call convention with :> handler and * on the
component name.
2025-01-16 15:45:14 +01:00
Andrey Antukh
12fa4fdef5 💄 Add cosmetic changes to common libraries logic ns 2025-01-16 15:45:14 +01:00
Andrey Antukh
e7b0e253d4 Use new convention for components for workspace right and left sidebar 2025-01-16 15:45:14 +01:00
Andrey Antukh
b6aaba456e Merge pull request #5493 from penpot/niwinz-enhancements-1
♻️ Refactor state locality
2025-01-16 15:44:40 +01:00
Andrey Antukh
85746e7cb2 ♻️ Refactor state locality
The main purpose of this refactor is reduce
a custom state from different pages and unify
them under common access patterns
2025-01-16 15:31:18 +01:00
Andrey Antukh
f62aecb383 🐛 Fix incompatibility of binfile exportation with offload feature 2025-01-16 14:37:55 +01:00
Xaviju
c788c9be7a 📚 Add gradients to storybook swatch component 2025-01-16 14:10:36 +01:00
Pablo Alba
fc4221b047 🐛 Fix missing cleanup of storage on bad plugin url 2025-01-16 12:57:28 +01:00
Andrei Fëdorov
5793c526c0 🐛 Fix token file import of Figma generated file (#5591)
* 🐛 Fix token sets selection representation in exported theme

* 🐛 Fix the loss of token set order

* 🐛 Change data shape according to internal representaion

* 🐛 Persist sets order on import according to metadata

* 🐛 Add fallback for nil values

* 🐛 Fix test assertions accoding to the exported json format

* 🐛 Make `:is-source` optional

* ♻️ Fix test description

* ♻️ Remove outdated comment
2025-01-16 12:38:03 +01:00
Andrey Antukh
cf82e42125 Merge remote-tracking branch 'origin/staging' into develop 2025-01-16 12:23:50 +01:00
Andrey Antukh
5a55884b9f Merge pull request #5602 from penpot/hiru-fix-detach-2
🐛 Fix detach when top copy is dangling and nested copy is not
2025-01-16 12:21:33 +01:00
Andrey Antukh
9594e72bef Merge remote-tracking branch 'origin/staging' into develop 2025-01-16 12:20:45 +01:00
Andrey Antukh
38fd343c53 Merge remote-tracking branch 'origin/main' into staging 2025-01-16 12:20:27 +01:00
adi-lb-phoenix
94976aa2b1 📚 Fix incorrect flag on configuration.md 2025-01-16 12:19:03 +01:00
Andrés Moya
5247d217ab 🐛 Fix detach when top copy is dangling and nested copy is not 2025-01-16 10:45:54 +01:00
Andrey Antukh
cb650ebf1c Merge remote-tracking branch 'origin/staging' into develop 2025-01-16 10:45:22 +01:00
Andrey Antukh
40693e6857 🐛 Make the PENPOT_SECRET_KEY optional
Fix a regression introduced with 2.4
2025-01-16 09:59:19 +01:00
Andrey Antukh
5c428b5aa5 🐛 Fix repeated password update on login
because the default options were not being passed in the verification
2025-01-16 09:59:19 +01:00
Andrey Antukh
e92ddee33a 🐳 Move devenv secret key env asignation to scripts
from the docker compose
2025-01-16 09:59:19 +01:00
Andrey Antukh
0c47400802 Merge pull request #5595 from penpot/hiru-fix-detach
🐛 Fix detach when top copy is dangling and nested copy is not
2025-01-15 16:21:12 +01:00
Andrey Antukh
b81f4e913f Merge pull request #5581 from penpot/eva-fix-broken-token-context-menu 2025-01-15 16:18:05 +01:00
luisδμ
66f8ac44e4 Merge pull request #5597 from penpot/fix-problem-comment-area
🐛 Fix problem growing text area
2025-01-15 15:41:12 +01:00
Andrés Moya
933f4410d2 🐛 Fix detach when top copy is dangling and nested copy is not 2025-01-15 15:26:39 +01:00
alonso.torres
007740c106 🐛 Fix problem growing text area 2025-01-15 15:00:11 +01:00
Xaviju
e1b85c8fe6 📚 Add semantics and accessibility requirements 2025-01-15 10:25:07 +01:00
Eva Marco
c121f459ba Merge pull request #5571 from penpot/andy-docs-radius
📚 Change term for border radius
2025-01-15 10:18:05 +01:00
Juanfran
04c8063b4e Merge pull request #5590 from penpot/juanfran-add-set-name-to-tokens-panel-list
[Tokens]  Add set name to tokens panel list
2025-01-15 09:34:47 +01:00
Juanfran
ccbb233866 Add set name to tokens panel list 2025-01-15 09:18:28 +01:00
Andrey Antukh
a55945d7b1 Merge remote-tracking branch 'origin/staging' into develop 2025-01-14 17:47:54 +01:00
Andrey Antukh
698a258290 Merge remote-tracking branch 'origin/main' into staging 2025-01-14 17:47:32 +01:00
Yamila Moreno
aa023d847d 🐳 Set correct internal url frontend url for exporter 2025-01-14 17:37:14 +01:00
Pablo Alba
e106f66ac6 Keep plugin url when user is not logged 2025-01-14 17:31:09 +01:00
Pablo Alba
2f5f31814a 🎉 Allow import a template from a link 2025-01-14 17:31:09 +01:00
Andrey Antukh
53f57dad0b Merge pull request #5575 from penpot/azazeln28-fix-text-editor-issue-9285
🐛 Fix text editor copy/paste issue
2025-01-14 16:50:34 +01:00
luisδμ
0d70ceb264 Merge pull request #5584 from penpot/ddb-comments-fixes
 Open comments from email with parameter
2025-01-14 16:44:19 +01:00
luisδμ
720af06296 Merge pull request #5576 from penpot/ddb-copy-paste-props
 Copy/paste properties an CSS
2025-01-14 16:43:52 +01:00
alonso.torres
920638a149 Open comments from email with parameter 2025-01-14 16:28:48 +01:00
alonso.torres
714a274789 Copy/paste properties an CSS 2025-01-14 16:09:42 +01:00
Andrey Antukh
80d6968156 Merge pull request #5557 from penpot/niwinz-enhancements-4
 Add the ability to export helpers for storybook
2025-01-14 15:38:26 +01:00
Belén Albeza
4d4bf1edd1 Merge pull request #5529 from penpot/azazeln28-refactor-panning-perf
♻️ Refactor panning perf
2025-01-14 15:26:03 +01:00
Eva Marco
68a0d74f0e 🐛 Fix text ellipsis on long token names and grouped tokens 2025-01-14 13:21:42 +01:00
Stas Haas
e7a7db15fb 🌐 Add translations for: German.
Currently translated at 94.3% (1505 of 1595 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/
2025-01-14 13:00:43 +01:00
Andrey Antukh
55cbc98e55 Add the ability to export helpers for storybook
Also add a note for how pass complex objects on swatch component
2025-01-14 12:43:12 +01:00
Aitor Moreno
97946fc847 Merge pull request #5538 from penpot/ladybenko-rounded-corners
🎉 Rounded corners for rects (wasm)
2025-01-14 12:34:33 +01:00
Belén Albeza
6e7a8c239c 🎉 Implement rounded corners 2025-01-14 11:26:38 +01:00
AzazelN28
d7d7535ab4 🐛 Fix text editor copy/paste issue 2025-01-14 11:20:38 +01:00
Andrey Antukh
cd630862d2 Merge pull request #5582 from penpot/niwinz-merge-staging-1
Merge staging into develop
2025-01-14 10:47:25 +01:00
Andrey Antukh
c3d4444c0c Merge remote-tracking branch 'origin/staging' into niwinz-merge-staging-1 2025-01-14 10:35:34 +01:00
Eva Marco
6eea633ca9 🐛 Fix some problems with error handling 2025-01-14 10:24:04 +01:00
Eva Marco
dea866d3a3 🐛 Show icon on broken color reference instead of swatch 2025-01-14 10:07:09 +01:00
Eva Marco
5ce4b0a927 🐛 Delete empty or fuzzy translations 2025-01-14 10:05:12 +01:00
Pablo Alba
accc662e1c 🐛 Fix login is not shown on 404 2025-01-14 09:51:12 +01:00
Andrey Antukh
576c912c81 Merge pull request #5574 from penpot/luis-9234-visual-changes-in-comments-fixes
🐛 Fixes several bugs related to new comments
2025-01-13 17:55:34 +01:00
luisddm
658c3309a5 ♻️ Use recommended rumext syntax 2025-01-13 16:55:44 +01:00
AzazelN28
10b32de447 ♻️ Refactor panning/zoom rendering 2025-01-13 15:53:23 +01:00
andy
1efc1516e2 📚 Change term for border radius 2025-01-13 15:53:06 +01:00
luisddm
63c3b9987b 🐛 Fix multiline input in comments 2025-01-13 15:14:15 +01:00
Andrey Antukh
a5b2f0e4c3 Merge pull request #5567 from penpot/juanfran-add-component-testing-to-ci
 add component testing to CI
2025-01-13 15:00:39 +01:00
Xaviju
aa9f5fc18f ♻️ Add new swatch size 2025-01-13 14:40:33 +01:00
Eva Marco
9aec9fe6c5 Merge pull request #5570 from penpot/yms-fix-typo
📎 fix typo
2025-01-13 14:14:54 +01:00
Andrey Antukh
b7e6af5538 Merge pull request #5549 from penpot/superalex-fix-strokes-dont-update-correctly
🐛 Fix strokes don't update correctly
2025-01-13 13:42:46 +01:00
Juanfran
7b2c17cc97 Add component testing to CI 2025-01-13 13:24:07 +01:00
Yamila Moreno
780f97216a 📎 fix typo 2025-01-13 13:20:49 +01:00
Andrey Antukh
bebc189061 📎 Clear cache on watch:app and build:app scripts 2025-01-13 13:14:39 +01:00
Alejandro Alonso
642b6b1621 🐛 Fix strokes don't update correctly 2025-01-13 13:14:39 +01:00
luisddm
1662fe5b01 🐛 Fix bubbles getting displaced when thread does not fit in viewport 2025-01-13 12:50:19 +01:00
luisddm
3518f8160c 🐛 Fix passing clojure map as js map 2025-01-13 11:24:32 +01:00
Alejandro
b5d731ca72 Merge pull request #5559 from penpot/palba-fix-flags-not-setting-login
🐛 Fix feature flags not setting on login
2025-01-13 10:57:37 +01:00
Eva Marco
3af44641de Merge pull request #5566 from penpot/juanfran-storybook-icon-id-prop-fix
🐛 fix icon id prop in storybook
2025-01-13 10:48:01 +01:00
Alejandro
be9c4cc96e Merge pull request #5556 from penpot/niwinz-enhancements-3
 Minor enhancements and rumext reverts
2025-01-13 10:42:05 +01:00
Juanfran
a8105f4a0c 🐛 fix icon id prop in storybook 2025-01-13 10:23:42 +01:00
Belén Albeza
307834b276 Merge pull request #5553 from penpot/niwinz-bugfix-4
Fix incorrect navigate event on component show main instance action
2025-01-13 09:53:28 +01:00
Belén Albeza
10f2d5d09d Merge pull request #5534 from penpot/superalex-render-wasm-blur-support
🎉 Render wasm blur support
2025-01-13 09:42:53 +01:00
Alejandro Alonso
7cc33b1a1a 🎉 Render wasm blur support 2025-01-13 07:48:11 +01:00
Pablo Alba
e380289e34 🐛 Fix feature flags not setting on login 2025-01-10 21:25:55 +01:00
Andrey Antukh
717c447f32 ⬆️ Update rumext to v2.20
It includes:

- a revert for recursive transformations for :> handler
- a revert for use-state stable reference handling
- a partial support for malli decoding on props validation
2025-01-10 17:12:06 +01:00
Andrey Antukh
1e20fd7bb6 Log old id on importing binfile-v3 media entries 2025-01-10 17:08:03 +01:00
Andrey Antukh
ff4f0ca1d2 Merge pull request #5554 from penpot/eva-fix-token-status-icon
🐛  Fix token status icon id
2025-01-10 16:02:26 +01:00
Eva Marco
cac323d6b1 🐛 Fix token status icon id 2025-01-10 15:42:40 +01:00
Andrey Antukh
b22323a484 Merge pull request #5547 from penpot/alotor-bugs-1
🐛 Fix problem when changing color libraries
2025-01-10 15:16:01 +01:00
Andrey Antukh
c18a9e5e04 💄 Add minor cosmetic changes to components context menu 2025-01-10 15:10:29 +01:00
Andrey Antukh
4c6e0c1651 🐛 Fix incorrect navegation event to component main instance
when the main instance is located in the same file but a different
page
2025-01-10 15:09:30 +01:00
Andrey Antukh
ceb10bd43c Merge remote-tracking branch 'origin/staging' into develop 2025-01-10 15:01:32 +01:00
Eva Marco
7c2ccb77ae Merge pull request #5552 from penpot/juanfran-toast-storybook-input-error
🐛 fix storybook toast icon prop name
2025-01-10 14:53:40 +01:00
Juanfran
58563f9d54 🐛 fix storybook toast icon prop name 2025-01-10 14:44:50 +01:00
Andrey Antukh
356a28bd7b Merge pull request #5546 from penpot/ladybenko-9061-fix-group-blur
🐛 Fix group blur toggle button icon not updating
2025-01-10 14:38:10 +01:00
Andrey Antukh
1e5af82e03 Merge pull request #5550 from penpot/eva-token-merge-regresion
🐛 Fix regresion on icon* id because of token merge
2025-01-10 14:35:20 +01:00
Eva Marco
0d9db14293 🐛 Fix regresion on icon* id because of token merge 2025-01-10 14:22:33 +01:00
Eva Marco
617a1060a9 Merge pull request #5541 from penpot/fix/juanfran-fix-combobox-design-review
🐛 design review t#9539
2025-01-10 14:14:47 +01:00
Amerey.eu
a83798a773 🌐 Add translations for: Czech.
Currently translated at 98.9% (1579 of 1595 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/cs/
2025-01-10 14:00:33 +01:00
Nicola Bortoletto
0224626f80 🌐 Add translations for: Italian.
Currently translated at 99.1% (1582 of 1595 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/it/
2025-01-10 14:00:32 +01:00
Marina López
decec5d152 Merge pull request #5548 from penpot/alotor-bugs-2
🐛 Fix problem selecting shapes wont expand parent
2025-01-10 13:22:27 +01:00
alonso.torres
0f7e06207c 🐛 Fix problem selecting shapes wont expand parent 2025-01-10 13:09:10 +01:00
Juanfran
a69e671a90 🐛 design review t#9539 2025-01-10 12:55:56 +01:00
Marina López
eba2ef91e6 Merge pull request #5544 from penpot/eva-fix-collapsable-button
🐛  Fix collapsable button icon id
2025-01-10 12:48:33 +01:00
alonso.torres
58dd23f9c7 🐛 Fix problem when changing color libraries 2025-01-10 12:33:16 +01:00
Andrey Antukh
54e7551d56 🐛 Backport comments decoding from develop
Mainly for backward compatibility with database
layout on comments tables from develop / v2.5
2025-01-10 12:20:53 +01:00
Belén Albeza
a71fdd091a 🐛 Fix group blur toggle button icon not updating 2025-01-10 12:14:22 +01:00
Eva Marco
6d34ce58fa 🐛 Fix collapsable button icon id 2025-01-10 11:55:54 +01:00
Andrey Antukh
06c5bbb1ba Merge remote-tracking branch 'origin/staging' into develop 2025-01-10 11:53:46 +01:00
Andrey Antukh
fb84e6d00d Merge pull request #5531 from penpot/marina/improve-zoom-to-frame
🐛 Avoid loading the overview before zoom to frame
2025-01-10 11:00:21 +01:00
Andrey Antukh
50125fe264 🎉 Merge tokens-studio/develoo into develop
commit 82cdf41cc0
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Jan 9 18:43:35 2025 +0100

    💄 Fix lint

commit 29a9d39ecb
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Jan 9 18:34:07 2025 +0100

    🔧 Disable broken test

commit 41e6471cc6
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Jan 9 18:24:06 2025 +0100

    🐛 Small fix

commit 6a68411120
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Jan 9 18:06:23 2025 +0100

     Some code enhancements

commit 170a51f9e5
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Jan 9 14:52:24 2025 +0100

    🔧 Fix merge

commit e9e468ee37
Merge: d980ff05c e5f865099
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Jan 9 14:27:19 2025 +0100

    Merge remote-tracking branch 'origin/develop' into token-studio-develop

commit e5f8650994
Merge: 7e71a26c5 74f807d53
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Jan 9 13:42:00 2025 +0100

    Merge branch 'develop' of github.com:penpot/penpot into develop

commit d980ff05cd
Author: Xaviju <xaviju@gmail.com>
Date:   Tue Jan 7 12:28:41 2025 +0100

    ♻️ refactor swatch component

commit 0c80bf76b8
Merge: a5a1d3af3 97c35a8f9
Author: Eva Marco <evamarcod@gmail.com>
Date:   Thu Jan 9 09:52:53 2025 +0100

    Merge pull request #406 from tokens-studio/eva-token-bugfixing

    Eva token bugfixing

commit a5a1d3af3c
Author: Eva Marco <evamarcod@gmail.com>
Date:   Wed Jan 8 12:25:48 2025 +0100

    🐛 Fix open border radius on token applied

commit 97c35a8f9b
Author: Eva Marco <evamarcod@gmail.com>
Date:   Wed Jan 8 14:28:33 2025 +0100

    🐛 Fix token pill on multiselect

commit 1f5903fa16
Author: Eva Marco <evamarcod@gmail.com>
Date:   Wed Jan 8 14:28:20 2025 +0100

    🐛 Fix partially applied token on Border radius

commit 791cb7e5fe
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jan 2 09:09:11 2025 +0100

     Implement set group toggling

commit d41b4b4e51
Author: Eva Marco <evamarcod@gmail.com>
Date:   Tue Jan 7 11:12:05 2025 +0100

    ♻️ Refactor border radius tooltips

commit 8a2754cae4
Merge: 3bd139286 328cc74c2
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Tue Jan 7 11:04:16 2025 +0100

    Merge pull request #402 from tokens-studio/move-sizing-before

    💄 Move spacing before sizing

commit 328cc74c2c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jan 7 10:55:08 2025 +0100

    💄 Move spacing before sizing

commit 3bd139286a
Merge: a9e20391d 1d608edb2
Author: Eva Marco <evamarcod@gmail.com>
Date:   Fri Jan 3 11:21:12 2025 +0100

    Merge pull request #399 from tokens-studio/eva-fix-border-radius-tooltip

    🐛 Fix border radius tooltip and padding on token pills

commit a9e20391d9
Merge: 6284f42a7 2a1f76ad1
Author: Eva Marco <evamarcod@gmail.com>
Date:   Fri Jan 3 11:20:58 2025 +0100

    Merge pull request #353 from tokens-studio/eva-fix-context-menu

    ♻️ Fix context menu

commit 1d608edb27
Author: Eva Marco <evamarcod@gmail.com>
Date:   Thu Jan 2 14:02:44 2025 +0100

    🐛 Fix layout error and tooltip

commit 2a1f76ad1a
Author: Eva Marco <evamarcod@gmail.com>
Date:   Fri Nov 22 13:54:41 2024 +0100

    ♻️ Fix context menu

commit 6284f42a70
Merge: 272b60969 4e22a7c03
Author: Eva Marco <evamarcod@gmail.com>
Date:   Thu Jan 2 10:36:21 2025 +0100

    Merge pull request #389 from tokens-studio/eva-fix-double-click-cancel

    🐛 Fix double click when canceling a modal

commit 272b609691
Merge: 71f656cc5 f867cb110
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Thu Jan 2 08:53:13 2025 +0100

    Merge pull request #392 from tokens-studio/andrei/338-fix-positioning-of-a-stroke-created-by-token-application

     Change default storke alignment if it's created by token

commit f867cb110f
Author: Andrey Fedorov <oran9e.red@gmail.com>
Date:   Wed Dec 18 10:02:31 2024 +0100

     Fix stroke alignment test

commit f1034c6bcb
Author: Andrey Fedorov <oran9e.red@gmail.com>
Date:   Wed Dec 18 09:53:55 2024 +0100

     Change default storke alignment if it's created by token application

commit 71f656cc5e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Dec 13 15:45:25 2024 +0100

    🐛 Fix sets breaking from merge

commit fa642d7717
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Dec 13 13:07:34 2024 +0100

    🐛 Fix CI breaking

commit 17a873e9f8
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Fri Dec 13 15:01:22 2024 +0100

    🔧 Restore some things broken in merge

commit d70b101aa1
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Fri Dec 13 13:12:21 2024 +0100

    🔧 A little cleanup

commit d453b584ee
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Fri Dec 13 11:30:21 2024 +0100

    🎉 Add script to un CI tests in dev env

commit 78819c68c9
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Fri Dec 13 11:19:18 2024 +0100

    🐛 Fix border radius and fills tokens

commit 4e22a7c039
Author: Eva Marco <evamarcod@gmail.com>
Date:   Fri Dec 13 10:30:32 2024 +0100

    🐛 Fix double click when canceling a modal

commit cd6d5491fa
Merge: 46a60bc71 7e71a26c5
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Dec 12 17:16:07 2024 +0100

    Merge remote-tracking branch 'origin/develop' into token-studio-develop

commit 7e71a26c50
Merge: 4f845b5c4 1c76587d7
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Dec 12 11:44:24 2024 +0100

    Merge branch 'develop' of github.com:penpot/penpot into develop

commit 46a60bc714
Merge: 797374b2b d899fd687
Author: Eva Marco <evamarcod@gmail.com>
Date:   Thu Dec 12 10:12:42 2024 +0100

    Merge pull request #348 from tokens-studio/eva-token-pill

     Add token status pills

commit 797374b2ba
Merge: edfa80d5b a7c59bb41
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Dec 11 17:25:56 2024 +0100

    Merge pull request #383 from tokens-studio/andrei/export-import-themes

      Import/Export: Themes #306 [WIP]

commit a7c59bb413
Merge: 2264efa1c 90e0021ce
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Dec 11 17:25:35 2024 +0100

    Merge pull request #384 from tokens-studio/andrei/369-export-on-file-without-tokens-crashes

    🐛 Export on file without tokens crashes [WIP]

commit 2264efa1cd
Author: Andrey Fedorov <oran9e.red@gmail.com>
Date:   Wed Dec 11 17:13:23 2024 +0100

     Exclude hidden theme

commit 90e0021cec
Author: Andrey Fedorov <oran9e.red@gmail.com>
Date:   Wed Dec 11 13:18:48 2024 +0100

    🐛 Fix export crash when there's no tokens in the project

commit edfa80d5b1
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Wed Dec 11 14:25:24 2024 +0100

    🎉 Automatically unapply tokens when user changes attr values

commit 7e8de9aa24
Author: Andrey Fedorov <oran9e.red@gmail.com>
Date:   Tue Dec 10 12:01:40 2024 +0100

     Fix encoding/decoding tests

commit d0ad149e20
Author: Andrey Fedorov <oran9e.red@gmail.com>
Date:   Tue Dec 10 07:54:48 2024 +0100

     Add themes data to decoding

commit 19ce9e8ce3
Author: Andrey Fedorov <oran9e.red@gmail.com>
Date:   Tue Dec 10 11:55:33 2024 +0100

     Include themes to dtcg encoding

commit 9d67d007fb
Author: Andrey Fedorov <oran9e.red@gmail.com>
Date:   Mon Dec 9 16:32:14 2024 +0100

    📎 Remove trailing space

commit 05ec84ca1b
Merge: 15ba0746c 78d743406
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Tue Dec 10 17:45:55 2024 +0100

    Merge pull request #381 from tokens-studio/florian/rename-set-groups

     Token set group renaming

commit 78d743406b
Merge: 85ed6f140 15ba0746c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Dec 10 17:31:38 2024 +0100

    Merge remote-tracking branch 'origin/token-studio-develop' into florian/rename-set-groups

commit 15ba0746c6
Merge: 88fdafa2c 6e7a5e5c7
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Tue Dec 10 17:23:09 2024 +0100

    Merge pull request #379 from tokens-studio/florian/computed-set-checkmark

    Display computed checkmark next to token set groups

commit 6e7a5e5c7f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Dec 10 17:15:40 2024 +0100

    ♻ Use dm/str

commit 88fdafa2c6
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Mon Dec 2 15:50:20 2024 +0100

    🎉 Add tests to check all types of tokens

commit d51a2640bf
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Nov 28 16:36:10 2024 +0100

    🐛 Avoid marking copies touched when changing token values

commit 99c30dd44f
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Tue Nov 26 19:40:21 2024 +0100

    🎉 Add frontend unit tests

commit ddec03966d
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Tue Nov 26 11:23:02 2024 +0100

    🔧 Partial refactor to move things to common.types

commit d378937a37
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Nov 21 16:39:43 2024 +0100

    🎉 Set touched groups when changing tokens in copies

commit 6077ba6690
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Tue Nov 19 16:14:02 2024 +0100

     Synchronize tokens in components

commit 85ed6f1409
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Dec 10 14:50:34 2024 +0100

    ♻ Unique naming

commit d546bc04f8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Dec 10 14:49:30 2024 +0100

    ♻ Update docstring

commit d899fd687f
Author: Eva Marco <evamarcod@gmail.com>
Date:   Tue Nov 19 08:37:32 2024 +0100

     Add token status pills

commit 5bac53ea03
Merge: aa292e482 2a766a719
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Dec 10 14:29:00 2024 +0100

    Merge remote-tracking branch 'origin/token-studio-develop' into florian/computed-set-checkmark

commit aa292e4829
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Dec 10 14:04:32 2024 +0100

    🐛 Fix missing active sets in set groups showing partial selection

commit 5ff3469da7
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Dec 10 14:04:11 2024 +0100

    ♻ Accessible checkbox

commit ddc30b7a3c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Dec 9 15:09:44 2024 +0100

     Rename set groups

commit 2a766a7190
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Dec 9 11:52:08 2024 +0100

    ♻ Fix lint

commit 82ce61ef49
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Dec 9 11:44:16 2024 +0100

    ♻ Fix lint

commit 09e5d88835
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Dec 4 17:36:58 2024 +0100

    ♻ Cleanup

commit 8b569005e1
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Dec 4 17:16:35 2024 +0100

     Display active state of children checkmark next to set groups in themes modal

commit 07e3f581d3
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Dec 4 16:58:43 2024 +0100

     Display active state of children checkmark next to set groups

commit 9318c10172
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Dec 4 16:21:09 2024 +0100

     Add function to compute active state of nested sets

commit c6f643b7d5
Merge: bb337361b b9ada1f52
Author: Eva Marco <evamarcod@gmail.com>
Date:   Wed Dec 4 15:53:07 2024 +0100

    Merge pull request #377 from tokens-studio/florian/fix-color-token-bug

    Fix color token bug

commit b9ada1f520
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Dec 3 17:58:30 2024 +0100

    🐛 Fix color token only applying fill

commit 4a06cc04d8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Dec 3 17:42:40 2024 +0100

     Add test for applying colors

commit bb337361b8
Merge: 1a2fb4e29 ab0cd29af
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Tue Dec 3 17:11:02 2024 +0100

    Merge pull request #371 from tokens-studio/rebase-ui-updates

    Sets UI Updates

commit ab0cd29af9
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Dec 3 17:08:29 2024 +0100

    🚧 Add todo

commit b875804bce
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Dec 3 17:07:46 2024 +0100

    ♻ Use use-fn

commit 656afa8a35
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Dec 3 15:48:54 2024 +0100

    ♻ PR Feedback

commit 1a2fb4e299
Merge: f0735417f 1a1a535e4
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Tue Dec 3 12:47:20 2024 +0100

    Merge pull request #372 from tokens-studio/andrei/fix-token-context-menu-order

     Reorder token context menu

commit 1a1a535e47
Author: Andrey Fedorov <oran9e.red@gmail.com>
Date:   Tue Dec 3 11:19:49 2024 +0100

     Reorder token context menu

commit 53229c03d6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Dec 3 11:13:51 2024 +0100

     Add context menu item for set groups

commit d34c88b6e4
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Dec 3 10:01:18 2024 +0100

    🐛 Fix selecting a set in the sidebar toggling the active state

commit 1f6512cff0
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Nov 28 10:16:30 2024 +0100

    ♻ Remove unused ref

commit c9414824a5
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Nov 28 09:46:21 2024 +0100

    ♻ Remove unused token files

commit 384616c9a8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Nov 28 09:32:11 2024 +0100

    ♻ Rename to match ITokenSet glossary

commit 42ee08445b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Nov 28 09:24:16 2024 +0100

     💄 Make sets section not collapsable anymore

commit 27d0f0a7bc
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Nov 28 09:16:38 2024 +0100

    🐛 Fix collapse button triggering rename

commit a0b2b4c55f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Nov 28 09:11:53 2024 +0100

    💄 Remove folder icon

commit 9c7e15f43f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Nov 28 09:09:56 2024 +0100

    💄 Disable group selection

commit f0735417f4
Author: Eva Marco <evamarcod@gmail.com>
Date:   Mon Nov 25 14:11:49 2024 +0100

    ♻️ Update download button icon

commit c8146cf0fe
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Mon Nov 25 16:50:08 2024 +0100

    🐛 Fix edit theme form auto submitting when pressing checkbox (II)

commit 030f074285
Merge: b0252eded 0ea226ede
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Fri Nov 29 12:39:14 2024 +0100

    Merge pull request #365 from tokens-studio/sets-naming

    Rename sets paths/name to match guidelines

commit 0ea226edec
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Nov 28 14:15:47 2024 +0100

    Naming

commit 997cb59ce3
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Nov 28 14:13:28 2024 +0100

    Naming

commit a28ed69113
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Nov 28 13:59:47 2024 +0100

    Fix arg

commit 5cbcdb77c9
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Nov 27 11:29:04 2024 +0100

    Fix token set deletion

commit 44105c2be2
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Nov 27 10:48:11 2024 +0100

    Rename selected-token-set-id -> selected-token-set-path

commit f2c6109dd9
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Nov 27 10:33:48 2024 +0100

    Rename

commit ffe2abc992
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Nov 27 10:22:23 2024 +0100

    Renaming

commit 8772cdf423
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Nov 26 10:59:40 2024 +0100

    Add cancel test

commit 7bce4ab425
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Nov 26 10:56:52 2024 +0100

    Add integration tests for creating sets

commit b5110c2222
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Nov 26 09:21:01 2024 +0100

    ♻ Pass elements directly

commit 18bb717699
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Nov 26 09:04:01 2024 +0100

    Adapt naming

commit d3b88446e2
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Nov 26 08:34:19 2024 +0100

    📚 Add glossary

commit b0252eded7
Merge: db01b6690 ca632c984
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Tue Nov 26 16:14:57 2024 +0100

    Merge pull request #359 from tokens-studio/pr-source-2

    Test deploy 2

commit ca632c9849
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Nov 26 15:09:49 2024 +0100

    Empty

commit db01b66905
Author: Juanfran <juanfran.ag@gmail.com>
Date:   Tue Nov 19 13:59:54 2024 +0100

    🐛 Fix modal overflow and column gap #9055

commit 97e5232b7d
Merge: 76b276073 e4460acfa
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Mon Nov 25 16:51:48 2024 +0100

    Merge pull request #352 from tokens-studio/e2e-tests

     Adds token creation e2e test

commit e4460acfae
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Nov 25 16:41:02 2024 +0100

    ♻ Extract common token setup logic, fix selector

commit 85fa635f66
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Nov 25 11:10:17 2024 +0100

     Check for auto-created set

commit 439ca4b52c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Nov 12 17:26:11 2024 +0100

     Add token creation test

commit 76b2760737
Author: Xaviju <xaviju@gmail.com>
Date:   Fri Nov 22 12:47:53 2024 +0100

    🐛 fix token input color swatch

commit 2464ae1eef
Merge: 0294695ac f79ccd52a
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Thu Nov 21 15:55:07 2024 +0100

    Merge pull request #350 from tokens-studio/sets-reference-bug

    Token Resolving Issues

commit f79ccd52aa
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Nov 21 15:42:20 2024 +0100

    🐛 Fix shape color being removed for missing token references

commit 584f8be751
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Nov 21 15:39:19 2024 +0100

    🐛 Show fallback color for selected inactive set

commit e7b07715a4
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Nov 21 15:38:53 2024 +0100

    🐛 Fix references between separate sets

commit 805432faec
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Nov 21 15:04:33 2024 +0100

    ⬆ Upgrade style-dictionary@4.0.0-prerelease.36

commit 0294695acf
Author: Xaviju <xaviju@gmail.com>
Date:   Thu Nov 21 13:52:57 2024 +0100

    💄 add removed labeled input CSS and improve component slot

commit 0a70f3ccfc
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Nov 21 11:47:11 2024 +0100

    🔧 Pass tests in the CI

commit ddbe53a0ee
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Nov 21 11:25:04 2024 +0100

    💄 Fix linter errors

commit bf1efdc4b6
Merge: faee45de4 7b57509d2
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Nov 21 09:08:27 2024 +0100

    Merge remote-tracking branch 'origin/develop' into token-studio-develop

commit faee45de47
Merge: 133759de9 f1bda7b1f
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Nov 20 16:26:21 2024 +0100

    Merge pull request #336 from tokens-studio/develop-merge

    Develop Sync

commit f1bda7b1f1
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Nov 20 16:12:21 2024 +0100

    🐛 Fix dropdown menu position out of bounds

commit 75a044e453
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Nov 20 16:03:54 2024 +0100

    🐛 Fix token deletion

commit 9819239d58
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Nov 20 15:53:46 2024 +0100

    🐛 Fix new set not working with no sets

commit 228080043f
Merge: 133759de9 59fdf64c6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Nov 20 14:51:29 2024 +0100

    Merge remote-tracking branch 'penpot/develop' into token-studio-develop

commit 133759de97
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Nov 20 14:30:56 2024 +0100

    🐛 Fix set creation

commit 3745475252
Merge: 1d2c7dd20 58278867c
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Nov 20 14:00:28 2024 +0100

    Merge pull request #327 from tokens-studio/named-set-groups-3

    Sets & Sets Group UI

commit 58278867cc
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Nov 20 13:59:09 2024 +0100

    🐛 Fix sets tree not working in themes modal

commit 3afdc72a4e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Nov 20 13:46:01 2024 +0100

     Restore new sets input

commit a19d85fb10
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Nov 19 16:43:37 2024 +0100

     Render sets and set groups tree

commit 1d2c7dd20e
Merge: 16a90f5e1 a77dd138b
Author: Eva Marco <evamarcod@gmail.com>
Date:   Tue Nov 19 08:43:17 2024 +0100

    Merge pull request #335 from tokens-studio/9310-color-picker

    Color picker full inline size

commit a77dd138b8
Author: Xaviju <xaviju@gmail.com>
Date:   Mon Nov 18 15:11:05 2024 +0100

    💄 allow colorpicker to fill inline space

commit 16a90f5e17
Author: Xaviju <xaviju@gmail.com>
Date:   Mon Oct 28 14:54:20 2024 +0100

     Refactor create token modal

commit 5e0bb5025b
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Wed Nov 13 14:22:57 2024 +0100

    💄 Change naming to conform with Penpot DS

commit bba504a16b
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Wed Nov 13 13:34:09 2024 +0100

    🐛 Fix edit theme form auto submitting when pressing checkbox

commit 2a8ea8db62
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Tue Nov 12 15:45:37 2024 +0100

    🐛 Fix edit button not centered

commit 43b90e764d
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Tue Nov 12 14:25:56 2024 +0100

    🐛 Fix font size of token edit modal

commit 16952a7087
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Tue Nov 12 14:09:38 2024 +0100

    🐛 Fix spacing of theme edit modal

commit ac9735ef03
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Tue Nov 12 14:03:18 2024 +0100

    🐛 Fix new theme modal not opening

commit 951543ae0a
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Wed Oct 30 00:57:11 2024 +0100

    ♻️ Refactor tokens exports toolbar

commit b3c5f8f695
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Nov 7 17:52:14 2024 +0100

    🐛 Hide empty message when creating set

commit cfaf9b8890
Merge: 83e34f5ff 332ecd3f4
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Thu Nov 14 16:14:30 2024 +0100

    Merge pull request #332 from tokens-studio/fix-unit-tests-2

    ♻ Re-enable token tests

commit 83e34f5fff
Merge: b4440aad0 76b763b64
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Nov 13 10:27:27 2024 +0100

    Merge pull request #323 from tokens-studio/named-set-groups

    ♻ Remove TokenSetGroup [*]

commit 76b763b648
Merge: 3ff084e77 7044c17d8
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Nov 13 10:27:19 2024 +0100

    Merge pull request #324 from tokens-studio/named-set-groups-2

    Allow sets and set groups at the same level

commit 7044c17d89
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Nov 5 15:48:37 2024 +0100

    ♻ Allow token set grouping - Remove slash to dash conversion

commit 3c5c9a8e14
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Nov 5 15:29:31 2024 +0100

    ♻ Add a prefix to sets and set groups

commit 3ff084e77a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Nov 12 14:03:04 2024 +0100

    ♻ Update only TokensLib to 1.1

commit 332ecd3f4b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Nov 12 13:44:48 2024 +0100

    ♻ Re-enable token tests

commit 3869bcf754
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Nov 5 13:13:31 2024 +0100

    ♻ Remove TokenSetGroup [*]

    [*] We do not need meta data on set groups, this was only necessary for
    defining order in TokensStudio and is not relevant for token implementations.

commit b4440aad04
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Fri Nov 8 16:08:07 2024 +0100

    🔧 Fix wrong code in merge

commit 5fee74cea8
Merge: a34207634 4f845b5c4
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Fri Nov 8 12:38:59 2024 +0100

    Merge remote-tracking branch 'origin/develop' into token-studio-develop

commit 4f845b5c4d
Merge: fb3f74e74 960f095c1
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Fri Nov 8 12:38:34 2024 +0100

    Merge remote-tracking branch 'upstream/develop' into develop

commit a34207634b
Merge: a757556e9 2c4eb96ab
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Fri Nov 8 12:12:31 2024 +0100

    Merge pull request #328 from tokens-studio/fix-merge-issues

    [WIP] Restore style-dictionary prerelease

commit 2c4eb96ab1
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Nov 8 12:03:58 2024 +0100

    Remove comment block

commit 424b930990
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Nov 8 11:59:08 2024 +0100

    Remove patch file

commit cfd291db5e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Nov 8 11:46:42 2024 +0100

    Restore default

commit c76569e4b7
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Nov 8 11:40:31 2024 +0100

    Downgrade

commit 456da5a46e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Nov 8 10:16:29 2024 +0100

    🐛 Fix name on fnc crashing the process

commit 072cec7a22
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Nov 8 09:58:42 2024 +0100

    Add testing block

commit a757556e9c
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Nov 7 18:32:09 2024 +0100

    Revert "🐛 Fix import of tinycolor2"

    This reverts commit 8e4574888d.

commit 8e4574888d
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Nov 7 18:17:24 2024 +0100

    🐛 Fix import of tinycolor2

commit 78a1a615d9
Merge: a910f06b2 fb3f74e74
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Nov 7 14:07:58 2024 +0100

    Merge remote-tracking branch 'origin/develop' into token-studio-develop

commit fb3f74e74f
Merge: 20590a5d1 96f8832bc
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Nov 7 14:06:45 2024 +0100

    Merge remote-tracking branch 'upstream/develop' into develop

commit 20590a5d18
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Nov 7 14:02:55 2024 +0100

    🔧 fix

commit e9c32841a9
Merge: 040a94f71 33ff74e53
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Nov 7 13:49:11 2024 +0100

    Merge remote-tracking branch 'upstream/develop' into develop

commit a910f06b2f
Merge: b3b8121d6 3d99c2a5e
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Nov 6 16:26:19 2024 +0100

    Merge pull request #326 from tokens-studio/stroke-context-menu

    [WIP]  Allow setting stroke-color via context-menu

commit 3d99c2a5eb
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Nov 6 15:43:20 2024 +0100

     Allow setting stroke-color via context-menu

commit 040a94f719
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Tue Nov 5 13:16:56 2024 +0100

    🔧 Disable tokens in dev env by default

commit b3b8121d60
Merge: 32865c41c a33e0a386
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Mon Nov 4 13:45:44 2024 +0100

    Merge pull request #320 from tokens-studio/fix-dot-rename

    🐛 Fix renaming token to other namespace not working

commit a33e0a386e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Nov 4 13:43:38 2024 +0100

    ♻️Ensure collection return

commit 32865c41c9
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 30 08:49:30 2024 +0100

    ♻ Remove zip.js compability warning when starting shadow-cljs

commit 315431fd49
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Mon Nov 4 13:02:32 2024 +0100

    🔧 Update dependencies

commit b47c5f9e60
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Oct 31 15:18:39 2024 +0100

    🐛 Fix sidebar tabs when there are no design tokens

commit a1fd7a912e
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Wed Oct 30 10:52:08 2024 +0100

    🔧 Use bun only for dev env (is needed to run frontend tests)

commit 60761eec07
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Oct 29 17:06:32 2024 +0100

    🐛 Fix renaming token to other namespace not working

commit 62b859b84e
Merge: bc3ab8981 4f7622cb9
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Tue Oct 29 16:27:25 2024 +0100

    Merge pull request #318 from tokens-studio/fix-delete-set

    🐛 When deleting set remove it from theme

commit 4f7622cb93
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Oct 29 14:19:42 2024 +0100

    🐛 When deleting set remove it from theme

commit bc3ab8981e
Author: Eva Marco <evamarcod@gmail.com>
Date:   Fri Oct 25 14:54:00 2024 +0200

    ♻️ Review sets code and add DS components

commit bef648a63f
Merge: cd7763ca0 0923dcc43
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Mon Oct 28 09:06:34 2024 +0100

    Merge pull request #312 from tokens-studio/import-sd-2

     Import: Verify data with StyleDictionary

commit 0923dcc43f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Oct 25 14:40:14 2024 +0200

    ♻ Make `process-sd-tokens` more readable

commit cd7763ca08
Merge: a1c401594 0ff5df4b8
Author: Andrés Moya <hirunatan@hammo.org>
Date:   Thu Oct 24 14:50:56 2024 +0200

    Merge pull request #313 from tokens-studio/eva-review-themes

    ♻️  Review themes section

commit 0ff5df4b8d
Author: Eva Marco <evamarcod@gmail.com>
Date:   Wed Oct 23 16:28:30 2024 +0200

    ♻️ Review themes section

commit f5596b2b3f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Oct 24 10:13:03 2024 +0200

    🐛 Temporary fix for import on sets with groups (/ delimiter)

commit a1c401594c
Merge: 03ea5414b 52d8bed0f
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Thu Oct 24 09:42:25 2024 +0200

    Merge pull request #314 from tokens-studio/fix/deployment

    Fix/deployment

commit 52d8bed0fc
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Thu Oct 24 09:29:38 2024 +0200

    Remove all gimlet and custom workflow code

commit 66dce0e795
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Oct 22 10:14:47 2024 +0200

     Detect reference errors when importing tokens

commit d3ded00bc6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 23 14:13:49 2024 +0200

    🐛 Fix text-editor missing from token tests

commit bf3880a21c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 23 10:05:24 2024 +0200

    🐛 Remove box shadow from supported tokens

commit 951f558d1f
Merge: fa8037c4b 03ea5414b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 23 12:05:58 2024 +0200

    Merge branch 'develop' into token-studio-develop

commit 7debdefa22
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Oct 21 16:03:19 2024 +0200

    🐛 Fix outdated notifications map

commit 03ea5414be
Author: Eva Marco <evamarcod@gmail.com>
Date:   Mon Oct 21 17:14:17 2024 +0200

    ♻️ Review create and edit modal

commit 31b5f5cefa
Author: Eva Marco <evamarcod@gmail.com>
Date:   Mon Oct 21 16:36:47 2024 +0200

    ♻️ Format code

commit 96af0f065d
Merge: 2bdbd81a1 77ba6c135
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Mon Oct 21 10:10:55 2024 +0200

    Merge pull request #310 from tokens-studio/fix-set-rename

    🐛 Keep selection when renaming set

commit 77ba6c135e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Oct 21 10:08:03 2024 +0200

    🐛 Keep selection when renaming set

commit fa8037c4b5
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Oct 17 17:40:25 2024 +0200

    Deploy

commit 2bdbd81a19
Merge: aaac7fb04 9fe4919a2
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Thu Oct 17 17:11:05 2024 +0200

    Merge pull request #308 from tokens-studio/merge-develop-2

    Sync with upstream develop

commit 9fe4919a2b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Oct 17 17:04:19 2024 +0200

    Migrate msg -> ntf

commit 6af6dd1288
Merge: aaac7fb04 b4c2f2eca
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Oct 17 17:03:23 2024 +0200

    Merge branch 'develop' into token-studio-develop

commit aaac7fb041
Merge: 41dc6083c c6ed081a0
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Thu Oct 17 16:41:54 2024 +0200

    Merge pull request #305 from tokens-studio/dtcg-import

    DTCG Tokens Import / Export

commit c6ed081a0b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Oct 10 13:08:35 2024 +0200

     Implement token import / export

commit 41dc6083cf
Merge: bbf5fce0c 85fee87bc
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Thu Oct 10 12:41:38 2024 +0200

    Merge pull request #298 from tokens-studio/dnd

    Sets Drag & Drop

commit 85fee87bc4
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Oct 8 10:24:07 2024 +0200

    🎉 Token Sets dnd re-ordering

commit a85a7d2b2f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Oct 8 17:09:58 2024 +0200

    🐛 Fix logic in oassoc-in-before wher top items couldn't be move to bottom

commit bbf5fce0c9
Merge: bc4969c25 07beef572
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Oct 9 13:21:38 2024 +0200

    Merge pull request #297 from tokens-studio/feature-flag

     Add feature flag for design tokens

commit 07beef5727
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 9 11:00:51 2024 +0200

    Remove $PENPOT_FLAGS from frontend deployment

commit 11c8fa468f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 9 10:30:59 2024 +0200

    Manually override ff flags

commit b0ec9034dc
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 9 10:09:45 2024 +0200

    Enable FF for gimlet

commit 18e0948b0c
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Mon Oct 7 14:16:08 2024 +0200

     Add feature flag for design tokens

commit bc4969c25d
Merge: d58932c2e 2baa1aa73
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Thu Oct 3 15:44:02 2024 +0200

    Merge pull request #296 from tokens-studio/fix-reference-color-preview

    Fix reference color preview

commit 2baa1aa734
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Oct 3 15:30:39 2024 +0200

    Show resolved color

commit b3e73b9abc
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Oct 3 15:18:41 2024 +0200

    Move over helper

commit 5de1f450c1
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Oct 3 15:14:38 2024 +0200

    Move over token value reference check function

commit d58932c2e5
Merge: 6f086326f 69cc9d02b
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Thu Oct 3 13:26:27 2024 +0200

    Merge pull request #290 from tokens-studio/refactor-themes-sets

    Refactor themes sets

commit 69cc9d02ba
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 17:23:04 2024 +0200

    Cleanup: item->token

commit d097b5b179
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 17:10:26 2024 +0200

    Cleanup

commit 921f4a6660
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 17:10:07 2024 +0200

    Restore all logic tests

commit 1097c1f282
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 17:02:10 2024 +0200

    Restore apply overwrite

commit f9a49f82f8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 17:00:31 2024 +0200

    Restore apply-multiple

commit f2900c6519
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 16:57:53 2024 +0200

    Cleanup: Sort

commit 1df40ea07a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 16:57:20 2024 +0200

    Restore apply-tokens test

commit eceffda095
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 16:47:17 2024 +0200

    Added todo

commit e55f323d60
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 15:47:59 2024 +0200

    Fix tests

commit 2634388d09
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 14:37:24 2024 +0200

    Remove logging

commit fa6b8cb6de
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 14:31:56 2024 +0200

    Use d/nilf

commit 2b6075d1a2
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 14:21:18 2024 +0200

    Cleanup

commit 306a5e5f85
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 14:20:27 2024 +0200

    Sets don't have a specific order inside themes

commit 5170d328bd
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 14:19:02 2024 +0200

    Fix docstring

commit 4a818d55c8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 14:18:49 2024 +0200

    Rename, fix docstring

commit bbdc9e95f7
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 14:17:20 2024 +0200

    Add todo

commit b12d5938e0
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 14:10:41 2024 +0200

    Replace generic arg name

commit 041e04dcb1
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 14:09:51 2024 +0200

    Remove unneeded ->

commit a235327c3e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 11:33:14 2024 +0200

    Cleanup

commit 0ffcda404b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 11:09:52 2024 +0200

    Cleanup

commit 93cc8214fa
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 11:05:39 2024 +0200

    Fix border-radius and sizing panels

commit 845de5d885
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 10:52:48 2024 +0200

    Fix export

commit fdca6e4edf
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 10:46:55 2024 +0200

    Fix measures options

commit 028809f1d5
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 10:22:09 2024 +0200

    Cleanup

commit 053d0fc923
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 10:15:35 2024 +0200

    Cleanup function

commit 0b081d24e0
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 10:03:34 2024 +0200

    Only show warning when string has /

commit 669594e3c1
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 09:42:56 2024 +0200

    Cleanup

commit 57a133e09d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 09:42:49 2024 +0200

    Add ordered tokens test

commit 43e5367988
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 09:42:42 2024 +0200

    Fix testing from cljs

commit fa3e2c90e6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Oct 1 15:45:14 2024 +0200

    Fix renaming via context menu

commit 7418d1fa2c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Oct 1 15:42:09 2024 +0200

    Dont support token set grouping for now

commit 3681678dc4
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Oct 1 14:40:05 2024 +0200

    Migrate token tests to tokens-lib

commit bca4ea3819
Merge: 9268b18e5 6f086326f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Oct 1 12:58:26 2024 +0200

    Merge remote-tracking branch 'origin/token-studio-develop' into refactor-themes-sets

commit 9268b18e56
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Oct 1 12:53:01 2024 +0200

    Fix edit button

commit f1f2767e2a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Oct 1 12:49:03 2024 +0200

    Activating initial sets by adding them to the token theme

commit 5825fa656b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Oct 1 09:56:03 2024 +0200

    Fix tests

commit 993df23624
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Oct 1 09:55:58 2024 +0200

    Remove unneeded tests

commit 442732117b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Oct 1 09:55:23 2024 +0200

    Disable logic tests for now (nee new setup)

commit 0d870610e1
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Oct 1 09:14:54 2024 +0200

    Fix infer warnings in tokens test

commit 231baac31d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 16:41:51 2024 +0200

    Fix renaming token creating new token

commit 4b39b6970a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 16:26:26 2024 +0200

    Fix theme sets not being in order of the root order

commit c5173d2df8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 15:33:17 2024 +0200

    Remove hidden token theme when activating a theme

commit 0ea0834b1a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 15:21:15 2024 +0200

    Cleanup

commit bfa90d0347
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 15:18:26 2024 +0200

    Fix duplicate token event

commit b0d46e1767
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 15:15:05 2024 +0200

    Cleanup

commit 3182ff1e15
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 15:08:18 2024 +0200

    Cleanup

commit dc0a1c1555
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 15:07:22 2024 +0200

    Cleanup

commit 18d120bbaa
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 15:04:12 2024 +0200

    Fix token creation without set

commit c75ab61732
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 14:44:42 2024 +0200

    Fix renamed theme staying in active-themes

commit df8f67b5d3
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 13:52:50 2024 +0200

    Update workspace tokens

commit 1194eb7c61
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 09:39:11 2024 +0200

    Remove unused functions

commit a49992a74e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 09:38:01 2024 +0200

    Fix token updating

commit 5d61ddb385
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 09:33:35 2024 +0200

    Fix property applying

commit a59e391b38
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 09:19:06 2024 +0200

    Fix token deletion menu

commit cfec4ae958
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 09:08:14 2024 +0200

    Cleanup

commit 99a3ed98c9
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 08:46:31 2024 +0200

    Only load context menu when open

commit 8c58ed80ac
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 08:31:18 2024 +0200

    Fix id

commit 066ee9c489
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 08:23:22 2024 +0200

    Tokens in sidebar

commit cce4014fbe
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Sep 27 15:36:07 2024 +0200

    Fix token create

commit b7cedf219b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Sep 27 11:21:30 2024 +0200

    Cleanup

commit 93ed1ded17
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Sep 27 11:14:34 2024 +0200

    Token resolving on add fixed

commit 1d50bacfbc
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 26 17:21:02 2024 +0200

    Fix set renaming not being updated in themes

commit 7c4cbe5265
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 26 16:40:38 2024 +0200

    Cleanup

commit 2f13814285
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 26 16:37:30 2024 +0200

    Cleanup

commit 9f2b96332c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 26 16:16:44 2024 +0200

    Fix up active themes tokens method

commit 577fa2bc81
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 26 15:38:36 2024 +0200

    Cleanup

commit c8494c9931
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 26 15:32:46 2024 +0200

    Remove unused

commit 3843253a5d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 26 15:27:16 2024 +0200

    Dont render starting slash

commit 5f6a76dfce
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 26 15:24:02 2024 +0200

    Use currently active sets as sets for temporary theme

commit 29a2478bb5
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 26 15:15:50 2024 +0200

    Fix theme group drop-down not updating group value

commit b3ff480e81
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 26 15:08:54 2024 +0200

    Hide temporary theme

commit 2104fc04df
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 26 14:28:27 2024 +0200

    Fix theme select

commit 9c97b31d28
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 26 13:21:53 2024 +0200

    Fix theme creation/editing

commit 895f92e7c2
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 26 12:03:03 2024 +0200

    Hide temporary token theme from user

commit e216d84484
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 26 11:28:14 2024 +0200

    Set toggling without a theme

commit 6f086326f5
Merge: 2f4a012be c755b764a
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Sep 25 16:22:20 2024 +0200

    Merge pull request #289 from tokens-studio/revert-288-active-themes

    Revert "Adds `active-themes` to `TokensLib`"

commit c755b764a2
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Sep 25 16:21:53 2024 +0200

    Revert "Adds `active-themes` to `TokensLib`"

commit 0b2b8a71fb
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 25 15:08:52 2024 +0200

    Token deletion

commit 9c1a509fa4
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 25 14:59:20 2024 +0200

    Set renaming

commit d2ed6b5501
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 25 14:45:31 2024 +0200

    Add set

commit 2f4a012beb
Merge: fb38e4378 6d75993fd
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Sep 25 13:48:41 2024 +0200

    Merge pull request #288 from tokens-studio/active-themes

    Adds `active-themes` to `TokensLib`

commit 99e551925a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 25 11:08:54 2024 +0200

    Updates

commit 4d4c4355ad
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 25 08:33:34 2024 +0200

    Selection by name

commit ec96e7918d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 25 08:16:29 2024 +0200

    Token theme deletion

commit 844819a50c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Sep 24 15:25:29 2024 +0200

    Activate themes via lib

commit 4c327f38ef
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 23 15:18:46 2024 +0200

    Replace sets

commit f5c122b0db
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Sep 20 14:42:48 2024 +0200

    Remove legacy

commit c6770f43c7
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Sep 20 14:38:53 2024 +0200

    Move out of legacy

commit 43e5e78053
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Sep 20 14:35:47 2024 +0200

    Cleanup

commit f5249196f9
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Sep 20 14:27:19 2024 +0200

    Sets sidebar

commit 501256f16b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Sep 20 09:34:54 2024 +0200

    Disable namespace loading info in console from shadow-cljs

commit 9b2993a344
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 19 16:22:47 2024 +0200

    Fix theme select

commit 191d957984
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 19 16:06:53 2024 +0200

    Use theme listing

commit 743f61f2cd
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 19 15:44:56 2024 +0200

    Adding themes

commit 7758e48c48
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 19 10:52:15 2024 +0200

    Add legacy macro

commit 80e8903754
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 19 10:26:17 2024 +0200

    Refactor: Use tokens-lib for getting tokens theme

commit 6d75993fd7
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Sep 24 14:24:35 2024 +0200

    Move theme-path impl to ITokenTheme

commit 49579d75c6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Sep 24 13:42:56 2024 +0200

    Simplify as this

commit d7d974242e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Sep 24 11:18:12 2024 +0200

    Add active-themes to data serialization tests

commit f2569a1c4a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Sep 24 11:13:41 2024 +0200

    Cleanup

commit 44e4e85201
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Sep 24 11:10:07 2024 +0200

    Add schema validation

commit 5e39f33bff
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Sep 24 11:06:12 2024 +0200

    Rename with theme prefix

commit 416297d298
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 23 17:37:16 2024 +0200

    Implement active-themes

commit fb38e4378a
Merge: 1a9d703bb 5b7b343f6
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Sep 18 18:10:42 2024 +0200

    Merge pull request #273 from tokens-studio/color-token

    Color token

commit 5b7b343f62
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 18 17:25:55 2024 +0200

    Cleanup

commit f5b62a5fc1
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 18 17:23:42 2024 +0200

    Style the form to fit the color ramp exactly

commit 8804d1432e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 18 17:15:45 2024 +0200

    Update the input field value when chosing color from color ramp

commit 6084c49582
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 18 17:03:18 2024 +0200

    Share color picker effect to set hue slider css variables

commit 2a3fc9e7bd
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 18 17:03:08 2024 +0200

    Pointer

commit 061cd08e66
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 18 11:43:35 2024 +0200

    Remove unused functions

commit 48a8b1bc55
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 18 11:30:32 2024 +0200

    Fix color updating

commit c007170603
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 18 11:28:31 2024 +0200

    Cleanup

commit b68e7af844
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 18 11:27:30 2024 +0200

    Use tinycolor to convert hex color

commit e0e7b98ed7
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 18 11:21:43 2024 +0200

    Docstring

commit 3bd2278dec
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 18 11:15:11 2024 +0200

    Use penpot logging system instead of custom debug flag

commit 77141887a8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 18 10:57:05 2024 +0200

    Pass in value with error

commit 3a21643158
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 18 10:38:16 2024 +0200

    Add shared error handling

commit 308fff05c3
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 18 10:19:59 2024 +0200

    Dont show name error when editing new token and not touching name field

commit 49ff0df7f6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Sep 17 16:35:08 2024 +0200

    Add tinycolor bindings

commit 3c4e0e2447
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 16 16:57:01 2024 +0200

    Add color ramp

commit ac51309f81
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 16 15:59:04 2024 +0200

    Add placeholder color swatch

commit 2b886c54e0
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 29 12:52:18 2024 +0200

    Color ramp wip

commit 0b29767c95
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 30 11:51:21 2024 +0200

    Add color token

commit 1a9d703bb1
Merge: 0697e6988 f0a9444ab
Author: Andrés Moya <hirunatan@hammo.org>
Date:   Wed Sep 18 11:00:06 2024 +0200

    Merge pull request #284 from tokens-studio/refactor-theme-groups

    tokens-lib refactor: Get collection of theme groups

commit f0a9444ab6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Sep 17 10:48:23 2024 +0200

    tokens-lib refactor: Get collection of theme groups

commit 0697e69888
Merge: 1d7536687 0e15da5ed
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Tue Sep 17 09:44:00 2024 +0200

    Merge pull request #283 from tokens-studio/refactor-types-2

    Refactor types 2

commit 0e15da5ede
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Tue Sep 17 00:51:33 2024 +0200

    🔧 Make tokens again a flat ordered map

commit 5f703d6a79
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Mon Sep 16 17:47:05 2024 +0200

    🔧 Make themes a two-level only tree

commit 3a4ec32f8e
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Sep 12 10:04:03 2024 +0200

    🔧 add groups handling v2

commit e2ff6f7ba6
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Sep 5 17:51:02 2024 +0200

    🔧 Add first draft of token set groups attributes

commit fa8f8ac54b
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Sep 5 16:49:29 2024 +0200

    🔧 add groups handling

commit 316d333c96
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Wed Sep 4 02:00:31 2024 +0200

    🔧 Add token themes in tokens-lib custom type

commit 1d7536687a
Merge: 6cba685e8 27073e22e
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Thu Sep 12 17:27:39 2024 +0200

    Merge pull request #282 from tokens-studio/enable-ff

    Enable sets/themes for all

commit 6cba685e87
Merge: 6f37a43be a1e4d6b3b
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Thu Sep 12 13:17:26 2024 +0200

    Merge pull request #281 from tokens-studio/token-refactor-common

    Fixes missing name attribute

commit 27073e22e3
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 12 13:16:35 2024 +0200

    Enable sets/themes for all

commit a1e4d6b3b3
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 12 10:36:05 2024 +0200

    Fix context menu missing name param

commit 309476fdfd
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 12 10:23:45 2024 +0200

    Cleanup

commit 6f37a43be1
Merge: 361b02a76 0dca04733
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Sep 11 15:35:45 2024 +0200

    Merge pull request #262 from tokens-studio/refactor-types-1

    🔧 Add tokens-lib custom type

commit 361b02a76a
Merge: 1568a7afb 0cd7d4dd7
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Sep 11 15:11:22 2024 +0200

    Merge pull request #279 from tokens-studio/fix-inspect-tokens-tab

    Disable tokens tab in inspect mode

commit 1568a7afb5
Merge: f5ab6e65f 20e2c4edb
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Sep 11 15:11:02 2024 +0200

    Merge pull request #278 from tokens-studio/fix-set-token-name

    Allow giving name of tokens in other sets

commit 0cd7d4dd7a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 11 11:09:06 2024 +0200

    Disable tokens tab in inspect mode

commit f5ab6e65fc
Merge: 012e79603 56374171d
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Sep 11 11:02:55 2024 +0200

    Merge pull request #277 from tokens-studio/group-select-themes

    Themes & Sets: Add groups select to modal

commit 20e2c4edb1
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 11 10:17:46 2024 +0200

    Allow giving name of tokens in other sets

commit 012e79603f
Merge: 27409f43d 9876c2e4f
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Sep 11 09:09:51 2024 +0200

    Merge pull request #276 from tokens-studio/token-sets-context-menu

    Token Sets & Themes: Sets context menu

commit 56374171d6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Sep 10 15:44:11 2024 +0200

    Fix theme groups not showing up in create state

commit 281b801112
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Sep 10 15:42:44 2024 +0200

    Show dropdown only when groups exist

commit 21f42021d8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Sep 10 15:37:01 2024 +0200

    Add groups select

commit df16d0c222
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Sep 10 15:16:52 2024 +0200

    Add abstract dropdown component

commit d54c5476d8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Sep 10 14:33:45 2024 +0200

    Add dropdown button

commit 9876c2e4fc
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Sep 10 12:51:07 2024 +0200

    Add context menu

commit 0dca047339
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Tue Sep 3 14:20:55 2024 +0200

    fix token update

commit d147d844fb
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Fri Aug 16 12:11:18 2024 +0200

    🔧 Add tokens-lib custom type

commit 27409f43d2
Merge: 734acd27b ae5aaf833
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Fri Aug 30 11:15:31 2024 +0200

    Merge pull request #264 from tokens-studio/token-sets-themes-ui

    Token sets themes UI

commit ae5aaf8332
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 29 16:02:22 2024 +0200

    Cleanup

commit 54b754c38c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 29 16:01:31 2024 +0200

    Cleanup

commit ca611c6668
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 29 15:59:58 2024 +0200

    Cleanup

commit 6bae2efe9d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 29 14:26:11 2024 +0200

    Validate against names in all token sets

commit 734acd27b9
Merge: 93ce6b6eb 1ed6d92d8
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Tue Aug 27 17:09:47 2024 +0200

    Merge pull request #263 from tokens-studio/token-sets-themes

    Token sets themes

commit e363b58774
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 27 15:22:02 2024 +0200

    HACK: Fix empty sets showing up in listing

commit b24b178e29
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 27 15:00:15 2024 +0200

    Make resizable

commit d6823e8583
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 27 14:49:11 2024 +0200

    Always switch to temporary theme when toggling sets in sidebar

commit 3bb99e8f7c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 27 14:37:24 2024 +0200

    Remove default theme name, disable empty themen name submit

commit 3b7432a859
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 27 14:32:26 2024 +0200

    Use non editable context in form

commit 4dd3367bdd
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 27 14:26:06 2024 +0200

    Allow creating token sets

commit d4910ce2fc
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 27 14:25:52 2024 +0200

    Auto select new token sets

commit 4f96550bca
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 27 14:13:29 2024 +0200

    Use context

commit db22beb857
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 27 10:20:38 2024 +0200

    Fix iterating over unordered sets

commit 965016b63f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 27 10:04:12 2024 +0200

    Allow token renaming

commit 293250a30d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 16:35:49 2024 +0200

    Rename

commit 1d599cbf7d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 16:33:07 2024 +0200

    Always render ungroupd themes first

commit 0d2d1a8b8a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 16:23:23 2024 +0200

    Link up actions

commit cb46e11162
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 16:14:27 2024 +0200

    Add edit button

commit c807baaf7a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 15:54:44 2024 +0200

    Add custom select with grouped options

commit f25db592a0
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 15:07:58 2024 +0200

    Clone over select

commit 2e23543c11
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 15:04:45 2024 +0200

    Show create text when no theme is available

commit 4060b6d40f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 15:02:38 2024 +0200

    Style empty state, jump to create theme dialog when no themes exist

commit 7cd9c60fb6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 14:36:00 2024 +0200

    Disable user-selection

commit 5939db771e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 14:34:41 2024 +0200

    Link up delete button & fix create theme ui jumping

commit 1405720e0b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 14:32:21 2024 +0200

    Cleanup

commit b5e08c5b8b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 14:32:01 2024 +0200

    Add theme creation form

commit f37cf8be5e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 14:31:34 2024 +0200

    Add defaults for theme form

commit 84b5be5547
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 14:17:37 2024 +0200

    Fix button being chosen as main button for form submit

commit 7aff690e7b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 14:17:30 2024 +0200

    Wire up theme updating

commit 70b570f112
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 13:49:57 2024 +0200

    Show only on create

commit 36f92aa241
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 13:47:44 2024 +0200

    Allow group and name updating

commit a0dd3f63bf
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 13:41:02 2024 +0200

    Allow controlling state of theme editing

commit fe702988f9
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 13:40:49 2024 +0200

    Cleanup

commit 12e915dec8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 17:48:43 2024 +0200

    Style edit button

commit a52e20f49d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 17:22:05 2024 +0200

    Cleanup

commit 967fab416a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 17:20:20 2024 +0200

    Add back button

commit 3ce2531b42
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 17:11:38 2024 +0200

    Design

commit db1250a315
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 17:07:47 2024 +0200

    Add footer buttons

commit 6f7b69c7ee
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 16:58:49 2024 +0200

    Allow toggling individual set themes

commit 7e7203eb7c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 16:44:11 2024 +0200

    Allow passing custom functions

commit 8a20e3a698
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 16:34:33 2024 +0200

    Allow tokens sets component to be controlled

commit 1c0233098d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 16:28:06 2024 +0200

    Add sets list for theme

commit c7fa0f2cf8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 16:27:42 2024 +0200

    Cleanup

commit cac421f862
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 15:41:32 2024 +0200

    Design

commit 7970440ffc
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 15:30:17 2024 +0200

    Toggle theme via ui

commit cc7de14539
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 15:08:53 2024 +0200

    Add basic toggle switch

commit d23c5cbbbe
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 14:53:22 2024 +0200

    Move the temporary ui to modal

commit b62722bdbb
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 14:11:13 2024 +0200

    Add themes modal dialog

commit 1ed6d92d87
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 13:36:46 2024 +0200

    Remove margin

commit b48bfde5c8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 11:43:19 2024 +0200

    Automatically open when creating set

commit 1cc1d94a27
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 11:42:14 2024 +0200

    Automatically open when adding token

commit 40846b87c2
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 11:39:13 2024 +0200

    Add tokens header

commit acc3606cbb
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 11:36:54 2024 +0200

    Align Eye

commit 97f119f3da
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 11:32:54 2024 +0200

    Add delete set action button

commit 88c899c5c6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 10:17:52 2024 +0200

    Wrap themes ui in header

commit a9a5f69c93
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 10:15:37 2024 +0200

    Cleanup

commit bac16aadd8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 10:14:45 2024 +0200

    Migrate to official UI

commit b1cf641587
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 22 14:56:41 2024 +0200

    Fix cancelling set prompt breaking user state

commit e4f01d1d5e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 22 11:59:06 2024 +0200

    Fix logic

commit 157cc5a994
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 22 11:21:53 2024 +0200

    Automatically show themes and sets on dev and PR previews

commit 37a3fbcec2
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 22 11:02:01 2024 +0200

    Fix not possible naming token to same token name in other set

commit 8343a9f3b5
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 22 10:59:40 2024 +0200

    Fix description

commit 4b47fa5d7a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 22 10:58:31 2024 +0200

    Fix names clash

commit 7a2a521075
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 22 10:54:41 2024 +0200

    Allow passing config

commit 6c802bc132
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 22 09:37:47 2024 +0200

    Rename

commit c130dc39c3
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 21 19:11:53 2024 +0200

    Resolve tokens from other active sets

commit 8264da3a2a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 21 15:36:40 2024 +0200

    Use active sets tokens for form

commit 6c6be35292
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 21 15:12:13 2024 +0200

    Fix token updates not taking order

commit 011fc734f6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 21 14:42:39 2024 +0200

    Make passing of names-map explicit

commit 7c3716a709
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 21 11:18:52 2024 +0200

    Move temporary ui behind flag

commit 98207b02bf
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 21 11:18:47 2024 +0200

    Remove log

commit 0df89cf60d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 21 11:17:12 2024 +0200

    Use storage to toggle themes ui

commit 2df577cba2
Merge: 4e81a94d0 93ce6b6eb
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 21 11:04:00 2024 +0200

    Merge remote-tracking branch 'origin/token-studio-develop' into token-sets-themes

commit 4e81a94d0f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 21 11:03:39 2024 +0200

    Remove unused functions

commit 4f02d8b47d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 21 11:01:23 2024 +0200

    Fix multi run test

commit 74801e72d3
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 21 10:54:22 2024 +0200

    Fix simple token creation / scaffolding test

commit cfefbadb64
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 21 10:29:14 2024 +0200

    Fix id

commit 93ce6b6eb3
Merge: 9dd681c15 f9704fe7a
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 20 22:14:51 2024 +0530

    Merge pull request #256 from tokens-studio/token-sets-ui

    Token sets UI

commit f9704fe7aa
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 20 18:40:02 2024 +0200

    Fix padding without sets

commit 2487f34b72
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 20 21:34:07 2024 +0530

    formatting

commit b3e939d12a
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 20 21:30:59 2024 +0530

    add a hardcoded flag to display/hide token sets section

commit 247e3a1559
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 20 21:25:22 2024 +0530

    fix some styling issues

commit 5b1eaf4b8f
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 20 20:55:02 2024 +0530

    remove unused prop and some optimizations

commit 463ab3c866
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 20 20:41:25 2024 +0530

    change current-set to selected-set

commit 5358cd1c52
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 20 16:14:32 2024 +0200

    Fix tests crashing

commit 3a2f4df387
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 20 17:08:31 2024 +0530

    add source code comment

commit 1a3184d327
Merge: 187ab3166 9dd681c15
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 20 17:02:00 2024 +0530

    Merge branch 'token-studio-develop' into token-sets-ui

commit 187ab31667
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 20 17:00:19 2024 +0530

    format

commit feb5cec84b
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 20 16:57:53 2024 +0530

    ad sets-section wrapper

commit f052b75dac
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 20 16:38:18 2024 +0530

    formatting

commit e62323ac0a
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 20 16:35:33 2024 +0530

    add variable

commit d4c88d4441
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 20 16:32:36 2024 +0530

    remove folder open icon

commit 4bad9fa6f8
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 20 16:30:51 2024 +0530

    add chevron icon

commit e4f5b6005e
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 20 16:30:38 2024 +0530

    move sets-sidebar component to sidebar tokens

commit 98b5791e27
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 20 15:37:37 2024 +0530

    remove set-item-set-selected and remove class

commit 6049c32839
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 19 15:46:42 2024 +0200

    Compute tokens from each activated set

commit 8e02dced2f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 19 10:49:46 2024 +0200

    Extract to function

commit 97436531d0
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 19 10:46:48 2024 +0200

    Showing only active sets

commit 8660c372dc
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 19 09:41:23 2024 +0200

    Add theme deletion

commit 3413d4b42f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 19 09:09:09 2024 +0200

    Add tests

commit 93a23c66ec
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 19 09:01:08 2024 +0200

    Docstrings

commit e8bbb75008
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 19 08:49:03 2024 +0200

    Implement group theme switching

commit 9a745ea8bc
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 19 08:05:19 2024 +0200

    Add active theme toggling

commit f0e0e9334e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 19 07:29:20 2024 +0200

    Cleanup

commit ae1c30ad56
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 14:22:56 2024 +0200

    Allow providing set name

commit e502def755
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 14:21:25 2024 +0200

    Show themes

commit 62712ef8da
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 13:59:18 2024 +0200

    Cleanup styles

commit 6a7ced3204
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 13:36:54 2024 +0200

    Add token set visibility toggle

commit 636c3b822c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 12:22:57 2024 +0200

    Example styling

commit c2a045ad5b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 11:44:41 2024 +0200

    Add selected sets UI

commit 0f95ddef8f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 11:32:36 2024 +0200

    Add new sets to active theme

commit 3e41e7d234
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 11:32:20 2024 +0200

    Fix workspace-data key missing

commit 879ef1123f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 10:32:59 2024 +0200

    Create temporary theme when creating set

commit 9329513949
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 08:04:41 2024 +0200

    Add token set deletion

commit ae39586d8c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 07:10:15 2024 +0200

    Add temporary theme

commit 4c1bc81b19
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 07:10:08 2024 +0200

    Add name

commit 7406af2e79
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 07:09:59 2024 +0200

    Add theme creation

commit 8482a128de
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 07:09:17 2024 +0200

    Fix expeted id instead of set

commit 3695ba3438
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 07:09:07 2024 +0200

    Add token theme data scaffold

commit 35759792a3
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 06:24:15 2024 +0200

    Render grouped themes ui

commit f0aaa29d66
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 06:24:03 2024 +0200

    Add type functions

commit cefa498f4d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 06:23:53 2024 +0200

    Add group and selected properties to theme

commit f3d4346c0d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 15 18:52:42 2024 +0200

    Add create token-set event

commit 1f0c1dbbe6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 15 18:52:31 2024 +0200

    Update shapes on token set switch

commit 587a2936e6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 15 18:26:37 2024 +0200

    Add simple UI

commit 73078d802a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 15 18:26:20 2024 +0200

    Add refs

commit eaf568f154
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 15 14:26:22 2024 +0200

    Get tokens from current or first token set

commit ead8a983ab
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 15 14:26:12 2024 +0200

    Move to token-set namespace

commit 9dd681c156
Merge: b2962b560 43e064a76
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Thu Aug 15 12:28:19 2024 +0200

    Merge pull request #254 from tokens-studio/fix-token-editing

    Fix token editing

commit 43e064a768
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 15 10:12:45 2024 +0200

    Update doc string

commit 4bd3b14adb
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 15 10:07:12 2024 +0200

    Add unit to tests

commit e4e488a9ee
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 15 10:03:25 2024 +0200

    Adds style-dictionary test

commit c6d13af071
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 15 09:21:49 2024 +0200

    Fix validation not working while editing [*]

    [*] We've passed the resolved tokens to the validation,
    but the validation needs the original tokens set.

commit 6be2ca8491
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 15 09:21:18 2024 +0200

    Fix resolved value not showing up when editing token

commit b2962b5603
Merge: c7d4db900 ecf4fb8bd
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Aug 14 19:41:36 2024 +0200

    Merge pull request #251 from tokens-studio/fix-spacing-token

    Fixes design tab spacing token

commit ecf4fb8bd0
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 14 16:52:46 2024 +0200

    Fix popover position

commit 1ba2acea7c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 14 16:39:43 2024 +0200

    Fix crash for applying spacing layout token

commit cf9ef2ae60
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 14 15:33:24 2024 +0200

    Remove unused function

commit 74c6228c25
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Aug 14 17:15:30 2024 +0530

    add dom/stop-propagation

commit 188e7d220a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 14 09:25:17 2024 +0200

    Fix name

commit c7d4db900e
Merge: d8621974c 726b0a267
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Aug 14 09:16:23 2024 +0200

    Merge pull request #245 from tokens-studio/use-token-name-ref

    Use token name ref

commit 1135b7e2db
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 13 18:30:00 2024 +0200

    Update token sets

commit 71439637aa
Merge: 21c42626a d8621974c
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 13 21:56:06 2024 +0530

    Merge branch 'token-studio-develop' into token-sets-ui

commit 21c42626ae
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 13 21:51:31 2024 +0530

    remove comment

commit 007cf0fb8a
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 13 21:50:55 2024 +0530

    remove comments and unused import

commit 46c73fe51f
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 13 21:44:08 2024 +0530

    formatting

commit 66170eb889
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 13 21:42:08 2024 +0530

    make current-set-id the key on div element

commit 68c0d93f91
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 13 21:12:38 2024 +0530

    change sets list div to ul

commit 7addba71fb
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 13 21:07:52 2024 +0530

    remove debug statements

commit 950257a212
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 13 20:42:42 2024 +0530

    change eye icon size

commit 9aadb8c72f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 13 16:18:24 2024 +0200

    Add test

commit fa230a4224
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 13 19:31:34 2024 +0530

    add folder-open icon and use for open groups

commit 2f2ed0a42f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 13 15:45:38 2024 +0200

    Cleanup

commit a4865522cc
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 13 15:25:36 2024 +0200

    Select token set on create

commit ba31914ca4
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 13 14:41:58 2024 +0200

    Fix typo

commit c275923621
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 13 14:41:49 2024 +0200

    Fix indent

commit ec01ce7550
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 13 14:41:18 2024 +0200

    Ensure vector

commit bcd4b6d9ec
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 13 13:31:43 2024 +0200

    Fix schema errors

commit 547358d579
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 13 11:57:06 2024 +0200

    Add token set changes

commit bcf61f34fe
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 13 14:11:30 2024 +0530

    add current set and selected set

commit ad9a4e7244
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 13 01:17:18 2024 +0530

    Add full lenght highlight

commit 9ff3a135a8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 12 10:50:47 2024 +0200

    Cleanup

commit 6c3415b92c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 6 14:56:11 2024 +0200

    Differentiate groups and sets

commit dbddd7fb68
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 6 14:26:30 2024 +0200

    Add token themes & sets schema

commit 726b0a2671
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 9 18:04:33 2024 +0200

    Fix :applied-tokens not being updated

commit 51a27c07ec
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 9 18:03:47 2024 +0200

    Use token identifier

commit 9ff4567955
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 9 18:03:20 2024 +0200

    Remove unused function

commit 5552295d61
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 9 17:37:36 2024 +0200

    Add docstring

commit b93b0b209a
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Thu Aug 8 21:40:35 2024 +0530

    Add hover styles and collapse capabilities

commit bb3a22a219
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Thu Aug 8 18:46:58 2024 +0530

    add hide/show icon

commit e992bf0aa6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 8 15:13:04 2024 +0200

    Fix sizing test

commit 8b8b909fb7
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 8 15:12:28 2024 +0200

    Parse values with unit

commit 2d67a92d64
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 8 11:39:58 2024 +0200

    Fix getter

commit a073520d0e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 8 11:22:40 2024 +0200

    Restore tests to work with new identifier

commit e27e2d357c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 8 11:09:12 2024 +0200

    Add simple applying test

commit d98e982664
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 8 11:07:32 2024 +0200

    Cleanup

commit 31674db11d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 8 11:07:24 2024 +0200

    Skip parsing on numbers

commit 0684d893e0
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 8 11:06:49 2024 +0200

    Return resolved & parsed token names map

commit 37f23855e8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 8 09:52:51 2024 +0200

    Fix re-find only accepting string values throw

commit 2e8e33d701
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 8 09:40:26 2024 +0200

    Add token value parsing function

commit 980238e27b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 8 09:22:32 2024 +0200

    Move find-token-references to token namespace

commit b28a45c2d8
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Thu Aug 8 00:14:36 2024 +0530

    add more changes working tree display

commit fcea989586
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Aug 7 22:39:41 2024 +0530

    add more changes

commit 1434ddb5d5
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Aug 7 20:58:21 2024 +0530

    change fotn color

commit 252797183c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 7 15:14:32 2024 +0200

    Use :name as the token identifier [*]

    [*] Using uuid as the token identiefier for :applied-tokens is not
    correct as we want to merge all sets together by their name, to get the
    final values.

commit d8621974c2
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 7 17:14:05 2024 +0200

    Update with upstream

commit 192f847d50
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 7 17:13:39 2024 +0200

    Ignore rxjs errors

commit c9673ca828
Merge: d7ee804ca 22f3dba84
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 7 16:21:08 2024 +0200

    Merge remote-tracking branch 'penpot/develop' into token-studio-develop

commit d7ee804ca3
Merge: eb9b4be6e edb89bccc
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Aug 7 12:53:02 2024 +0200

    Merge pull request #243 from tokens-studio/fix-tests

    Temporary fix for tests

commit edb89bcccb
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 7 12:38:24 2024 +0200

    Temporary fix for tests [*]

    [*] Async tests got broken with the latest upstream.

    This will still print a bunch of warnings from rxjs but the tests are
    still running.

commit eb9b4be6ea
Merge: e02611da2 4ae467987
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Aug 7 08:26:08 2024 +0200

    Merge pull request #241 from tokens-studio/sync-master

    Sync penpot master

commit 02a19a6b33
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Aug 7 00:57:13 2024 +0530

    Next commit

commit 22e497398f
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Aug 7 00:08:12 2024 +0530

    Initial commit

commit 4ae467987a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 6 11:25:31 2024 +0200

    Update changes

commit 3bd0318999
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 6 11:16:38 2024 +0200

    Update lock file

commit dd8780db69
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 6 11:16:30 2024 +0200

    Use register

commit 5fbbdd36fd
Merge: e02611da2 36ac81bb4
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 6 11:06:51 2024 +0200

    Merge remote-tracking branch 'penpot/develop' into token-studio-develop

commit e02611da20
Merge: 57c9d6d3a f7e770192
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Tue Aug 6 10:31:13 2024 +0200

    Merge pull request #238 from tokens-studio/213-opacity-fixes-03

    Fixes Opacity

commit f7e7701923
Merge: 6cb3afe87 57c9d6d3a
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Tue Aug 6 08:23:39 2024 +0200

    Merge branch 'token-studio-develop' into 213-opacity-fixes-03

commit 57c9d6d3a9
Merge: 3c7261e75 fe9bb69c7
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Tue Aug 6 06:38:31 2024 +0200

    Merge pull request #239 from tokens-studio/236-stroke-width-fix

    Fix stroke width applying crash

commit fe9bb69c75
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 5 11:45:32 2024 +0200

    Update CHANGELOG

commit c9d1fe44e9
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 5 11:43:46 2024 +0200

    Add stroke-width test

commit 2a97749d23
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 5 11:42:36 2024 +0200

    Add shape property passing

commit 3826afb76b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 5 11:18:19 2024 +0200

    Fix applying stroke

commit 6cb3afe87f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 5 11:05:49 2024 +0200

    Add opacity tests

commit 62a9dd6582
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 5 10:54:46 2024 +0200

    Cleanup

commit ad468582b3
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 5 10:53:59 2024 +0200

    Add changelog

commit c29024bd62
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 5 10:51:35 2024 +0200

    Dont update values outside of 0..1 (e.g.: 20)

commit 1f88c8288a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 29 11:08:15 2024 +0200

    Parse double to preserve opacity

commit 3c7261e75b
Merge: ab72bdf09 72c5c3ec9
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Fri Aug 2 08:56:30 2024 +0200

    Merge pull request #231 from tokens-studio/update-token-shapes

    Update token shapes

commit 72c5c3ec9a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 1 15:45:37 2024 +0200

    Cleanup

commit 13163a4571
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 1 15:37:53 2024 +0200

    Clean up debugging code

commit 0c757f05e3
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 1 15:37:39 2024 +0200

    Apply actions directly

commit fc6d64fb5d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 1 15:32:33 2024 +0200

    Fix import

commit 518441e582
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 1 12:12:03 2024 +0200

    Fix spacing token click will add padding

commit fdce370bb6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 1 12:05:15 2024 +0200

    Disable debug

commit 9ebd743635
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 1 11:09:36 2024 +0200

    Testing comment

commit cc6f34f78a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 1 11:07:02 2024 +0200

    Fix trying to update shapes for deleted tokens crash

commit feb438f882
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 1 10:41:45 2024 +0200

    Safety net

commit 68b32448d1
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 1 10:41:03 2024 +0200

    Fix exact match of diff adding nil attrs group and crashing the app

commit ac27f95091
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 1 09:41:28 2024 +0200

    Fix undo deleting the token on update

commit 68415b6668
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 1 09:14:21 2024 +0200

    Update tokens after shape update

commit e52623c728
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 1 09:13:58 2024 +0200

    Update shapes in one undo step, resolve tokens from state not cache atom

commit a1fefe66ae
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 31 17:26:50 2024 +0200

    Working updates!

commit d22234fe2a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 31 16:51:55 2024 +0200

    Cleanup

commit 0166c38486
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 31 16:43:03 2024 +0200

    Split logical attribute groups

commit 69d9359237
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 31 14:36:09 2024 +0200

    Collecting update functions by attributes

commit 6225f59ea0
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 31 14:04:00 2024 +0200

    Cleanup

commit ab72bdf09c
Merge: dde8ab068 1d4b41750
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Tue Jul 30 08:02:50 2024 +0200

    Merge pull request #224 from tokens-studio/ux-context-menu

    Ux context menu

commit 1d4b417501
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jul 30 06:57:21 2024 +0200

    Fix missing function shorthand

commit f69db7ce9e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 29 18:43:47 2024 +0200

    Cleanup

commit 5e33eab7d0
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 29 18:31:11 2024 +0200

    Fix position updating

commit 9340ba9cc0
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 29 18:30:59 2024 +0200

    Allow passing custom on-update-shape function

commit ededd23849
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 29 17:48:30 2024 +0200

    Trigger Build

commit b423a9c782
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 29 17:43:32 2024 +0200

    Always update all layout-gap on token pill click

commit 70904dbc64
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 29 16:38:40 2024 +0200

    Trigger Build

commit 9ba4776c8e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 29 16:34:26 2024 +0200

    Trigger Build

commit c92decedeb
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 29 16:21:42 2024 +0200

    Trigger Build

commit a893a66ec8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 29 16:07:33 2024 +0200

    Fix crash on applying col/row gap

commit 3f14af9e03
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 29 16:00:46 2024 +0200

    Fix highlighting for dimensions token

commit 596d662ca8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 29 15:24:17 2024 +0200

    Cleanup

commit 1eea55ad43
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 29 15:09:35 2024 +0200

    Test

commit 55ed79d968
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 29 14:22:37 2024 +0200

    Move to sidebar, should not be rendered in root

commit 6fc370bb30
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 29 14:22:07 2024 +0200

    Fix token position wrong, component gets rendered on user mount

commit 1633f8035e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 29 13:51:17 2024 +0200

    Indent

commit 9bec2509c9
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 25 10:11:36 2024 +0200

    Better context-menu position, remove hardcoded value

commit 1e481412e8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 25 09:12:23 2024 +0200

    Remove old token applying events

commit cc41a42dfa
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 25 09:11:03 2024 +0200

    Update CHANGELOG

commit a3a4883875
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 25 08:58:26 2024 +0200

    Cleanup

commit f094654837
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 25 08:56:02 2024 +0200

    Fix only shape ids being applied

commit f93a5ab109
Merge: 957ad0dae dde8ab068
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 25 08:42:17 2024 +0200

    Merge remote-tracking branch 'origin/token-studio-develop' into ux-context-menu

commit 957ad0dae3
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 16:21:48 2024 +0200

    Always highlight if one of the attributes is active, but only apply minimal set on pill click

commit b9b4abf1e0
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 16:10:41 2024 +0200

    Fix edit modal not opening

commit cb942996a9
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 16:05:43 2024 +0200

    Fix render-loop after token was deleted

commit 37bef1e2ea
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 16:05:29 2024 +0200

    Cleanup

commit b392c3ba65
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 15:46:14 2024 +0200

    Move token change events to changes ns

commit 56e72b5247
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 15:29:40 2024 +0200

    Refactor - Separate core into namespaces: changes, token_types

commit 03370c267d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 15:02:10 2024 +0200

    Cleanup

commit d5a03e154b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 14:57:33 2024 +0200

    Cleanup

commit 386a4c94ba
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 14:51:59 2024 +0200

    Disallow clicking pill when nothing is selected

commit 5e911d814c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 14:49:39 2024 +0200

    Show attribute actions only when something is selected

commit 310033fd75
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 14:20:08 2024 +0200

    Inline attributes

commit 46250003d3
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 14:17:43 2024 +0200

    Reuse all-or-sepearate-actions for border-radius

commit 871402bd84
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 14:07:42 2024 +0200

    Fix overriding of existing radius-4

commit 38499e2f1f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 14:07:29 2024 +0200

    Fix properties

commit 893e533afe
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 14:01:56 2024 +0200

    Cleanup

commit e6889fc92e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 13:41:32 2024 +0200

    Fix typo

commit c11c1e0c03
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 13:41:08 2024 +0200

    Use all-or-sepearate-actions for gap

commit 335808bf03
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 13:41:00 2024 +0200

    Remove unneeded actions

commit cbd5d42069
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 13:36:38 2024 +0200

    Simplify

commit 113fc9891b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 13:29:26 2024 +0200

    Simplify component & css

commit fbd2ab833d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 10:59:26 2024 +0200

    Inline separator

commit 08cc777096
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 10:58:34 2024 +0200

    Restructure

commit 81c83f9dd4
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 10:55:22 2024 +0200

    Recurse tree instead of repetition

commit f20313e7f8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 09:43:28 2024 +0200

    Add dimensions sub-menu

commit 1776591fec
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 09:42:09 2024 +0200

    Fix react index warning

commit aa75f30858
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 09:19:31 2024 +0200

    Allow type overriding via prop

commit 62f7f8a74f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jul 23 16:35:07 2024 +0200

    Add sizing

commit 65dbafafb8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jul 23 16:02:14 2024 +0200

    Add width/height applying

commit 214a323682
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jul 23 16:01:56 2024 +0200

    Add abstract method for a all or seperate actions

commit da3f2f820c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jul 23 15:28:13 2024 +0200

    Add generic context menu actions

commit cabc3d3f36
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jul 23 14:55:14 2024 +0200

    Simplify passed prop date

commit bad9056d54
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jul 23 11:35:07 2024 +0200

    Update gap

commit 4cf8b2c143
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jul 23 10:54:23 2024 +0200

    Extract gap as extra function

commit 39822a3b31
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jul 23 10:49:19 2024 +0200

    Add single padding

commit 0e858d880d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jul 23 10:37:51 2024 +0200

    Add horizontal/vertical padding toggle

commit dde8ab0680
Merge: 64da0983f cb051d2e5
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Jul 23 13:02:21 2024 +0530

    Merge pull request #223 from tokens-studio/fic-spacing-crash-on-non-layout

    Fix app crashing when spacing padding is applied to a shape without a…

commit 2411eeb644
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 22 18:23:12 2024 +0200

    Add separate gap

commit c00023319a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 22 18:13:37 2024 +0200

    Extract data

commit fd2f5537cf
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 22 18:07:16 2024 +0200

    Extract common logic

commit 2836ff2693
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 22 17:07:42 2024 +0200

    Fix actions

commit f731a30f81
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 22 13:54:36 2024 +0200

    Allow removing other attributes with apply-token function

commit 91033d6dea
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 22 11:30:27 2024 +0200

    Fix indent

commit 64da0983f3
Merge: 2f17b79be 337e1c9fa
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Fri Jul 19 00:30:15 2024 +0530

    Merge pull request #222 from tokens-studio/fix-stroke-width-crash

    Fix application crashing when stroke width is applied to a shape with…

commit cb051d2e5b
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Fri Jul 19 00:28:00 2024 +0530

    Fix app crashing when spacing padding is applied to a shape without a layout

commit 337e1c9fa0
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Thu Jul 18 23:13:51 2024 +0530

    Fix application crashing when stroke width is applied to a shape without a stroke

commit 359ec592fb
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 8 15:40:33 2024 +0200

    Single attribute context menu

commit ae2da534e9
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 8 15:40:18 2024 +0200

    Move radius updating to core

commit 9bf763efb3
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 8 15:19:48 2024 +0200

    Add all action

commit 77fe4d556f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 8 15:10:51 2024 +0200

    Convert border-radius to new UX

commit 7b2d11019c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 8 15:10:01 2024 +0200

    Only show atrribute actions when shapes are selected

commit bf994fcd56
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 8 14:40:57 2024 +0200

    Rename

commit 3ad009b515
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 8 14:40:35 2024 +0200

    Fix lint

commit 82b44e6569
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 8 14:40:07 2024 +0200

    Inline concat

commit da0389e304
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 8 14:38:19 2024 +0200

    Improved logic to run once for all shapes

commit 90618ec89a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 8 11:41:25 2024 +0200

    Add separator between default actions and attribute actions

commit 2f17b79bef
Merge: c2777ed6e bc1f27eac
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Mon Jul 8 13:53:10 2024 +0200

    Merge pull request #216 from tokens-studio/ux-improvements

    UX improvements

commit db7391e4cb
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 8 11:40:05 2024 +0200

    Separate entries

commit e75f9a7c7f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 8 11:06:57 2024 +0200

    Add predicate for all test

commit 62ecee2cf8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 8 10:24:23 2024 +0200

    Add grouping function by type

commit 3c67872d3c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jul 5 14:44:57 2024 +0200

    Add future test cases for providing a toggle all/attributes

commit 5a358e3d0c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jul 5 14:13:14 2024 +0200

    Extract singular token applied predicate

commit bc1f27eac9
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jul 5 09:18:36 2024 +0200

    Trigger Build

commit 0fad53ea6c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jul 5 08:55:01 2024 +0200

    Convert stroke to event

commit c7a46c31b4
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jul 5 08:53:45 2024 +0200

    Convert layout spacing to function

commit c70bb876b2
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jul 5 08:31:38 2024 +0200

    Add changelog

commit 4fc7efd3b7
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 16:03:32 2024 +0200

    Restore performance measuring lines

commit 4a329a6318
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 15:52:58 2024 +0200

    Override http server

commit 828e3a719f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 15:29:42 2024 +0200

    Disable running tests from shadow-cljs directly

commit 785961f7c6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 14:31:50 2024 +0200

    Cleanup

commit 55713275b6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 14:14:06 2024 +0200

    Add test for overriding token

commit f20c08f31b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 14:05:20 2024 +0200

    Specify tests

commit 893e790787
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 11:41:00 2024 +0200

    Only remove given token

commit b73cdd15e0
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 11:28:15 2024 +0200

    Add helper to remove attributes from applied-tokens

commit 658e7ebd0a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 11:15:06 2024 +0200

    Cleanup

commit 694baeee0c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 11:12:49 2024 +0200

    Add sizing test

commit 7abfaef1cb
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 11:08:46 2024 +0200

    Test applying rotation

commit 322c8ef8ec
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 11:06:48 2024 +0200

    Update opacity

commit b43d16008f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 10:51:08 2024 +0200

    Extract to helpers

commit 1f0f35e754
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 10:48:27 2024 +0200

    Remove unused

commit a842cb2d7d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 10:41:57 2024 +0200

    Cleanup

commit 8f806ef1fe
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 10:41:46 2024 +0200

    Test single property updates

commit f3261c9b0f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 10:41:10 2024 +0200

    Fix emit! side-effect

commit 818aa043ca
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 10:40:59 2024 +0200

    Wrap in undo sequence

commit 596480d177
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 10:05:36 2024 +0200

    Add test to verify toggle removes token for applied & unapplied

commit ab62c5b4ef
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 10:00:58 2024 +0200

    Add helper to apply token to shape

commit 581ced0ab8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 10:00:44 2024 +0200

    Abstract into helper

commit e85de19a5e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 09:29:48 2024 +0200

    Add multiple shapes test

commit 8370fd06d4
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 09:29:43 2024 +0200

    Remove cb

commit 3793e98660
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 09:29:16 2024 +0200

    Disable complete log

commit b12e59a8d7
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 09:13:02 2024 +0200

    Rename event to toggle-token

commit 71976ed7e9
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 3 18:24:09 2024 +0200

    Add helpers for creating test tokens

commit 0730ecef46
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 3 17:15:23 2024 +0200

    Cleanup

commit 219d184e6c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 3 17:06:08 2024 +0200

    Add multiple tokens for tests

commit a7e735bd81
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 3 17:04:47 2024 +0200

    Add helper for asnc stores

commit ed7aad6c4e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 3 16:11:39 2024 +0200

    Async token event tests working

commit e203646085
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 3 11:16:16 2024 +0200

    Naming

commit 1e70a4d714
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 3 11:09:50 2024 +0200

    Implement using rx observables instead of side-effects

commit 97db3c29ca
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 3 09:50:54 2024 +0200

    Trying to convert to rx structure

commit 50635ae879
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jul 2 16:06:41 2024 +0200

    Found error in handler logic, need rx streams

commit 3e5126251c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jul 2 15:19:31 2024 +0200

    Add failing logic test

commit 10d92f598c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jul 2 15:03:09 2024 +0200

    Add nodemon watcher

commit c486ea81f4
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jul 2 15:03:04 2024 +0200

    Cleanup

commit f2358b9827
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jul 2 08:22:27 2024 +0200

    Use toggle function

commit c2777ed6e3
Merge: 5c5b37826 224b656d5
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Mon Jul 1 18:43:17 2024 +0200

    Merge pull request #211 from tokens-studio/fix-sub-name-space

    Fix token naming clashes

commit 5cef23267c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 1 14:14:36 2024 +0200

    Move to tokens ns, add test

commit cf07de3bcf
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 1 14:05:06 2024 +0200

    Add tests for token-applied?

commit e38a943ce0
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 1 13:51:20 2024 +0200

    Move token-applied? to token ns

commit 224b656d57
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 1 10:40:38 2024 +0200

    Add CHANGELOG

commit 111be97228
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 1 10:31:16 2024 +0200

    Remove logs

commit ec511cc589
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 1 10:30:03 2024 +0200

    Fix setting token to own path

commit 9d637cbe5e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 1 10:16:52 2024 +0200

    Path selector test predicate is enough

commit 4a85ef3608
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 1 10:16:15 2024 +0200

    Split path/selector for disallowing creating tokens at path segments

commit a98f59469e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 1 09:56:45 2024 +0200

    Add - to allowed token-name

commit 174d91a519
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 28 14:39:36 2024 +0200

    Add function to check if a token can be placed under a name path

commit 48a7c52664
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 28 14:17:42 2024 +0200

    Separate errors

commit 2fa152d364
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 28 13:51:32 2024 +0200

    Move to token namespace

commit 504369ec13
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 28 13:43:41 2024 +0200

    Move tokens-name-tree to core, add test

commit ef5f019200
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 28 13:34:54 2024 +0200

    Add helper utility to convert name to path

commit 6da855c741
Merge: 3a500fb8a a4bbef991
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 28 11:24:55 2024 +0200

    Merge branch 'fix-token-reference-issue' into 199-branch-name

commit a4bbef9917
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Fri Jun 28 14:43:49 2024 +0530

    Fix token reference issue when name has .

commit 3a500fb8a7
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 26 19:40:06 2024 +0530

    Update CHANGELOG.md with PR link

commit 00dabaf38c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 26 16:08:21 2024 +0200

    Remove comment form

commit f24c314d63
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 26 16:04:50 2024 +0200

    Update

commit f9530c5a10
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 26 16:01:41 2024 +0200

    Restrict token naming

commit 5c5b378262
Merge: 3a594d239 4aac3eee7
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Fri Jun 28 08:19:57 2024 +0200

    Merge pull request #204 from tokens-studio/fix-deploy

    Fix deploy

commit 4aac3eee7f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 28 08:18:43 2024 +0200

    Test synchronize

commit 325ad66a46
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 28 08:16:26 2024 +0200

    Fix branches not being re-deployed after push

commit 3a594d2393
Merge: bd5a0d2d1 b2a983fd0
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Thu Jun 27 16:31:14 2024 +0200

    Merge pull request #203 from tokens-studio/fix-new-document-token

    Fix creating a token issue on empty document

commit b2a983fd05
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jun 27 16:07:47 2024 +0200

    Fix creating a token issue on empty document

commit bd5a0d2d1b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 26 15:06:22 2024 +0200

    Cleanup

commit 19c6c6d3bf
Merge: 7fa31b143 c9a40ee9b
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 26 17:58:01 2024 +0530

    Merge pull request #195 from tokens-studio/json-export-changelog

    Add Json export Changelog

commit c9a40ee9b3
Merge: 350654f96 7fa31b143
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 26 17:57:49 2024 +0530

    Merge branch 'token-studio-develop' into json-export-changelog

commit 350654f968
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 26 17:51:23 2024 +0530

    Update CHANGELOG.md image

commit 7fa31b143e
Merge: 357a0781b bf1c9e2c1
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 26 17:48:08 2024 +0530

    Merge pull request #198 from tokens-studio/json-dtcg-format

    Make tokens JSON export DTCG compatible

commit bf1c9e2c18
Merge: 96bfce13b 357a0781b
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 26 17:47:54 2024 +0530

    Merge branch 'token-studio-develop' into json-dtcg-format

commit 357a0781bb
Merge: 5ca916f8c 86fd667a1
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Jun 26 14:11:08 2024 +0200

    Merge pull request #194 from tokens-studio/style-dictionar-validation

    Token Insert/Edit Validation + Value Preview

commit 96bfce13be
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 26 17:28:10 2024 +0530

    Update CHANGELOG.md image

commit d6f1e2efc9
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 26 12:36:01 2024 +0530

    Update CHANGELOG

commit 158d5cba31
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 26 12:32:07 2024 +0530

    Make tokens JSON export DTCG compatible

commit aabbe2fd94
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Jun 25 22:34:09 2024 +0530

    Update CHANGELOG

commit 86fd667a11
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 17:06:52 2024 +0200

    Hide template section in preview document

commit 56976e2499
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 17:04:13 2024 +0200

    Update CHANGELOG

commit 9f6c587c95
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 16:46:15 2024 +0200

    Remove duplicate similar errors

commit 9f3e1743a1
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 16:45:01 2024 +0200

    Cleanup

commit e1b683f670
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 16:43:52 2024 +0200

    Cleanup

commit b4d1ef3fc7
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 16:40:48 2024 +0200

    Cleanup

commit b924bbc9c7
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 16:39:43 2024 +0200

    Cleanup

commit 656cc00923
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 16:38:28 2024 +0200

    Add missing deps

commit b89dc759be
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 16:36:21 2024 +0200

    Cleanup

commit 135ecf0e3a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 16:33:07 2024 +0200

    Cleanup

commit af374276e4
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 16:30:57 2024 +0200

    Extract missing reference error check

commit 2c42ca5a4b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 14:24:20 2024 +0200

    Cleanup

commit b905ff7d2c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 14:18:07 2024 +0200

    Validate forms again on submit

commit eb123bf8ef
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 12:15:14 2024 +0200

    Extract token validation

commit 6e9623153c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 11:55:57 2024 +0200

    Remove caching layer for now

commit d0f8e9612a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 11:52:39 2024 +0200

    Validate name before submitting

commit 5df0cf545e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 11:33:18 2024 +0200

    Remove form-touched work-around

commit eac7d9288b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 11:30:53 2024 +0200

    Fix on-submit taking old ref-values when user submits before errors have been validated

commit 05f6cfc4b0
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 11:30:45 2024 +0200

    Remove unneeded state

commit 33131fa943
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 11:15:43 2024 +0200

    Restore token saving

commit ca98747dea
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 11:02:21 2024 +0200

    Add description with schema

commit d2bdc6c624
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 10:40:31 2024 +0200

    Fix ref logic

commit 5ca916f8c4
Merge: 1ca3f2970 ee057c498
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Mon Jun 24 20:53:31 2024 +0530

    Merge pull request #191 from tokens-studio/tokens-json-export

    Tokens json export

commit ee057c498e
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Mon Jun 24 20:44:08 2024 +0530

    Simplify tranform tokens function

commit e0be30bb79
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 24 15:58:19 2024 +0200

    Dont show error when unfocusing name input field, but keep form disabled

commit 29e3171bd9
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Mon Jun 24 19:07:53 2024 +0530

    Incorporate styling changes to match Penpot design language

commit c98162d0bf
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 24 15:24:22 2024 +0200

    Move callback function to component

commit fb7b11a139
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Mon Jun 24 18:50:36 2024 +0530

    Remove : from token type in export

commit db26b38e81
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Mon Jun 24 18:47:12 2024 +0530

    Modify transform tokens to nest within token names

commit 28f25da9e8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 24 14:29:29 2024 +0200

    Move to tests

commit 111900c122
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 24 14:23:28 2024 +0200

    Cleanup

commit 10033ead91
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 24 14:23:03 2024 +0200

    Add specific esm testing environment for tokens

commit 2b3f602312
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Mon Jun 24 17:50:24 2024 +0530

    Move json encode functionalities to tokens namespace

commit ba6a6059c1
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 24 14:07:21 2024 +0200

    Move to custom ns

commit 69d9c8e88f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 24 12:44:29 2024 +0200

    Add esm test

commit ab51b43365
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 24 12:44:05 2024 +0200

    Add type

commit 0a73cbc6f1
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Mon Jun 24 14:18:57 2024 +0530

    Move transform and download functionality to core.cljs

commit bbb09567f6
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Mon Jun 24 14:18:35 2024 +0530

    Remove sample json data

commit 5c42514170
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 24 09:59:22 2024 +0200

    Add style dictionary find-token-reference test

commit 75bdda6b07
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Sun Jun 23 00:16:15 2024 +0530

    add some formatting

commit 62fc2cf652
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Sun Jun 23 00:10:02 2024 +0530

    Add initial working export tokens-json

commit 5f25bd8a7b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 21 19:41:04 2024 +0200

    Add comments

commit 59780a9d4d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 21 19:40:03 2024 +0200

    Add token finding function

commit 598e4d36fc
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 21 17:19:59 2024 +0200

    Disable on value error

commit 910485008f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 21 17:19:13 2024 +0200

    Fix name not updating button

commit 39eb964cb7
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 21 17:18:56 2024 +0200

    Reduce debounce timeout

commit dd62c7fe18
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 21 17:00:56 2024 +0200

    Give new tokens without a name a temporary hardcoded string

commit 1dcdddb2db
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 21 17:00:45 2024 +0200

    Check for self references

commit 941fb041b6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 21 17:00:00 2024 +0200

    Add form styling

commit 8db47b5877
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 21 15:09:46 2024 +0200

    Use initial value

commit 53f01ef46c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 21 15:04:30 2024 +0200

    Use input as cache key

commit 35ee732701
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 21 14:59:08 2024 +0200

    Debounced update of resolved value

commit f00ac72fbe
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 21 10:10:45 2024 +0200

    Revert to use-var

commit e394216f00
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 21 10:02:21 2024 +0200

    Move form out of modal specific code

commit 1ca3f29708
Merge: f000a5145 80ec74f77
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Thu Jun 20 17:03:45 2024 +0200

    Merge pull request #190 from tokens-studio/pr-test

    Test

commit 80ec74f77e
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Thu Jun 20 17:00:38 2024 +0200

    Fix resolver and add an oauth2 proxy

commit ef6074a5af
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Thu Jun 20 15:35:33 2024 +0200

    Test

commit f000a51451
Merge: 15041a8b9 125e14615
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Thu Jun 20 13:29:37 2024 +0200

    Merge pull request #189 from tokens-studio/clean-ci

    Fix proxy cache for config map

commit 125e146150
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Thu Jun 20 13:28:13 2024 +0200

    fix proxy cache for config map

commit 15041a8b9a
Merge: 31344a532 5c93cf9cd
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Thu Jun 20 13:04:29 2024 +0200

    Merge pull request #188 from tokens-studio/clean-ci

    Fix font issues

commit 5c93cf9cd3
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Thu Jun 20 13:03:49 2024 +0200

    Fix font issues
    Fix minio resolution not working
    Fix redis auth on by default

commit 31344a5322
Merge: ea5dbe275 867fd2391
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Thu Jun 20 02:18:31 2024 +0200

    Merge pull request #187 from tokens-studio/clean-ci

    Cleanup

commit 867fd23917
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Thu Jun 20 02:15:35 2024 +0200

    Cleanup

commit ea5dbe275e
Merge: dcf4b7ce6 41bd4c621
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Thu Jun 20 02:06:50 2024 +0200

    Merge pull request #185 from tokens-studio/feat/mailslurper

    Feat/mailslurper

commit 41bd4c621f
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Thu Jun 20 02:06:21 2024 +0200

    Last round of changes

commit 228665f5f2
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Thu Jun 20 00:58:10 2024 +0200

    Pr should be a prefix

commit be6b217ef0
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Thu Jun 20 00:49:33 2024 +0200

    Fix to use the sanitize the backend tag

commit 87b1bc12c2
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Thu Jun 20 00:40:10 2024 +0200

    Change asset storage

commit 4b61e0d80c
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 21:09:18 2024 +0200

    Fix branch name detection

commit f5514b419a
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 21:02:16 2024 +0200

    Use a raw tag

commit 349bdbb776
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 20:52:33 2024 +0200

    Change to use branch names instead of shas

commit 0fd4f814d8
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 20:47:35 2024 +0200

    Remove node affinity

commit 79b49bae27
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 20:31:21 2024 +0200

    Update namespace

commit dcf4b7ce64
Merge: 596c1997b f45789596
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Wed Jun 19 20:16:39 2024 +0200

    Merge pull request #186 from tokens-studio/feat/clean-images

    Add clean images workflow

commit f457895961
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Wed Jun 19 18:15:53 2024 +0000

    Add clean images workflow

commit b40f222d16
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 20:06:35 2024 +0200

    Add quote

commit 99d6df4588
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 19:58:44 2024 +0200

    Build backend as part of PR

commit 034d5ad5ab
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 19:57:19 2024 +0200

    Overhaul penpot chart

commit 885322d479
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 19 17:17:00 2024 +0200

    Reestore fields

commit 0830a26be9
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 19 17:11:28 2024 +0200

    Add error state for invalid name

commit 905ccfdec9
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 16:36:00 2024 +0200

    Capitalize chart

commit e3d73be7c5
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 16:35:46 2024 +0200

    Make sure the uppercase goes through

commit 072baf9c7b
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 16:30:45 2024 +0200

    Test PR again

commit 3e20e15ffd
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 16:22:28 2024 +0200

    Try fix PR chart

commit 6ed788aa5a
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 16:15:20 2024 +0200

    Add patch to enable SMTP

commit 0c45d15fe7
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 19 16:01:40 2024 +0200

    Variadic function doesn't work for hooks

commit 596c1997b8
Merge: f3d5b10e1 21ef1586f
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Wed Jun 19 15:57:35 2024 +0200

    Merge pull request #184 from tokens-studio/feat/mailslurper

    Move config from chart to include the smtp settings

commit 21ef1586f0
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 15:56:03 2024 +0200

    Move config

commit f3d5b10e1f
Merge: 2ce3a180e 3e94d4685
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Wed Jun 19 15:37:02 2024 +0200

    Merge pull request #183 from tokens-studio/feat/mailslurper

    Typo in infra manifest

commit 3e94d46850
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 15:35:15 2024 +0200

    Typo

commit 2ce3a180eb
Merge: caa41146c 569db9d1e
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Wed Jun 19 15:27:59 2024 +0200

    Merge pull request #182 from tokens-studio/feat/mailslurper

    Try cleanup namespace control

commit 569db9d1e6
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 15:25:12 2024 +0200

    Try cleanup namespace control

commit caa41146c4
Merge: a2292eb38 5e32a5bbf
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Wed Jun 19 14:56:29 2024 +0200

    Merge pull request #181 from tokens-studio/feat/mailslurper

    Remove onechart for simple manifests

commit 5e32a5bbfd
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 14:53:21 2024 +0200

    Remove onechart for simple manifests

commit a2292eb387
Merge: 4c236ab42 deb7ba982
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Wed Jun 19 14:43:24 2024 +0200

    Merge pull request #180 from tokens-studio/feat/mailslurper

    Setup mailslurper

commit deb7ba9823
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 14:42:04 2024 +0200

    Setup mailslurper

commit 4c236ab423
Merge: 168a5d57d 386bf1bc2
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Wed Jun 19 14:10:43 2024 +0200

    Merge pull request #179 from tokens-studio/fix/persistence

    Add persistence to penpot deploys

commit 386bf1bc2f
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 14:09:35 2024 +0200

    Add persistence to penpot deploys

commit 1596dbe155
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 19 13:54:09 2024 +0200

    Add function to verify already used names

commit deb9cb1120
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 19 11:26:29 2024 +0200

    Remove debugging code

commit f169d49397
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 19 11:18:41 2024 +0200

    Remove double cljs conversion

commit 0a73c3aa95
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 19 11:09:01 2024 +0200

    Validation in modal

commit 168a5d57d4
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 19 10:49:35 2024 +0200

    Add template

commit a4ef2ee8bf
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 19 10:42:42 2024 +0200

    Add changelog

commit 83515250da
Merge: 0d4e3e862 5a8a32ddc
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Jun 19 10:10:43 2024 +0200

    Merge pull request #168 from tokens-studio/style-dictionary

    References & Expressions in Tokens

commit 5a8a32ddc7
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 19 09:43:36 2024 +0200

    Remove items with missing references

commit 23de79bd04
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 19 09:40:26 2024 +0200

    Remove unneeded function

commit 0d4e3e8629
Merge: 35135635c 0105e4206
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 19 12:58:54 2024 +0530

    Merge pull request #174 from tokens-studio/fix-dimensions-keys-applied

    Fix keys applied when dimensions or sizing token is applied directly

commit 35135635c4
Merge: 2ed3ea6d6 0afddac5d
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 19 12:58:43 2024 +0530

    Merge pull request #175 from tokens-studio/fix-min-max-height-error

    Fix/ min and max height-width application

commit 2ed3ea6d6a
Merge: 1ebd2ee3d 3bbee9532
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 19 12:58:25 2024 +0530

    Merge pull request #177 from tokens-studio/remove-registration-questionnaire

    Remove registration questionnaire

commit 3bbee9532f
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 19 12:38:28 2024 +0530

    Fix error message

commit f99239341f
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 19 12:18:39 2024 +0530

    add message to undo this change in the future

commit f405612a25
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 19 12:16:54 2024 +0530

    Remove Onboarding Questionnaire

commit 0afddac5d1
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Jun 18 23:52:54 2024 +0530

    Fix/ min and max height-width application

commit 0105e42068
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Jun 18 23:21:17 2024 +0530

    Fix keys applied when dimensions or sizing token is applied directly

commit b4d7680cb4
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 18 11:29:02 2024 +0200

    Show resolved value

commit 742bb6de05
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 18 11:28:09 2024 +0200

    Handle tokens with issues in ui

commit a390942722
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 18 11:19:09 2024 +0200

    Resolve token value

commit cf52e873e2
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 18 11:13:26 2024 +0200

    Cleanup

commit 5c2891b247
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 18 11:10:51 2024 +0200

    Use resolved tokens from style-dictionary

commit 9261c53aff
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 18 10:23:52 2024 +0200

    Don't override original value, add resolved value, add missing reference error

commit d65d880845
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 18 09:59:36 2024 +0200

    Silence errors

commit 09609c18ef
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 17 17:07:02 2024 +0200

    Remove compile style dictionary

commit f0bc262a18
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 17 17:05:51 2024 +0200

    Working version

commit 5a64947b08
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 17 16:13:34 2024 +0200

    Add patched StyleDictionary

commit 0a86e3a651
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 14 10:52:30 2024 +0200

    Simplify

commit c9df90577f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jun 13 09:27:53 2024 +0200

    Add compiled library

commit 965da83c97
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 12 17:14:34 2024 +0200

    Add workspace-tokens helper

commit 9bc48a3a1a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 12 17:14:27 2024 +0200

    Allow passing custom cache atom

commit 908cc2240f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 12 16:48:13 2024 +0200

    Docs

commit a79d1013bf
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 12 16:45:24 2024 +0200

    Prevent reprocessing the style-dictionary cache multiple times

commit 73e8b80521
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 12 16:19:39 2024 +0200

    Cleanup

commit 2f45ab1b62
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 12 16:19:03 2024 +0200

    Add hook for using resolved tokens cache

commit 0921f8043b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 12 16:10:02 2024 +0200

    Allow passing of tokens

commit b1b6b5292c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 11 17:52:29 2024 +0200

    Disable invalid token style for now

commit 4fec7d5af2
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 11 17:52:12 2024 +0200

    Applying resolved token value

commit 66b4b892df
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 11 16:43:54 2024 +0200

    Fix data-keys being converted to camel-case

commit 4b90e90974
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 11 16:41:50 2024 +0200

    Backporting resolved tokens to the original structure

commit 1519f8f560
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 11 15:12:30 2024 +0200

    Move to ns

commit e691628648
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 11 10:42:25 2024 +0200

    Test out tokens-studio data

commit efd4c5dcca
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 11 10:24:12 2024 +0200

    Add performance measuring

commit a5b22d5427
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 10 15:50:48 2024 +0200

    Got resolve working

commit 7da772d6a2
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 10 11:54:34 2024 +0200

    Add sd function

commit 1023ba866a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 10 10:52:03 2024 +0200

    Add StyleDictionary as compiled lib

commit 1ebd2ee3d7
Merge: dc36f4f6d 8d444b4b0
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Fri Jun 14 12:40:44 2024 +0530

    Merge pull request #172 from tokens-studio/hide-unfunctional-token-sections

    Hide non functional token sections

commit 8d444b4b02
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Thu Jun 13 21:33:38 2024 +0530

    Hide non functional token types from UI

commit dc36f4f6d3
Merge: 93c249c77 f10a4f28e
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Thu Jun 13 12:59:49 2024 +0530

    Merge pull request #164 from tokens-studio/other-token-types-context-menu

    Add context menu for opacity, rotation and stroke width tokens

commit f10a4f28ea
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 12 16:18:51 2024 +0530

    Add context menu for opacity, rotation and stroke width

commit 93c249c77a
Merge: 01d2a25c8 3f55536fc
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 12 15:29:30 2024 +0530

    Merge pull request #161 from tokens-studio/dimensions-context-menu

    Dimensions context menu

commit 3f55536fc0
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Mon Jun 10 23:25:11 2024 +0530

    Add custom context menu and fix styling issues with subcontext menu

commit 842b76f3c1
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Fri Jun 7 01:37:26 2024 +0530

    replace 30px with variables

commit e86038d52f
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Fri Jun 7 01:27:18 2024 +0530

    Add CSS to deal with margin before the Sub Context Menu titles

commit 91eb59696c
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Thu Jun 6 23:09:22 2024 +0530

    Remove children attribute and use submenu instead

commit 67a34c91d8
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 5 23:19:43 2024 +0530

    Add leading spaces to subcontext menu titles

commit 307f472528
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 5 22:23:27 2024 +0530

    remove print statement

commit a5c235754c
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 5 22:06:59 2024 +0530

    Cleanup debug statements

commit a98d6b4c07
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 5 22:06:31 2024 +0530

    Add context menu functionalities for dimensions token

commit ed0d9e1cf5
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 5 13:49:18 2024 +0530

    initial dimensions context menu

commit 819c50eaf8
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 5 13:49:00 2024 +0530

    change dimension to dimensions across

commit 01d2a25c8c
Merge: e8b755c75 ea593221b
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Jun 4 17:02:04 2024 +0530

    Merge pull request #160 from tokens-studio/sizing-token-context-menu

    Add new changes from token-studio-develop merge

commit ea593221b3
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Jun 4 15:52:52 2024 +0530

    Add new changes from token-studio-develop merge

commit e8b755c757
Merge: 202b72dcd 88d3fc234
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Jun 4 15:47:58 2024 +0530

    Merge pull request #159 from tokens-studio/sizing-token-context-menu

    Add context menu functionalities on sizing tokens

commit 88d3fc234d
Merge: a553253d2 202b72dcd
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Jun 4 15:46:02 2024 +0530

    Resolve merge conflicts in context_menu.cljs

commit 202b72dcd0
Merge: 1056c6b44 057934c88
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Tue Jun 4 11:23:49 2024 +0200

    Merge pull request #132 from tokens-studio/feat/branch-deploys

    Prefer wait over deploy for build

commit 057934c883
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Tue Jun 4 11:11:58 2024 +0200

    Cleanup PR

commit 3b3fbc2ccd
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Tue Jun 4 11:06:00 2024 +0200

    fix deploys

commit 1056c6b448
Merge: dc14933f3 580076355
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Tue Jun 4 10:39:03 2024 +0200

    Merge pull request #158 from tokens-studio/142-when-a-token-is-applied-on-a-shape-in-the-context-menu-there-should-be-check-box-indicating-which-attribute-is-applied

    Show checkmark next to selected token attributes

commit a553253d28
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Mon Jun 3 23:34:51 2024 +0530

    remove println statement

commit 193ad115a2
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Mon Jun 3 23:25:59 2024 +0530

    Add context menu functionalities on sizing tokens

commit 580076355b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 3 15:21:08 2024 +0200

    Show checkmark for applied tokens

commit 65942ef63b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 3 13:39:26 2024 +0200

    Use set of attributes for action generation

commit c1096e15da
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 3 13:39:16 2024 +0200

    Cleanup

commit dc14933f3a
Merge: e89f03393 3c3ef57da
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 3 10:51:04 2024 +0200

    Merge remote-tracking branch 'penpot/develop' into token-studio-develop

commit e89f03393b
Merge: 5c7e235c9 86e6421b6
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Mon Jun 3 10:48:49 2024 +0200

    Merge pull request #157 from tokens-studio/florian/input-select

    Allow token selection with keyboard from right side

commit 86e6421b68
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 31 16:25:30 2024 +0200

    Disable selection when entering with mouse

commit 710fa0d817
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 31 16:22:01 2024 +0200

    Allow arrow selection

commit 5c7e235c97
Merge: d624a559a c3cee77ef
Author: Akshay Gupta <akshay@hyma.io>
Date:   Fri May 31 18:31:37 2024 +0530

    Merge pull request #155 from tokens-studio/spacing-context-menu

    Spacing context menu

commit c3cee77efb
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Fri May 31 18:19:42 2024 +0530

    remove unused imports and refactor functions

commit d624a559aa
Merge: 420b8cf52 d16f1c773
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Fri May 31 10:46:51 2024 +0200

    Merge pull request #150 from tokens-studio/flex-row-gap-commit

    Spacing tokens

commit 76347228fe
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Thu May 30 22:25:21 2024 +0530

    Add all spacing token context menu functionalities

commit 84d96a1004
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed May 29 18:47:17 2024 +0530

    Add initial spacing context menu entries

commit d16f1c773e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 29 14:53:40 2024 +0200

    Change both properties

commit 7376cb634a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 29 14:32:09 2024 +0200

    Add padding x/y tokens

commit 0e7e37afc2
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 29 14:21:33 2024 +0200

    Add padding editable select

commit 28bdf62454
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 29 13:50:31 2024 +0200

    Integrate changes

commit 420b8cf524
Merge: bdefc97c2 c2c0fbf40
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed May 29 13:20:44 2024 +0200

    Merge pull request #146 from tokens-studio/135-flex-row--gap-token-updating-from-the-right-sidebar

    135 flex row  gap token updating from the right sidebar

commit 78f3d54dee
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 29 10:55:40 2024 +0200

    Add commit

commit c2c0fbf40a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 29 09:37:24 2024 +0200

    Add spacing/row options

commit 1ad998de23
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 29 09:28:38 2024 +0200

    Use editable-select for col-gap/row-gap

commit fb5f7e870a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 29 09:23:47 2024 +0200

    Fix drop-down button spacing

commit 5c83247256
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 29 09:20:14 2024 +0200

    Prevent selection on disabled selects

commit c6f5da8873
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 29 09:16:55 2024 +0200

    Move select styles to select component

commit 9a7c944763
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 29 09:04:49 2024 +0200

    Remove unused classname

commit 985d8d33ff
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 29 09:02:26 2024 +0200

    Add event to passed arguments [*]

    [*] Needed for layout_container component

commit 384da8555d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 29 08:50:50 2024 +0200

    Dynamically pass props to input

commit bdefc97c21
Merge: 144b164fa bb3ee2278
Author: Akshay Gupta <akshay@hyma.io>
Date:   Tue May 28 17:36:59 2024 +0530

    Merge pull request #140 from tokens-studio/general-token-context-menu-functions

    General token context menu functions and specific context menu functions for border radius

commit bb3ee22780
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue May 28 17:03:26 2024 +0530

    pass context menu attributes as map and some minor fixes

commit e02777b855
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Tue May 28 10:23:20 2024 +0200

    Be explicit in tagging for prs

commit 144b164fa0
Merge: 169d71b2d 96a7cf2e9
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Tue May 28 10:06:12 2024 +0200

    Merge pull request #139 from tokens-studio/fix-staging

    Fix staging

commit eeb87e49a2
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Tue May 28 09:58:15 2024 +0200

    Cleanup github token usage

commit 9066ad9e39
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue May 28 02:22:25 2024 +0530

    Add border radius specific context menu functions

commit 464bdf3d9c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon May 27 15:09:36 2024 +0200

    Use single undo operation for width/height change

commit 96a7cf2e98
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon May 27 14:50:55 2024 +0200

    Convert kebab keys into camelCase

commit 47d75e7e2a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon May 27 14:43:28 2024 +0200

    Remove closed for now

commit 6ed5dc138d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon May 27 14:43:11 2024 +0200

    Fix editing/saving

commit 169d71b2df
Merge: 65563e2d3 6bacd1d66
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Mon May 27 11:22:27 2024 +0200

    Merge pull request #138 from tokens-studio/124-disable-1password-completion

    124 disable 1password completion

commit 6bacd1d663
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon May 27 11:13:05 2024 +0200

    Disable password manager completion

commit 86d7979e1e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon May 27 11:12:36 2024 +0200

    Remove unused component

commit d1fc43d8d6
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Mon May 27 10:38:35 2024 +0200

    Try force deploy branch PR

commit 370a5d9bb8
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Mon May 27 13:02:24 2024 +0530

    Add initial context menu token specific functionality

commit 65563e2d3c
Merge: 968c6437f 7a8722de1
Author: Akshay Gupta <akshay@hyma.io>
Date:   Fri May 24 18:13:00 2024 +0530

    Merge pull request #133 from tokens-studio/editing-tokens

    :feat editing tokens

commit 968c6437fb
Merge: 75b935187 cbad5033c
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Fri May 24 11:46:45 2024 +0200

    Merge pull request #134 from tokens-studio/123-other-fields-to-update

    Width/Height Token Changing from the sidebar

commit cbad5033c2
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 24 11:25:30 2024 +0200

    Cleanup

commit f52e2e3a41
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 24 10:34:20 2024 +0200

    Differentiate width/height sizing selected properties

commit 49d9b52b12
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 24 10:01:13 2024 +0200

    Cleanup

commit ea9d850412
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 24 10:00:43 2024 +0200

    Fix selectionStart not being detectable (selectionStart doesnt work for number)

commit b6061cc4a0
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 24 10:00:26 2024 +0200

    Fix instant value change applies shape attributes

commit bc620ba2cd
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 24 08:55:04 2024 +0200

    Update width value

commit 595831118d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 24 08:36:28 2024 +0200

    Allow aligning dropwdown to the left

commit 406e8d110c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 24 07:34:43 2024 +0200

    De-Applying token

commit 7a8722de1b
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Fri May 24 00:14:17 2024 +0530

    Add ability to edit existing token attributes

commit 5131b79060
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Thu May 23 16:22:31 2024 +0200

    Prefer wait over deploy for build

commit 75b9351871
Merge: 557195cd5 84ad8a6be
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Thu May 23 16:19:31 2024 +0200

    Merge pull request #131 from tokens-studio/feat/branch-deploys

    Test PR deploys

commit 84ad8a6be6
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Thu May 23 15:39:21 2024 +0200

    Escape interpolation

commit f9e1a65631
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Thu May 23 15:23:27 2024 +0200

    Trigger cleanup as well

commit 66f67ddff4
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Thu May 23 15:13:43 2024 +0200

    Test PR deploys

commit 2dd994799c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu May 23 09:41:16 2024 +0200

    Abstract API

commit e181065bda
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu May 23 09:29:17 2024 +0200

    Formatting

commit 1ed692230b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu May 23 09:24:12 2024 +0200

    Abstract functionality

commit 557195cd55
Merge: 2818d097a 80ff7f769
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Thu May 23 11:05:12 2024 +0200

    Merge pull request #130 from tokens-studio/129-bug-file-is-crashing-post-applying-a-border-radius-token-to-a-shape

    Fix non-optional keys breaking staging server

commit 80ff7f769c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu May 23 10:53:18 2024 +0200

    Fix non-optional keys breaking staging server

commit 273a9530ea
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Thu May 23 13:14:28 2024 +0530

    initial edit commit

commit 2818d097ab
Merge: 1a144192a cc0e4af4b
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Thu May 23 08:43:51 2024 +0200

    Merge pull request #128 from tokens-studio/119-higlight-applied-token-in-the-editing-field

    Show token value inside shapes panel (border-radius)

commit cc0e4af4bc
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 22 16:37:19 2024 +0200

    Fix token value not being removed after submit

commit b1379ed7de
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 22 16:35:44 2024 +0200

    Fix refocus prop not being removed

commit 5bccfa9e2f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 22 16:29:18 2024 +0200

    Dont submit token when text is selected

commit 5806ae7426
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 22 16:20:40 2024 +0200

    Abstract functions

commit 2eb5efb274
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 22 16:13:58 2024 +0200

    Cleanup

commit 850bf80ffc
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 22 15:59:22 2024 +0200

    Replace token with value when inserted after token input

commit 6f5930bf15
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 22 15:43:40 2024 +0200

    Clear token value on blur

commit 2efd6e1584
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 22 15:36:26 2024 +0200

    Refocus input on token deletion

commit 86b493522c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 22 15:12:56 2024 +0200

    Remove unneeded focus hack

commit 1a144192a9
Merge: cbfcc5056 04c43acf3
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed May 22 15:00:05 2024 +0200

    Merge pull request #127 from tokens-studio/fix-sass-pipe-break

    Dont break pipe when sass has an error

commit 70336ea45e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 22 14:26:37 2024 +0200

    Style focused pill

commit 7e79cf274d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 22 14:17:56 2024 +0200

    Fix input background being clipped on hover

commit 42df426375
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 22 14:13:33 2024 +0200

    Style pill and input combination

commit 7c80f87f30
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 22 14:13:23 2024 +0200

    Show value instead of label, add title

commit 019759392c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 22 10:23:57 2024 +0200

    Unlink token when pressing backspace on empty input field

commit 7da382dfed
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue May 21 15:47:18 2024 +0200

    Clear value when pressing backspace as last action

commit 35f384ce9b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue May 21 15:40:34 2024 +0200

    Use custom input value logic when token is applied

commit 50354ccb71
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue May 21 15:40:19 2024 +0200

    Fix state being reset at start

commit 975f41bc08
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue May 21 15:21:01 2024 +0200

    Display regular input field when token is applied [*]

    [*] Numeric input renders default 0

commit 04c43acf39
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 22 13:48:13 2024 +0200

    Dont break pipe when sass has an error

commit cbfcc50563
Merge: 44f55308a eb168a6f9
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 22 13:46:26 2024 +0200

    Merge remote-tracking branch 'penpot/develop' into token-studio-develop

commit 44f55308a6
Merge: e874ed5b6 2b1066535
Author: Akshay Gupta <akshay@hyma.io>
Date:   Wed May 22 15:14:54 2024 +0530

    Merge pull request #126 from tokens-studio/rotation-token

    Add ability to apply rotation token

commit 2b10665356
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed May 22 15:11:01 2024 +0530

    close applied tokens map schema

commit 13a8872dbd
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed May 22 15:08:05 2024 +0530

    add rotation to applied tokens schema

commit 3793f1791a
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed May 22 13:08:59 2024 +0530

    Add ability to apply rotation token

commit e874ed5b6c
Merge: cb7d4409e eca133426
Author: Akshay Gupta <akshay@hyma.io>
Date:   Tue May 21 17:11:21 2024 +0530

    Merge pull request #125 from tokens-studio/remember-token-section-state

    Remember token section open/close state

commit eca1334266
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue May 21 16:52:47 2024 +0530

    Remember token section open/close state

commit cb7d4409e2
Merge: a1f09d69b 9b13444c4
Author: Akshay Gupta <akshay@hyma.io>
Date:   Tue May 21 13:28:34 2024 +0530

    Merge pull request #116 from tokens-studio/spacing-token-layout-update

    spacing token to update only row or column gap as per flex direction

commit a1f09d69b0
Merge: 162e7b6c5 344a27602
Author: Akshay Gupta <akshay@hyma.io>
Date:   Tue May 21 13:27:42 2024 +0530

    Merge pull request #117 from tokens-studio/sort-tokens-by-insert-order

    sort tokens by insert order

commit 344a27602b
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Mon May 20 22:25:46 2024 +0530

    sort tokens by insert order

commit 9b13444c44
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Mon May 20 21:59:28 2024 +0530

    spacing token to update only row or column gap as per flex direction

commit 162e7b6c58
Merge: 90ab485e7 5954a8698
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Mon May 20 12:59:50 2024 +0200

    Merge branch 'token-studio-develop' of github.com:tokens-studio/tokens-studio-for-penpot into feat/port-tracking-and-smoke

commit 90ab485e78
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Mon May 20 12:56:43 2024 +0200

    Needs depend on smoke

commit 5954a8698b
Merge: ec36e06b7 851054c61
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Mon May 20 12:45:42 2024 +0200

    Merge pull request #114 from tokens-studio/feat/port-tracking-and-smoke

    Add port label tracking and add a smoke test

commit 851054c617
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Mon May 20 12:11:29 2024 +0200

    Add port label tracking and add a smoke test

commit ec36e06b7b
Merge: 0bd3b0598 3caa9d780
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Fri May 17 14:59:28 2024 +0200

    Merge pull request #113 from tokens-studio/108-custom-editable-select-for-token-completion

    Custom editable select for token completion

commit 3caa9d780a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 17 11:37:36 2024 +0200

    Show checkmark icon for applied tokens

commit ad26d9e2d3
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 17 10:55:24 2024 +0200

    More styling

commit 85a40d19ed
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 17 10:26:32 2024 +0200

    Extract component

commit b61a59d375
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 17 10:16:01 2024 +0200

    Extract key down handler

commit ced325e009
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 17 10:15:22 2024 +0200

    Return selected item map instead of value [*]

    [*] Multiple tokens could have the same value

commit e69bfb8c54
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 17 09:05:18 2024 +0200

    Style select

commit 8dd2ba7d78
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 17 09:04:50 2024 +0200

    Fix naming

commit cb980ace44
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 17 09:04:35 2024 +0200

    Use regular map for options

commit 165e222117
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 17 08:17:51 2024 +0200

    Only show dropdown when options contain items

commit b0dcbae3ac
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 17 08:13:55 2024 +0200

    Fix border clipping

commit 6a8887d9cc
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 17 08:04:23 2024 +0200

    Remove text transform

commit d2107e7f69
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 17 08:02:06 2024 +0200

    Fix width of drop down

commit 91271b9e41
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 17 07:57:55 2024 +0200

    Custom editable-select

commit 0bd3b0598b
Merge: 23ee54b4b a3d4d6226
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu May 16 18:43:05 2024 +0200

    Merge remote-tracking branch 'penpot/develop' into token-studio-develop

commit 23ee54b4b7
Merge: bde2b4b3a c654766f8
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Thu May 16 18:37:46 2024 +0200

    Merge pull request #111 from tokens-studio/71-apply-token-from-the-shapes-panel-right-side

    Apply border radius token from the shapes panel

commit bde2b4b3a5
Merge: 3e7a42213 c44ac862f
Author: Akshay Gupta <akshay@hyma.io>
Date:   Thu May 16 17:15:59 2024 +0530

    Merge pull request #110 from tokens-studio/duplicate-token

    add functionality to duplicate token from context menu

commit c44ac862f0
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Thu May 16 15:48:39 2024 +0530

    simplify duplicate token function

commit c654766f87
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu May 16 11:43:37 2024 +0200

    Cleanup outdated props

commit 5205b684e9
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu May 16 11:36:08 2024 +0200

    Fix token not being applied

commit e1ae3d55af
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Thu May 16 14:08:11 2024 +0530

    ad functionality to duplicate token from context menu

commit 23bee8415a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu May 16 09:59:55 2024 +0200

    Fix missing dependency

commit 48c85d7200
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu May 16 09:55:57 2024 +0200

    Simplify token application

commit 0d154679e9
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu May 16 09:44:11 2024 +0200

    Add docstrings

commit c60c5ac34f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu May 16 09:33:20 2024 +0200

    Apply tokens directly to shape

commit cdca00a986
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu May 16 09:02:48 2024 +0200

    Extract token apply function

commit 4e3af1407d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 15 18:28:04 2024 +0200

    Fix styling of dropdown items?

commit 9a58188dc3
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 15 18:20:47 2024 +0200

    Show border-radius tokens as options

commit d9dbaad281
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 15 18:20:28 2024 +0200

    Add tokens map generators

commit 5e301605ad
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 15 17:44:06 2024 +0200

    Extract token grouping to core

commit 622843f18d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 15 17:43:49 2024 +0200

    Take tokens as ref

commit 8f852bf48f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 15 17:26:10 2024 +0200

    Use :as

commit 3e7a422136
Merge: f8972efea 591e33340
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed May 15 17:14:41 2024 +0200

    Merge pull request #104 from tokens-studio/fix-sizing-dimensions-mixup

    Fix sizing/dimensions token mixup

commit 591e333400
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 15 15:40:07 2024 +0200

    Fix sizing/dimensions token mixup

commit f8972efea0
Merge: d4dd49bdb d69cca2d9
Author: Akshay Gupta <akshay@hyma.io>
Date:   Wed May 15 18:56:42 2024 +0530

    Merge pull request #103 from tokens-studio/simple-context-menu

    fix delimiter mismatch and add missing data/tokens package

commit d69cca2d9c
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed May 15 18:50:30 2024 +0530

    fix delimiter mismatch and add missing data/tokens package

commit d4dd49bdb7
Merge: 157bb01e8 ec5a11731
Author: Akshay Gupta <akshay@hyma.io>
Date:   Wed May 15 18:31:13 2024 +0530

    Merge pull request #97 from tokens-studio/simple-context-menu

    Simple context menu

commit ec5a117318
Merge: d3d454a43 157bb01e8
Author: Akshay Gupta <akshay@hyma.io>
Date:   Wed May 15 18:30:53 2024 +0530

    Merge branch 'token-studio-develop' into simple-context-menu

commit d3d454a43c
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed May 15 14:50:24 2024 +0530

    move delete token to tokens actions section

commit 5fa2048b23
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed May 15 14:40:46 2024 +0530

    re-use workspace context menu entry and fix double nested ul

commit 316db61c8a
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed May 15 13:23:47 2024 +0530

    remove warning modal when deletion of a token

commit fcd7a35b46
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed May 15 12:59:18 2024 +0530

    move context menu functions to data/tokens

commit 157bb01e8f
Merge: b9e9f9fb1 584ac6341
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Tue May 14 16:39:16 2024 +0200

    Merge pull request #99 from tokens-studio/fix/containerization

    Downtune replica amount. Cleanup redis host

commit 584ac6341d
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Tue May 14 16:37:16 2024 +0200

    Downtune replica amount. Cleanup redis host

commit b9e9f9fb13
Merge: d67311b12 4d14d78ee
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Tue May 14 16:27:19 2024 +0200

    Merge pull request #98 from tokens-studio/icons-spacing

    Add more space between icon and label, fix icon offset

commit 4d14d78eed
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue May 14 16:01:11 2024 +0200

    Add more space between icon and label, fix icon offset

commit d67311b126
Merge: 230b271be e6f86cda6
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Tue May 14 15:26:01 2024 +0200

    Merge pull request #96 from tokens-studio/95-placeholder-icons

    Add token placeholder icons

commit 8cb9d9c352
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue May 14 18:48:48 2024 +0530

    Add delete token functionality in context menu

commit 31b487ed86
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue May 14 18:25:08 2024 +0530

    remoev translation function

commit 24f1693684
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue May 14 18:10:13 2024 +0530

    Add Context Menu for tokens and simple placeholder functions

commit e6f86cda64
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue May 14 14:24:36 2024 +0200

    Add token placeholder icons

commit 230b271be3
Merge: 740024061 677b28218
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue May 14 12:00:45 2024 +0200

    Merge remote-tracking branch 'penpot/develop' into token-studio-develop

commit 7400240616
Merge: 550045cb3 aa8b1f4c7
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Mon May 13 16:42:34 2024 +0200

    Merge pull request #94 from tokens-studio/fix/containerization

    Chart does auto inject the release name

commit aa8b1f4c73
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Mon May 13 16:41:51 2024 +0200

    Chart does auto inject the release name

commit 550045cb3b
Merge: 50f69936a 60207fd01
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Mon May 13 16:21:37 2024 +0200

    Merge pull request #93 from tokens-studio/fix/containerization

    Circumvent bug

commit 60207fd01e
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Mon May 13 16:21:01 2024 +0200

    Circumvent bug

commit 50f69936a4
Merge: d90755531 f9d4b9f69
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Mon May 13 16:10:32 2024 +0200

    Merge pull request #92 from tokens-studio/fix/containerization

    Add missing secretName

commit f9d4b9f699
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Mon May 13 16:09:56 2024 +0200

    Add missing secretName

commit d907555314
Merge: d3c0abc11 e50a46409
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Mon May 13 15:32:21 2024 +0200

    Merge pull request #90 from tokens-studio/fix/containerization

    Add redis. Ingress should be under front end for some reason

commit e50a46409f
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Mon May 13 15:31:03 2024 +0200

    Add redis. Ingress should be under front end for some reason

commit d3c0abc11a
Merge: 64dc685f2 98d7895e2
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Mon May 13 15:09:48 2024 +0200

    Merge pull request #85 from tokens-studio/84-border-width

    Stroke Width

commit 64dc685f2a
Merge: 071df4074 79ce39612
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Mon May 13 15:07:23 2024 +0200

    Merge pull request #89 from tokens-studio/fix/containerization

    Fix pull secrets needed to be a reference

commit 79ce396122
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Mon May 13 15:06:22 2024 +0200

    Fix pull secrets needed to be a reference

commit 071df4074f
Merge: 309abec88 0ce5c165d
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Mon May 13 14:43:15 2024 +0200

    Merge pull request #88 from tokens-studio/fix/containerization

    Update secrets

commit 0ce5c165db
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Mon May 13 14:41:58 2024 +0200

    Update secrets

commit 309abec88a
Merge: 425155153 10aaa966f
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Mon May 13 14:26:44 2024 +0200

    Merge pull request #87 from tokens-studio/fix/containerization

    Change deploy to use alternate chart as truecharts using a weird helm…

commit 10aaa966f9
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Mon May 13 14:25:07 2024 +0200

    Change deploy to use alternate chart as truecharts using a weird helm dependency

commit 98d7895e2a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon May 13 11:23:30 2024 +0200

    Add stroke-width token

commit 4251551535
Merge: eafd4f01e ae263363e
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Fri May 10 17:36:50 2024 +0200

    Merge pull request #83 from tokens-studio/82-opacity

    Add opacity

commit eafd4f01eb
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Fri May 10 14:34:05 2024 +0200

    Use raw manifests

commit 153ea95a55
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Fri May 10 14:02:34 2024 +0200

    Typo

commit 16c893fa60
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Fri May 10 14:01:08 2024 +0200

    Add matrix for docker build

commit 0e94c9851a
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Fri May 10 13:59:09 2024 +0200

    Move workflow file

commit 07583b5e34
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Fri May 10 13:57:17 2024 +0200

    Add deployment config

commit ae263363ed
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Thu May 9 21:36:38 2024 +0530

    Add opacity

commit 4e3ee7bdab
Merge: 5efcb0f42 42b25479b
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Fri May 10 12:05:06 2024 +0200

    Merge pull request #81 from tokens-studio/value-resolve

    Value resolve

commit 42b25479b3
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 10 10:36:56 2024 +0200

    Highlight invalid token values

commit 5813acea02
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 10 10:26:22 2024 +0200

    Log whole token

commit df48295903
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 10 10:22:09 2024 +0200

    Add resolving function and move to core ns

commit 5efcb0f424
Merge: 2ed4ece23 6d5beb758
Author: Akshay Gupta <akshay@hyma.io>
Date:   Fri May 10 12:25:23 2024 +0530

    Merge pull request #78 from tokens-studio/fix-assets-panel-view

    Fix assets panel tab view

commit 2ed4ece23d
Merge: d81b1f328 9a243e3b4
Author: Akshay Gupta <akshay@hyma.io>
Date:   Fri May 10 12:22:03 2024 +0530

    Merge pull request #76 from tokens-studio/token-pills-wrap

    Add flex wrap to token pills wrapper

commit d81b1f328d
Merge: 68a201374 0c856702c
Author: Akshay Gupta <akshay@hyma.io>
Date:   Fri May 10 12:21:38 2024 +0530

    Merge pull request #80 from tokens-studio/add-spacing-function

    Add simple token spacing application

commit 0c856702c6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 10 08:36:40 2024 +0200

    Remove unneeded import

commit 76a38bcb0c
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Thu May 9 21:36:38 2024 +0530

    Add simple token spacing application

commit 6d5beb7583
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Thu May 9 18:42:33 2024 +0530

    Fix assets panel tab view

commit 9a243e3b4f
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Thu May 9 17:51:48 2024 +0530

    Add flex wrap to token pills wrapper

commit 68a201374c
Merge: 11d4496e9 69ed15e78
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed May 8 14:29:15 2024 +0200

    Merge pull request #74 from tokens-studio/70-sort-sections-by-tokens

    Sort token groups

commit 11d4496e9a
Merge: 6fa1d6eec fd3922936
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed May 8 14:29:02 2024 +0200

    Merge pull request #68 from tokens-studio/65-dimensions

    Dimensions Token

commit 6fa1d6eecc
Merge: 6bb4eec80 3d13015e3
Author: Akshay Gupta <akshay@hyma.io>
Date:   Wed May 8 17:52:33 2024 +0530

    Merge pull request #66 from tokens-studio/close-token-modal

    add ability to close modal once save token button is clicked

commit 69ed15e789
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Apr 25 19:00:00 2024 +0200

    Remove search bar

commit e5a7f87d1c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Apr 25 19:00:00 2024 +0200

    Sort token groups

commit fd39229367
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Apr 25 19:00:00 2024 +0200

    Add shape dimensions updating

commit a9aac4c867
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Apr 25 19:00:00 2024 +0200

    Move emit to the shape update function [*]

    [*] A shape update might need multiple emit functions

commit 3d13015e30
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed May 8 15:16:11 2024 +0530

    add ability to close modal once save token button is clicked

commit 28e6db9bb4
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Apr 25 19:00:00 2024 +0200

    Reuse attribute keys from token schema

commit 6bb4eec805
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Apr 25 19:00:00 2024 +0200

    Remove unneeded on-apply prop

commit 76f42a0aec
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Apr 25 19:00:00 2024 +0200

    Cleanup on-apply-token function

commit f71ce60b11
Merge: e5c564041 e7b065ac6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue May 7 14:39:33 2024 +0200

    Merge remote-tracking branch 'penpot/develop' into token-studio-develop

commit e5c5640413
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Apr 25 19:00:00 2024 +0200

    Start tokens studio plugin base
2025-01-10 10:44:08 +01:00
Andrey Antukh
404297f837 Merge pull request #5537 from penpot/azazeln28-fix-text-editor-issue-9716
🐛 Fix text editor issue 9716
2025-01-10 10:24:23 +01:00
Alejandro
d500058aa9 Merge pull request #5536 from penpot/ladybenko-9722-bool-ops
🎉 Implement boolean operations (wasm)
2025-01-10 09:11:41 +01:00
Andrey Antukh
a1037fb053 Merge remote-tracking branch 'origin/staging' into develop 2025-01-09 17:37:33 +01:00
Belén Albeza
4e5f67676c 🎉 Implement boolean operations (wasm) 2025-01-09 17:14:48 +01:00
Andrey Antukh
33f853ff2e Merge pull request #5511 from penpot/alotor-fix-touched-import
🐛 Fix error when importing files with touched components
2025-01-09 17:13:22 +01:00
alonso.torres
d16513be9d 🐛 Fix error when importing files with touched components 2025-01-09 16:58:40 +01:00
AzazelN28
ad077696b0 🐛 Fix Unknown node type when replacing whole root node 2025-01-09 16:28:32 +01:00
Juanfran
1514faca55 Merge pull request #5505 from penpot/eva-fix-select
🐛 Fix some a11y errors on select component
2025-01-09 15:11:13 +01:00
Eva Marco
9d041b130c 🐛 Fix some a11y errors on select component 2025-01-09 13:17:29 +01:00
luisδμ
74f807d539 Merge pull request #5515 from penpot/qol-comments-mentions
 Add mentions to notifications
2025-01-09 12:42:11 +01:00
Belén Albeza
194cca4b64 Merge pull request #5526 from penpot/superalex-render-wasm-stroke-caps
🎉 Stroke caps support for wasm render
2025-01-09 12:35:05 +01:00
Marina López
8df8e384da 🐛 Avoid loading the overview before zoom to frame 2025-01-09 12:22:55 +01:00
Eva Marco
6874f5475c Merge pull request #5530 from penpot/eva-fix-icon-component
🐛  Fix icon* component prop
2025-01-09 12:22:41 +01:00
Eva Marco
5ee87018b9 🐛 Fix icon* component prop 2025-01-09 12:14:38 +01:00
alonso.torres
6e3f9db744 🐛 Fix problem in firefox comments 2025-01-09 12:10:31 +01:00
Alejandro Alonso
13ec04dd65 🎉 Stroke caps support for wasm render 2025-01-09 11:58:36 +01:00
Andrey Antukh
8239b9666b 💄 Use correct frontend url on comment related emails 2025-01-09 11:55:53 +01:00
Andrey Antukh
45d5253915 Add better reusability for comment related queries 2025-01-09 11:55:53 +01:00
Andrey Antukh
aa583b0707 💄 Remove redundant set conversions 2025-01-09 11:55:53 +01:00
Andrey Antukh
1f4fafe781 💄 Remove neesting with ::db/transaction 2025-01-09 11:55:53 +01:00
Andrey Antukh
27c2db6cde 💄 Replace db/query with db/get 2025-01-09 11:55:53 +01:00
Andrey Antukh
5c63a5c58e 💄 Adapt sql style 2025-01-09 11:55:53 +01:00
alonso.torres
b1dda02b47 Add mentions to notifications 2025-01-09 11:55:53 +01:00
Belén Albeza
4bd1e32462 Merge pull request #5518 from penpot/superalex-bugs-wasm-strokes
🐛 Fix wasm render strokes bugs
2025-01-09 10:38:09 +01:00
Stephan Paternotte
f94be2d3f9 🌐 Add translations for: Dutch.
Currently translated at 99.1% (1582 of 1595 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/nl/
2025-01-09 09:01:53 +01:00
Edgars Andersons
eea0749866 🌐 Add translations for: Latvian.
Currently translated at 99.1% (1582 of 1595 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/
2025-01-09 09:01:52 +01:00
Linerly
de58977727 🌐 Add translations for: Indonesian.
Currently translated at 100.0% (1595 of 1595 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/id/
2025-01-09 09:01:52 +01:00
Andrey Antukh
1cbeafe85c Merge pull request #5525 from penpot/palba-testabc-add-library
A/B/C test for rename and change look and feel of "libraries" button
2025-01-09 08:34:05 +01:00
Alejandro Alonso
bb071489f1 🐛 Fix dotted path widh calculation 2025-01-09 07:23:55 +01:00
Alejandro Alonso
98806defbf 🐛 Open paths should always be rendered with center alignment 2025-01-09 07:23:55 +01:00
Eva Marco
de0eee13af Merge pull request #5527 from penpot/niwinz-bugfix-2
🐛 Fix incorrect navigate event on assets tab click
2025-01-08 17:55:51 +01:00
Andrey Antukh
384f13a9e2 🐛 Fix incorrect navigate event on assets tab click 2025-01-08 17:44:26 +01:00
Aitor Moreno
8ef4850a06 Merge pull request #5522 from penpot/ladybenko-fix-render-all-race
🐛 Fix race condition when rendering the background
2025-01-08 14:47:53 +01:00
Pablo Alba
76c8523f44 Add test ABC renaming "Libraries" to "Add library" 2025-01-08 13:20:52 +01:00
Andrey Antukh
0bffca2dc7 🐛 Fix unexpected exception on closing dropdown event
Caused by a incorrect call to the internal dropdown
component
2025-01-08 12:53:27 +01:00
Belén Albeza
3d370de49e 🐛 Fix race condition when rendering the background color before shape tree has been initialized 2025-01-08 12:52:34 +01:00
Pablo Alba
f277d8b125 Revert " Add test AB renaming "Libraries" to "Add library""
This reverts commit 664cacbe9d.
2025-01-08 11:05:50 +01:00
Belén Albeza
2d955a2256 Merge pull request #5491 from penpot/niwinz-rumext-update
 Update rumext version
2025-01-07 15:04:27 +01:00
Andrey Antukh
f878003ab5 Merge remote-tracking branch 'origin/staging' into develop 2025-01-07 14:54:48 +01:00
Andrey Antukh
60af8d0bcb Merge pull request #5520 from penpot/azazeln28-fix-text-editor-issue-9285
Fix Copy/Paste text into the text block
2025-01-07 14:26:11 +01:00
Juanfran
d652ed8e68 Merge pull request #5519 from penpot/alotor-fix-plugins-current-user
🐛 Fix problem with currentUser in plugins
2025-01-07 14:05:07 +01:00
AzazelN28
09d73a2f51 🐛 Fix pasting text changes opacity to 0 2025-01-07 13:48:32 +01:00
alonso.torres
7d4535ebd4 🐛 Fix problem with currentUser in plugins 2025-01-07 13:03:56 +01:00
Anonymous
27374b1b39 🌐 Add translations for: Italian.
Currently translated at 97.1% (1549 of 1595 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/it/
2025-01-07 12:20:29 +01:00
Andrey Antukh
0abe7bbc8b Merge remote-tracking branch 'weblate/develop' into develop 2025-01-07 12:10:35 +01:00
Andrey Antukh
9878656b7f Merge remote-tracking branch 'origin/staging' into develop 2025-01-07 12:00:26 +01:00
Andrey Antukh
a5a53219bf Merge remote-tracking branch 'origin/main' into staging 2025-01-07 12:00:09 +01:00
Andrey Antukh
c3688d6ab0 📎 Fix issues from previous merge 2025-01-07 11:28:45 +01:00
Andrey Antukh
44f6ec7a24 Merge branch 'staging' into develop 2025-01-07 11:26:06 +01:00
Marina López
8716f81765 Merge pull request #5456 from daledesilva/patch-1
📚 Add submission form link to deployment page
2025-01-07 10:58:05 +01:00
Andrey Antukh
7aa46a1f62 🔥 Remove 2.4.1 from changelog 2025-01-07 10:51:46 +01:00
Andrey Antukh
6553861a6c Update rumext version
Mainly for usability and performance improvements
2025-01-07 10:43:23 +01:00
Andrey Antukh
d62eb3d3f4 Merge pull request #5504 from penpot/palba-add-feature-flags-to-events
 Add feature flags info to posthog events
2025-01-07 09:34:22 +01:00
Pablo Alba
e4c427609d Add feature flags info to posthog events 2025-01-07 09:19:04 +01:00
Aitor Moreno
547d34b13b Merge pull request #5514 from penpot/superalex-wasm-stroke-style-support
🎉 Stroke style support for wasm render
2025-01-07 09:13:11 +01:00
Alejandro Alonso
2467e033b7 🎉 Stroke style support for wasm render 2025-01-03 16:39:55 +01:00
Aitor Moreno
e551dd5a99 Merge pull request #5508 from penpot/superalex-basic-stroke-support
🎉 Basic strokes wasm support
2025-01-03 10:52:05 +01:00
Alejandro Alonso
beb9120b2b 🎉 Basic strokes wasm support 2025-01-03 08:32:05 +01:00
Eva Marco
4a349ec050 Merge pull request #5497 from penpot/palba-bugfixing-02
🐛 Bugfixing
2025-01-02 13:48:25 +01:00
Pablo Alba
ad552eaf68 🐛 Fix version history control exit is not intuitive 2025-01-02 12:53:19 +01:00
Pablo Alba
8ae326ed06 🐛 Fix silent crash uploading a font too big 2025-01-02 12:53:19 +01:00
Pablo Alba
6bd1f19e36 🐛 Fix on libraries section, items shouldn't have context menu 2025-01-02 12:53:19 +01:00
Aitor Moreno
883a26845a Merge pull request #5510 from penpot/alotor-fix-thumbnail-generation
🐛 Fix problem with thumbnail generation when changing between ver…
2025-01-02 12:46:59 +01:00
Pablo Alba
54c63fef06 🐛 Fix create team modal when user is creating account via invitation 2025-01-02 12:06:54 +01:00
alonso.torres
bcdf5d86ae 🐛 Fix problem with thumbnail generation when changing between versions 2025-01-02 12:01:30 +01:00
Late Night Defender
4cde30ee85 🌐 Add translations for: Thai.
Currently translated at 13.0% (203 of 1561 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/th/
2024-12-28 17:02:35 +01:00
Pablo Alba
e683564ab2 Merge pull request #5467 from penpot/niwinz-bugfix-4
🐛 Fix invitations and webhooks page shows no data
2024-12-27 13:51:24 +01:00
luisddm
b5e5c4b0dd ♻️ Visual changes in comments 2024-12-27 11:43:51 +01:00
Pablo Alba
3eab9da74e Merge pull request #5492 from penpot/alotor-christmas-bugfixes
🐛 Fix problem with component swap style
2024-12-26 16:39:23 +01:00
Andrey Antukh
2b31613853 🐛 Fix file deletion exception 2024-12-23 12:56:02 +01:00
Andrey Antukh
8d74d82fd0 ⬆️ Update potok dependency
Improves internal symbol naming for objects created with
ptk/reify. Helps on debugging
2024-12-23 12:41:10 +01:00
alonso.torres
2813fda136 🐛 Fix problem with component swap style 2024-12-23 12:37:24 +01:00
Andrey Antukh
585c273cd6 🐛 Fix dashboard fonts section nav link 2024-12-23 12:21:11 +01:00
Andrey Antukh
ff7acea95a Merge remote-tracking branch 'origin/staging' into develop 2024-12-23 10:58:36 +01:00
Andrey Antukh
a0022a804b Merge branch 'backrunner-patch/backrunner_nginx-conf' into staging 2024-12-23 10:28:34 +01:00
BackRunner
068acb4303 🐛 Fix assets proxy ssl handshake error 2024-12-23 10:28:10 +01:00
Andrey Antukh
d6f98a6c79 📎 Add externs for worker build 2024-12-23 10:03:10 +01:00
Andrey Antukh
7b6c2da6da 📎 Add externs for main build
With all combinations of small symbols for indicate
to compiler to not use them for internal renaming
2024-12-23 10:03:10 +01:00
Andrey Antukh
602ded7e6c Merge remote-tracking branch 'origin/staging' into develop 2024-12-23 09:27:45 +01:00
Alejandro
5001298087 Merge pull request #5473 from penpot/ladybenko-9533-fix-path-rotation
🐛 Fix path rotation
2024-12-23 06:43:53 +01:00
Late Night Defender
a5c6faf639 🌐 Add translations for: Thai.
Currently translated at 10.4% (163 of 1561 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/th/
2024-12-19 19:02:38 +01:00
Denys Kisil
fee4a8ff14 🌐 Add translations for: Ukrainian (ukr_UA).
Currently translated at 99.5% (1554 of 1561 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/
2024-12-19 19:02:38 +01:00
Andrey Antukh
affed049ee Merge remote-tracking branch 'origin/main' into staging 2024-12-19 10:27:12 +01:00
alonso.torres
377f636b8e 🐛 Fix problem with reorder on grid layout layers 2024-12-18 13:32:30 +01:00
Andrey Antukh
69008fbb90 Merge remote-tracking branch 'origin/staging' into develop 2024-12-18 12:47:05 +01:00
Alejandro Alonso
2d512ef273 🐛 Fix path edition for plugins 2024-12-18 10:12:01 +01:00
Denys Kisil
62307c56a0 🌐 Add translations for: Ukrainian (ukr_UA).
Currently translated at 99.5% (1554 of 1561 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/
2024-12-15 16:00:22 +01:00
Xaviju
8a4fbf385c 🐛 fix color-bullet props error 2024-12-13 13:52:01 +01:00
Eva Marco
0fafc52ea4 Merge pull request #5474 from penpot/eva-fix-tooltip-border-radius
🐛  Fix border radius tooltip
2024-12-13 13:47:52 +01:00
Andrey Antukh
8f673885a0 Merge remote-tracking branch 'origin/staging' into develop 2024-12-13 13:47:30 +01:00
Eva Marco
feaf027abf 🐛 Fix border radius tooltip 2024-12-13 13:26:13 +01:00
Belén Albeza
e1c5cd6640 🐛 Fix path rotation 2024-12-13 13:03:23 +01:00
Marina López
c61b794ab6 :bug:Fix link when deselecting shapes 2024-12-13 12:29:06 +01:00
Andrey Antukh
b8ebbe8c3c Merge pull request #5468 from penpot/palba-abtest-add-library-button2
 Add test AB renaming "Libraries" to "Add library"
2024-12-13 12:20:56 +01:00
Pablo Alba
09c184200d Merge pull request #5471 from penpot/niwinz-bugfix-5
🐛 Fix unhandled exception on accepting invitation
2024-12-13 12:15:35 +01:00
Andrey Antukh
bbe0b22a8b 🐛 Fix unhandled exception on accepting invitation
In an interaction with the audit log; happens when an old invitation
(with created-by as nil) is accepted.
2024-12-13 11:48:37 +01:00
Andrey Antukh
8603085a69 Merge pull request #5470 from penpot/palba-add-config-not-show-release
🎉 Add config flag to hide release info
2024-12-13 11:28:27 +01:00
Andrey Antukh
29ec44482d Merge pull request #5463 from penpot/andy-docs-adjustments
📚 Remove broken video about History versions
2024-12-13 11:17:27 +01:00
Andrey Antukh
fd4d4ec6e3 Merge pull request #5465 from penpot/palba-fix-viewer-role-thumbnails
🐛 Fix viewer role is unable to generate thumbnails on dashboard
2024-12-13 11:16:32 +01:00
Pablo Alba
0945dd2920 🎉 Add config flag to hide release info 2024-12-13 11:14:59 +01:00
Pablo Alba
664cacbe9d Add test AB renaming "Libraries" to "Add library" 2024-12-13 10:51:41 +01:00
Pablo Alba
08516ac7ca Revert " Add test AB renaming "Libraries" to "Add library""
This reverts commit ec7f8a6aa7.
2024-12-13 10:51:25 +01:00
Andrey Antukh
eaec46a67b 🐛 Fix incorrect team invitation redirect after login 2024-12-13 10:23:52 +01:00
Marina López
b18ee859b1 Shareable link pointing to a specific board 2024-12-13 09:43:56 +01:00
Andrey Antukh
1b2a38351d 🐛 Fix invitations and webhooks page shows no data
Regression of the routing/state refactor
2024-12-13 09:16:19 +01:00
Pablo Alba
24e51eef5b 🐛 Fix viewer role is unable to generate thumbnails on dashboard 2024-12-12 15:15:27 +01:00
Andrey Antukh
ee62016c34 Merge pull request #5462 from penpot/palba-dont-show-release-info
🐛 Fix a new user shouldn't see the "What's new" popup
2024-12-12 12:27:14 +01:00
Pablo Alba
ea43a999e9 💄 css linter adjustment 2024-12-12 12:08:10 +01:00
Pablo Alba
dc360d8096 💄 Minor marging adjustment on penpot free button 2024-12-12 12:06:24 +01:00
andy
7c10f20b95 📚 Remove deprecated video at History version 2024-12-12 11:57:08 +01:00
Pablo Alba
4958da63e5 🐛 Fix a new user shouldn't see the "What's new" popup 2024-12-12 11:45:58 +01:00
Andrey Antukh
1c76587d70 Merge remote-tracking branch 'origin/develop' into develop 2024-12-12 10:56:20 +01:00
Andrey Antukh
4877d17579 Merge remote-tracking branch 'origin/staging' into develop 2024-12-12 10:56:00 +01:00
Aitor Moreno
d4b829ed19 Merge pull request #5454 from penpot/ladybenko-9512-serialization-docs
📚 Serialization docs
2024-12-12 10:36:40 +01:00
Alejandro
953c95315a Merge pull request #5459 from penpot/ladybenko-9516-fix-blend
🐛 Fix blend mode against background
2024-12-12 09:38:34 +01:00
Eva Marco
67b778000a Merge pull request #5451 from penpot/juanfran-t-9383-combobox
 new combobox component to the ds with component testing
2024-12-12 09:35:50 +01:00
andy
f39a994fed 📚 Import/export images replacements and other adjustments 2024-12-12 08:38:00 +01:00
andy
5ef59d5e2e 📚 New penpot file format 2024-12-12 08:37:53 +01:00
andy
98221c6b51 📚 Images and text adjustments 2024-12-12 08:37:40 +01:00
Madalena Melo
74713cde63 File history versions
https://tree.taiga.io/project/penpot/task/9377
2024-12-12 08:37:32 +01:00
Juanfran
2c8a44dfa1 new combobox component to the ds with component testing 2024-12-12 08:33:12 +01:00
andrés gonzález
a5084c35b5 Merge pull request #5461 from penpot/andy-docs-blending
📚 Info about layers blend and opacity
2024-12-12 08:29:41 +01:00
andrés gonzález
cdce1df919 Merge pull request #5460 from penpot/andy-shortcuts-update
📚 History shortcut removed
2024-12-12 08:27:48 +01:00
andrés gonzález
ca58dc8dc0 Merge pull request #5445 from penpot/andy-docs-formats
📚 User guide import/export section update
2024-12-12 08:24:16 +01:00
andrés gonzález
603485dc62 Merge pull request #5455 from penpot/madalenapmelo-kp-patch-1
📚 File history versions
2024-12-12 08:20:50 +01:00
andy
b983b31cf1 📚 Images and text adjustments 2024-12-12 08:05:34 +01:00
andy
c75b886548 📚 Info about layers blend and opacity 2024-12-12 07:03:54 +01:00
andy
abd41e825e 📚 History shortcut removed 2024-12-12 06:22:51 +01:00
Belén Albeza
5ece9cb4aa Merge pull request #5450 from penpot/palba-free-edition-label
🎉 Add "Penpot free" label
2024-12-11 17:43:28 +01:00
Belén Albeza
21da6ddd4a 🐛 Fix blend mode against background 2024-12-11 16:52:13 +01:00
Pablo Alba
7a959cc490 Merge pull request #5458 from penpot/niwinz-bugfix-3
🐛 Fix incorrect profile refresh after onboarding end step
2024-12-11 16:15:43 +01:00
Belén Albeza
3075848411 Merge pull request #5419 from penpot/alotor-reorder-icon
 Add reorder handler to fills, strokes and shadows
2024-12-11 15:57:28 +01:00
Pablo Alba
5f32227e13 🎉 Add "Penpot free" label 2024-12-11 15:50:22 +01:00
alonso.torres
06da4bd392 Add reorder handler to fills, strokes and shadows 2024-12-11 15:40:36 +01:00
Andrey Antukh
ca743cc7cb 🐛 Fix incorrect profile refresh after onboarding end step
and many other setting screens
2024-12-11 15:20:39 +01:00
Andrey Antukh
97b9a7d31c 🐛 Remove hardcoded limit of 20 on the snapshot list rpc method 2024-12-11 14:13:04 +01:00
Dale de Silva
dbeebf181f 📚 Add submission form link to deployment page
The plugin submission page is hard to find while looking at the plugin help docs (As it's not linked from there). It should eventually be a page of its own but there isn't enough content yet (or an illustration) to support it.
2024-12-11 23:51:11 +11:00
Madalena Melo
537cb6cb50 File history versions
https://tree.taiga.io/project/penpot/task/9377
2024-12-11 13:42:17 +01:00
Belén Albeza
ef32acdfab 📚 Add serialization docs for gradient stops and path data 2024-12-11 13:08:49 +01:00
Andrey Antukh
0eec09acbf Merge pull request #5441 from penpot/juan-slides-2.4
Juan slides 2.4
2024-12-11 12:49:31 +01:00
Belén Albeza
c2ffee1683 📚 Add README to rust project 2024-12-11 12:49:09 +01:00
Elhombretecla
81e250e27d 🎉 Add slides for 2.4 release 2024-12-11 12:36:29 +01:00
Aitor Moreno
579a5729e6 Merge pull request #5449 from penpot/superalex-render-wasm-custom-skia-binaries-2
🎉 Use custom skia binaries for wasm render
2024-12-11 12:20:02 +01:00
Alejandro Alonso
f50c7a70c2 🎉 Use custom skia binaries for wasm render 2024-12-11 12:06:56 +01:00
Andrey Antukh
7cff0f60a9 Merge remote-tracking branch 'origin/staging' into develop 2024-12-11 12:00:50 +01:00
Alejandro
9f1f8cc80c Merge pull request #5438 from penpot/andy-docs-selfhostsettings
📚 Recommended settings for selfhost
2024-12-11 07:57:23 +01:00
andy
2440c81b42 📚 Recommended settings for selfhost 2024-12-11 07:42:01 +01:00
Alejandro
ada078abab Merge pull request #5439 from penpot/niwinz-delete-xlog-gc-task
🔥 Remove file-xlog-gc task
2024-12-11 07:29:39 +01:00
Alejandro
25a672b958 Merge pull request #5443 from penpot/niwinz-enhancements-1
 Several improvements
2024-12-11 07:29:14 +01:00
Alejandro
777a4c8414 Merge pull request #5444 from penpot/ladybenko-9505-refactor-shapes
♻️ Refactor shapes and render code
2024-12-11 07:10:18 +01:00
andy
6feeb25802 📚 Import/export images replacements and other adjustments 2024-12-10 18:12:11 +01:00
andy
31dc0a074a 📚 New penpot file format 2024-12-10 17:42:32 +01:00
Belén Albeza
c9355a257a ♻️ Refactor custom matrix code into submodule 2024-12-10 16:15:07 +01:00
Belén Albeza
9f7428d44a ♻️ Fix visibility of Shape properties 2024-12-10 16:07:33 +01:00
Andrey Antukh
d8a3c10191 Make modal work through react portal mechanism
The rationale behind this change is to allow use of already
declared react context on modals; because with portals, react
propagates top context to the children, independently if they
are direct descendant on dom or not.
2024-12-10 16:01:50 +01:00
Belén Albeza
c7c43d6313 ♻️ Decouple render and shapes 2024-12-10 15:54:51 +01:00
Belén Albeza
7b1934dcb6 ♻️ Create an ImageStore type 2024-12-10 15:41:50 +01:00
Belén Albeza
967bc75a1c ♻️ Move rendering a single shape to the shape itself 2024-12-10 15:29:49 +01:00
Andrey Antukh
31319a0d04 Merge pull request #5442 from penpot/alotor-view-only-menu
🐛 Remove file history versions menu options on view mode
2024-12-10 15:20:57 +01:00
Andrey Antukh
7758d5f747 💄 Add code style optimization to workspace context menu components 2024-12-10 15:08:14 +01:00
Belén Albeza
001aa3f319 ♻️ Refactor into render submodules 2024-12-10 15:03:15 +01:00
Andrey Antukh
5dae6f8fde 🔥 Remove unused refs 2024-12-10 14:57:03 +01:00
Andrey Antukh
838fb73434 📎 Add FIXME note about recent-fonts ref behavior 2024-12-10 14:56:35 +01:00
Andrey Antukh
a12b42c4d5 Simplfy workspace-file-colors ref impl 2024-12-10 14:56:15 +01:00
Andrey Antukh
e5894ceea1 ♻️ Rename workspace-libraries to libraries on state and refs 2024-12-10 14:45:56 +01:00
Belén Albeza
647635a819 Merge pull request #5433 from penpot/superalex-render-wasm-circles-support
🎉 Render wasm ellipses support
2024-12-10 14:41:24 +01:00
alonso.torres
b9cb415507 🐛 Remove file history versions menu options on view mode 2024-12-10 14:41:00 +01:00
Alejandro Alonso
307329cf2e 🎉 Render wasm ellipses support 2024-12-10 14:31:26 +01:00
Belén Albeza
33e70a4108 Merge pull request #5410 from penpot/superalex-radial-gradients-wasm-render
🎉 Support for radial gradients with wasm render
2024-12-10 14:18:09 +01:00
Andrey Antukh
969c6a2e2f 💄 Add syntax optimization for gradient handlers component 2024-12-10 14:04:13 +01:00
Andrey Antukh
848db3f13c Remove components-v2 conditional on inspect right sidebar 2024-12-10 14:03:32 +01:00
Andrey Antukh
cd6a3fd1bb 🔥 Remove unused lenses 2024-12-10 14:02:42 +01:00
Andrey Antukh
36121d862d Merge pull request #5440 from penpot/palba-ab-share-in-workspace
 Fix test A/B add share button to the workspace
2024-12-10 13:48:49 +01:00
Pablo Alba
d8964a69bc Fix test A/B add share button to the workspace 2024-12-10 13:33:04 +01:00
Belén Albeza
8599c52fc0 Merge pull request #5435 from penpot/superalex-render-wasm-show-content-support
🎉 Suport for show-content in render wasm
2024-12-10 13:11:46 +01:00
Andrey Antukh
c90c016ae5 Merge remote-tracking branch 'origin/staging' into develop 2024-12-10 12:41:19 +01:00
Andrey Antukh
6f67ecd1e4 Merge pull request #5404 from penpot/eva-fix-border-radius
♻️ Remove Rx and RY from shapes
2024-12-10 12:36:58 +01:00
Andrey Antukh
39da7d7ab6 Merge pull request #5429 from penpot/palba-bugfixing-01
🐛 Palba bugfixing 01
2024-12-10 12:33:38 +01:00
Andrey Antukh
1bb25bb89d 🔥 Remove file-xlog-gc task
It is no longer necessary because snapshots are managed by the objects-gc task
2024-12-10 12:19:12 +01:00
Pablo Alba
b0a3f2b72a 🐛 Fix history panel remains open after restoring a version 2024-12-10 11:00:54 +01:00
Pablo Alba
f2f3d9f7eb 💄 Fix css format (spacing) 2024-12-10 10:53:12 +01:00
Pablo Alba
cf72b35e73 🐛 Fix separator lines have no color at some menus 2024-12-10 10:53:12 +01:00
Andrey Antukh
6ecae5d425 💄 Fix linter issues after staging merge 2024-12-10 10:48:04 +01:00
Eva Marco
73e48b3d81 ♻️ Remove unnecesary RX and RY from shapes 2024-12-10 10:47:55 +01:00
Andrey Antukh
bdb777516e Merge remote-tracking branch 'origin/staging' into develop 2024-12-10 10:46:38 +01:00
Alejandro Alonso
e1d9efea7f 🎉 Suport for show-content in render wasm 2024-12-10 10:28:11 +01:00
Andrey Antukh
fe8d9cf159 Merge pull request #5418 from penpot/palba-abtest-add-sugested-libraries
 Add test AB for adding a few "Suggested" libraries
2024-12-10 09:50:41 +01:00
Andrey Antukh
4cfe33bc5c Merge pull request #5436 from penpot/azazeln28-fix-text-editor-v2-copy-paste-issues
🐛 Fix copy/paste issues
2024-12-10 09:29:31 +01:00
Andrey Antukh
e5d8bc91fb 💄 Fix describe-library-blocks component syntax decl style 2024-12-10 09:26:07 +01:00
Andrey Antukh
ce1ba3f28f 💄 Fix sample-library-entry component syntax style 2024-12-10 09:21:45 +01:00
Pablo Alba
257d72ee9d Add test AB for adding a few "Suggested" libraries 2024-12-10 09:16:55 +01:00
Alejandro
0766b341bd Merge pull request #5432 from penpot/niwinz-bugfix-2
🐛 Bug fixes
2024-12-10 08:05:00 +01:00
Alejandro Alonso
09aa4529f8 🎉 Support for radial gradients with wasm render 2024-12-10 07:05:59 +01:00
Alejandro
0eedc036be Merge pull request #5388 from penpot/azazeln28-feat-start-drawing-paths
🎉 Start drawing paths
2024-12-09 16:27:28 +01:00
Belén Albeza
4c83899d69 Only take fills for non-groups 2024-12-09 16:17:55 +01:00
AzazelN28
4ef631fd6a 🐛 Fix copy/paste issues 2024-12-09 16:10:39 +01:00
Belén Albeza
99bb3ee962 🎉 Render path fills 2024-12-09 16:06:15 +01:00
Belén Albeza
0bfcc1f854 🎉 Deserialize shape data in wasm 2024-12-09 15:48:45 +01:00
AzazelN28
22b01c63b5 🎉 Serialize data in clojure 2024-12-09 15:48:44 +01:00
Andrey Antukh
0b323e81bc Merge pull request #5434 from penpot/niwinz-merge-staging
 Mege staging to develop
2024-12-09 14:48:18 +01:00
Andrey Antukh
7c6ad334e7 🐛 Fix incorrect rendering of team members page
when projects are not loaded
2024-12-09 13:25:17 +01:00
Andrey Antukh
6a624ae94a 🐛 Fix incorrect navegation handling on change team 2024-12-09 13:15:09 +01:00
Andrey Antukh
c6cdeea636 Merge remote-tracking branch 'origin/staging' into develop 2024-12-09 12:26:23 +01:00
Andrey Antukh
a923d39603 🐛 Fix incorrect teams query on profile deletion
The current approach prevents profile deletion when
there are some extra (soft)deleted teams where the profile
is owner
2024-12-09 10:15:13 +01:00
Andrey Antukh
2f79d71262 🐛 Fix incorrect event handling on file-menu
Don't wait team to be present for open the menu,
because with slow connection speed it can cause
unexpected ux glitche showing menu when the component
inner request is resoved
2024-12-09 10:15:13 +01:00
Andrey Antukh
4881bf3619 Merge pull request #5412 from penpot/palba-abtest-add-library-button
 Add test AB renaming "Libraries" to "Add library"
2024-12-09 09:53:35 +01:00
AzazelN28
f564b4e66d 🎉 Add debug options to wasm 2024-12-05 16:36:42 +01:00
Eva Marco
69df69c4bb Merge pull request #5424 from penpot/superalex-bugfixing-30
🐛 Bug fixing
2024-12-05 16:12:16 +01:00
Belén Albeza
b332f128b0 Merge pull request #5409 from penpot/superalex-hidden-layer-support-for-wasm-render
🎉 Hidden layer support for wasm render
2024-12-05 15:42:02 +01:00
Alejandro Alonso
07215357d6 🎉 Hidden layer support for wasm render 2024-12-05 15:10:15 +01:00
Alejandro
2c36a4076f Merge pull request #5427 from penpot/eva-fix-firefox-scrollbar
🐛 Fix horizontal scroll on firefox
2024-12-05 13:30:52 +01:00
Andrey Antukh
3ac6f59b7b Merge pull request #5428 from penpot/qol-versions-limit-warning
 Add autosaved versions warning
2024-12-05 13:26:59 +01:00
alonso.torres
c68a0d3967 Add autosaved versions warning 2024-12-05 13:18:03 +01:00
Andrey Antukh
aeb1ac41da 🐛 Prevent upload media objects to deleted files 2024-12-05 12:39:43 +01:00
Eva Marco
b58830260c 🐛 Fix horizontal scroll on firefox 2024-12-05 12:21:22 +01:00
Alejandro Alonso
4114d9b56f 🐛 Fix shortcut for history not working 2024-12-05 10:52:59 +01:00
Alejandro
553b9eb4bb Merge pull request #5425 from penpot/ladybenko-9477-backport
[backport] 🐛 Fix missing rename shortcut translation
2024-12-05 10:43:37 +01:00
María Valderrama
12e97c73f3 🐛 Fix missing rename shortcut translation 2024-12-05 09:59:00 +01:00
Alejandro
bd1286aace Merge pull request #5422 from penpot/eva-fix-demote-owner
🐛  Fix admin can demote owner
2024-12-05 09:37:22 +01:00
Alejandro Alonso
630f42f7ac 🐛 Fix internal error when creating a guide 2024-12-05 09:30:10 +01:00
Eva Marco
bf40cd98e8 🐛 Fix admin can demote owner 2024-12-05 09:27:32 +01:00
Alejandro
7c7ede9d0c Merge pull request #5403 from penpot/ladybenko-wasm-save-buffer-pointer
Wasm save buffer pointer
2024-12-05 08:58:35 +01:00
Belén Albeza
62fcf74472 Merge pull request #5402 from penpot/xaviju-9414-ds-swatch
Create DS swatch utility component
2024-12-04 16:48:42 +01:00
Xaviju
89009c4da1 Create Ds swatch utility component 2024-12-04 16:27:50 +01:00
Belén Albeza
0828d2e092 Merge pull request #5411 from penpot/niwinz-routing-refactor
♻️ Refactor application routing
2024-12-04 15:31:07 +01:00
Pablo Alba
ec7f8a6aa7 Add test AB renaming "Libraries" to "Add library" 2024-12-04 13:55:55 +01:00
Pablo Alba
a44db31008 Merge pull request #5417 from penpot/staging
📚 Update changelog
2024-12-04 13:48:52 +01:00
andrés gonzález
6b375d3413 Merge pull request #5379 from penpot/madalenapmelo-kp-patch-1
📚 Doc for viewer role
2024-12-04 13:00:35 +01:00
Madalena Melo
c5ec3ea7b1 Change the order to add clarity to admin and owner roles
Switched the order of the roles to make it more logical and add more clarity about admins and owners ability to edit
2024-12-04 12:09:34 +01:00
andrés gonzález
4d3192546c 📚 Update changelog with some links format 2024-12-04 09:49:33 +01:00
Belén Albeza
6623963a7f Use a static Vec<u8> to handle shared memory 2024-12-04 09:47:31 +01:00
andrés gonzález
2184926bbb 📚 Update changelog with "New .penpot file format" 2024-12-04 09:42:20 +01:00
Andrey Antukh
80b763dd98 ♻️ Add backward compatibility for old urls 2024-12-03 21:31:54 +01:00
Andrey Antukh
3e090b126e ♻️ Refactor application routing
Mainly removes an inconsistent use of path params and normalize
all routes to use query params for make it extensible without
breaking urls.
2024-12-03 18:23:41 +01:00
Madalena Melo
58bc772880 Add detail to role descriptions
Added more context to each role's description; I tried to keep it brief while including more information about what each role can do both within the team as well as in terms of team management
2024-12-03 15:50:35 +01:00
Belén Albeza
df6727f186 ♻️ Refactor rendering fills 2024-12-03 14:43:07 +01:00
Belén Albeza
58c4e53ee4 ♻️ Refactor image fills 2024-12-03 14:34:07 +01:00
Belén Albeza
7105e49ac2 ♻️ Refactor adding gradient stops 2024-12-03 13:49:29 +01:00
Belén Albeza
5e9f533624 Merge pull request #5374 from penpot/superalex-render-wasm-fill-images
🎉 Render wasm fill images
2024-12-03 13:17:57 +01:00
Alejandro Alonso
0a3c6f38ef 🎉 Render wasm fill images 2024-12-03 13:08:19 +01:00
Andrey Antukh
b2f02de5c1 🐛 Fix incorrect uuid on e2e dashboard mock files 2024-12-03 12:15:53 +01:00
Andrey Antukh
f31e2b72e6 Adjust data profile alias 2024-12-03 12:15:53 +01:00
Andrey Antukh
c6b96a81f1 ♻️ Rename data.events to data.event 2024-12-03 12:15:52 +01:00
Andrey Antukh
838fb06039 ♻️ Rename data.users to data.profile 2024-12-03 11:55:33 +01:00
Andrey Antukh
1de35b2e3a Disable wasm loading if feature is disabled 2024-12-03 11:55:33 +01:00
Andrey Antukh
b17d7c0289 ♻️ Refactor dashboard bootstrap 2024-12-03 11:55:31 +01:00
María Valderrama
5850a8fac4 Merge pull request #5407 from penpot/revert-5389-ladybenko-doc-create-plugin
Revert "📚 Minor fix to plugin docs"
2024-12-03 11:55:22 +01:00
Andrey Antukh
b31afcfb47 🐛 Fix incorrect use of forward-ref on input* control component
And in the derived input-tokens* component
2024-12-03 11:48:22 +01:00
Belén Albeza
ea48c43a5f Revert "📚 Minor fix to plugin docs" 2024-12-03 11:47:56 +01:00
Andrey Antukh
052b39d833 Merge remote-tracking branch 'origin/staging' into develop 2024-12-03 11:47:40 +01:00
Eva Marco
0c3a362e85 Merge pull request #5406 from penpot/ladybenko-add-icon-ids-storybook
 Explicitly display icon IDs in storybook
2024-12-03 10:17:35 +01:00
Eva Marco
b86d352caf Merge pull request #5389 from penpot/ladybenko-doc-create-plugin
📚 Minor fix to plugin docs
2024-12-03 10:12:22 +01:00
Belén Albeza
39c203b997 Explicitly display icon IDs in storybook 2024-12-03 10:00:01 +01:00
Belén Albeza
b4ccf545c7 Merge pull request #5397 from penpot/madalenapmelo-kp-patch-2
📚 Update shortcuts to include the "rename selected layer" shortcut
2024-12-02 14:56:59 +01:00
Belén Albeza
c688ae2e33 Merge pull request #5400 from penpot/superalex-memory-refactor
❇️ Refactor memory management for color linear gradient stops
2024-12-02 13:08:36 +01:00
Denys Kisil
8bd898f0eb 🌐 Add translations for: Ukrainian (ukr_UA).
Currently translated at 89.1% (1391 of 1561 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/
2024-12-02 13:00:22 +01:00
Nicola Bortoletto
92fd918d0e 🌐 Add translations for: Italian.
Currently translated at 99.5% (1554 of 1561 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/it/
2024-12-02 13:00:21 +01:00
Alejandro Alonso
a4cfaa542c 🎉 Refactor memory managemnt for color linear gradient stops 2024-12-02 12:54:56 +01:00
Alejandro
61bf4e145e Merge pull request #5392 from penpot/ladybenko-9266-linear-gradients
🎉 Render linear gradient fills
2024-12-02 12:33:56 +01:00
Andrey Antukh
b9df1d5d3f Merge pull request #5385 from penpot/mavalroot-rename-board
🎉 Rename board on the workspace
2024-12-02 08:50:06 +01:00
Aitor Moreno
fffc3b1b58 Merge pull request #5396 from penpot/niwinz-bugfix-1
🐛 Fix regression on drawing text with auto-size
2024-11-29 15:55:34 +01:00
Andrey Antukh
0214397fb1 Merge branch 'staging' into develop 2024-11-29 15:51:47 +01:00
Madalena Melo
9794de9a84 Fix incorrect shortcut for Mac 2024-11-29 15:25:29 +01:00
Madalena Melo
671f40d44d Update shortcuts to include the "rename selected layer" shortcut 2024-11-29 14:22:35 +01:00
Andrey Antukh
e0cc999345 🐛 Fix regression on drawing text with auto-size
Using editor v1
Caused by 2ed743b6be
2024-11-29 13:23:39 +01:00
Andrey Antukh
8e836f79fb Merge pull request #5390 from penpot/palba-fix-bad-redirect-remove-from-team
🐛 Fix bad redirect after being removed from a team
2024-11-29 13:01:27 +01:00
Belén Albeza
00ab9ad3f0 ♻️ Refactor blend mode and fills into their own submodules 2024-11-29 11:46:45 +01:00
Belén Albeza
2d4281bdf2 Use u32 as color args for wasm 2024-11-29 11:34:18 +01:00
María Valderrama
0228f79687 🐛 Fix missing rename shortcut translation 2024-11-29 11:30:31 +01:00
María Valderrama
ac0d79d95a 🎉 Rename board on the workspace 2024-11-29 11:30:31 +01:00
Pablo Alba
093a58b9ec 🐛 Fix bad redirect after being removed from a team 2024-11-29 10:55:17 +01:00
Andrey Antukh
5bfd448483 Merge remote-tracking branch 'origin/staging' into develop 2024-11-29 10:24:49 +01:00
Andrey Antukh
1b20e496d4 Merge pull request #5393 from ryanbreen/ryanbreen-ulimit-fix
🐛 Fix ulimits format in devenv/docker-compose.yaml
2024-11-29 10:22:29 +01:00
Andrey Antukh
ad421c3bcc Merge pull request #5394 from Friendly-Pixel/color_bullet_title
 Add path to color bullet title
2024-11-29 10:22:00 +01:00
Andrey Antukh
5e2b847202 Merge pull request #5383 from penpot/azazeln28-fix-text-editor-more-issues
🐛 Fix text editor issues
2024-11-29 10:17:43 +01:00
Simon Epskamp
206fd68a92 Add path to color bullet title
This way the title is more clear as the group name is included, and this more closely matches the display in the "assets" sidebar.

Signed-off-by: Simon Epskamp <simon@friendlypixel.nl>
2024-11-28 20:27:10 +01:00
Ryan Breen
0898c27539 🐛 Fix ulimits format in docker-compose.yaml
ulimit nofile format is expected to be int, not string

Signed-off-by: Ryan Breen <rbreen@getfastr.com>
2024-11-28 12:45:45 -05:00
Belén Albeza
c8e322cd58 🎉 Render liner gradient fills 2024-11-28 16:51:28 +01:00
Andrey Antukh
8fa334265c Merge pull request #5391 from penpot/ladybenko-fix-uuid-bug
🐛 Fix Uuid crash
2024-11-28 13:30:13 +01:00
Belén Albeza
13d61d1105 🐛 Fix Uuid crash 2024-11-28 13:16:04 +01:00
Andrey Antukh
ef207cfe70 Merge pull request #5386 from penpot/palba-create-events
Create several events
2024-11-28 12:10:45 +01:00
Aitor Moreno
9a9815ebfa Merge pull request #5371 from penpot/ladybenko-9337-pixel-ratio
Device pixel ratio
2024-11-28 11:46:41 +01:00
Pablo Alba
f72c37a198 Add events for use library assets 2024-11-28 11:25:12 +01:00
Pablo Alba
dbf3d0d7c1 Add event "navigate-to-library-file" 2024-11-28 11:23:28 +01:00
Belén Albeza
4b422ef459 📚 Minor fix to plugin docs 2024-11-28 10:55:21 +01:00
Linerly
613f0fa18a 🌐 Add translations for: Indonesian.
Currently translated at 100.0% (1561 of 1561 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/id/
2024-11-27 14:02:37 +01:00
Pablo Alba
903c8c021d Add event "change-inspect-tab" 2024-11-27 13:51:21 +01:00
Pablo Alba
9b8ef0a2e5 Add event "duplicate-page" 2024-11-27 13:51:21 +01:00
Pablo Alba
22e64c1c81 Add event "resolve-comment-thread" 2024-11-27 13:51:21 +01:00
Pablo Alba
14c917d003 Add event "create-prototype" 2024-11-27 13:51:21 +01:00
Belén Albeza
db9c93f3bf Render with dpr 2024-11-27 12:38:17 +01:00
AzazelN28
4377a0dcc4 🐛 Fix an error that kept empty inlines 2024-11-27 12:29:38 +01:00
Andrey Antukh
c2649ffd1c Merge remote-tracking branch 'origin/staging' into develop 2024-11-27 12:11:47 +01:00
AzazelN28
db6ca6f905 🐛 Fix wrong line-height value 2024-11-27 12:05:42 +01:00
Aitor Moreno
ede8ee6a78 Merge pull request #5384 from penpot/alotor-fix-editor
🐛 Fix problem with editor line-height
2024-11-27 12:01:58 +01:00
alonso.torres
37b50497f3 🐛 Fix problem with editor line-height 2024-11-27 11:51:13 +01:00
Aitor Moreno
e3d2b99acc Merge pull request #5381 from penpot/niwinz-bugfix-1
🐛 Fix incorrect thumbnail rendering on dashboard
2024-11-27 11:48:25 +01:00
AzazelN28
7101b94557 🐛 Fix selectAll when editor is empty 2024-11-27 11:42:18 +01:00
Aitor Moreno
5ffab1953d Merge pull request #5382 from penpot/niwinz-bugfix-2
🐛 Fix regression with component thumbnails
2024-11-27 11:34:50 +01:00
Andrey Antukh
75e7cfb69e 🐛 Fix regression with component thumbnails 2024-11-27 11:15:58 +01:00
Andrey Antukh
2ad887db89 Merge remote-tracking branch 'origin/staging' into develop 2024-11-27 10:50:03 +01:00
Andrey Antukh
65b7e5c3a5 🐛 Fix incorrect thumbnail rendering on dashboard 2024-11-27 10:42:56 +01:00
Alejandro
8466c60638 Merge pull request #5380 from penpot/niwinz-uuid-fixes
🐛 Fix incorrect encoding of u32 parts of uuid
2024-11-27 09:31:29 +01:00
Andrey Antukh
30a06249ff Merge pull request #5377 from penpot/azazeln28-fix-text-editor-issues
🐛 Fix text editor issues
2024-11-27 09:08:39 +01:00
AzazelN28
59ca09c24e 🐛 Fix text editor issues 2024-11-27 08:56:52 +01:00
Andrey Antukh
1aeafdfca7 Merge pull request #5378 from penpot/yms-fix-k8s-documentation
📚 Add links to Kubernetes documentation
2024-11-27 08:54:37 +01:00
Andrey Antukh
774137a763 Merge pull request #5369 from penpot/ladybenko-9202-ci-rust-jobs
🔧 Set up Rust jobs in CI
2024-11-27 08:53:53 +01:00
Andrey Antukh
965d457664 🐛 Fix incorrect encoding of u32 parts of uuid 2024-11-27 08:36:34 +01:00
Andrey Antukh
25a2d3b1fb Merge branch 'staging' into develop 2024-11-27 08:33:16 +01:00
Andrey Antukh
a714085523 Merge branch 'niwinz-plugins-reify' into staging 2024-11-27 08:32:54 +01:00
alonso.torres
eccc4226c7 Migrate proxies to new format 2024-11-27 08:32:07 +01:00
Belén Albeza
5ce6cbff6f ♻️ Refactor navigate() method 2024-11-26 16:13:14 +01:00
Yamila Moreno
4d6d85b3de 📚 Add links to Kubernetes documentation 2024-11-26 15:25:51 +01:00
Madalena Melo
3479a78e96 Viewer Role - Update index.njk
Add viewer role to the team roles; also made some tweaks to the descriptions of the other roles
2024-11-26 13:06:08 +01:00
Aitor Moreno
c607b61af6 Merge pull request #5349 from penpot/palba-add-event-for-pdf
 Add export format info to export-shapes event
2024-11-26 12:53:52 +01:00
Aitor Moreno
5b52e2a50b Merge pull request #5336 from penpot/niwinz-render-wasm-improvements-2
 Minor improvements to wasm shape and intial draft for path encoding
2024-11-26 12:30:56 +01:00
Andrey Antukh
6d419a45ae Add initial prototype for path content encoding 2024-11-26 12:00:29 +01:00
Andrey Antukh
30d7ba7136 Add id and type to wasm shape-proxy static attrs 2024-11-26 11:59:27 +01:00
Late Night Defender
08b20bdfd9 🌐 Add translations for: Thai.
Currently translated at 9.8% (154 of 1561 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/th/
2024-11-25 20:01:04 +00:00
Linerly
fc5511eef4 🌐 Add translations for: Indonesian.
Currently translated at 93.0% (1452 of 1561 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/id/
2024-11-25 20:01:03 +00:00
Stas Haas
e9389a7d6e 🌐 Add translations for: German.
Currently translated at 93.0% (1452 of 1561 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/
2024-11-25 20:01:02 +00:00
Andrey Antukh
e16ec9c719 Add facility for create anonymous objects
Speciailly designed to be work in plugins where code
is submited to hard deep freeze on the sandboxing
process.
2024-11-25 16:35:44 +01:00
Belén Albeza
52a705ac02 Add config flag for DPR 2024-11-25 16:13:29 +01:00
Belén Albeza
3e99de19f5 ♻️ Refactor debug options into its own struct, along with dpr 2024-11-25 16:01:19 +01:00
Pablo Alba
59e5656bd7 Merge pull request #5370 from penpot/niwinz-bugfix-4
🐛 Fix incorrect access to flows on add-new-interaction event
2024-11-25 15:41:13 +01:00
Andrey Antukh
82104dd823 Merge remote-tracking branch 'origin/staging' into develop 2024-11-25 14:56:12 +01:00
Andrey Antukh
723eef9565 🐛 Fix incorrect access to flows on add-new-interaction event 2024-11-25 13:32:45 +01:00
Belén Albeza
8448036d67 Merge pull request #5368 from penpot/niwinz-bugfix-3
🐛 Fix import format detection and error handling
2024-11-25 13:30:46 +01:00
Belén Albeza
ca70edf07b 🔧 Set up Rust jobs in CI 2024-11-25 13:14:46 +01:00
Belén Albeza
230e011003 Merge pull request #5353 from penpot/superalex-fix-change-page-with-wasm-render
🐛 Fix change page with wasm render
2024-11-25 12:45:21 +01:00
Andrey Antukh
e1c9691567 Improve scss compilation error handling
Don't stop watch scss process on compilation error
2024-11-25 12:44:10 +01:00
Alejandro Alonso
198339f232 🐛 Fix change page with wasm render 2024-11-25 12:36:12 +01:00
Andrey Antukh
577b731b22 🐛 Fix import format detection and error handling 2024-11-25 12:29:59 +01:00
Andrey Antukh
5ee0399615 Merge remote-tracking branch 'origin/staging' into develop 2024-11-25 11:50:19 +01:00
Andrey Antukh
ef3588d05f Merge pull request #5355 from penpot/azazeln28-fix-component-list-jumps
🐛 Fix component list jumps
2024-11-25 11:44:05 +01:00
Andrey Antukh
d4893523bc Merge pull request #5367 from penpot/niwinz-bugfix-2
🐛 Fix release 2.3 onboarding text typos
2024-11-25 11:43:47 +01:00
AzazelN28
f10792619d 🐛 Fix component list jumps 2024-11-25 11:35:33 +01:00
Alejandro
7a0702650a Merge pull request #5366 from penpot/niwinz-bugfix-1
🐛 Bugfixes
2024-11-25 11:32:28 +01:00
Elhombretecla
ee1230c488 🐛 Fix release 2.3 onboarding text typos 2024-11-25 11:30:51 +01:00
Belén Albeza
5018ff06ee Merge pull request #5363 from penpot/superalex-wasm-shape-opacity
🎉 Shape opacity for wasm render
2024-11-25 11:30:50 +01:00
Andrey Antukh
ede1176606 Merge pull request #5340 from penpot/palba-testab-board-icon
🎉 Add A/B test of use of boards if we just change the icon for “standard” one
2024-11-25 11:24:23 +01:00
Andrey Antukh
9506606e15 Merge pull request #5359 from penpot/alotor-fixes-2
🐛 Fix problem with scroll in history versions
2024-11-25 11:23:47 +01:00
Andrey Antukh
7e5f93ca3d Merge pull request #5358 from penpot/azazeln28-fix-assets-filters
🐛 Fix assets filters
2024-11-25 11:23:14 +01:00
Alejandro Alonso
61e19ae3a8 Merge remote-tracking branch 'origin/staging' into develop 2024-11-25 11:18:47 +01:00
Andrey Antukh
6655563aba Merge pull request #5357 from penpot/superalex-fix-generate-translation-files-with-markdown-and-links
🐛 Fix generate translation files with markdown and links
2024-11-25 11:18:13 +01:00
Andrey Antukh
8ee9b45243 Merge pull request #5346 from penpot/alotor-fixes-1
Alotor fixes 1
2024-11-25 11:16:25 +01:00
Alejandro
caa6897f81 Merge pull request #5342 from penpot/niwinz-thumbnails-fix
 Make the file and shape thumbnails not dependent on PUBLIC_URI
2024-11-25 11:13:04 +01:00
Andrey Antukh
660bc1a4dd 🐛 Fix incorrect team rename operation 2024-11-25 10:01:36 +01:00
Andrey Antukh
3ddd45e99b 🐛 Fix incorrect internal form initialization 2024-11-25 10:01:36 +01:00
Andrey Antukh
9b71e04e1c 🐛 Fix exception on user-feedback rpc method
And normalizes configuration parameters
2024-11-25 10:01:36 +01:00
alonso.torres
39620fe9c4 🐛 Hover on history version entry to show options 2024-11-25 09:51:41 +01:00
alonso.torres
db7c1fc7dd 🐛 Fix problem with some texts desynchronization 2024-11-25 09:51:41 +01:00
Alejandro Alonso
d09e5ef9b3 🎉 Shape opacity for wasm render 2024-11-25 09:26:49 +01:00
Andrey Antukh
6f5c7c01bb Merge remote-tracking branch 'origin/staging' into develop 2024-11-25 09:20:30 +01:00
Alejandro Alonso
c89abf56ac 🐛 Fix translate files generations with markdown and links 2024-11-25 07:20:32 +01:00
alonso.torres
d22f6e37c9 Add pin version to main menu 2024-11-22 15:47:19 +01:00
Aitor Moreno
e675ff6db5 Merge pull request #5352 from penpot/superalex-improve-full-rendering
🎉 Improve performance for zoom and pan with wasm render
2024-11-22 15:38:31 +01:00
AzazelN28
19b9b3cbd9 🐛 Fix missing main menu entry version history 2024-11-22 15:35:13 +01:00
alonso.torres
c1d3e4cd6e 🐛 Fix problem with scroll in history versions 2024-11-22 15:34:32 +01:00
AzazelN28
2164593757 🐛 Fix assets filters 2024-11-22 14:47:43 +01:00
Andrey Antukh
9485ce03b5 Merge pull request #5338 from penpot/azazeln28-fix-missing-text-editor-changes
📎 Fix some text editor missing changes
2024-11-22 12:54:42 +01:00
Alejandro Alonso
05716c7164 Merge remote-tracking branch 'origin/staging' into develop 2024-11-22 12:46:10 +01:00
Aitor Moreno
ba832389d1 Merge pull request #5354 from penpot/superalex-fix-text-layer-default-name-with-v2-editor
🐛 Fix text layer default name with v2 text editor
2024-11-22 12:20:59 +01:00
Alejandro Alonso
a8ee9be7b9 🐛 Fix text layer default name with v2 text editor 2024-11-22 11:14:39 +01:00
AzazelN28
c8c83c1e1d 📎 Fix some missing changes 2024-11-22 11:06:16 +01:00
Alejandro Alonso
0b5e915af9 🎉 Improve performace for zoom and pan with wasm render 2024-11-22 09:46:46 +01:00
Andrey Antukh
afcfbdedda Merge pull request #5341 from penpot/palba-fix-leave-team
🐛 Fix bad redirect after leaving team
2024-11-22 08:31:21 +01:00
Belén Albeza
361c56fd9c Merge pull request #5343 from penpot/azazeln28-render-only-visible-shapes
🎉  Render only visible shapes
2024-11-21 17:40:24 +01:00
Belén Albeza
6fd6074934 💄 Format rust code 2024-11-21 17:23:49 +01:00
Pablo Alba
53f55444cd Add export format info to export-shapes event 2024-11-21 16:33:06 +01:00
Andrey Antukh
86b681fb55 Merge pull request #5350 from penpot/token-studio-develop-1
 Merge tokens-studio/develop into develop
2024-11-21 16:31:08 +01:00
Andrey Antukh
395962ae4d Merge tokens-studio/develop into develop 2024-11-21 16:08:42 +01:00
AzazelN28
f7ff3129ed 🎉 Render only visible shapes 2024-11-21 16:05:14 +01:00
Aitor Moreno
f9912e0299 Merge pull request #5317 from penpot/superalex-fix-real-time-blend-mode-rendering
🐛 Fix real time blend mode rendering
2024-11-21 16:03:42 +01:00
Alejandro Alonso
b4e9f9e28c 🐛 Fix real time blend mode rendering 2024-11-21 15:58:37 +01:00
Aitor Moreno
aa07a8046b Merge pull request #5329 from penpot/ladybenko-9290-fix-resize-viewport
Fix viewport glitch
2024-11-21 15:13:36 +01:00
Belén Albeza
dfe8f97f8d 🐛 Fix surface not being resized when viewport dimensions changed 2024-11-21 14:16:07 +01:00
Aitor Moreno
2f15844c32 Merge pull request #5347 from penpot/superalex-tada-improve-zoom-pan-render-wasm
🎉 Improve performace for zoom and pan with wasm render
2024-11-21 12:50:51 +01:00
Alejandro Alonso
e634d6d37a 🎉 Improve performace for zoom and pan with wasm render 2024-11-21 12:50:06 +01:00
Aitor Moreno
bc7702e955 Merge pull request #5330 from penpot/superalex-tada-improve-zoom-pan-render-wasm
🎉 Improve performace for zoom and pan with wasm render
2024-11-21 12:13:13 +01:00
Alejandro Alonso
ec8799d806 🎉 Improve performace for zoom and pan with wasm render 2024-11-21 12:05:38 +01:00
Denys Kisil
6c1a299b73 🌐 Add translations for: Ukrainian (ukr_UA).
Currently translated at 88.2% (1378 of 1561 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/
2024-11-21 12:00:29 +01:00
Pablo Alba
fa8665df88 Merge pull request #5337 from penpot/juanfran-fix-typo-keepaspectratio
🐛 Fix typo in keepAspectRatio #9336
2024-11-21 09:13:21 +01:00
Alejandro
7b57509d2d Merge pull request #5339 from penpot/azazeln28-improve-render-queueing
🎉 Improve frame rendering
2024-11-21 06:57:56 +01:00
Andrey Antukh
5cc678ddc3 Remove not necessary check on upgrade-version notification 2024-11-20 16:43:14 +01:00
Andrey Antukh
64c8741233 🐛 Make thumbnails independent of current public uri
Mainly always resolve the public uri at frontend, making the
PENPOT_PUBLIC_URI less necessary to be changed. This improves
the experience of on-premise configuration.

Also removes unnecesary calls for thumbnail generation
on components.
2024-11-20 16:43:14 +01:00
Pablo Alba
0cae9d6ad5 🐛 Fix bad redirect after leaving team 2024-11-20 15:37:08 +01:00
Pablo Alba
0c586551c4 🎉 Add A/B test of use of boards if we just change the icon for “standard” one 2024-11-20 15:12:54 +01:00
AzazelN28
2db1740ce8 🎉 Improve frame rendering 2024-11-20 14:09:18 +01:00
Juanfran
2f4cb19745 🐛 Fix typo in keepAspectRatio #9336 2024-11-20 12:43:51 +01:00
Edgars Andersons
67f9b5d1f3 🌐 Add translations for: Latvian.
Currently translated at 99.2% (1549 of 1561 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/
2024-11-20 10:00:20 +01:00
Belén Albeza
59fdf64c66 Merge pull request #5333 from penpot/niwinz-render-wasm-improvements
 Improvements to wasm api call usability
2024-11-20 09:34:48 +01:00
Belén Albeza
f8e0283186 Merge pull request #5332 from penpot/palba-add-integration-test-viewer-role
 Add integration tests to viewer role
2024-11-20 09:24:17 +01:00
Alejandro Alonso
7611c487aa Merge remote-tracking branch 'origin/staging' into develop 2024-11-20 06:27:54 +01:00
Alejandro
b80ccbec0f Merge pull request #5334 from penpot/niwinz-bug-features
🐛 Preserve frontend-only flags already present on team
2024-11-20 06:27:24 +01:00
Andrey Antukh
99905d2286 ♻️ Move wasm shape proxy impl to frontend 2024-11-19 19:59:49 +01:00
Andrey Antukh
884414d5cf Improve wasm api call method usability 2024-11-19 19:21:48 +01:00
Andrey Antukh
db2eb2c420 Use get-prop for access transform and rect props 2024-11-19 19:21:48 +01:00
Andrey Antukh
5420e0e06d Merge remote-tracking branch 'origin/staging' into develop 2024-11-19 19:20:39 +01:00
Andrey Antukh
246415be2b Merge pull request #5306 from penpot/azazeln28-update-text-editor
⬆️ Update text editor
2024-11-19 19:20:04 +01:00
Andrey Antukh
7faa9e970e 🐛 Fix esm module incompatibilities on text-editor with node 2024-11-19 17:20:16 +01:00
Andrey Antukh
04a0d867b0 Import text-editor code into the repository 2024-11-19 17:05:30 +01:00
Andrey Antukh
93583e5257 Merge pull request #5327 from penpot/qol-gradients
 New gradients UI
2024-11-19 16:50:15 +01:00
alonso.torres
838c1324b9 🎉 Add new gradients UI 2024-11-19 16:41:01 +01:00
Andrey Antukh
a18214a1a5 🐛 Preserve frontend-only flags already present on team 2024-11-19 16:39:21 +01:00
Pablo Alba
3a7d187110 Add integration tests to viewer role 2024-11-19 16:38:21 +01:00
AzazelN28
68397edd4d 🐛 Fix text editor selection 2024-11-19 14:47:38 +01:00
AzazelN28
1e2d9a15a3 🐛 Fix text editor shortcuts 2024-11-19 14:47:38 +01:00
AzazelN28
0f101fad9f ⬆️ Update text editor 2024-11-19 14:47:38 +01:00
Andrey Antukh
a91737b4d7 Merge pull request #5331 from penpot/alotor-exit-comments
🐛 Fix escape key to exit comments mode
2024-11-19 10:59:13 +01:00
alonso.torres
284d5ecb77 🐛 Fix escape key to exit comments mode 2024-11-19 10:44:54 +01:00
Alejandro
5d95d755ad Merge pull request #5315 from penpot/niwinz-team-access-request-quotes
🎉 Add quote definitions for team access requests
2024-11-19 06:52:04 +01:00
Andrey Antukh
4466abd150 Merge pull request #5320 from penpot/alotor-fix-problem-layouts
🐛 Fix problem with layout reflow
2024-11-18 18:44:42 +01:00
Andrey Antukh
bc250c962d 🐛 Fix tests caused by merge from staging 2024-11-18 18:43:15 +01:00
Andrey Antukh
68a299a5f5 Merge branch 'Bamboooz-develop' into develop 2024-11-18 18:08:09 +01:00
Bamboooz
569b6e34cb 🐛 Fix polish translations 2024-11-18 18:07:50 +01:00
Andrey Antukh
3addc4ae42 🐛 Fix tests 2024-11-18 18:06:42 +01:00
Andrey Antukh
7c0142432e Merge remote-tracking branch 'origin/staging' into develop 2024-11-18 17:56:12 +01:00
Andrey Antukh
27690c3da6 Add test runner for cljs on common module
In the same way as frontend tests are run and fix some
tokens related tests
2024-11-18 17:51:23 +01:00
alonso.torres
f436d72f51 Changed some events for versions 2024-11-18 16:38:38 +01:00
Alejandro Alonso
d71e1e66c4 Merge remote-tracking branch 'origin/staging' into develop 2024-11-18 15:52:34 +01:00
Alejandro
20ea188070 Merge pull request #5321 from penpot/niwinz-improvements-features
 Feature flags improvements
2024-11-18 15:52:20 +01:00
Alejandro
4e28f1b1f7 Merge pull request #5325 from penpot/niwinz-uuid-tweaks
 Improve Uint32 array generation from uuid
2024-11-18 15:47:48 +01:00
Belén Albeza
05e77957ca Merge pull request #5324 from penpot/superalex-fix-panning-events
🐛 Fix streaming of panning events
2024-11-18 15:39:21 +01:00
Alejandro Alonso
5c6ad8e236 Merge remote-tracking branch 'origin/staging' into develop 2024-11-18 13:00:02 +01:00
Alejandro
c4f076910b Merge pull request #5326 from penpot/alotor-fix-problem-texts
🐛 Fix problem with texts crashing
2024-11-18 12:59:40 +01:00
Andrey Antukh
f509b0c1a7 Improve Uint32 array generation from uuid 2024-11-18 12:57:49 +01:00
alonso.torres
72f2395142 🐛 Fix problem with texts crashing 2024-11-18 12:41:21 +01:00
Alejandro
61ad1d6a70 Merge pull request #5318 from penpot/ladybenko-9311-fix-blend
Fix more blend glitches
2024-11-18 10:20:28 +01:00
Alejandro Alonso
b03df6422f 🐛 Fix streaming of panning events 2024-11-18 10:06:27 +01:00
Nicola Bortoletto
18fd6a47ef 🌐 Add translations for: Italian.
Currently translated at 99.4% (1553 of 1561 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/it/
2024-11-17 14:01:01 +00:00
Yaron Shahrabani
aecb14775c 🌐 Add translations for: Hebrew.
Currently translated at 99.5% (1554 of 1561 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/
2024-11-17 14:01:00 +00:00
Stephan Paternotte
1a808e05c3 🌐 Add translations for: Dutch.
Currently translated at 99.5% (1554 of 1561 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/nl/
2024-11-16 13:00:54 +00:00
Edgars Andersons
d253e1195e 🌐 Add translations for: Latvian.
Currently translated at 97.7% (1526 of 1561 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/
2024-11-16 13:00:53 +00:00
Nicola Bortoletto
0590c0bf2c 🌐 Add translations for: Polish.
Currently translated at 73.5% (1148 of 1561 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pl/
2024-11-16 13:00:52 +00:00
Nicola Bortoletto
f69b2f9edf 🌐 Add translations for: Italian.
Currently translated at 99.4% (1553 of 1561 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/it/
2024-11-16 13:00:51 +00:00
Andrey Antukh
47d28758d7 Clean frontend and backend features on exportation 2024-11-15 15:57:25 +01:00
Andrey Antukh
b7573c0b72 Change frontend-only features automatic team assignation rules
The frontend-only features are now ignored from files and from teams
and they do not autoassigns automatically to team and file on file
creation or update operations.
2024-11-15 15:57:25 +01:00
Belén Albeza
6f11eebbed 🐛 Tweak sampling options for rendering shapes 2024-11-15 15:13:57 +01:00
alonso.torres
2ed743b6be 🐛 Fix problem with layout reflow 2024-11-15 15:12:52 +01:00
Belén Albeza
42211c4ed6 ♻️ Move shape render methods to RenderState 2024-11-15 14:56:21 +01:00
Belén Albeza
f56a665206 🐛 Fix drawing multiple shapes with different blend modes 2024-11-15 14:40:07 +01:00
Alejandro
defe6ff7f8 Merge pull request #5316 from penpot/ladybenko-9311-fix-blend-glitches
Fix blend mode glitches
2024-11-15 14:03:29 +01:00
Yaron Shahrabani
54e8ede474 🌐 Add translations for: Hebrew.
Currently translated at 92.8% (1450 of 1561 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/
2024-11-15 12:00:22 +00:00
Belén Albeza
58d3a2984f 🐛 Fix not clearing drawing surface before drawing shapes 2024-11-15 11:33:26 +01:00
Andrey Antukh
036e335fc4 🎉 Add quote definitions for team access requests 2024-11-15 11:14:30 +01:00
Mathieu Darse
c21a48d13b 🐛 Remove duplicated functions from merge error in manage.sh script 2024-11-15 10:35:37 +01:00
Alejandro
d1d34a3aa7 Merge pull request #5300 from penpot/ladybenko-9275-blend-modes
Add blend modes
2024-11-15 10:27:57 +01:00
Andrey Antukh
6831df488d Merge remote-tracking branch 'origin/staging' into develop 2024-11-15 10:17:45 +01:00
Andrey Antukh
0e99b37c21 Merge remote-tracking branch 'origin/main' into staging 2024-11-15 10:17:18 +01:00
Alejandro Alonso
e9d3cb16c0 Merge remote-tracking branch 'origin/staging' into develop 2024-11-15 09:45:03 +01:00
Andrey Antukh
bb370b3e50 Merge pull request #5314 from penpot/superalex-fix-wasm-build
🐛 Fix compilation for wasm communication in release mode
2024-11-15 09:44:24 +01:00
Andrey Antukh
588dd5452a 📎 Start new development cycle for 2.5 2024-11-15 09:36:20 +01:00
Andrey Antukh
45d56f40e1 Merge remote-tracking branch 'origin/develop' into staging 2024-11-15 09:35:21 +01:00
Andrey Antukh
a02a316165 Merge remote-tracking branch 'origin/staging' into develop 2024-11-15 09:34:28 +01:00
Alejandro Alonso
4a1ab75d8f 🐛 Fix compilation for wasm communication in release mode 2024-11-15 09:30:59 +01:00
Belén Albeza
263d7eb313 Draw fills offscreen to support blend mode when multiple fills 2024-11-15 08:51:37 +01:00
Andrey Antukh
bbfcff0772 🐛 Update build data and version on all frontend templates
not only index.html
2024-11-14 18:48:48 +01:00
Andrey Antukh
21cdd1200a :paperlip: Add minor update to render-wasm build script 2024-11-14 18:18:22 +01:00
Andrey Antukh
aeda6271cd Improve release build process for render wasm 2024-11-14 18:14:43 +01:00
Andrey Antukh
058c3707c8 Improve consistency on devenv initialization 2024-11-14 17:23:45 +01:00
Andrey Antukh
b81ffa422f 📎 Update devenv entrypoint 2024-11-14 14:38:40 +01:00
Andrey Antukh
e54f213b3f 🐛 Set a different cache directory for emcsdk 2024-11-14 14:29:19 +01:00
Andrey Antukh
97072b112c 🐛 Add another attempt to fix build related to render-wasm 2024-11-14 13:08:06 +01:00
Andrey Antukh
16ff29538b 🐛 Fix issue on frontend build script 2024-11-14 12:39:12 +01:00
Andrey Antukh
48b72229c3 📎 Add workaround for missing cargo on PATH on render-wasm build script 2024-11-14 12:36:43 +01:00
Andrey Antukh
fa8af898ba 🐛 Add cargo to PATH environment on devenv 2024-11-14 12:35:45 +01:00
Anonymous
42e4a4a2dd 🌐 Add translations for: Swedish.
Currently translated at 92.3% (1444 of 1563 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/sv/
2024-11-14 12:14:47 +01:00
Anonymous
e778bc8b18 🌐 Add translations for: Dutch.
Currently translated at 92.3% (1444 of 1563 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/nl/
2024-11-14 12:14:46 +01:00
Anonymous
6d60ca0474 🌐 Add translations for: Latvian.
Currently translated at 92.3% (1444 of 1563 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/
2024-11-14 12:14:46 +01:00
Anonymous
41f906110e 🌐 Add translations for: Ukrainian (ukr_UA).
Currently translated at 85.6% (1338 of 1563 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/
2024-11-14 12:14:46 +01:00
Anonymous
8d7be1e273 🌐 Add translations for: Czech.
Currently translated at 92.1% (1440 of 1563 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/cs/
2024-11-14 12:14:46 +01:00
Anonymous
13adc88637 🌐 Add translations for: Hebrew.
Currently translated at 92.3% (1444 of 1563 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/
2024-11-14 12:14:46 +01:00
Anonymous
84f063a5b4 🌐 Add translations for: Indonesian.
Currently translated at 92.3% (1444 of 1563 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/id/
2024-11-14 12:14:46 +01:00
Anonymous
647357a892 🌐 Add translations for: German.
Currently translated at 91.5% (1431 of 1563 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/
2024-11-14 12:14:46 +01:00
Anonymous
c1eed3a364 🌐 Add translations for: Turkish.
Currently translated at 92.3% (1444 of 1563 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/tr/
2024-11-14 12:14:46 +01:00
Andrey Antukh
2dd7f241d3 Merge pull request #5303 from penpot/qol-feature-versions-plugins
 Add versions support in plugins
2024-11-14 12:14:22 +01:00
Alejandro
66c6e0232e Merge pull request #5301 from penpot/niwinz-binfile-v3-finetuning
🐛 Fix pending tasks and issues on binfile-v3 format
2024-11-14 12:12:48 +01:00
Belén Albeza
3eb24e7f5f ♻️ Refactor State (wasm) 2024-11-14 12:08:50 +01:00
alonso.torres
4de43b32e8 Add versions support in plugins 2024-11-14 12:02:15 +01:00
Andrey Antukh
1d735e5b12 📎 Resync translation files
Mainly update translation string location comments on all locale files
2024-11-14 12:01:31 +01:00
Andrey Antukh
15d3107c48 Adapt workspace main menu to binfile-v3 config flag 2024-11-14 12:01:31 +01:00
Belén Albeza
3e06c17a38 ♻️ Refactor RenderState and GpuState 2024-11-14 11:47:10 +01:00
Andrey Antukh
2d1158efa3 🐛 Fix issue with encoding/decoding thumbnails on binfile-v3 format 2024-11-14 11:45:11 +01:00
Andrey Antukh
f78f843f7c Use .penpot extension for binfile-v3 export format 2024-11-14 11:45:08 +01:00
Alejandro
07e40e78cd Merge pull request #5304 from penpot/niwinz-minor-improvements-renderer
 Make workspace and features system aware of render.wasm loading
2024-11-14 11:40:01 +01:00
Andrey Antukh
57f5e3c30a Merge branch 'translations' into develop 2024-11-14 11:36:09 +01:00
Andrey Antukh
32cd388b06 📎 Rehash and sort translation files 2024-11-14 11:35:28 +01:00
Andrey Antukh
d3829ec630 Merge remote-tracking branch 'weblate/develop' into translations 2024-11-14 11:32:50 +01:00
Andrey Antukh
1be204e22d Add render.wasm to the frontend build process 2024-11-14 11:20:39 +01:00
Andrey Antukh
5d4511fc6a Make workspace and features system aware of render.wasm loading 2024-11-14 11:20:39 +01:00
Alejandro
dd1997e23c Merge pull request #5302 from penpot/niwinz-develop-hotfix-1
🐛 Relax ldap provider requirements
2024-11-14 09:49:49 +01:00
Andrey Antukh
36914d1dc4 🐛 Relax ldap provider requirements 2024-11-14 09:40:38 +01:00
Andrey Antukh
1fdc724761 Merge pull request #5294 from penpot/superalex-feature-flag-for-render-wasm
🎉 Add feature flag for wasm render
2024-11-14 08:59:48 +01:00
Alejandro
3c6403224d Merge pull request #5267 from penpot/niwinz-backend-update-integrant
♻️ Update integrant to latest version
2024-11-14 07:50:49 +01:00
Andrey Antukh
88fb5e7ab5 ♻️ Update integrant to latest version
This upgrade also includes complete elimination of use spec
from the backend codebase, completing the long running migration
to fully use malli for validation and decoding.
2024-11-13 19:09:19 +01:00
Belén Albeza
966e942a7f 🎉 Implement drawing with blend mode (single fill) 2024-11-13 16:39:26 +01:00
Belén Albeza
7458165e51 🐛 Fix fill apply order 2024-11-13 15:07:16 +01:00
Belén Albeza
e45e8158b0 ♻️ Refactor current_shape in rust_wasm 2024-11-13 15:00:20 +01:00
Pablo Alba
8ed508012e Merge pull request #5290 from penpot/niwinz-team-request-access-bugfix
🐛 Several bugfixes related to the request-access feature
2024-11-13 14:37:48 +01:00
Belén Albeza
58d744a342 Merge pull request #5295 from penpot/superalex-refactor-naming-anidated-shapes-wasm
🎉 Refactor naming anidated shapes with children for wasm render
2024-11-13 14:26:57 +01:00
Andrey Antukh
8f72d8583e Merge pull request #5296 from penpot/palba-bugs-viewer-role
Bugs viewer role
2024-11-13 14:17:29 +01:00
Andrey Antukh
57d7dfaa0a Add final adjustements for binfile-v3 feature 2024-11-13 14:16:21 +01:00
Andrey Antukh
4f4ef6f1f2 Refresh members after accept team request access 2024-11-13 14:16:21 +01:00
Andrey Antukh
6eadea8485 Improve multi-input initial value handling
And removes the hard coupling of invite-email from it
2024-11-13 14:16:21 +01:00
Andrey Antukh
607e0c5c1d Move team invitations and access requests to a separate namespace
This commit also comes with:

- a fix for incorrect conflict handling on team access request creation
- a fix for incorrect handling of file-data when it is offloaded
- replace some inneficient queries with effcient ones
- remove redundant validation on creation of request-access
2024-11-13 14:16:18 +01:00
Pablo Alba
e31b4b58ce 🐛 Fix viewer role can use shortcut for create project 2024-11-13 14:03:07 +01:00
Alejandro
e659b8eb6e Merge pull request #5298 from penpot/niwinz-update-changelog
📎 Add missing breaking change notification on changelog
2024-11-13 13:36:18 +01:00
Andrey Antukh
962408c1ae 📎 Add missing breaking change notification on changelog
About the redis version pinning to version 7.2
2024-11-13 13:35:55 +01:00
Alejandro Alonso
c1d213a0cd 🎉 Refactor naming anidated shapes with children for wasm render 2024-11-13 13:35:28 +01:00
Alejandro
7e5115ecd9 Merge pull request #5293 from penpot/ladybenko-9265-solid-fills
Draw solid rect fills
2024-11-13 13:12:19 +01:00
Belén Albeza
539d5dfc08 🎉 Draw solid fills for shapes 2024-11-13 13:05:42 +01:00
Andrey Antukh
343f63a7cc Merge remote-tracking branch 'origin/staging' into develop 2024-11-13 12:54:22 +01:00
Andrey Antukh
df416af19b Merge pull request #5280 from penpot/palba-enhancements-viewer-role
Enhancements for viewer role
2024-11-13 12:50:09 +01:00
Alejandro Alonso
e3268739ed 🎉 Add feature flag for wasm render 2024-11-13 12:50:09 +01:00
Andrey Antukh
c0f026c332 💄 Add minor cosmetic changes to verify-token ns 2024-11-13 12:37:36 +01:00
Pablo Alba
d4cf817b83 🐛 Fix libraries and templates section is shown for viewer role 2024-11-13 11:50:09 +01:00
Belén Albeza
669bca5fa5 ♻️ Remove unneeded display list for shapes 2024-11-13 10:59:03 +01:00
Belén Albeza
49b4eabe8b 🐛 Fix transform matrix being carried to non-children shapes 2024-11-13 10:57:14 +01:00
Andrey Antukh
03acfc2b3c Merge pull request #5289 from penpot/superalex-recurisve-wasm-drawing-shapes
🎉 Recursive drawing shapes in rust
2024-11-13 09:56:40 +01:00
Alejandro Alonso
b149f96500 🎉 Recursive drawing shapes in rust 2024-11-13 07:45:47 +01:00
Belén Albeza
132b1800c2 Merge pull request #5286 from penpot/superalex-render-modifiers
🎉 Save shape data in rust memory
2024-11-12 15:06:20 +01:00
Alejandro Alonso
65ee2f9081 🎉 Save shape data in rust memory 2024-11-12 12:13:06 +01:00
Yaron Shahrabani
4faa9ddd8d 🌐 Add translations for: Hebrew.
Currently translated at 99.5% (1447 of 1453 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/
2024-11-12 12:00:39 +01:00
Andrey Antukh
48909dc3c4 Merge remote-tracking branch 'origin/staging' into develop 2024-11-12 11:38:24 +01:00
Andrey Antukh
72313c770c Merge pull request #5281 from penpot/ladybenko-9202-update-devenv
🔧 Add rustfmt to the devenv
2024-11-12 11:29:50 +01:00
Andrey Antukh
c05a69509e 🐛 Fix invalid return value on worker api when worker is not available
Mainly happens on tests
2024-11-12 11:25:16 +01:00
Andrey Antukh
44ffdc4f97 Merge pull request #5266 from penpot/hiru-merge-tokens
Update design tokens
2024-11-12 10:46:53 +01:00
Andrés Moya
5a6c2c5054 🎉 Merge design-tokens branch
commit b4440aad04
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Fri Nov 8 16:08:07 2024 +0100

    🔧 Fix wrong code in merge

commit 5fee74cea8
Merge: a34207634 4f845b5c4
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Fri Nov 8 12:38:59 2024 +0100

    Merge remote-tracking branch 'origin/develop' into token-studio-develop

commit 4f845b5c4d
Merge: fb3f74e74 960f095c1
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Fri Nov 8 12:38:34 2024 +0100

    Merge remote-tracking branch 'upstream/develop' into develop

commit a34207634b
Merge: a757556e9 2c4eb96ab
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Fri Nov 8 12:12:31 2024 +0100

    Merge pull request #328 from tokens-studio/fix-merge-issues

    [WIP] Restore style-dictionary prerelease

commit 2c4eb96ab1
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Nov 8 12:03:58 2024 +0100

    Remove comment block

commit 424b930990
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Nov 8 11:59:08 2024 +0100

    Remove patch file

commit cfd291db5e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Nov 8 11:46:42 2024 +0100

    Restore default

commit c76569e4b7
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Nov 8 11:40:31 2024 +0100

    Downgrade

commit 456da5a46e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Nov 8 10:16:29 2024 +0100

    🐛 Fix name on fnc crashing the process

commit 072cec7a22
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Nov 8 09:58:42 2024 +0100

    Add testing block

commit a757556e9c
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Nov 7 18:32:09 2024 +0100

    Revert "🐛 Fix import of tinycolor2"

    This reverts commit 8e4574888d.

commit 8e4574888d
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Nov 7 18:17:24 2024 +0100

    🐛 Fix import of tinycolor2

commit 78a1a615d9
Merge: a910f06b2 fb3f74e74
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Nov 7 14:07:58 2024 +0100

    Merge remote-tracking branch 'origin/develop' into token-studio-develop

commit fb3f74e74f
Merge: 20590a5d1 96f8832bc
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Nov 7 14:06:45 2024 +0100

    Merge remote-tracking branch 'upstream/develop' into develop

commit 20590a5d18
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Nov 7 14:02:55 2024 +0100

    🔧 fix

commit e9c32841a9
Merge: 040a94f71 33ff74e53
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Nov 7 13:49:11 2024 +0100

    Merge remote-tracking branch 'upstream/develop' into develop

commit a910f06b2f
Merge: b3b8121d6 3d99c2a5e
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Nov 6 16:26:19 2024 +0100

    Merge pull request #326 from tokens-studio/stroke-context-menu

    [WIP]  Allow setting stroke-color via context-menu

commit 3d99c2a5eb
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Nov 6 15:43:20 2024 +0100

     Allow setting stroke-color via context-menu

commit 040a94f719
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Tue Nov 5 13:16:56 2024 +0100

    🔧 Disable tokens in dev env by default

commit b3b8121d60
Merge: 32865c41c a33e0a386
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Mon Nov 4 13:45:44 2024 +0100

    Merge pull request #320 from tokens-studio/fix-dot-rename

    🐛 Fix renaming token to other namespace not working

commit a33e0a386e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Nov 4 13:43:38 2024 +0100

    ♻️Ensure collection return

commit 32865c41c9
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 30 08:49:30 2024 +0100

    ♻ Remove zip.js compability warning when starting shadow-cljs

commit 315431fd49
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Mon Nov 4 13:02:32 2024 +0100

    🔧 Update dependencies

commit b47c5f9e60
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Oct 31 15:18:39 2024 +0100

    🐛 Fix sidebar tabs when there are no design tokens

commit a1fd7a912e
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Wed Oct 30 10:52:08 2024 +0100

    🔧 Use bun only for dev env (is needed to run frontend tests)

commit 60761eec07
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Oct 29 17:06:32 2024 +0100

    🐛 Fix renaming token to other namespace not working

commit 62b859b84e
Merge: bc3ab8981 4f7622cb9
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Tue Oct 29 16:27:25 2024 +0100

    Merge pull request #318 from tokens-studio/fix-delete-set

    🐛 When deleting set remove it from theme

commit 4f7622cb93
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Oct 29 14:19:42 2024 +0100

    🐛 When deleting set remove it from theme

commit bc3ab8981e
Author: Eva Marco <evamarcod@gmail.com>
Date:   Fri Oct 25 14:54:00 2024 +0200

    ♻️ Review sets code and add DS components

commit bef648a63f
Merge: cd7763ca0 0923dcc43
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Mon Oct 28 09:06:34 2024 +0100

    Merge pull request #312 from tokens-studio/import-sd-2

     Import: Verify data with StyleDictionary

commit 0923dcc43f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Oct 25 14:40:14 2024 +0200

    ♻ Make `process-sd-tokens` more readable

commit cd7763ca08
Merge: a1c401594 0ff5df4b8
Author: Andrés Moya <hirunatan@hammo.org>
Date:   Thu Oct 24 14:50:56 2024 +0200

    Merge pull request #313 from tokens-studio/eva-review-themes

    ♻️  Review themes section

commit 0ff5df4b8d
Author: Eva Marco <evamarcod@gmail.com>
Date:   Wed Oct 23 16:28:30 2024 +0200

    ♻️ Review themes section

commit f5596b2b3f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Oct 24 10:13:03 2024 +0200

    🐛 Temporary fix for import on sets with groups (/ delimiter)

commit a1c401594c
Merge: 03ea5414b 52d8bed0f
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Thu Oct 24 09:42:25 2024 +0200

    Merge pull request #314 from tokens-studio/fix/deployment

    Fix/deployment

commit 52d8bed0fc
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Thu Oct 24 09:29:38 2024 +0200

    Remove all gimlet and custom workflow code

commit 66dce0e795
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Oct 22 10:14:47 2024 +0200

     Detect reference errors when importing tokens

commit d3ded00bc6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 23 14:13:49 2024 +0200

    🐛 Fix text-editor missing from token tests

commit bf3880a21c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 23 10:05:24 2024 +0200

    🐛 Remove box shadow from supported tokens

commit 951f558d1f
Merge: fa8037c4b 03ea5414b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 23 12:05:58 2024 +0200

    Merge branch 'develop' into token-studio-develop

commit 7debdefa22
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Oct 21 16:03:19 2024 +0200

    🐛 Fix outdated notifications map

commit 03ea5414be
Author: Eva Marco <evamarcod@gmail.com>
Date:   Mon Oct 21 17:14:17 2024 +0200

    ♻️ Review create and edit modal

commit 31b5f5cefa
Author: Eva Marco <evamarcod@gmail.com>
Date:   Mon Oct 21 16:36:47 2024 +0200

    ♻️ Format code

commit 96af0f065d
Merge: 2bdbd81a1 77ba6c135
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Mon Oct 21 10:10:55 2024 +0200

    Merge pull request #310 from tokens-studio/fix-set-rename

    🐛 Keep selection when renaming set

commit 77ba6c135e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Oct 21 10:08:03 2024 +0200

    🐛 Keep selection when renaming set

commit fa8037c4b5
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Oct 17 17:40:25 2024 +0200

    Deploy

commit 2bdbd81a19
Merge: aaac7fb04 9fe4919a2
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Thu Oct 17 17:11:05 2024 +0200

    Merge pull request #308 from tokens-studio/merge-develop-2

    Sync with upstream develop

commit 9fe4919a2b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Oct 17 17:04:19 2024 +0200

    Migrate msg -> ntf

commit 6af6dd1288
Merge: aaac7fb04 b4c2f2eca
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Oct 17 17:03:23 2024 +0200

    Merge branch 'develop' into token-studio-develop

commit aaac7fb041
Merge: 41dc6083c c6ed081a0
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Thu Oct 17 16:41:54 2024 +0200

    Merge pull request #305 from tokens-studio/dtcg-import

    DTCG Tokens Import / Export

commit c6ed081a0b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Oct 10 13:08:35 2024 +0200

     Implement token import / export

commit 41dc6083cf
Merge: bbf5fce0c 85fee87bc
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Thu Oct 10 12:41:38 2024 +0200

    Merge pull request #298 from tokens-studio/dnd

    Sets Drag & Drop

commit 85fee87bc4
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Oct 8 10:24:07 2024 +0200

    🎉 Token Sets dnd re-ordering

commit a85a7d2b2f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Oct 8 17:09:58 2024 +0200

    🐛 Fix logic in oassoc-in-before wher top items couldn't be move to bottom

commit bbf5fce0c9
Merge: bc4969c25 07beef572
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Oct 9 13:21:38 2024 +0200

    Merge pull request #297 from tokens-studio/feature-flag

     Add feature flag for design tokens

commit 07beef5727
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 9 11:00:51 2024 +0200

    Remove $PENPOT_FLAGS from frontend deployment

commit 11c8fa468f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 9 10:30:59 2024 +0200

    Manually override ff flags

commit b0ec9034dc
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 9 10:09:45 2024 +0200

    Enable FF for gimlet

commit 18e0948b0c
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Mon Oct 7 14:16:08 2024 +0200

     Add feature flag for design tokens

commit bc4969c25d
Merge: d58932c2e 2baa1aa73
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Thu Oct 3 15:44:02 2024 +0200

    Merge pull request #296 from tokens-studio/fix-reference-color-preview

    Fix reference color preview

commit 2baa1aa734
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Oct 3 15:30:39 2024 +0200

    Show resolved color

commit b3e73b9abc
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Oct 3 15:18:41 2024 +0200

    Move over helper

commit 5de1f450c1
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Oct 3 15:14:38 2024 +0200

    Move over token value reference check function

commit d58932c2e5
Merge: 6f086326f 69cc9d02b
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Thu Oct 3 13:26:27 2024 +0200

    Merge pull request #290 from tokens-studio/refactor-themes-sets

    Refactor themes sets

commit 69cc9d02ba
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 17:23:04 2024 +0200

    Cleanup: item->token

commit d097b5b179
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 17:10:26 2024 +0200

    Cleanup

commit 921f4a6660
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 17:10:07 2024 +0200

    Restore all logic tests

commit 1097c1f282
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 17:02:10 2024 +0200

    Restore apply overwrite

commit f9a49f82f8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 17:00:31 2024 +0200

    Restore apply-multiple

commit f2900c6519
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 16:57:53 2024 +0200

    Cleanup: Sort

commit 1df40ea07a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 16:57:20 2024 +0200

    Restore apply-tokens test

commit eceffda095
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 16:47:17 2024 +0200

    Added todo

commit e55f323d60
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 15:47:59 2024 +0200

    Fix tests

commit 2634388d09
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 14:37:24 2024 +0200

    Remove logging

commit fa6b8cb6de
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 14:31:56 2024 +0200

    Use d/nilf

commit 2b6075d1a2
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 14:21:18 2024 +0200

    Cleanup

commit 306a5e5f85
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 14:20:27 2024 +0200

    Sets don't have a specific order inside themes

commit 5170d328bd
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 14:19:02 2024 +0200

    Fix docstring

commit 4a818d55c8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 14:18:49 2024 +0200

    Rename, fix docstring

commit bbdc9e95f7
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 14:17:20 2024 +0200

    Add todo

commit b12d5938e0
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 14:10:41 2024 +0200

    Replace generic arg name

commit 041e04dcb1
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 14:09:51 2024 +0200

    Remove unneeded ->

commit a235327c3e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 11:33:14 2024 +0200

    Cleanup

commit 0ffcda404b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 11:09:52 2024 +0200

    Cleanup

commit 93cc8214fa
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 11:05:39 2024 +0200

    Fix border-radius and sizing panels

commit 845de5d885
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 10:52:48 2024 +0200

    Fix export

commit fdca6e4edf
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 10:46:55 2024 +0200

    Fix measures options

commit 028809f1d5
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 10:22:09 2024 +0200

    Cleanup

commit 053d0fc923
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 10:15:35 2024 +0200

    Cleanup function

commit 0b081d24e0
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 10:03:34 2024 +0200

    Only show warning when string has /

commit 669594e3c1
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 09:42:56 2024 +0200

    Cleanup

commit 57a133e09d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 09:42:49 2024 +0200

    Add ordered tokens test

commit 43e5367988
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Oct 2 09:42:42 2024 +0200

    Fix testing from cljs

commit fa3e2c90e6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Oct 1 15:45:14 2024 +0200

    Fix renaming via context menu

commit 7418d1fa2c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Oct 1 15:42:09 2024 +0200

    Dont support token set grouping for now

commit 3681678dc4
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Oct 1 14:40:05 2024 +0200

    Migrate token tests to tokens-lib

commit bca4ea3819
Merge: 9268b18e5 6f086326f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Oct 1 12:58:26 2024 +0200

    Merge remote-tracking branch 'origin/token-studio-develop' into refactor-themes-sets

commit 9268b18e56
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Oct 1 12:53:01 2024 +0200

    Fix edit button

commit f1f2767e2a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Oct 1 12:49:03 2024 +0200

    Activating initial sets by adding them to the token theme

commit 5825fa656b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Oct 1 09:56:03 2024 +0200

    Fix tests

commit 993df23624
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Oct 1 09:55:58 2024 +0200

    Remove unneeded tests

commit 442732117b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Oct 1 09:55:23 2024 +0200

    Disable logic tests for now (nee new setup)

commit 0d870610e1
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Oct 1 09:14:54 2024 +0200

    Fix infer warnings in tokens test

commit 231baac31d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 16:41:51 2024 +0200

    Fix renaming token creating new token

commit 4b39b6970a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 16:26:26 2024 +0200

    Fix theme sets not being in order of the root order

commit c5173d2df8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 15:33:17 2024 +0200

    Remove hidden token theme when activating a theme

commit 0ea0834b1a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 15:21:15 2024 +0200

    Cleanup

commit bfa90d0347
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 15:18:26 2024 +0200

    Fix duplicate token event

commit b0d46e1767
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 15:15:05 2024 +0200

    Cleanup

commit 3182ff1e15
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 15:08:18 2024 +0200

    Cleanup

commit dc0a1c1555
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 15:07:22 2024 +0200

    Cleanup

commit 18d120bbaa
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 15:04:12 2024 +0200

    Fix token creation without set

commit c75ab61732
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 14:44:42 2024 +0200

    Fix renamed theme staying in active-themes

commit df8f67b5d3
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 13:52:50 2024 +0200

    Update workspace tokens

commit 1194eb7c61
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 09:39:11 2024 +0200

    Remove unused functions

commit a49992a74e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 09:38:01 2024 +0200

    Fix token updating

commit 5d61ddb385
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 09:33:35 2024 +0200

    Fix property applying

commit a59e391b38
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 09:19:06 2024 +0200

    Fix token deletion menu

commit cfec4ae958
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 09:08:14 2024 +0200

    Cleanup

commit 99a3ed98c9
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 08:46:31 2024 +0200

    Only load context menu when open

commit 8c58ed80ac
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 08:31:18 2024 +0200

    Fix id

commit 066ee9c489
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 30 08:23:22 2024 +0200

    Tokens in sidebar

commit cce4014fbe
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Sep 27 15:36:07 2024 +0200

    Fix token create

commit b7cedf219b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Sep 27 11:21:30 2024 +0200

    Cleanup

commit 93ed1ded17
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Sep 27 11:14:34 2024 +0200

    Token resolving on add fixed

commit 1d50bacfbc
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 26 17:21:02 2024 +0200

    Fix set renaming not being updated in themes

commit 7c4cbe5265
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 26 16:40:38 2024 +0200

    Cleanup

commit 2f13814285
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 26 16:37:30 2024 +0200

    Cleanup

commit 9f2b96332c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 26 16:16:44 2024 +0200

    Fix up active themes tokens method

commit 577fa2bc81
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 26 15:38:36 2024 +0200

    Cleanup

commit c8494c9931
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 26 15:32:46 2024 +0200

    Remove unused

commit 3843253a5d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 26 15:27:16 2024 +0200

    Dont render starting slash

commit 5f6a76dfce
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 26 15:24:02 2024 +0200

    Use currently active sets as sets for temporary theme

commit 29a2478bb5
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 26 15:15:50 2024 +0200

    Fix theme group drop-down not updating group value

commit b3ff480e81
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 26 15:08:54 2024 +0200

    Hide temporary theme

commit 2104fc04df
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 26 14:28:27 2024 +0200

    Fix theme select

commit 9c97b31d28
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 26 13:21:53 2024 +0200

    Fix theme creation/editing

commit 895f92e7c2
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 26 12:03:03 2024 +0200

    Hide temporary token theme from user

commit e216d84484
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 26 11:28:14 2024 +0200

    Set toggling without a theme

commit 6f086326f5
Merge: 2f4a012be c755b764a
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Sep 25 16:22:20 2024 +0200

    Merge pull request #289 from tokens-studio/revert-288-active-themes

    Revert "Adds `active-themes` to `TokensLib`"

commit c755b764a2
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Sep 25 16:21:53 2024 +0200

    Revert "Adds `active-themes` to `TokensLib`"

commit 0b2b8a71fb
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 25 15:08:52 2024 +0200

    Token deletion

commit 9c1a509fa4
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 25 14:59:20 2024 +0200

    Set renaming

commit d2ed6b5501
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 25 14:45:31 2024 +0200

    Add set

commit 2f4a012beb
Merge: fb38e4378 6d75993fd
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Sep 25 13:48:41 2024 +0200

    Merge pull request #288 from tokens-studio/active-themes

    Adds `active-themes` to `TokensLib`

commit 99e551925a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 25 11:08:54 2024 +0200

    Updates

commit 4d4c4355ad
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 25 08:33:34 2024 +0200

    Selection by name

commit ec96e7918d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 25 08:16:29 2024 +0200

    Token theme deletion

commit 844819a50c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Sep 24 15:25:29 2024 +0200

    Activate themes via lib

commit 4c327f38ef
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 23 15:18:46 2024 +0200

    Replace sets

commit f5c122b0db
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Sep 20 14:42:48 2024 +0200

    Remove legacy

commit c6770f43c7
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Sep 20 14:38:53 2024 +0200

    Move out of legacy

commit 43e5e78053
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Sep 20 14:35:47 2024 +0200

    Cleanup

commit f5249196f9
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Sep 20 14:27:19 2024 +0200

    Sets sidebar

commit 501256f16b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Sep 20 09:34:54 2024 +0200

    Disable namespace loading info in console from shadow-cljs

commit 9b2993a344
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 19 16:22:47 2024 +0200

    Fix theme select

commit 191d957984
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 19 16:06:53 2024 +0200

    Use theme listing

commit 743f61f2cd
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 19 15:44:56 2024 +0200

    Adding themes

commit 7758e48c48
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 19 10:52:15 2024 +0200

    Add legacy macro

commit 80e8903754
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 19 10:26:17 2024 +0200

    Refactor: Use tokens-lib for getting tokens theme

commit 6d75993fd7
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Sep 24 14:24:35 2024 +0200

    Move theme-path impl to ITokenTheme

commit 49579d75c6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Sep 24 13:42:56 2024 +0200

    Simplify as this

commit d7d974242e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Sep 24 11:18:12 2024 +0200

    Add active-themes to data serialization tests

commit f2569a1c4a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Sep 24 11:13:41 2024 +0200

    Cleanup

commit 44e4e85201
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Sep 24 11:10:07 2024 +0200

    Add schema validation

commit 5e39f33bff
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Sep 24 11:06:12 2024 +0200

    Rename with theme prefix

commit 416297d298
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 23 17:37:16 2024 +0200

    Implement active-themes

commit fb38e4378a
Merge: 1a9d703bb 5b7b343f6
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Sep 18 18:10:42 2024 +0200

    Merge pull request #273 from tokens-studio/color-token

    Color token

commit 5b7b343f62
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 18 17:25:55 2024 +0200

    Cleanup

commit f5b62a5fc1
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 18 17:23:42 2024 +0200

    Style the form to fit the color ramp exactly

commit 8804d1432e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 18 17:15:45 2024 +0200

    Update the input field value when chosing color from color ramp

commit 6084c49582
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 18 17:03:18 2024 +0200

    Share color picker effect to set hue slider css variables

commit 2a3fc9e7bd
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 18 17:03:08 2024 +0200

    Pointer

commit 061cd08e66
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 18 11:43:35 2024 +0200

    Remove unused functions

commit 48a8b1bc55
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 18 11:30:32 2024 +0200

    Fix color updating

commit c007170603
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 18 11:28:31 2024 +0200

    Cleanup

commit b68e7af844
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 18 11:27:30 2024 +0200

    Use tinycolor to convert hex color

commit e0e7b98ed7
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 18 11:21:43 2024 +0200

    Docstring

commit 3bd2278dec
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 18 11:15:11 2024 +0200

    Use penpot logging system instead of custom debug flag

commit 77141887a8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 18 10:57:05 2024 +0200

    Pass in value with error

commit 3a21643158
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 18 10:38:16 2024 +0200

    Add shared error handling

commit 308fff05c3
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 18 10:19:59 2024 +0200

    Dont show name error when editing new token and not touching name field

commit 49ff0df7f6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Sep 17 16:35:08 2024 +0200

    Add tinycolor bindings

commit 3c4e0e2447
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 16 16:57:01 2024 +0200

    Add color ramp

commit ac51309f81
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Sep 16 15:59:04 2024 +0200

    Add placeholder color swatch

commit 2b886c54e0
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 29 12:52:18 2024 +0200

    Color ramp wip

commit 0b29767c95
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 30 11:51:21 2024 +0200

    Add color token

commit 1a9d703bb1
Merge: 0697e6988 f0a9444ab
Author: Andrés Moya <hirunatan@hammo.org>
Date:   Wed Sep 18 11:00:06 2024 +0200

    Merge pull request #284 from tokens-studio/refactor-theme-groups

    tokens-lib refactor: Get collection of theme groups

commit f0a9444ab6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Sep 17 10:48:23 2024 +0200

    tokens-lib refactor: Get collection of theme groups

commit 0697e69888
Merge: 1d7536687 0e15da5ed
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Tue Sep 17 09:44:00 2024 +0200

    Merge pull request #283 from tokens-studio/refactor-types-2

    Refactor types 2

commit 0e15da5ede
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Tue Sep 17 00:51:33 2024 +0200

    🔧 Make tokens again a flat ordered map

commit 5f703d6a79
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Mon Sep 16 17:47:05 2024 +0200

    🔧 Make themes a two-level only tree

commit 3a4ec32f8e
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Sep 12 10:04:03 2024 +0200

    🔧 add groups handling v2

commit e2ff6f7ba6
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Sep 5 17:51:02 2024 +0200

    🔧 Add first draft of token set groups attributes

commit fa8f8ac54b
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Thu Sep 5 16:49:29 2024 +0200

    🔧 add groups handling

commit 316d333c96
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Wed Sep 4 02:00:31 2024 +0200

    🔧 Add token themes in tokens-lib custom type

commit 1d7536687a
Merge: 6cba685e8 27073e22e
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Thu Sep 12 17:27:39 2024 +0200

    Merge pull request #282 from tokens-studio/enable-ff

    Enable sets/themes for all

commit 6cba685e87
Merge: 6f37a43be a1e4d6b3b
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Thu Sep 12 13:17:26 2024 +0200

    Merge pull request #281 from tokens-studio/token-refactor-common

    Fixes missing name attribute

commit 27073e22e3
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 12 13:16:35 2024 +0200

    Enable sets/themes for all

commit a1e4d6b3b3
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 12 10:36:05 2024 +0200

    Fix context menu missing name param

commit 309476fdfd
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Sep 12 10:23:45 2024 +0200

    Cleanup

commit 6f37a43be1
Merge: 361b02a76 0dca04733
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Sep 11 15:35:45 2024 +0200

    Merge pull request #262 from tokens-studio/refactor-types-1

    🔧 Add tokens-lib custom type

commit 361b02a76a
Merge: 1568a7afb 0cd7d4dd7
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Sep 11 15:11:22 2024 +0200

    Merge pull request #279 from tokens-studio/fix-inspect-tokens-tab

    Disable tokens tab in inspect mode

commit 1568a7afb5
Merge: f5ab6e65f 20e2c4edb
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Sep 11 15:11:02 2024 +0200

    Merge pull request #278 from tokens-studio/fix-set-token-name

    Allow giving name of tokens in other sets

commit 0cd7d4dd7a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 11 11:09:06 2024 +0200

    Disable tokens tab in inspect mode

commit f5ab6e65fc
Merge: 012e79603 56374171d
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Sep 11 11:02:55 2024 +0200

    Merge pull request #277 from tokens-studio/group-select-themes

    Themes & Sets: Add groups select to modal

commit 20e2c4edb1
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Sep 11 10:17:46 2024 +0200

    Allow giving name of tokens in other sets

commit 012e79603f
Merge: 27409f43d 9876c2e4f
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Sep 11 09:09:51 2024 +0200

    Merge pull request #276 from tokens-studio/token-sets-context-menu

    Token Sets & Themes: Sets context menu

commit 56374171d6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Sep 10 15:44:11 2024 +0200

    Fix theme groups not showing up in create state

commit 281b801112
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Sep 10 15:42:44 2024 +0200

    Show dropdown only when groups exist

commit 21f42021d8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Sep 10 15:37:01 2024 +0200

    Add groups select

commit df16d0c222
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Sep 10 15:16:52 2024 +0200

    Add abstract dropdown component

commit d54c5476d8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Sep 10 14:33:45 2024 +0200

    Add dropdown button

commit 9876c2e4fc
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Sep 10 12:51:07 2024 +0200

    Add context menu

commit 0dca047339
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Tue Sep 3 14:20:55 2024 +0200

    fix token update

commit d147d844fb
Author: Andrés Moya <andres.moya@kaleidos.net>
Date:   Fri Aug 16 12:11:18 2024 +0200

    🔧 Add tokens-lib custom type

commit 27409f43d2
Merge: 734acd27b ae5aaf833
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Fri Aug 30 11:15:31 2024 +0200

    Merge pull request #264 from tokens-studio/token-sets-themes-ui

    Token sets themes UI

commit ae5aaf8332
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 29 16:02:22 2024 +0200

    Cleanup

commit 54b754c38c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 29 16:01:31 2024 +0200

    Cleanup

commit ca611c6668
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 29 15:59:58 2024 +0200

    Cleanup

commit 6bae2efe9d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 29 14:26:11 2024 +0200

    Validate against names in all token sets

commit 734acd27b9
Merge: 93ce6b6eb 1ed6d92d8
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Tue Aug 27 17:09:47 2024 +0200

    Merge pull request #263 from tokens-studio/token-sets-themes

    Token sets themes

commit e363b58774
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 27 15:22:02 2024 +0200

    HACK: Fix empty sets showing up in listing

commit b24b178e29
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 27 15:00:15 2024 +0200

    Make resizable

commit d6823e8583
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 27 14:49:11 2024 +0200

    Always switch to temporary theme when toggling sets in sidebar

commit 3bb99e8f7c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 27 14:37:24 2024 +0200

    Remove default theme name, disable empty themen name submit

commit 3b7432a859
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 27 14:32:26 2024 +0200

    Use non editable context in form

commit 4dd3367bdd
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 27 14:26:06 2024 +0200

    Allow creating token sets

commit d4910ce2fc
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 27 14:25:52 2024 +0200

    Auto select new token sets

commit 4f96550bca
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 27 14:13:29 2024 +0200

    Use context

commit db22beb857
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 27 10:20:38 2024 +0200

    Fix iterating over unordered sets

commit 965016b63f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 27 10:04:12 2024 +0200

    Allow token renaming

commit 293250a30d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 16:35:49 2024 +0200

    Rename

commit 1d599cbf7d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 16:33:07 2024 +0200

    Always render ungroupd themes first

commit 0d2d1a8b8a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 16:23:23 2024 +0200

    Link up actions

commit cb46e11162
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 16:14:27 2024 +0200

    Add edit button

commit c807baaf7a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 15:54:44 2024 +0200

    Add custom select with grouped options

commit f25db592a0
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 15:07:58 2024 +0200

    Clone over select

commit 2e23543c11
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 15:04:45 2024 +0200

    Show create text when no theme is available

commit 4060b6d40f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 15:02:38 2024 +0200

    Style empty state, jump to create theme dialog when no themes exist

commit 7cd9c60fb6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 14:36:00 2024 +0200

    Disable user-selection

commit 5939db771e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 14:34:41 2024 +0200

    Link up delete button & fix create theme ui jumping

commit 1405720e0b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 14:32:21 2024 +0200

    Cleanup

commit b5e08c5b8b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 14:32:01 2024 +0200

    Add theme creation form

commit f37cf8be5e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 14:31:34 2024 +0200

    Add defaults for theme form

commit 84b5be5547
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 14:17:37 2024 +0200

    Fix button being chosen as main button for form submit

commit 7aff690e7b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 14:17:30 2024 +0200

    Wire up theme updating

commit 70b570f112
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 13:49:57 2024 +0200

    Show only on create

commit 36f92aa241
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 13:47:44 2024 +0200

    Allow group and name updating

commit a0dd3f63bf
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 13:41:02 2024 +0200

    Allow controlling state of theme editing

commit fe702988f9
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 26 13:40:49 2024 +0200

    Cleanup

commit 12e915dec8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 17:48:43 2024 +0200

    Style edit button

commit a52e20f49d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 17:22:05 2024 +0200

    Cleanup

commit 967fab416a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 17:20:20 2024 +0200

    Add back button

commit 3ce2531b42
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 17:11:38 2024 +0200

    Design

commit db1250a315
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 17:07:47 2024 +0200

    Add footer buttons

commit 6f7b69c7ee
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 16:58:49 2024 +0200

    Allow toggling individual set themes

commit 7e7203eb7c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 16:44:11 2024 +0200

    Allow passing custom functions

commit 8a20e3a698
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 16:34:33 2024 +0200

    Allow tokens sets component to be controlled

commit 1c0233098d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 16:28:06 2024 +0200

    Add sets list for theme

commit c7fa0f2cf8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 16:27:42 2024 +0200

    Cleanup

commit cac421f862
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 15:41:32 2024 +0200

    Design

commit 7970440ffc
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 15:30:17 2024 +0200

    Toggle theme via ui

commit cc7de14539
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 15:08:53 2024 +0200

    Add basic toggle switch

commit d23c5cbbbe
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 14:53:22 2024 +0200

    Move the temporary ui to modal

commit b62722bdbb
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 14:11:13 2024 +0200

    Add themes modal dialog

commit 1ed6d92d87
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 13:36:46 2024 +0200

    Remove margin

commit b48bfde5c8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 11:43:19 2024 +0200

    Automatically open when creating set

commit 1cc1d94a27
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 11:42:14 2024 +0200

    Automatically open when adding token

commit 40846b87c2
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 11:39:13 2024 +0200

    Add tokens header

commit acc3606cbb
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 11:36:54 2024 +0200

    Align Eye

commit 97f119f3da
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 11:32:54 2024 +0200

    Add delete set action button

commit 88c899c5c6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 10:17:52 2024 +0200

    Wrap themes ui in header

commit a9a5f69c93
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 10:15:37 2024 +0200

    Cleanup

commit bac16aadd8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 23 10:14:45 2024 +0200

    Migrate to official UI

commit b1cf641587
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 22 14:56:41 2024 +0200

    Fix cancelling set prompt breaking user state

commit e4f01d1d5e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 22 11:59:06 2024 +0200

    Fix logic

commit 157cc5a994
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 22 11:21:53 2024 +0200

    Automatically show themes and sets on dev and PR previews

commit 37a3fbcec2
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 22 11:02:01 2024 +0200

    Fix not possible naming token to same token name in other set

commit 8343a9f3b5
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 22 10:59:40 2024 +0200

    Fix description

commit 4b47fa5d7a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 22 10:58:31 2024 +0200

    Fix names clash

commit 7a2a521075
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 22 10:54:41 2024 +0200

    Allow passing config

commit 6c802bc132
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 22 09:37:47 2024 +0200

    Rename

commit c130dc39c3
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 21 19:11:53 2024 +0200

    Resolve tokens from other active sets

commit 8264da3a2a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 21 15:36:40 2024 +0200

    Use active sets tokens for form

commit 6c6be35292
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 21 15:12:13 2024 +0200

    Fix token updates not taking order

commit 011fc734f6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 21 14:42:39 2024 +0200

    Make passing of names-map explicit

commit 7c3716a709
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 21 11:18:52 2024 +0200

    Move temporary ui behind flag

commit 98207b02bf
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 21 11:18:47 2024 +0200

    Remove log

commit 0df89cf60d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 21 11:17:12 2024 +0200

    Use storage to toggle themes ui

commit 2df577cba2
Merge: 4e81a94d0 93ce6b6eb
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 21 11:04:00 2024 +0200

    Merge remote-tracking branch 'origin/token-studio-develop' into token-sets-themes

commit 4e81a94d0f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 21 11:03:39 2024 +0200

    Remove unused functions

commit 4f02d8b47d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 21 11:01:23 2024 +0200

    Fix multi run test

commit 74801e72d3
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 21 10:54:22 2024 +0200

    Fix simple token creation / scaffolding test

commit cfefbadb64
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 21 10:29:14 2024 +0200

    Fix id

commit 93ce6b6eb3
Merge: 9dd681c15 f9704fe7a
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 20 22:14:51 2024 +0530

    Merge pull request #256 from tokens-studio/token-sets-ui

    Token sets UI

commit f9704fe7aa
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 20 18:40:02 2024 +0200

    Fix padding without sets

commit 2487f34b72
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 20 21:34:07 2024 +0530

    formatting

commit b3e939d12a
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 20 21:30:59 2024 +0530

    add a hardcoded flag to display/hide token sets section

commit 247e3a1559
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 20 21:25:22 2024 +0530

    fix some styling issues

commit 5b1eaf4b8f
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 20 20:55:02 2024 +0530

    remove unused prop and some optimizations

commit 463ab3c866
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 20 20:41:25 2024 +0530

    change current-set to selected-set

commit 5358cd1c52
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 20 16:14:32 2024 +0200

    Fix tests crashing

commit 3a2f4df387
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 20 17:08:31 2024 +0530

    add source code comment

commit 1a3184d327
Merge: 187ab3166 9dd681c15
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 20 17:02:00 2024 +0530

    Merge branch 'token-studio-develop' into token-sets-ui

commit 187ab31667
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 20 17:00:19 2024 +0530

    format

commit feb5cec84b
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 20 16:57:53 2024 +0530

    ad sets-section wrapper

commit f052b75dac
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 20 16:38:18 2024 +0530

    formatting

commit e62323ac0a
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 20 16:35:33 2024 +0530

    add variable

commit d4c88d4441
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 20 16:32:36 2024 +0530

    remove folder open icon

commit 4bad9fa6f8
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 20 16:30:51 2024 +0530

    add chevron icon

commit e4f5b6005e
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 20 16:30:38 2024 +0530

    move sets-sidebar component to sidebar tokens

commit 98b5791e27
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 20 15:37:37 2024 +0530

    remove set-item-set-selected and remove class

commit 6049c32839
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 19 15:46:42 2024 +0200

    Compute tokens from each activated set

commit 8e02dced2f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 19 10:49:46 2024 +0200

    Extract to function

commit 97436531d0
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 19 10:46:48 2024 +0200

    Showing only active sets

commit 8660c372dc
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 19 09:41:23 2024 +0200

    Add theme deletion

commit 3413d4b42f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 19 09:09:09 2024 +0200

    Add tests

commit 93a23c66ec
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 19 09:01:08 2024 +0200

    Docstrings

commit e8bbb75008
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 19 08:49:03 2024 +0200

    Implement group theme switching

commit 9a745ea8bc
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 19 08:05:19 2024 +0200

    Add active theme toggling

commit f0e0e9334e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 19 07:29:20 2024 +0200

    Cleanup

commit ae1c30ad56
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 14:22:56 2024 +0200

    Allow providing set name

commit e502def755
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 14:21:25 2024 +0200

    Show themes

commit 62712ef8da
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 13:59:18 2024 +0200

    Cleanup styles

commit 6a7ced3204
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 13:36:54 2024 +0200

    Add token set visibility toggle

commit 636c3b822c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 12:22:57 2024 +0200

    Example styling

commit c2a045ad5b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 11:44:41 2024 +0200

    Add selected sets UI

commit 0f95ddef8f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 11:32:36 2024 +0200

    Add new sets to active theme

commit 3e41e7d234
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 11:32:20 2024 +0200

    Fix workspace-data key missing

commit 879ef1123f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 10:32:59 2024 +0200

    Create temporary theme when creating set

commit 9329513949
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 08:04:41 2024 +0200

    Add token set deletion

commit ae39586d8c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 07:10:15 2024 +0200

    Add temporary theme

commit 4c1bc81b19
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 07:10:08 2024 +0200

    Add name

commit 7406af2e79
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 07:09:59 2024 +0200

    Add theme creation

commit 8482a128de
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 07:09:17 2024 +0200

    Fix expeted id instead of set

commit 3695ba3438
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 07:09:07 2024 +0200

    Add token theme data scaffold

commit 35759792a3
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 06:24:15 2024 +0200

    Render grouped themes ui

commit f0aaa29d66
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 06:24:03 2024 +0200

    Add type functions

commit cefa498f4d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 16 06:23:53 2024 +0200

    Add group and selected properties to theme

commit f3d4346c0d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 15 18:52:42 2024 +0200

    Add create token-set event

commit 1f0c1dbbe6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 15 18:52:31 2024 +0200

    Update shapes on token set switch

commit 587a2936e6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 15 18:26:37 2024 +0200

    Add simple UI

commit 73078d802a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 15 18:26:20 2024 +0200

    Add refs

commit eaf568f154
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 15 14:26:22 2024 +0200

    Get tokens from current or first token set

commit ead8a983ab
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 15 14:26:12 2024 +0200

    Move to token-set namespace

commit 9dd681c156
Merge: b2962b560 43e064a76
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Thu Aug 15 12:28:19 2024 +0200

    Merge pull request #254 from tokens-studio/fix-token-editing

    Fix token editing

commit 43e064a768
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 15 10:12:45 2024 +0200

    Update doc string

commit 4bd3b14adb
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 15 10:07:12 2024 +0200

    Add unit to tests

commit e4e488a9ee
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 15 10:03:25 2024 +0200

    Adds style-dictionary test

commit c6d13af071
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 15 09:21:49 2024 +0200

    Fix validation not working while editing [*]

    [*] We've passed the resolved tokens to the validation,
    but the validation needs the original tokens set.

commit 6be2ca8491
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 15 09:21:18 2024 +0200

    Fix resolved value not showing up when editing token

commit b2962b5603
Merge: c7d4db900 ecf4fb8bd
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Aug 14 19:41:36 2024 +0200

    Merge pull request #251 from tokens-studio/fix-spacing-token

    Fixes design tab spacing token

commit ecf4fb8bd0
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 14 16:52:46 2024 +0200

    Fix popover position

commit 1ba2acea7c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 14 16:39:43 2024 +0200

    Fix crash for applying spacing layout token

commit cf9ef2ae60
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 14 15:33:24 2024 +0200

    Remove unused function

commit 74c6228c25
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Aug 14 17:15:30 2024 +0530

    add dom/stop-propagation

commit 188e7d220a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 14 09:25:17 2024 +0200

    Fix name

commit c7d4db900e
Merge: d8621974c 726b0a267
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Aug 14 09:16:23 2024 +0200

    Merge pull request #245 from tokens-studio/use-token-name-ref

    Use token name ref

commit 1135b7e2db
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 13 18:30:00 2024 +0200

    Update token sets

commit 71439637aa
Merge: 21c42626a d8621974c
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 13 21:56:06 2024 +0530

    Merge branch 'token-studio-develop' into token-sets-ui

commit 21c42626ae
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 13 21:51:31 2024 +0530

    remove comment

commit 007cf0fb8a
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 13 21:50:55 2024 +0530

    remove comments and unused import

commit 46c73fe51f
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 13 21:44:08 2024 +0530

    formatting

commit 66170eb889
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 13 21:42:08 2024 +0530

    make current-set-id the key on div element

commit 68c0d93f91
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 13 21:12:38 2024 +0530

    change sets list div to ul

commit 7addba71fb
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 13 21:07:52 2024 +0530

    remove debug statements

commit 950257a212
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 13 20:42:42 2024 +0530

    change eye icon size

commit 9aadb8c72f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 13 16:18:24 2024 +0200

    Add test

commit fa230a4224
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 13 19:31:34 2024 +0530

    add folder-open icon and use for open groups

commit 2f2ed0a42f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 13 15:45:38 2024 +0200

    Cleanup

commit a4865522cc
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 13 15:25:36 2024 +0200

    Select token set on create

commit ba31914ca4
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 13 14:41:58 2024 +0200

    Fix typo

commit c275923621
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 13 14:41:49 2024 +0200

    Fix indent

commit ec01ce7550
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 13 14:41:18 2024 +0200

    Ensure vector

commit bcd4b6d9ec
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 13 13:31:43 2024 +0200

    Fix schema errors

commit 547358d579
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 13 11:57:06 2024 +0200

    Add token set changes

commit bcf61f34fe
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 13 14:11:30 2024 +0530

    add current set and selected set

commit ad9a4e7244
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Aug 13 01:17:18 2024 +0530

    Add full lenght highlight

commit 9ff3a135a8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 12 10:50:47 2024 +0200

    Cleanup

commit 6c3415b92c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 6 14:56:11 2024 +0200

    Differentiate groups and sets

commit dbddd7fb68
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 6 14:26:30 2024 +0200

    Add token themes & sets schema

commit 726b0a2671
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 9 18:04:33 2024 +0200

    Fix :applied-tokens not being updated

commit 51a27c07ec
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 9 18:03:47 2024 +0200

    Use token identifier

commit 9ff4567955
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 9 18:03:20 2024 +0200

    Remove unused function

commit 5552295d61
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Aug 9 17:37:36 2024 +0200

    Add docstring

commit b93b0b209a
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Thu Aug 8 21:40:35 2024 +0530

    Add hover styles and collapse capabilities

commit bb3a22a219
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Thu Aug 8 18:46:58 2024 +0530

    add hide/show icon

commit e992bf0aa6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 8 15:13:04 2024 +0200

    Fix sizing test

commit 8b8b909fb7
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 8 15:12:28 2024 +0200

    Parse values with unit

commit 2d67a92d64
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 8 11:39:58 2024 +0200

    Fix getter

commit a073520d0e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 8 11:22:40 2024 +0200

    Restore tests to work with new identifier

commit e27e2d357c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 8 11:09:12 2024 +0200

    Add simple applying test

commit d98e982664
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 8 11:07:32 2024 +0200

    Cleanup

commit 31674db11d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 8 11:07:24 2024 +0200

    Skip parsing on numbers

commit 0684d893e0
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 8 11:06:49 2024 +0200

    Return resolved & parsed token names map

commit 37f23855e8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 8 09:52:51 2024 +0200

    Fix re-find only accepting string values throw

commit 2e8e33d701
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 8 09:40:26 2024 +0200

    Add token value parsing function

commit 980238e27b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 8 09:22:32 2024 +0200

    Move find-token-references to token namespace

commit b28a45c2d8
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Thu Aug 8 00:14:36 2024 +0530

    add more changes working tree display

commit fcea989586
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Aug 7 22:39:41 2024 +0530

    add more changes

commit 1434ddb5d5
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Aug 7 20:58:21 2024 +0530

    change fotn color

commit 252797183c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 7 15:14:32 2024 +0200

    Use :name as the token identifier [*]

    [*] Using uuid as the token identiefier for :applied-tokens is not
    correct as we want to merge all sets together by their name, to get the
    final values.

commit d8621974c2
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 7 17:14:05 2024 +0200

    Update with upstream

commit 192f847d50
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 7 17:13:39 2024 +0200

    Ignore rxjs errors

commit c9673ca828
Merge: d7ee804ca 22f3dba84
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 7 16:21:08 2024 +0200

    Merge remote-tracking branch 'penpot/develop' into token-studio-develop

commit d7ee804ca3
Merge: eb9b4be6e edb89bccc
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Aug 7 12:53:02 2024 +0200

    Merge pull request #243 from tokens-studio/fix-tests

    Temporary fix for tests

commit edb89bcccb
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Aug 7 12:38:24 2024 +0200

    Temporary fix for tests [*]

    [*] Async tests got broken with the latest upstream.

    This will still print a bunch of warnings from rxjs but the tests are
    still running.

commit eb9b4be6ea
Merge: e02611da2 4ae467987
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Aug 7 08:26:08 2024 +0200

    Merge pull request #241 from tokens-studio/sync-master

    Sync penpot master

commit 02a19a6b33
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Aug 7 00:57:13 2024 +0530

    Next commit

commit 22e497398f
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Aug 7 00:08:12 2024 +0530

    Initial commit

commit 4ae467987a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 6 11:25:31 2024 +0200

    Update changes

commit 3bd0318999
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 6 11:16:38 2024 +0200

    Update lock file

commit dd8780db69
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 6 11:16:30 2024 +0200

    Use register

commit 5fbbdd36fd
Merge: e02611da2 36ac81bb4
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Aug 6 11:06:51 2024 +0200

    Merge remote-tracking branch 'penpot/develop' into token-studio-develop

commit e02611da20
Merge: 57c9d6d3a f7e770192
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Tue Aug 6 10:31:13 2024 +0200

    Merge pull request #238 from tokens-studio/213-opacity-fixes-03

    Fixes Opacity

commit f7e7701923
Merge: 6cb3afe87 57c9d6d3a
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Tue Aug 6 08:23:39 2024 +0200

    Merge branch 'token-studio-develop' into 213-opacity-fixes-03

commit 57c9d6d3a9
Merge: 3c7261e75 fe9bb69c7
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Tue Aug 6 06:38:31 2024 +0200

    Merge pull request #239 from tokens-studio/236-stroke-width-fix

    Fix stroke width applying crash

commit fe9bb69c75
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 5 11:45:32 2024 +0200

    Update CHANGELOG

commit c9d1fe44e9
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 5 11:43:46 2024 +0200

    Add stroke-width test

commit 2a97749d23
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 5 11:42:36 2024 +0200

    Add shape property passing

commit 3826afb76b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 5 11:18:19 2024 +0200

    Fix applying stroke

commit 6cb3afe87f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 5 11:05:49 2024 +0200

    Add opacity tests

commit 62a9dd6582
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 5 10:54:46 2024 +0200

    Cleanup

commit ad468582b3
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 5 10:53:59 2024 +0200

    Add changelog

commit c29024bd62
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Aug 5 10:51:35 2024 +0200

    Dont update values outside of 0..1 (e.g.: 20)

commit 1f88c8288a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 29 11:08:15 2024 +0200

    Parse double to preserve opacity

commit 3c7261e75b
Merge: ab72bdf09 72c5c3ec9
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Fri Aug 2 08:56:30 2024 +0200

    Merge pull request #231 from tokens-studio/update-token-shapes

    Update token shapes

commit 72c5c3ec9a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 1 15:45:37 2024 +0200

    Cleanup

commit 13163a4571
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 1 15:37:53 2024 +0200

    Clean up debugging code

commit 0c757f05e3
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 1 15:37:39 2024 +0200

    Apply actions directly

commit fc6d64fb5d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 1 15:32:33 2024 +0200

    Fix import

commit 518441e582
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 1 12:12:03 2024 +0200

    Fix spacing token click will add padding

commit fdce370bb6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 1 12:05:15 2024 +0200

    Disable debug

commit 9ebd743635
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 1 11:09:36 2024 +0200

    Testing comment

commit cc6f34f78a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 1 11:07:02 2024 +0200

    Fix trying to update shapes for deleted tokens crash

commit feb438f882
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 1 10:41:45 2024 +0200

    Safety net

commit 68b32448d1
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 1 10:41:03 2024 +0200

    Fix exact match of diff adding nil attrs group and crashing the app

commit ac27f95091
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 1 09:41:28 2024 +0200

    Fix undo deleting the token on update

commit 68415b6668
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 1 09:14:21 2024 +0200

    Update tokens after shape update

commit e52623c728
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Aug 1 09:13:58 2024 +0200

    Update shapes in one undo step, resolve tokens from state not cache atom

commit a1fefe66ae
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 31 17:26:50 2024 +0200

    Working updates!

commit d22234fe2a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 31 16:51:55 2024 +0200

    Cleanup

commit 0166c38486
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 31 16:43:03 2024 +0200

    Split logical attribute groups

commit 69d9359237
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 31 14:36:09 2024 +0200

    Collecting update functions by attributes

commit 6225f59ea0
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 31 14:04:00 2024 +0200

    Cleanup

commit ab72bdf09c
Merge: dde8ab068 1d4b41750
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Tue Jul 30 08:02:50 2024 +0200

    Merge pull request #224 from tokens-studio/ux-context-menu

    Ux context menu

commit 1d4b417501
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jul 30 06:57:21 2024 +0200

    Fix missing function shorthand

commit f69db7ce9e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 29 18:43:47 2024 +0200

    Cleanup

commit 5e33eab7d0
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 29 18:31:11 2024 +0200

    Fix position updating

commit 9340ba9cc0
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 29 18:30:59 2024 +0200

    Allow passing custom on-update-shape function

commit ededd23849
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 29 17:48:30 2024 +0200

    Trigger Build

commit b423a9c782
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 29 17:43:32 2024 +0200

    Always update all layout-gap on token pill click

commit 70904dbc64
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 29 16:38:40 2024 +0200

    Trigger Build

commit 9ba4776c8e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 29 16:34:26 2024 +0200

    Trigger Build

commit c92decedeb
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 29 16:21:42 2024 +0200

    Trigger Build

commit a893a66ec8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 29 16:07:33 2024 +0200

    Fix crash on applying col/row gap

commit 3f14af9e03
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 29 16:00:46 2024 +0200

    Fix highlighting for dimensions token

commit 596d662ca8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 29 15:24:17 2024 +0200

    Cleanup

commit 1eea55ad43
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 29 15:09:35 2024 +0200

    Test

commit 55ed79d968
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 29 14:22:37 2024 +0200

    Move to sidebar, should not be rendered in root

commit 6fc370bb30
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 29 14:22:07 2024 +0200

    Fix token position wrong, component gets rendered on user mount

commit 1633f8035e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 29 13:51:17 2024 +0200

    Indent

commit 9bec2509c9
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 25 10:11:36 2024 +0200

    Better context-menu position, remove hardcoded value

commit 1e481412e8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 25 09:12:23 2024 +0200

    Remove old token applying events

commit cc41a42dfa
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 25 09:11:03 2024 +0200

    Update CHANGELOG

commit a3a4883875
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 25 08:58:26 2024 +0200

    Cleanup

commit f094654837
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 25 08:56:02 2024 +0200

    Fix only shape ids being applied

commit f93a5ab109
Merge: 957ad0dae dde8ab068
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 25 08:42:17 2024 +0200

    Merge remote-tracking branch 'origin/token-studio-develop' into ux-context-menu

commit 957ad0dae3
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 16:21:48 2024 +0200

    Always highlight if one of the attributes is active, but only apply minimal set on pill click

commit b9b4abf1e0
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 16:10:41 2024 +0200

    Fix edit modal not opening

commit cb942996a9
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 16:05:43 2024 +0200

    Fix render-loop after token was deleted

commit 37bef1e2ea
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 16:05:29 2024 +0200

    Cleanup

commit b392c3ba65
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 15:46:14 2024 +0200

    Move token change events to changes ns

commit 56e72b5247
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 15:29:40 2024 +0200

    Refactor - Separate core into namespaces: changes, token_types

commit 03370c267d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 15:02:10 2024 +0200

    Cleanup

commit d5a03e154b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 14:57:33 2024 +0200

    Cleanup

commit 386a4c94ba
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 14:51:59 2024 +0200

    Disallow clicking pill when nothing is selected

commit 5e911d814c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 14:49:39 2024 +0200

    Show attribute actions only when something is selected

commit 310033fd75
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 14:20:08 2024 +0200

    Inline attributes

commit 46250003d3
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 14:17:43 2024 +0200

    Reuse all-or-sepearate-actions for border-radius

commit 871402bd84
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 14:07:42 2024 +0200

    Fix overriding of existing radius-4

commit 38499e2f1f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 14:07:29 2024 +0200

    Fix properties

commit 893e533afe
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 14:01:56 2024 +0200

    Cleanup

commit e6889fc92e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 13:41:32 2024 +0200

    Fix typo

commit c11c1e0c03
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 13:41:08 2024 +0200

    Use all-or-sepearate-actions for gap

commit 335808bf03
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 13:41:00 2024 +0200

    Remove unneeded actions

commit cbd5d42069
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 13:36:38 2024 +0200

    Simplify

commit 113fc9891b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 13:29:26 2024 +0200

    Simplify component & css

commit fbd2ab833d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 10:59:26 2024 +0200

    Inline separator

commit 08cc777096
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 10:58:34 2024 +0200

    Restructure

commit 81c83f9dd4
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 10:55:22 2024 +0200

    Recurse tree instead of repetition

commit f20313e7f8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 09:43:28 2024 +0200

    Add dimensions sub-menu

commit 1776591fec
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 09:42:09 2024 +0200

    Fix react index warning

commit aa75f30858
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 24 09:19:31 2024 +0200

    Allow type overriding via prop

commit 62f7f8a74f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jul 23 16:35:07 2024 +0200

    Add sizing

commit 65dbafafb8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jul 23 16:02:14 2024 +0200

    Add width/height applying

commit 214a323682
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jul 23 16:01:56 2024 +0200

    Add abstract method for a all or seperate actions

commit da3f2f820c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jul 23 15:28:13 2024 +0200

    Add generic context menu actions

commit cabc3d3f36
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jul 23 14:55:14 2024 +0200

    Simplify passed prop date

commit bad9056d54
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jul 23 11:35:07 2024 +0200

    Update gap

commit 4cf8b2c143
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jul 23 10:54:23 2024 +0200

    Extract gap as extra function

commit 39822a3b31
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jul 23 10:49:19 2024 +0200

    Add single padding

commit 0e858d880d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jul 23 10:37:51 2024 +0200

    Add horizontal/vertical padding toggle

commit dde8ab0680
Merge: 64da0983f cb051d2e5
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Jul 23 13:02:21 2024 +0530

    Merge pull request #223 from tokens-studio/fic-spacing-crash-on-non-layout

    Fix app crashing when spacing padding is applied to a shape without a…

commit 2411eeb644
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 22 18:23:12 2024 +0200

    Add separate gap

commit c00023319a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 22 18:13:37 2024 +0200

    Extract data

commit fd2f5537cf
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 22 18:07:16 2024 +0200

    Extract common logic

commit 2836ff2693
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 22 17:07:42 2024 +0200

    Fix actions

commit f731a30f81
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 22 13:54:36 2024 +0200

    Allow removing other attributes with apply-token function

commit 91033d6dea
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 22 11:30:27 2024 +0200

    Fix indent

commit 64da0983f3
Merge: 2f17b79be 337e1c9fa
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Fri Jul 19 00:30:15 2024 +0530

    Merge pull request #222 from tokens-studio/fix-stroke-width-crash

    Fix application crashing when stroke width is applied to a shape with…

commit cb051d2e5b
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Fri Jul 19 00:28:00 2024 +0530

    Fix app crashing when spacing padding is applied to a shape without a layout

commit 337e1c9fa0
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Thu Jul 18 23:13:51 2024 +0530

    Fix application crashing when stroke width is applied to a shape without a stroke

commit 359ec592fb
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 8 15:40:33 2024 +0200

    Single attribute context menu

commit ae2da534e9
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 8 15:40:18 2024 +0200

    Move radius updating to core

commit 9bf763efb3
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 8 15:19:48 2024 +0200

    Add all action

commit 77fe4d556f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 8 15:10:51 2024 +0200

    Convert border-radius to new UX

commit 7b2d11019c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 8 15:10:01 2024 +0200

    Only show atrribute actions when shapes are selected

commit bf994fcd56
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 8 14:40:57 2024 +0200

    Rename

commit 3ad009b515
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 8 14:40:35 2024 +0200

    Fix lint

commit 82b44e6569
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 8 14:40:07 2024 +0200

    Inline concat

commit da0389e304
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 8 14:38:19 2024 +0200

    Improved logic to run once for all shapes

commit 90618ec89a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 8 11:41:25 2024 +0200

    Add separator between default actions and attribute actions

commit 2f17b79bef
Merge: c2777ed6e bc1f27eac
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Mon Jul 8 13:53:10 2024 +0200

    Merge pull request #216 from tokens-studio/ux-improvements

    UX improvements

commit db7391e4cb
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 8 11:40:05 2024 +0200

    Separate entries

commit e75f9a7c7f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 8 11:06:57 2024 +0200

    Add predicate for all test

commit 62ecee2cf8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 8 10:24:23 2024 +0200

    Add grouping function by type

commit 3c67872d3c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jul 5 14:44:57 2024 +0200

    Add future test cases for providing a toggle all/attributes

commit 5a358e3d0c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jul 5 14:13:14 2024 +0200

    Extract singular token applied predicate

commit bc1f27eac9
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jul 5 09:18:36 2024 +0200

    Trigger Build

commit 0fad53ea6c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jul 5 08:55:01 2024 +0200

    Convert stroke to event

commit c7a46c31b4
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jul 5 08:53:45 2024 +0200

    Convert layout spacing to function

commit c70bb876b2
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jul 5 08:31:38 2024 +0200

    Add changelog

commit 4fc7efd3b7
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 16:03:32 2024 +0200

    Restore performance measuring lines

commit 4a329a6318
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 15:52:58 2024 +0200

    Override http server

commit 828e3a719f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 15:29:42 2024 +0200

    Disable running tests from shadow-cljs directly

commit 785961f7c6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 14:31:50 2024 +0200

    Cleanup

commit 55713275b6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 14:14:06 2024 +0200

    Add test for overriding token

commit f20c08f31b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 14:05:20 2024 +0200

    Specify tests

commit 893e790787
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 11:41:00 2024 +0200

    Only remove given token

commit b73cdd15e0
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 11:28:15 2024 +0200

    Add helper to remove attributes from applied-tokens

commit 658e7ebd0a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 11:15:06 2024 +0200

    Cleanup

commit 694baeee0c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 11:12:49 2024 +0200

    Add sizing test

commit 7abfaef1cb
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 11:08:46 2024 +0200

    Test applying rotation

commit 322c8ef8ec
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 11:06:48 2024 +0200

    Update opacity

commit b43d16008f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 10:51:08 2024 +0200

    Extract to helpers

commit 1f0f35e754
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 10:48:27 2024 +0200

    Remove unused

commit a842cb2d7d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 10:41:57 2024 +0200

    Cleanup

commit 8f806ef1fe
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 10:41:46 2024 +0200

    Test single property updates

commit f3261c9b0f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 10:41:10 2024 +0200

    Fix emit! side-effect

commit 818aa043ca
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 10:40:59 2024 +0200

    Wrap in undo sequence

commit 596480d177
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 10:05:36 2024 +0200

    Add test to verify toggle removes token for applied & unapplied

commit ab62c5b4ef
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 10:00:58 2024 +0200

    Add helper to apply token to shape

commit 581ced0ab8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 10:00:44 2024 +0200

    Abstract into helper

commit e85de19a5e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 09:29:48 2024 +0200

    Add multiple shapes test

commit 8370fd06d4
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 09:29:43 2024 +0200

    Remove cb

commit 3793e98660
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 09:29:16 2024 +0200

    Disable complete log

commit b12e59a8d7
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jul 4 09:13:02 2024 +0200

    Rename event to toggle-token

commit 71976ed7e9
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 3 18:24:09 2024 +0200

    Add helpers for creating test tokens

commit 0730ecef46
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 3 17:15:23 2024 +0200

    Cleanup

commit 219d184e6c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 3 17:06:08 2024 +0200

    Add multiple tokens for tests

commit a7e735bd81
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 3 17:04:47 2024 +0200

    Add helper for asnc stores

commit ed7aad6c4e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 3 16:11:39 2024 +0200

    Async token event tests working

commit e203646085
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 3 11:16:16 2024 +0200

    Naming

commit 1e70a4d714
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 3 11:09:50 2024 +0200

    Implement using rx observables instead of side-effects

commit 97db3c29ca
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jul 3 09:50:54 2024 +0200

    Trying to convert to rx structure

commit 50635ae879
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jul 2 16:06:41 2024 +0200

    Found error in handler logic, need rx streams

commit 3e5126251c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jul 2 15:19:31 2024 +0200

    Add failing logic test

commit 10d92f598c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jul 2 15:03:09 2024 +0200

    Add nodemon watcher

commit c486ea81f4
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jul 2 15:03:04 2024 +0200

    Cleanup

commit f2358b9827
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jul 2 08:22:27 2024 +0200

    Use toggle function

commit c2777ed6e3
Merge: 5c5b37826 224b656d5
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Mon Jul 1 18:43:17 2024 +0200

    Merge pull request #211 from tokens-studio/fix-sub-name-space

    Fix token naming clashes

commit 5cef23267c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 1 14:14:36 2024 +0200

    Move to tokens ns, add test

commit cf07de3bcf
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 1 14:05:06 2024 +0200

    Add tests for token-applied?

commit e38a943ce0
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 1 13:51:20 2024 +0200

    Move token-applied? to token ns

commit 224b656d57
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 1 10:40:38 2024 +0200

    Add CHANGELOG

commit 111be97228
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 1 10:31:16 2024 +0200

    Remove logs

commit ec511cc589
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 1 10:30:03 2024 +0200

    Fix setting token to own path

commit 9d637cbe5e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 1 10:16:52 2024 +0200

    Path selector test predicate is enough

commit 4a85ef3608
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 1 10:16:15 2024 +0200

    Split path/selector for disallowing creating tokens at path segments

commit a98f59469e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jul 1 09:56:45 2024 +0200

    Add - to allowed token-name

commit 174d91a519
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 28 14:39:36 2024 +0200

    Add function to check if a token can be placed under a name path

commit 48a7c52664
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 28 14:17:42 2024 +0200

    Separate errors

commit 2fa152d364
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 28 13:51:32 2024 +0200

    Move to token namespace

commit 504369ec13
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 28 13:43:41 2024 +0200

    Move tokens-name-tree to core, add test

commit ef5f019200
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 28 13:34:54 2024 +0200

    Add helper utility to convert name to path

commit 6da855c741
Merge: 3a500fb8a a4bbef991
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 28 11:24:55 2024 +0200

    Merge branch 'fix-token-reference-issue' into 199-branch-name

commit a4bbef9917
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Fri Jun 28 14:43:49 2024 +0530

    Fix token reference issue when name has .

commit 3a500fb8a7
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 26 19:40:06 2024 +0530

    Update CHANGELOG.md with PR link

commit 00dabaf38c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 26 16:08:21 2024 +0200

    Remove comment form

commit f24c314d63
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 26 16:04:50 2024 +0200

    Update

commit f9530c5a10
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 26 16:01:41 2024 +0200

    Restrict token naming

commit 5c5b378262
Merge: 3a594d239 4aac3eee7
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Fri Jun 28 08:19:57 2024 +0200

    Merge pull request #204 from tokens-studio/fix-deploy

    Fix deploy

commit 4aac3eee7f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 28 08:18:43 2024 +0200

    Test synchronize

commit 325ad66a46
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 28 08:16:26 2024 +0200

    Fix branches not being re-deployed after push

commit 3a594d2393
Merge: bd5a0d2d1 b2a983fd0
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Thu Jun 27 16:31:14 2024 +0200

    Merge pull request #203 from tokens-studio/fix-new-document-token

    Fix creating a token issue on empty document

commit b2a983fd05
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jun 27 16:07:47 2024 +0200

    Fix creating a token issue on empty document

commit bd5a0d2d1b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 26 15:06:22 2024 +0200

    Cleanup

commit 19c6c6d3bf
Merge: 7fa31b143 c9a40ee9b
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 26 17:58:01 2024 +0530

    Merge pull request #195 from tokens-studio/json-export-changelog

    Add Json export Changelog

commit c9a40ee9b3
Merge: 350654f96 7fa31b143
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 26 17:57:49 2024 +0530

    Merge branch 'token-studio-develop' into json-export-changelog

commit 350654f968
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 26 17:51:23 2024 +0530

    Update CHANGELOG.md image

commit 7fa31b143e
Merge: 357a0781b bf1c9e2c1
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 26 17:48:08 2024 +0530

    Merge pull request #198 from tokens-studio/json-dtcg-format

    Make tokens JSON export DTCG compatible

commit bf1c9e2c18
Merge: 96bfce13b 357a0781b
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 26 17:47:54 2024 +0530

    Merge branch 'token-studio-develop' into json-dtcg-format

commit 357a0781bb
Merge: 5ca916f8c 86fd667a1
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Jun 26 14:11:08 2024 +0200

    Merge pull request #194 from tokens-studio/style-dictionar-validation

    Token Insert/Edit Validation + Value Preview

commit 96bfce13be
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 26 17:28:10 2024 +0530

    Update CHANGELOG.md image

commit d6f1e2efc9
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 26 12:36:01 2024 +0530

    Update CHANGELOG

commit 158d5cba31
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 26 12:32:07 2024 +0530

    Make tokens JSON export DTCG compatible

commit aabbe2fd94
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Jun 25 22:34:09 2024 +0530

    Update CHANGELOG

commit 86fd667a11
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 17:06:52 2024 +0200

    Hide template section in preview document

commit 56976e2499
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 17:04:13 2024 +0200

    Update CHANGELOG

commit 9f6c587c95
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 16:46:15 2024 +0200

    Remove duplicate similar errors

commit 9f3e1743a1
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 16:45:01 2024 +0200

    Cleanup

commit e1b683f670
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 16:43:52 2024 +0200

    Cleanup

commit b4d1ef3fc7
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 16:40:48 2024 +0200

    Cleanup

commit b924bbc9c7
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 16:39:43 2024 +0200

    Cleanup

commit 656cc00923
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 16:38:28 2024 +0200

    Add missing deps

commit b89dc759be
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 16:36:21 2024 +0200

    Cleanup

commit 135ecf0e3a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 16:33:07 2024 +0200

    Cleanup

commit af374276e4
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 16:30:57 2024 +0200

    Extract missing reference error check

commit 2c42ca5a4b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 14:24:20 2024 +0200

    Cleanup

commit b905ff7d2c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 14:18:07 2024 +0200

    Validate forms again on submit

commit eb123bf8ef
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 12:15:14 2024 +0200

    Extract token validation

commit 6e9623153c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 11:55:57 2024 +0200

    Remove caching layer for now

commit d0f8e9612a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 11:52:39 2024 +0200

    Validate name before submitting

commit 5df0cf545e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 11:33:18 2024 +0200

    Remove form-touched work-around

commit eac7d9288b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 11:30:53 2024 +0200

    Fix on-submit taking old ref-values when user submits before errors have been validated

commit 05f6cfc4b0
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 11:30:45 2024 +0200

    Remove unneeded state

commit 33131fa943
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 11:15:43 2024 +0200

    Restore token saving

commit ca98747dea
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 11:02:21 2024 +0200

    Add description with schema

commit d2bdc6c624
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 25 10:40:31 2024 +0200

    Fix ref logic

commit 5ca916f8c4
Merge: 1ca3f2970 ee057c498
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Mon Jun 24 20:53:31 2024 +0530

    Merge pull request #191 from tokens-studio/tokens-json-export

    Tokens json export

commit ee057c498e
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Mon Jun 24 20:44:08 2024 +0530

    Simplify tranform tokens function

commit e0be30bb79
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 24 15:58:19 2024 +0200

    Dont show error when unfocusing name input field, but keep form disabled

commit 29e3171bd9
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Mon Jun 24 19:07:53 2024 +0530

    Incorporate styling changes to match Penpot design language

commit c98162d0bf
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 24 15:24:22 2024 +0200

    Move callback function to component

commit fb7b11a139
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Mon Jun 24 18:50:36 2024 +0530

    Remove : from token type in export

commit db26b38e81
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Mon Jun 24 18:47:12 2024 +0530

    Modify transform tokens to nest within token names

commit 28f25da9e8
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 24 14:29:29 2024 +0200

    Move to tests

commit 111900c122
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 24 14:23:28 2024 +0200

    Cleanup

commit 10033ead91
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 24 14:23:03 2024 +0200

    Add specific esm testing environment for tokens

commit 2b3f602312
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Mon Jun 24 17:50:24 2024 +0530

    Move json encode functionalities to tokens namespace

commit ba6a6059c1
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 24 14:07:21 2024 +0200

    Move to custom ns

commit 69d9c8e88f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 24 12:44:29 2024 +0200

    Add esm test

commit ab51b43365
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 24 12:44:05 2024 +0200

    Add type

commit 0a73cbc6f1
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Mon Jun 24 14:18:57 2024 +0530

    Move transform and download functionality to core.cljs

commit bbb09567f6
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Mon Jun 24 14:18:35 2024 +0530

    Remove sample json data

commit 5c42514170
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 24 09:59:22 2024 +0200

    Add style dictionary find-token-reference test

commit 75bdda6b07
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Sun Jun 23 00:16:15 2024 +0530

    add some formatting

commit 62fc2cf652
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Sun Jun 23 00:10:02 2024 +0530

    Add initial working export tokens-json

commit 5f25bd8a7b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 21 19:41:04 2024 +0200

    Add comments

commit 59780a9d4d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 21 19:40:03 2024 +0200

    Add token finding function

commit 598e4d36fc
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 21 17:19:59 2024 +0200

    Disable on value error

commit 910485008f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 21 17:19:13 2024 +0200

    Fix name not updating button

commit 39eb964cb7
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 21 17:18:56 2024 +0200

    Reduce debounce timeout

commit dd62c7fe18
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 21 17:00:56 2024 +0200

    Give new tokens without a name a temporary hardcoded string

commit 1dcdddb2db
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 21 17:00:45 2024 +0200

    Check for self references

commit 941fb041b6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 21 17:00:00 2024 +0200

    Add form styling

commit 8db47b5877
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 21 15:09:46 2024 +0200

    Use initial value

commit 53f01ef46c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 21 15:04:30 2024 +0200

    Use input as cache key

commit 35ee732701
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 21 14:59:08 2024 +0200

    Debounced update of resolved value

commit f00ac72fbe
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 21 10:10:45 2024 +0200

    Revert to use-var

commit e394216f00
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 21 10:02:21 2024 +0200

    Move form out of modal specific code

commit 1ca3f29708
Merge: f000a5145 80ec74f77
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Thu Jun 20 17:03:45 2024 +0200

    Merge pull request #190 from tokens-studio/pr-test

    Test

commit 80ec74f77e
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Thu Jun 20 17:00:38 2024 +0200

    Fix resolver and add an oauth2 proxy

commit ef6074a5af
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Thu Jun 20 15:35:33 2024 +0200

    Test

commit f000a51451
Merge: 15041a8b9 125e14615
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Thu Jun 20 13:29:37 2024 +0200

    Merge pull request #189 from tokens-studio/clean-ci

    Fix proxy cache for config map

commit 125e146150
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Thu Jun 20 13:28:13 2024 +0200

    fix proxy cache for config map

commit 15041a8b9a
Merge: 31344a532 5c93cf9cd
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Thu Jun 20 13:04:29 2024 +0200

    Merge pull request #188 from tokens-studio/clean-ci

    Fix font issues

commit 5c93cf9cd3
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Thu Jun 20 13:03:49 2024 +0200

    Fix font issues
    Fix minio resolution not working
    Fix redis auth on by default

commit 31344a5322
Merge: ea5dbe275 867fd2391
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Thu Jun 20 02:18:31 2024 +0200

    Merge pull request #187 from tokens-studio/clean-ci

    Cleanup

commit 867fd23917
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Thu Jun 20 02:15:35 2024 +0200

    Cleanup

commit ea5dbe275e
Merge: dcf4b7ce6 41bd4c621
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Thu Jun 20 02:06:50 2024 +0200

    Merge pull request #185 from tokens-studio/feat/mailslurper

    Feat/mailslurper

commit 41bd4c621f
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Thu Jun 20 02:06:21 2024 +0200

    Last round of changes

commit 228665f5f2
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Thu Jun 20 00:58:10 2024 +0200

    Pr should be a prefix

commit be6b217ef0
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Thu Jun 20 00:49:33 2024 +0200

    Fix to use the sanitize the backend tag

commit 87b1bc12c2
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Thu Jun 20 00:40:10 2024 +0200

    Change asset storage

commit 4b61e0d80c
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 21:09:18 2024 +0200

    Fix branch name detection

commit f5514b419a
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 21:02:16 2024 +0200

    Use a raw tag

commit 349bdbb776
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 20:52:33 2024 +0200

    Change to use branch names instead of shas

commit 0fd4f814d8
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 20:47:35 2024 +0200

    Remove node affinity

commit 79b49bae27
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 20:31:21 2024 +0200

    Update namespace

commit dcf4b7ce64
Merge: 596c1997b f45789596
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Wed Jun 19 20:16:39 2024 +0200

    Merge pull request #186 from tokens-studio/feat/clean-images

    Add clean images workflow

commit f457895961
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Wed Jun 19 18:15:53 2024 +0000

    Add clean images workflow

commit b40f222d16
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 20:06:35 2024 +0200

    Add quote

commit 99d6df4588
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 19:58:44 2024 +0200

    Build backend as part of PR

commit 034d5ad5ab
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 19:57:19 2024 +0200

    Overhaul penpot chart

commit 885322d479
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 19 17:17:00 2024 +0200

    Reestore fields

commit 0830a26be9
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 19 17:11:28 2024 +0200

    Add error state for invalid name

commit 905ccfdec9
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 16:36:00 2024 +0200

    Capitalize chart

commit e3d73be7c5
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 16:35:46 2024 +0200

    Make sure the uppercase goes through

commit 072baf9c7b
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 16:30:45 2024 +0200

    Test PR again

commit 3e20e15ffd
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 16:22:28 2024 +0200

    Try fix PR chart

commit 6ed788aa5a
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 16:15:20 2024 +0200

    Add patch to enable SMTP

commit 0c45d15fe7
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 19 16:01:40 2024 +0200

    Variadic function doesn't work for hooks

commit 596c1997b8
Merge: f3d5b10e1 21ef1586f
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Wed Jun 19 15:57:35 2024 +0200

    Merge pull request #184 from tokens-studio/feat/mailslurper

    Move config from chart to include the smtp settings

commit 21ef1586f0
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 15:56:03 2024 +0200

    Move config

commit f3d5b10e1f
Merge: 2ce3a180e 3e94d4685
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Wed Jun 19 15:37:02 2024 +0200

    Merge pull request #183 from tokens-studio/feat/mailslurper

    Typo in infra manifest

commit 3e94d46850
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 15:35:15 2024 +0200

    Typo

commit 2ce3a180eb
Merge: caa41146c 569db9d1e
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Wed Jun 19 15:27:59 2024 +0200

    Merge pull request #182 from tokens-studio/feat/mailslurper

    Try cleanup namespace control

commit 569db9d1e6
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 15:25:12 2024 +0200

    Try cleanup namespace control

commit caa41146c4
Merge: a2292eb38 5e32a5bbf
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Wed Jun 19 14:56:29 2024 +0200

    Merge pull request #181 from tokens-studio/feat/mailslurper

    Remove onechart for simple manifests

commit 5e32a5bbfd
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 14:53:21 2024 +0200

    Remove onechart for simple manifests

commit a2292eb387
Merge: 4c236ab42 deb7ba982
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Wed Jun 19 14:43:24 2024 +0200

    Merge pull request #180 from tokens-studio/feat/mailslurper

    Setup mailslurper

commit deb7ba9823
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 14:42:04 2024 +0200

    Setup mailslurper

commit 4c236ab423
Merge: 168a5d57d 386bf1bc2
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Wed Jun 19 14:10:43 2024 +0200

    Merge pull request #179 from tokens-studio/fix/persistence

    Add persistence to penpot deploys

commit 386bf1bc2f
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Wed Jun 19 14:09:35 2024 +0200

    Add persistence to penpot deploys

commit 1596dbe155
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 19 13:54:09 2024 +0200

    Add function to verify already used names

commit deb9cb1120
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 19 11:26:29 2024 +0200

    Remove debugging code

commit f169d49397
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 19 11:18:41 2024 +0200

    Remove double cljs conversion

commit 0a73c3aa95
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 19 11:09:01 2024 +0200

    Validation in modal

commit 168a5d57d4
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 19 10:49:35 2024 +0200

    Add template

commit a4ef2ee8bf
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 19 10:42:42 2024 +0200

    Add changelog

commit 83515250da
Merge: 0d4e3e862 5a8a32ddc
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed Jun 19 10:10:43 2024 +0200

    Merge pull request #168 from tokens-studio/style-dictionary

    References & Expressions in Tokens

commit 5a8a32ddc7
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 19 09:43:36 2024 +0200

    Remove items with missing references

commit 23de79bd04
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 19 09:40:26 2024 +0200

    Remove unneeded function

commit 0d4e3e8629
Merge: 35135635c 0105e4206
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 19 12:58:54 2024 +0530

    Merge pull request #174 from tokens-studio/fix-dimensions-keys-applied

    Fix keys applied when dimensions or sizing token is applied directly

commit 35135635c4
Merge: 2ed3ea6d6 0afddac5d
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 19 12:58:43 2024 +0530

    Merge pull request #175 from tokens-studio/fix-min-max-height-error

    Fix/ min and max height-width application

commit 2ed3ea6d6a
Merge: 1ebd2ee3d 3bbee9532
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 19 12:58:25 2024 +0530

    Merge pull request #177 from tokens-studio/remove-registration-questionnaire

    Remove registration questionnaire

commit 3bbee9532f
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 19 12:38:28 2024 +0530

    Fix error message

commit f99239341f
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 19 12:18:39 2024 +0530

    add message to undo this change in the future

commit f405612a25
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 19 12:16:54 2024 +0530

    Remove Onboarding Questionnaire

commit 0afddac5d1
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Jun 18 23:52:54 2024 +0530

    Fix/ min and max height-width application

commit 0105e42068
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Jun 18 23:21:17 2024 +0530

    Fix keys applied when dimensions or sizing token is applied directly

commit b4d7680cb4
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 18 11:29:02 2024 +0200

    Show resolved value

commit 742bb6de05
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 18 11:28:09 2024 +0200

    Handle tokens with issues in ui

commit a390942722
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 18 11:19:09 2024 +0200

    Resolve token value

commit cf52e873e2
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 18 11:13:26 2024 +0200

    Cleanup

commit 5c2891b247
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 18 11:10:51 2024 +0200

    Use resolved tokens from style-dictionary

commit 9261c53aff
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 18 10:23:52 2024 +0200

    Don't override original value, add resolved value, add missing reference error

commit d65d880845
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 18 09:59:36 2024 +0200

    Silence errors

commit 09609c18ef
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 17 17:07:02 2024 +0200

    Remove compile style dictionary

commit f0bc262a18
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 17 17:05:51 2024 +0200

    Working version

commit 5a64947b08
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 17 16:13:34 2024 +0200

    Add patched StyleDictionary

commit 0a86e3a651
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri Jun 14 10:52:30 2024 +0200

    Simplify

commit c9df90577f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Jun 13 09:27:53 2024 +0200

    Add compiled library

commit 965da83c97
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 12 17:14:34 2024 +0200

    Add workspace-tokens helper

commit 9bc48a3a1a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 12 17:14:27 2024 +0200

    Allow passing custom cache atom

commit 908cc2240f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 12 16:48:13 2024 +0200

    Docs

commit a79d1013bf
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 12 16:45:24 2024 +0200

    Prevent reprocessing the style-dictionary cache multiple times

commit 73e8b80521
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 12 16:19:39 2024 +0200

    Cleanup

commit 2f45ab1b62
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 12 16:19:03 2024 +0200

    Add hook for using resolved tokens cache

commit 0921f8043b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed Jun 12 16:10:02 2024 +0200

    Allow passing of tokens

commit b1b6b5292c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 11 17:52:29 2024 +0200

    Disable invalid token style for now

commit 4fec7d5af2
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 11 17:52:12 2024 +0200

    Applying resolved token value

commit 66b4b892df
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 11 16:43:54 2024 +0200

    Fix data-keys being converted to camel-case

commit 4b90e90974
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 11 16:41:50 2024 +0200

    Backporting resolved tokens to the original structure

commit 1519f8f560
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 11 15:12:30 2024 +0200

    Move to ns

commit e691628648
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 11 10:42:25 2024 +0200

    Test out tokens-studio data

commit efd4c5dcca
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue Jun 11 10:24:12 2024 +0200

    Add performance measuring

commit a5b22d5427
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 10 15:50:48 2024 +0200

    Got resolve working

commit 7da772d6a2
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 10 11:54:34 2024 +0200

    Add sd function

commit 1023ba866a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 10 10:52:03 2024 +0200

    Add StyleDictionary as compiled lib

commit 1ebd2ee3d7
Merge: dc36f4f6d 8d444b4b0
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Fri Jun 14 12:40:44 2024 +0530

    Merge pull request #172 from tokens-studio/hide-unfunctional-token-sections

    Hide non functional token sections

commit 8d444b4b02
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Thu Jun 13 21:33:38 2024 +0530

    Hide non functional token types from UI

commit dc36f4f6d3
Merge: 93c249c77 f10a4f28e
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Thu Jun 13 12:59:49 2024 +0530

    Merge pull request #164 from tokens-studio/other-token-types-context-menu

    Add context menu for opacity, rotation and stroke width tokens

commit f10a4f28ea
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 12 16:18:51 2024 +0530

    Add context menu for opacity, rotation and stroke width

commit 93c249c77a
Merge: 01d2a25c8 3f55536fc
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 12 15:29:30 2024 +0530

    Merge pull request #161 from tokens-studio/dimensions-context-menu

    Dimensions context menu

commit 3f55536fc0
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Mon Jun 10 23:25:11 2024 +0530

    Add custom context menu and fix styling issues with subcontext menu

commit 842b76f3c1
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Fri Jun 7 01:37:26 2024 +0530

    replace 30px with variables

commit e86038d52f
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Fri Jun 7 01:27:18 2024 +0530

    Add CSS to deal with margin before the Sub Context Menu titles

commit 91eb59696c
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Thu Jun 6 23:09:22 2024 +0530

    Remove children attribute and use submenu instead

commit 67a34c91d8
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 5 23:19:43 2024 +0530

    Add leading spaces to subcontext menu titles

commit 307f472528
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 5 22:23:27 2024 +0530

    remove print statement

commit a5c235754c
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 5 22:06:59 2024 +0530

    Cleanup debug statements

commit a98d6b4c07
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 5 22:06:31 2024 +0530

    Add context menu functionalities for dimensions token

commit ed0d9e1cf5
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 5 13:49:18 2024 +0530

    initial dimensions context menu

commit 819c50eaf8
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed Jun 5 13:49:00 2024 +0530

    change dimension to dimensions across

commit 01d2a25c8c
Merge: e8b755c75 ea593221b
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Jun 4 17:02:04 2024 +0530

    Merge pull request #160 from tokens-studio/sizing-token-context-menu

    Add new changes from token-studio-develop merge

commit ea593221b3
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Jun 4 15:52:52 2024 +0530

    Add new changes from token-studio-develop merge

commit e8b755c757
Merge: 202b72dcd 88d3fc234
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Jun 4 15:47:58 2024 +0530

    Merge pull request #159 from tokens-studio/sizing-token-context-menu

    Add context menu functionalities on sizing tokens

commit 88d3fc234d
Merge: a553253d2 202b72dcd
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue Jun 4 15:46:02 2024 +0530

    Resolve merge conflicts in context_menu.cljs

commit 202b72dcd0
Merge: 1056c6b44 057934c88
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Tue Jun 4 11:23:49 2024 +0200

    Merge pull request #132 from tokens-studio/feat/branch-deploys

    Prefer wait over deploy for build

commit 057934c883
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Tue Jun 4 11:11:58 2024 +0200

    Cleanup PR

commit 3b3fbc2ccd
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Tue Jun 4 11:06:00 2024 +0200

    fix deploys

commit 1056c6b448
Merge: dc14933f3 580076355
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Tue Jun 4 10:39:03 2024 +0200

    Merge pull request #158 from tokens-studio/142-when-a-token-is-applied-on-a-shape-in-the-context-menu-there-should-be-check-box-indicating-which-attribute-is-applied

    Show checkmark next to selected token attributes

commit a553253d28
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Mon Jun 3 23:34:51 2024 +0530

    remove println statement

commit 193ad115a2
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Mon Jun 3 23:25:59 2024 +0530

    Add context menu functionalities on sizing tokens

commit 580076355b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 3 15:21:08 2024 +0200

    Show checkmark for applied tokens

commit 65942ef63b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 3 13:39:26 2024 +0200

    Use set of attributes for action generation

commit c1096e15da
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 3 13:39:16 2024 +0200

    Cleanup

commit dc14933f3a
Merge: e89f03393 3c3ef57da
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon Jun 3 10:51:04 2024 +0200

    Merge remote-tracking branch 'penpot/develop' into token-studio-develop

commit e89f03393b
Merge: 5c7e235c9 86e6421b6
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Mon Jun 3 10:48:49 2024 +0200

    Merge pull request #157 from tokens-studio/florian/input-select

    Allow token selection with keyboard from right side

commit 86e6421b68
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 31 16:25:30 2024 +0200

    Disable selection when entering with mouse

commit 710fa0d817
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 31 16:22:01 2024 +0200

    Allow arrow selection

commit 5c7e235c97
Merge: d624a559a c3cee77ef
Author: Akshay Gupta <akshay@hyma.io>
Date:   Fri May 31 18:31:37 2024 +0530

    Merge pull request #155 from tokens-studio/spacing-context-menu

    Spacing context menu

commit c3cee77efb
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Fri May 31 18:19:42 2024 +0530

    remove unused imports and refactor functions

commit d624a559aa
Merge: 420b8cf52 d16f1c773
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Fri May 31 10:46:51 2024 +0200

    Merge pull request #150 from tokens-studio/flex-row-gap-commit

    Spacing tokens

commit 76347228fe
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Thu May 30 22:25:21 2024 +0530

    Add all spacing token context menu functionalities

commit 84d96a1004
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed May 29 18:47:17 2024 +0530

    Add initial spacing context menu entries

commit d16f1c773e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 29 14:53:40 2024 +0200

    Change both properties

commit 7376cb634a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 29 14:32:09 2024 +0200

    Add padding x/y tokens

commit 0e7e37afc2
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 29 14:21:33 2024 +0200

    Add padding editable select

commit 28bdf62454
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 29 13:50:31 2024 +0200

    Integrate changes

commit 420b8cf524
Merge: bdefc97c2 c2c0fbf40
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed May 29 13:20:44 2024 +0200

    Merge pull request #146 from tokens-studio/135-flex-row--gap-token-updating-from-the-right-sidebar

    135 flex row  gap token updating from the right sidebar

commit 78f3d54dee
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 29 10:55:40 2024 +0200

    Add commit

commit c2c0fbf40a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 29 09:37:24 2024 +0200

    Add spacing/row options

commit 1ad998de23
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 29 09:28:38 2024 +0200

    Use editable-select for col-gap/row-gap

commit fb5f7e870a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 29 09:23:47 2024 +0200

    Fix drop-down button spacing

commit 5c83247256
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 29 09:20:14 2024 +0200

    Prevent selection on disabled selects

commit c6f5da8873
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 29 09:16:55 2024 +0200

    Move select styles to select component

commit 9a7c944763
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 29 09:04:49 2024 +0200

    Remove unused classname

commit 985d8d33ff
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 29 09:02:26 2024 +0200

    Add event to passed arguments [*]

    [*] Needed for layout_container component

commit 384da8555d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 29 08:50:50 2024 +0200

    Dynamically pass props to input

commit bdefc97c21
Merge: 144b164fa bb3ee2278
Author: Akshay Gupta <akshay@hyma.io>
Date:   Tue May 28 17:36:59 2024 +0530

    Merge pull request #140 from tokens-studio/general-token-context-menu-functions

    General token context menu functions and specific context menu functions for border radius

commit bb3ee22780
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue May 28 17:03:26 2024 +0530

    pass context menu attributes as map and some minor fixes

commit e02777b855
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Tue May 28 10:23:20 2024 +0200

    Be explicit in tagging for prs

commit 144b164fa0
Merge: 169d71b2d 96a7cf2e9
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Tue May 28 10:06:12 2024 +0200

    Merge pull request #139 from tokens-studio/fix-staging

    Fix staging

commit eeb87e49a2
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Tue May 28 09:58:15 2024 +0200

    Cleanup github token usage

commit 9066ad9e39
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue May 28 02:22:25 2024 +0530

    Add border radius specific context menu functions

commit 464bdf3d9c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon May 27 15:09:36 2024 +0200

    Use single undo operation for width/height change

commit 96a7cf2e98
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon May 27 14:50:55 2024 +0200

    Convert kebab keys into camelCase

commit 47d75e7e2a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon May 27 14:43:28 2024 +0200

    Remove closed for now

commit 6ed5dc138d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon May 27 14:43:11 2024 +0200

    Fix editing/saving

commit 169d71b2df
Merge: 65563e2d3 6bacd1d66
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Mon May 27 11:22:27 2024 +0200

    Merge pull request #138 from tokens-studio/124-disable-1password-completion

    124 disable 1password completion

commit 6bacd1d663
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon May 27 11:13:05 2024 +0200

    Disable password manager completion

commit 86d7979e1e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon May 27 11:12:36 2024 +0200

    Remove unused component

commit d1fc43d8d6
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Mon May 27 10:38:35 2024 +0200

    Try force deploy branch PR

commit 370a5d9bb8
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Mon May 27 13:02:24 2024 +0530

    Add initial context menu token specific functionality

commit 65563e2d3c
Merge: 968c6437f 7a8722de1
Author: Akshay Gupta <akshay@hyma.io>
Date:   Fri May 24 18:13:00 2024 +0530

    Merge pull request #133 from tokens-studio/editing-tokens

    :feat editing tokens

commit 968c6437fb
Merge: 75b935187 cbad5033c
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Fri May 24 11:46:45 2024 +0200

    Merge pull request #134 from tokens-studio/123-other-fields-to-update

    Width/Height Token Changing from the sidebar

commit cbad5033c2
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 24 11:25:30 2024 +0200

    Cleanup

commit f52e2e3a41
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 24 10:34:20 2024 +0200

    Differentiate width/height sizing selected properties

commit 49d9b52b12
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 24 10:01:13 2024 +0200

    Cleanup

commit ea9d850412
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 24 10:00:43 2024 +0200

    Fix selectionStart not being detectable (selectionStart doesnt work for number)

commit b6061cc4a0
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 24 10:00:26 2024 +0200

    Fix instant value change applies shape attributes

commit bc620ba2cd
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 24 08:55:04 2024 +0200

    Update width value

commit 595831118d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 24 08:36:28 2024 +0200

    Allow aligning dropwdown to the left

commit 406e8d110c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 24 07:34:43 2024 +0200

    De-Applying token

commit 7a8722de1b
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Fri May 24 00:14:17 2024 +0530

    Add ability to edit existing token attributes

commit 5131b79060
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Thu May 23 16:22:31 2024 +0200

    Prefer wait over deploy for build

commit 75b9351871
Merge: 557195cd5 84ad8a6be
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Thu May 23 16:19:31 2024 +0200

    Merge pull request #131 from tokens-studio/feat/branch-deploys

    Test PR deploys

commit 84ad8a6be6
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Thu May 23 15:39:21 2024 +0200

    Escape interpolation

commit f9e1a65631
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Thu May 23 15:23:27 2024 +0200

    Trigger cleanup as well

commit 66f67ddff4
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Thu May 23 15:13:43 2024 +0200

    Test PR deploys

commit 2dd994799c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu May 23 09:41:16 2024 +0200

    Abstract API

commit e181065bda
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu May 23 09:29:17 2024 +0200

    Formatting

commit 1ed692230b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu May 23 09:24:12 2024 +0200

    Abstract functionality

commit 557195cd55
Merge: 2818d097a 80ff7f769
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Thu May 23 11:05:12 2024 +0200

    Merge pull request #130 from tokens-studio/129-bug-file-is-crashing-post-applying-a-border-radius-token-to-a-shape

    Fix non-optional keys breaking staging server

commit 80ff7f769c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu May 23 10:53:18 2024 +0200

    Fix non-optional keys breaking staging server

commit 273a9530ea
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Thu May 23 13:14:28 2024 +0530

    initial edit commit

commit 2818d097ab
Merge: 1a144192a cc0e4af4b
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Thu May 23 08:43:51 2024 +0200

    Merge pull request #128 from tokens-studio/119-higlight-applied-token-in-the-editing-field

    Show token value inside shapes panel (border-radius)

commit cc0e4af4bc
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 22 16:37:19 2024 +0200

    Fix token value not being removed after submit

commit b1379ed7de
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 22 16:35:44 2024 +0200

    Fix refocus prop not being removed

commit 5bccfa9e2f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 22 16:29:18 2024 +0200

    Dont submit token when text is selected

commit 5806ae7426
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 22 16:20:40 2024 +0200

    Abstract functions

commit 2eb5efb274
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 22 16:13:58 2024 +0200

    Cleanup

commit 850bf80ffc
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 22 15:59:22 2024 +0200

    Replace token with value when inserted after token input

commit 6f5930bf15
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 22 15:43:40 2024 +0200

    Clear token value on blur

commit 2efd6e1584
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 22 15:36:26 2024 +0200

    Refocus input on token deletion

commit 86b493522c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 22 15:12:56 2024 +0200

    Remove unneeded focus hack

commit 1a144192a9
Merge: cbfcc5056 04c43acf3
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed May 22 15:00:05 2024 +0200

    Merge pull request #127 from tokens-studio/fix-sass-pipe-break

    Dont break pipe when sass has an error

commit 70336ea45e
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 22 14:26:37 2024 +0200

    Style focused pill

commit 7e79cf274d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 22 14:17:56 2024 +0200

    Fix input background being clipped on hover

commit 42df426375
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 22 14:13:33 2024 +0200

    Style pill and input combination

commit 7c80f87f30
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 22 14:13:23 2024 +0200

    Show value instead of label, add title

commit 019759392c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 22 10:23:57 2024 +0200

    Unlink token when pressing backspace on empty input field

commit 7da382dfed
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue May 21 15:47:18 2024 +0200

    Clear value when pressing backspace as last action

commit 35f384ce9b
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue May 21 15:40:34 2024 +0200

    Use custom input value logic when token is applied

commit 50354ccb71
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue May 21 15:40:19 2024 +0200

    Fix state being reset at start

commit 975f41bc08
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue May 21 15:21:01 2024 +0200

    Display regular input field when token is applied [*]

    [*] Numeric input renders default 0

commit 04c43acf39
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 22 13:48:13 2024 +0200

    Dont break pipe when sass has an error

commit cbfcc50563
Merge: 44f55308a eb168a6f9
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 22 13:46:26 2024 +0200

    Merge remote-tracking branch 'penpot/develop' into token-studio-develop

commit 44f55308a6
Merge: e874ed5b6 2b1066535
Author: Akshay Gupta <akshay@hyma.io>
Date:   Wed May 22 15:14:54 2024 +0530

    Merge pull request #126 from tokens-studio/rotation-token

    Add ability to apply rotation token

commit 2b10665356
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed May 22 15:11:01 2024 +0530

    close applied tokens map schema

commit 13a8872dbd
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed May 22 15:08:05 2024 +0530

    add rotation to applied tokens schema

commit 3793f1791a
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed May 22 13:08:59 2024 +0530

    Add ability to apply rotation token

commit e874ed5b6c
Merge: cb7d4409e eca133426
Author: Akshay Gupta <akshay@hyma.io>
Date:   Tue May 21 17:11:21 2024 +0530

    Merge pull request #125 from tokens-studio/remember-token-section-state

    Remember token section open/close state

commit eca1334266
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue May 21 16:52:47 2024 +0530

    Remember token section open/close state

commit cb7d4409e2
Merge: a1f09d69b 9b13444c4
Author: Akshay Gupta <akshay@hyma.io>
Date:   Tue May 21 13:28:34 2024 +0530

    Merge pull request #116 from tokens-studio/spacing-token-layout-update

    spacing token to update only row or column gap as per flex direction

commit a1f09d69b0
Merge: 162e7b6c5 344a27602
Author: Akshay Gupta <akshay@hyma.io>
Date:   Tue May 21 13:27:42 2024 +0530

    Merge pull request #117 from tokens-studio/sort-tokens-by-insert-order

    sort tokens by insert order

commit 344a27602b
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Mon May 20 22:25:46 2024 +0530

    sort tokens by insert order

commit 9b13444c44
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Mon May 20 21:59:28 2024 +0530

    spacing token to update only row or column gap as per flex direction

commit 162e7b6c58
Merge: 90ab485e7 5954a8698
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Mon May 20 12:59:50 2024 +0200

    Merge branch 'token-studio-develop' of github.com:tokens-studio/tokens-studio-for-penpot into feat/port-tracking-and-smoke

commit 90ab485e78
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Mon May 20 12:56:43 2024 +0200

    Needs depend on smoke

commit 5954a8698b
Merge: ec36e06b7 851054c61
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Mon May 20 12:45:42 2024 +0200

    Merge pull request #114 from tokens-studio/feat/port-tracking-and-smoke

    Add port label tracking and add a smoke test

commit 851054c617
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Mon May 20 12:11:29 2024 +0200

    Add port label tracking and add a smoke test

commit ec36e06b7b
Merge: 0bd3b0598 3caa9d780
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Fri May 17 14:59:28 2024 +0200

    Merge pull request #113 from tokens-studio/108-custom-editable-select-for-token-completion

    Custom editable select for token completion

commit 3caa9d780a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 17 11:37:36 2024 +0200

    Show checkmark icon for applied tokens

commit ad26d9e2d3
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 17 10:55:24 2024 +0200

    More styling

commit 85a40d19ed
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 17 10:26:32 2024 +0200

    Extract component

commit b61a59d375
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 17 10:16:01 2024 +0200

    Extract key down handler

commit ced325e009
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 17 10:15:22 2024 +0200

    Return selected item map instead of value [*]

    [*] Multiple tokens could have the same value

commit e69bfb8c54
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 17 09:05:18 2024 +0200

    Style select

commit 8dd2ba7d78
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 17 09:04:50 2024 +0200

    Fix naming

commit cb980ace44
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 17 09:04:35 2024 +0200

    Use regular map for options

commit 165e222117
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 17 08:17:51 2024 +0200

    Only show dropdown when options contain items

commit b0dcbae3ac
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 17 08:13:55 2024 +0200

    Fix border clipping

commit 6a8887d9cc
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 17 08:04:23 2024 +0200

    Remove text transform

commit d2107e7f69
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 17 08:02:06 2024 +0200

    Fix width of drop down

commit 91271b9e41
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 17 07:57:55 2024 +0200

    Custom editable-select

commit 0bd3b0598b
Merge: 23ee54b4b a3d4d6226
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu May 16 18:43:05 2024 +0200

    Merge remote-tracking branch 'penpot/develop' into token-studio-develop

commit 23ee54b4b7
Merge: bde2b4b3a c654766f8
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Thu May 16 18:37:46 2024 +0200

    Merge pull request #111 from tokens-studio/71-apply-token-from-the-shapes-panel-right-side

    Apply border radius token from the shapes panel

commit bde2b4b3a5
Merge: 3e7a42213 c44ac862f
Author: Akshay Gupta <akshay@hyma.io>
Date:   Thu May 16 17:15:59 2024 +0530

    Merge pull request #110 from tokens-studio/duplicate-token

    add functionality to duplicate token from context menu

commit c44ac862f0
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Thu May 16 15:48:39 2024 +0530

    simplify duplicate token function

commit c654766f87
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu May 16 11:43:37 2024 +0200

    Cleanup outdated props

commit 5205b684e9
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu May 16 11:36:08 2024 +0200

    Fix token not being applied

commit e1ae3d55af
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Thu May 16 14:08:11 2024 +0530

    ad functionality to duplicate token from context menu

commit 23bee8415a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu May 16 09:59:55 2024 +0200

    Fix missing dependency

commit 48c85d7200
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu May 16 09:55:57 2024 +0200

    Simplify token application

commit 0d154679e9
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu May 16 09:44:11 2024 +0200

    Add docstrings

commit c60c5ac34f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu May 16 09:33:20 2024 +0200

    Apply tokens directly to shape

commit cdca00a986
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu May 16 09:02:48 2024 +0200

    Extract token apply function

commit 4e3af1407d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 15 18:28:04 2024 +0200

    Fix styling of dropdown items?

commit 9a58188dc3
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 15 18:20:47 2024 +0200

    Show border-radius tokens as options

commit d9dbaad281
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 15 18:20:28 2024 +0200

    Add tokens map generators

commit 5e301605ad
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 15 17:44:06 2024 +0200

    Extract token grouping to core

commit 622843f18d
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 15 17:43:49 2024 +0200

    Take tokens as ref

commit 8f852bf48f
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 15 17:26:10 2024 +0200

    Use :as

commit 3e7a422136
Merge: f8972efea 591e33340
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed May 15 17:14:41 2024 +0200

    Merge pull request #104 from tokens-studio/fix-sizing-dimensions-mixup

    Fix sizing/dimensions token mixup

commit 591e333400
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Wed May 15 15:40:07 2024 +0200

    Fix sizing/dimensions token mixup

commit f8972efea0
Merge: d4dd49bdb d69cca2d9
Author: Akshay Gupta <akshay@hyma.io>
Date:   Wed May 15 18:56:42 2024 +0530

    Merge pull request #103 from tokens-studio/simple-context-menu

    fix delimiter mismatch and add missing data/tokens package

commit d69cca2d9c
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed May 15 18:50:30 2024 +0530

    fix delimiter mismatch and add missing data/tokens package

commit d4dd49bdb7
Merge: 157bb01e8 ec5a11731
Author: Akshay Gupta <akshay@hyma.io>
Date:   Wed May 15 18:31:13 2024 +0530

    Merge pull request #97 from tokens-studio/simple-context-menu

    Simple context menu

commit ec5a117318
Merge: d3d454a43 157bb01e8
Author: Akshay Gupta <akshay@hyma.io>
Date:   Wed May 15 18:30:53 2024 +0530

    Merge branch 'token-studio-develop' into simple-context-menu

commit d3d454a43c
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed May 15 14:50:24 2024 +0530

    move delete token to tokens actions section

commit 5fa2048b23
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed May 15 14:40:46 2024 +0530

    re-use workspace context menu entry and fix double nested ul

commit 316db61c8a
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed May 15 13:23:47 2024 +0530

    remove warning modal when deletion of a token

commit fcd7a35b46
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed May 15 12:59:18 2024 +0530

    move context menu functions to data/tokens

commit 157bb01e8f
Merge: b9e9f9fb1 584ac6341
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Tue May 14 16:39:16 2024 +0200

    Merge pull request #99 from tokens-studio/fix/containerization

    Downtune replica amount. Cleanup redis host

commit 584ac6341d
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Tue May 14 16:37:16 2024 +0200

    Downtune replica amount. Cleanup redis host

commit b9e9f9fb13
Merge: d67311b12 4d14d78ee
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Tue May 14 16:27:19 2024 +0200

    Merge pull request #98 from tokens-studio/icons-spacing

    Add more space between icon and label, fix icon offset

commit 4d14d78eed
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue May 14 16:01:11 2024 +0200

    Add more space between icon and label, fix icon offset

commit d67311b126
Merge: 230b271be e6f86cda6
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Tue May 14 15:26:01 2024 +0200

    Merge pull request #96 from tokens-studio/95-placeholder-icons

    Add token placeholder icons

commit 8cb9d9c352
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue May 14 18:48:48 2024 +0530

    Add delete token functionality in context menu

commit 31b487ed86
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue May 14 18:25:08 2024 +0530

    remoev translation function

commit 24f1693684
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Tue May 14 18:10:13 2024 +0530

    Add Context Menu for tokens and simple placeholder functions

commit e6f86cda64
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue May 14 14:24:36 2024 +0200

    Add token placeholder icons

commit 230b271be3
Merge: 740024061 677b28218
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue May 14 12:00:45 2024 +0200

    Merge remote-tracking branch 'penpot/develop' into token-studio-develop

commit 7400240616
Merge: 550045cb3 aa8b1f4c7
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Mon May 13 16:42:34 2024 +0200

    Merge pull request #94 from tokens-studio/fix/containerization

    Chart does auto inject the release name

commit aa8b1f4c73
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Mon May 13 16:41:51 2024 +0200

    Chart does auto inject the release name

commit 550045cb3b
Merge: 50f69936a 60207fd01
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Mon May 13 16:21:37 2024 +0200

    Merge pull request #93 from tokens-studio/fix/containerization

    Circumvent bug

commit 60207fd01e
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Mon May 13 16:21:01 2024 +0200

    Circumvent bug

commit 50f69936a4
Merge: d90755531 f9d4b9f69
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Mon May 13 16:10:32 2024 +0200

    Merge pull request #92 from tokens-studio/fix/containerization

    Add missing secretName

commit f9d4b9f699
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Mon May 13 16:09:56 2024 +0200

    Add missing secretName

commit d907555314
Merge: d3c0abc11 e50a46409
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Mon May 13 15:32:21 2024 +0200

    Merge pull request #90 from tokens-studio/fix/containerization

    Add redis. Ingress should be under front end for some reason

commit e50a46409f
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Mon May 13 15:31:03 2024 +0200

    Add redis. Ingress should be under front end for some reason

commit d3c0abc11a
Merge: 64dc685f2 98d7895e2
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Mon May 13 15:09:48 2024 +0200

    Merge pull request #85 from tokens-studio/84-border-width

    Stroke Width

commit 64dc685f2a
Merge: 071df4074 79ce39612
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Mon May 13 15:07:23 2024 +0200

    Merge pull request #89 from tokens-studio/fix/containerization

    Fix pull secrets needed to be a reference

commit 79ce396122
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Mon May 13 15:06:22 2024 +0200

    Fix pull secrets needed to be a reference

commit 071df4074f
Merge: 309abec88 0ce5c165d
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Mon May 13 14:43:15 2024 +0200

    Merge pull request #88 from tokens-studio/fix/containerization

    Update secrets

commit 0ce5c165db
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Mon May 13 14:41:58 2024 +0200

    Update secrets

commit 309abec88a
Merge: 425155153 10aaa966f
Author: SorsOps <80043879+SorsOps@users.noreply.github.com>
Date:   Mon May 13 14:26:44 2024 +0200

    Merge pull request #87 from tokens-studio/fix/containerization

    Change deploy to use alternate chart as truecharts using a weird helm…

commit 10aaa966f9
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Mon May 13 14:25:07 2024 +0200

    Change deploy to use alternate chart as truecharts using a weird helm dependency

commit 98d7895e2a
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Mon May 13 11:23:30 2024 +0200

    Add stroke-width token

commit 4251551535
Merge: eafd4f01e ae263363e
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Fri May 10 17:36:50 2024 +0200

    Merge pull request #83 from tokens-studio/82-opacity

    Add opacity

commit eafd4f01eb
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Fri May 10 14:34:05 2024 +0200

    Use raw manifests

commit 153ea95a55
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Fri May 10 14:02:34 2024 +0200

    Typo

commit 16c893fa60
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Fri May 10 14:01:08 2024 +0200

    Add matrix for docker build

commit 0e94c9851a
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Fri May 10 13:59:09 2024 +0200

    Move workflow file

commit 07583b5e34
Author: SorsOps <80043879+sorsOps@users.noreply.github.com>
Date:   Fri May 10 13:57:17 2024 +0200

    Add deployment config

commit ae263363ed
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Thu May 9 21:36:38 2024 +0530

    Add opacity

commit 4e3ee7bdab
Merge: 5efcb0f42 42b25479b
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Fri May 10 12:05:06 2024 +0200

    Merge pull request #81 from tokens-studio/value-resolve

    Value resolve

commit 42b25479b3
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 10 10:36:56 2024 +0200

    Highlight invalid token values

commit 5813acea02
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 10 10:26:22 2024 +0200

    Log whole token

commit df48295903
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 10 10:22:09 2024 +0200

    Add resolving function and move to core ns

commit 5efcb0f424
Merge: 2ed4ece23 6d5beb758
Author: Akshay Gupta <akshay@hyma.io>
Date:   Fri May 10 12:25:23 2024 +0530

    Merge pull request #78 from tokens-studio/fix-assets-panel-view

    Fix assets panel tab view

commit 2ed4ece23d
Merge: d81b1f328 9a243e3b4
Author: Akshay Gupta <akshay@hyma.io>
Date:   Fri May 10 12:22:03 2024 +0530

    Merge pull request #76 from tokens-studio/token-pills-wrap

    Add flex wrap to token pills wrapper

commit d81b1f328d
Merge: 68a201374 0c856702c
Author: Akshay Gupta <akshay@hyma.io>
Date:   Fri May 10 12:21:38 2024 +0530

    Merge pull request #80 from tokens-studio/add-spacing-function

    Add simple token spacing application

commit 0c856702c6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Fri May 10 08:36:40 2024 +0200

    Remove unneeded import

commit 76a38bcb0c
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Thu May 9 21:36:38 2024 +0530

    Add simple token spacing application

commit 6d5beb7583
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Thu May 9 18:42:33 2024 +0530

    Fix assets panel tab view

commit 9a243e3b4f
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Thu May 9 17:51:48 2024 +0530

    Add flex wrap to token pills wrapper

commit 68a201374c
Merge: 11d4496e9 69ed15e78
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed May 8 14:29:15 2024 +0200

    Merge pull request #74 from tokens-studio/70-sort-sections-by-tokens

    Sort token groups

commit 11d4496e9a
Merge: 6fa1d6eec fd3922936
Author: Florian Schrödl <contact@florianschroedl.com>
Date:   Wed May 8 14:29:02 2024 +0200

    Merge pull request #68 from tokens-studio/65-dimensions

    Dimensions Token

commit 6fa1d6eecc
Merge: 6bb4eec80 3d13015e3
Author: Akshay Gupta <akshay@hyma.io>
Date:   Wed May 8 17:52:33 2024 +0530

    Merge pull request #66 from tokens-studio/close-token-modal

    add ability to close modal once save token button is clicked

commit 69ed15e789
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Apr 25 19:00:00 2024 +0200

    Remove search bar

commit e5a7f87d1c
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Apr 25 19:00:00 2024 +0200

    Sort token groups

commit fd39229367
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Apr 25 19:00:00 2024 +0200

    Add shape dimensions updating

commit a9aac4c867
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Apr 25 19:00:00 2024 +0200

    Move emit to the shape update function [*]

    [*] A shape update might need multiple emit functions

commit 3d13015e30
Author: Akshay Gupta <gravity.akshay@gmail.com>
Date:   Wed May 8 15:16:11 2024 +0530

    add ability to close modal once save token button is clicked

commit 28e6db9bb4
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Apr 25 19:00:00 2024 +0200

    Reuse attribute keys from token schema

commit 6bb4eec805
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Apr 25 19:00:00 2024 +0200

    Remove unneeded on-apply prop

commit 76f42a0aec
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Apr 25 19:00:00 2024 +0200

    Cleanup on-apply-token function

commit f71ce60b11
Merge: e5c564041 e7b065ac6
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Tue May 7 14:39:33 2024 +0200

    Merge remote-tracking branch 'penpot/develop' into token-studio-develop

commit e5c5640413
Author: Florian Schroedl <flo.schroedl@gmail.com>
Date:   Thu Apr 25 19:00:00 2024 +0200

    Start tokens studio plugin base
2024-11-12 10:35:32 +01:00
Pablo Alba
1c49dd80a4 Add from-invitation property to register-profile event 2024-11-11 17:18:53 +01:00
Pablo Alba
cbc92e9f1e Add created-by to invitations, and an event related 2024-11-11 17:00:54 +01:00
Belén Albeza
9b7d0563b9 🔧 Add rustfmt to the devenv 2024-11-11 15:25:31 +01:00
Pablo Alba
e1e13bcfb1 Fix a viewer can drop a .penpot file on dashboard 2024-11-11 13:19:30 +01:00
Pablo Alba
134c23c70c Add a help icon to plugins menu items disabled by viewer role 2024-11-11 13:08:52 +01:00
Pablo Alba
c89b6e2d6d Add error control on plugins permissions peek 2024-11-11 09:07:39 +01:00
Andrey Antukh
0d08549a04 🐛 Fix regression on sm/vec and sm/set schemas
Introduced in previous commits
2024-11-08 19:50:59 +01:00
Andrey Antukh
960f095c1b Merge pull request #5261 from penpot/palba-viewer-and-plugins
 Integrate viewer role with plugin menus and popup
2024-11-08 10:49:18 +01:00
Pablo Alba
d9eff00a71 Integrate viewer role with plugin menus and popup 2024-11-08 10:37:57 +01:00
Belén Albeza
7b196e1ca5 Merge pull request #5235 from penpot/azazeln28-handle-webgl-context
🎉 Handle WebGL Context
2024-11-08 09:38:45 +01:00
Alejandro
0981517bc6 Merge pull request #5263 from penpot/niwinz-bugfix-3
 Prevent logging EOF exceptions on SSE responses
2024-11-08 07:39:04 +01:00
Alejandro
8ae29ceaa2 Merge pull request #5256 from penpot/niwinz-bugfix-2
Fix incorrect behavior of ::sm/vec and ::sm/set decoder
2024-11-08 07:30:15 +01:00
Andrey Antukh
9eaa55b711 Prevent logging EOF exceptions on SSE responses
They are not necessary and they are pretty common, because
the user can interrupt the connection at any time.
2024-11-07 20:50:24 +01:00
Andrey Antukh
0c4b1cc4fc 📎 Update yarn.lock with text-editor dependency change 2024-11-07 20:24:33 +01:00
Edgars Andersons
5501859fa6 🌐 Add translations for: Latvian.
Currently translated at 99.5% (1447 of 1453 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/
2024-11-07 17:00:30 +01:00
Andrey Antukh
96f8832bcf Merge pull request #5260 from penpot/azazeln28-fix-text-editor-selection-issue
🐛 Fix text editor bug
2024-11-07 13:50:32 +01:00
AzazelN28
0b54215b84 🐛 Fix text editor bug 2024-11-07 13:06:34 +01:00
Andrey Antukh
33ff74e534 🐛 Use portal: protocol for local npm deps resolution 2024-11-07 12:41:49 +01:00
AzazelN28
23d3661ea5 🎉 Handle WebGL context state change 2024-11-07 11:36:27 +01:00
Andrey Antukh
46a6aff4da Merge pull request #5242 from penpot/niwinz-design-tokens
🎉 Merge tokens-studio
2024-11-07 10:33:24 +01:00
Andrey Antukh
cb21eeda94 🐛 Fix build 2024-11-07 09:42:36 +01:00
Andrey Antukh
b27edb4259 🐛 Use proper schema for move-file rpc method 2024-11-06 16:29:11 +01:00
Andrey Antukh
73d85b9884 🐛 Fix incorrect behavior of ::sm/vec and ::sm/set decoder 2024-11-06 16:29:11 +01:00
Andrey Antukh
dc41fe7616 Merge pull request #5226 from penpot/palba-rename-layers
🎉 Rename selected layer via shortcut and context menu option
2024-11-06 09:49:56 +01:00
Pablo Alba
48c41df054 🎉 Rename selected layer via shortcut and context menu option 2024-11-06 09:22:38 +01:00
Andrey Antukh
b86f2ba90d Merge pull request #5246 from penpot/luis-fix-updated-library-tab
🐛 Fix selected tab when updated library
2024-11-06 08:59:01 +01:00
Edgars Andersons
bf5a7e20d9 🌐 Add translations for: Latvian.
Currently translated at 98.0% (1424 of 1453 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/
2024-11-05 18:00:18 +01:00
Andrés Moya
3393963363 🔧 Apply feature flag to measures inputs 2024-11-05 16:22:20 +01:00
Andrés Moya
e641e93fd5 🐛 Fix sidebar tabs when there are no design tokens 2024-11-05 15:08:09 +01:00
Andrés Moya
99fcd3556e 🔧 Disable tokens in dev env by default 2024-11-05 14:21:09 +01:00
Andrey Antukh
b82679deaf 🎉 Merge tokens-studio 2024-11-05 14:21:09 +01:00
Andrey Antukh
0cd446421d 🐛 Fix some issues with vendored libraries and build process
related to how package.json is defined and how modules
are exported
2024-11-05 14:18:51 +01:00
Andrey Antukh
6014612046 Merge pull request #5252 from penpot/hiru-fix-manage
🐛 Fix merge error in manage script
2024-11-05 13:52:03 +01:00
Andrés Moya
eb211c0c8e 🐛 Fix merge error in manage script 2024-11-05 13:48:46 +01:00
Andrey Antukh
e6a9e27802 Merge remote-tracking branch 'origin/staging' into develop 2024-11-05 09:10:14 +01:00
Andrey Antukh
4ccd84f9c4 Merge pull request #5243 from penpot/niwinz-modules-improvements-1
♻️ Refactor bundle mechanism
2024-11-04 16:47:12 +01:00
Andrey Antukh
96102fc878 Update devenv default watch command for handle libs 2024-11-04 14:31:59 +01:00
luisddm
7f93060872 🐛 Fix selected tab when updated library 2024-11-04 09:23:20 +01:00
Edgars Andersons
c3ef12f145 🌐 Add translations for: Latvian.
Currently translated at 95.3% (1385 of 1453 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/lv/
2024-11-02 14:00:19 +00:00
Andrey Antukh
39106c1e14 Improve e2e performance on CI 2024-11-01 10:04:03 +01:00
Andrey Antukh
607deb31dc ♻️ Refactor bundle mechanism
Mainly leave shadow-cljs for build cljs stuff and use esbuild
for bundle all js dependencies, completly avoiding all possible
incompatibility issues between js libraries and google closure
compiler.
2024-11-01 10:04:03 +01:00
Linerly
9a35c04bf0 🌐 Add translations for: Indonesian.
Currently translated at 100.0% (1453 of 1453 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/id/
2024-11-01 07:04:40 +01:00
Andrey Antukh
366bca5f93 Merge remote-tracking branch 'origin/staging' into develop 2024-10-30 13:50:20 +01:00
Andrey Antukh
97a1bf15ef Improve how topic is managed on ws notifications 2024-10-30 13:39:38 +01:00
Andrey Antukh
9409078069 Add usage quotes for snapshots 2024-10-30 13:39:38 +01:00
Andrey Antukh
5b35cf7456 Add minor improvements to circleci config 2024-10-30 13:39:38 +01:00
Andrey Antukh
a9d3dfab1a Use schema instead of spec for validate worker submit options 2024-10-30 13:39:38 +01:00
Andrey Antukh
32126d1874 ♻️ Refactor file changes gc tasks
Make it more friendly with the current snapshoting mechanism
2024-10-30 13:39:38 +01:00
Andrey Antukh
5f4af76d28 Add permission checking to file snapshot rpc methods 2024-10-30 13:39:38 +01:00
Pablo Alba
b4f868be91 Update libraries links to new versions 2024-10-30 13:25:54 +01:00
Andrey Antukh
b6f35a5c1e Merge pull request #5233 from penpot/alotor-events-versions
 Add events for versions
2024-10-30 13:22:19 +01:00
alonso.torres
55fda698ec Add events for versions 2024-10-30 13:09:49 +01:00
Madalena Melo
c2467e12ba 🌐 Added translation for: Thai. 2024-10-30 12:07:45 +01:00
Denys Kisil
df74ad0e18 🌐 Add translations for: Ukrainian (ukr_UA).
Currently translated at 92.3% (1342 of 1453 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/
2024-10-30 12:07:31 +01:00
Linerly
e2bdc67bd2 🌐 Add translations for: Indonesian.
Currently translated at 99.5% (1447 of 1453 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/id/
2024-10-30 12:07:31 +01:00
Andrey Antukh
acf273e4e3 Merge pull request #5225 from penpot/azazeln28-panning-performance-improvement
 Improve panning code
2024-10-29 19:43:54 +01:00
Andrey Antukh
410bf7edfd Merge pull request #5229 from penpot/ladybenko-9177-viewport-wasm
 Create a separate viewport for wasm/canvas
2024-10-29 19:42:38 +01:00
Belén Albeza
345d97792f Create a separate viewport for wasm/canvas 2024-10-29 18:05:17 +01:00
Andrey Antukh
6b07c4179c Merge pull request #5221 from penpot/alotor-file-version
 File history versions management
2024-10-29 14:50:08 +01:00
alonso.torres
74d911f856 Add integration tests 2024-10-29 14:41:34 +01:00
alonso.torres
ecb7f0a2f6 File history versions management 2024-10-29 14:23:35 +01:00
AzazelN28
1e0e0aabf2 Improve panning code 2024-10-29 14:06:45 +01:00
Belén Albeza
fa4f2aa5cc Merge pull request #5201 from penpot/niwinz-shape-with-selrect-as-f32-array
 Shape with buffer
2024-10-29 13:47:37 +01:00
Andrey Antukh
7cb8eb783a Merge pull request #5223 from penpot/yms-remove-gitter-badge
📎 Remove gitter and add discourse badge
2024-10-29 12:30:02 +01:00
Yamila Moreno
ef679f6722 📎 Remove gitter and add discourse badge 2024-10-29 12:00:37 +01:00
Andrey Antukh
6443db64d7 Merge remote-tracking branch 'origin/staging' into develop 2024-10-29 11:42:42 +01:00
Aitor Moreno
e1fb022878 Merge pull request #5205 from penpot/niwinz-bugfix-8
🐛 General bugfixes
2024-10-29 11:32:52 +01:00
Alejandro Alonso
96bb282674 Fix many corner issues related to shape data structure change 2024-10-29 11:30:31 +01:00
Belén Albeza
4623f36042 Write shapes directly to wasm memory 2024-10-29 11:30:31 +01:00
Belén Albeza
29e0964ebc ♻️ Refactor rust/wasm code organization 2024-10-29 11:30:31 +01:00
Andrey Antukh
043c23899a 🎉 Add first impl of wasm-friendly for Shape data structure 2024-10-29 11:30:31 +01:00
Andrey Antukh
4cf5dc0791 Add minor improvement on error reporting on shape validation 2024-10-29 11:17:55 +01:00
Andrey Antukh
deaf6ef068 📎 Show version on dbg header 2024-10-29 11:17:54 +01:00
Andrey Antukh
75011ca0ff 🐛 Fix incorrect pred composition on number schema types
Fixes the following:

  => (sm/validate (sm/schema [::sm/int {:max 10}]) nil)
  Cannot invoke "Object.getClass()" because "x" is null
2024-10-29 11:17:01 +01:00
Andrey Antukh
ba3f84fd6c Increase internal s3 http client limits
Tries to improve performance of accidental spikes/bursts of
requests to s3 service. This is not a final solution to all issues
caused by unexpected burst, is a simple improvement to the current
apprach.
2024-10-29 11:17:01 +01:00
Andrey Antukh
f8c7f84c18 Use penpot own executor for s3 response completion executor 2024-10-29 11:17:01 +01:00
Andrey Antukh
7772ac0a85 Expose ::wrk/executor as ExecutorService instance
Instead of a plain Executor instance
2024-10-29 11:17:01 +01:00
Andrey Antukh
9329c2ebd9 🐛 Fix incorrect handling of EOF on s3 upload thread 2024-10-29 11:17:01 +01:00
Andrey Antukh
65f182001b 📎 Update backend scripts/repl with a default config 2024-10-29 11:17:01 +01:00
Andrey Antukh
fe83c5faea Add better reporting for s3 storage backend errors 2024-10-29 11:17:01 +01:00
Andrey Antukh
5b860ee601 🐛 Fix corner case on selection storage backend from settings
Related to how backward compatibility is handled with previous
settings.
2024-10-29 11:17:01 +01:00
Andrey Antukh
cb9839223e Add safer mechanism for tempfile naming
Using a uuidv8 that has strong guarranties about councurrent
ids generation that a simple random long
2024-10-29 11:17:01 +01:00
Andrey Antukh
15c42fba5e 🐛 Add retry mechanism for internal tmp file handling on s3 backend 2024-10-29 11:17:01 +01:00
Alejandro
e7d7291947 Merge pull request #5196 from penpot/niwinz-remove-graaljs
⬆️ Update deps (part 1) and remove graalvm js
2024-10-29 08:48:50 +01:00
Alejandro
04121efb13 Merge pull request #5219 from penpot/niwinz-parallel-circleci
🎉 Add parallel test jobs configuration for CircleCI
2024-10-29 07:50:44 +01:00
Andrey Antukh
32b9134722 🎉 Add parallel test jobs configuration for circleci 2024-10-28 16:28:08 +01:00
Andrey Antukh
8b60200ec6 Merge remote-tracking branch 'origin/staging' into develop 2024-10-28 11:39:42 +01:00
elhombretecla
7155b6a191 Update README.md
Adds plugins text
2024-10-28 11:30:35 +01:00
Andrey Antukh
a57a772394 Merge pull request #5216 from penpot/yms-fix-readme-badges
📎 Fix readme badges
2024-10-28 11:07:03 +01:00
Andrey Antukh
e9f6eefaeb Merge pull request #5198 from penpot/palba-testab-share-from-workspace
🎉 Add A/B test to start directly at the workspace
2024-10-28 11:06:42 +01:00
Yamila Moreno
4188f074ca 📎 Fix readme badges 2024-10-28 10:05:35 +01:00
Andrey Antukh
e0a4ec8b87 Merge pull request #5207 from penpot/palba-viewer-role-can-unpublish
🐛 Fix view role user have menu option for unpublish a library
2024-10-28 10:04:28 +01:00
Pablo Alba
122acb3eee 🐛 Fix view role user have menu option for unpublish a library 2024-10-28 09:48:40 +01:00
Pablo Alba
9728f1ba80 🐛 Fix unexpected failure on plugins-menu and info-menu 2024-10-28 09:48:33 +01:00
Andrey Antukh
93ca268ee7 Merge pull request #5203 from penpot/palba-rename-welcome-file
 Rename welcome file
2024-10-26 15:11:51 +02:00
Pablo Alba
b852dc86c0 🎉 Add A/B test to start directly at the workspace 2024-10-25 17:45:47 +02:00
Aitor Moreno
361b5decbe Merge pull request #5191 from penpot/palba-testab-templates-link
🎉 Add test A/B for add a link to the libraries page
2024-10-25 15:16:22 +02:00
Aitor Moreno
cd3c2b4bf7 Merge pull request #5160 from penpot/code-challenge-lambda-world-2024
:neckbeard: Winner of Code Challenge Lambda World 2024
2024-10-25 14:49:03 +02:00
Aitor Moreno
5718c1f287 Merge pull request #5200 from penpot/alotor-performance-improvement
 Improved performance for root frame movement
2024-10-25 14:48:10 +02:00
Andrey Antukh
d7caf5ed1a Merge pull request #5202 from penpot/yms-pin-latest-open-source-redis-version
⬆️ Pin redis@7.2 in docker-compose, as it's the latest open source version
2024-10-25 13:02:24 +02:00
Yamila Moreno
aa7cbc9f08 ⬆️ Pin redis@7.2 in docker-compose
It's the latest open source version
2024-10-25 12:29:31 +02:00
Pablo Alba
afb5ab7430 Rename welcome file 2024-10-25 12:23:35 +02:00
Andrey Antukh
c2ba7cdbc7 Merge remote-tracking branch 'origin/staging' into develop 2024-10-25 10:12:38 +02:00
alonso.torres
2f8be445d6 Improved performance for root frame movement 2024-10-24 17:00:16 +02:00
Belén Albeza
09e1bac41c Merge pull request #5190 from penpot/ladybenko-9046-emscripten
🎉 Switch new renderer to Emscripten (from wasm-bindgen)
2024-10-23 17:44:44 +02:00
Andrey Antukh
fc7fe41c98 Rename to render-wasm and make it load using dynamic import 2024-10-23 17:18:04 +02:00
Eva Marco
c7308ce634 Merge pull request #5181 from penpot/luis-replace-icon-buttons-workspace
♻️ Replace buttons on workspace
2024-10-23 16:13:51 +02:00
luisddm
e45fa1380d ♻️ Replace buttons on workspace
♻️ Replace buttons on workspace

♻️ Format files

🐛 Fix pull request issues
2024-10-23 14:46:47 +02:00
Belén Albeza
e4eb80f643 🎉 Switch new renderer to Emscripten (from wasm-bindgen) 2024-10-23 13:14:17 +02:00
Andrey Antukh
cc6e071f48 ♻️ Remove all usage of graalvm js runtime
And replace it with a commandline call to nodejs
for execute a custom svgo based command line script.
2024-10-22 23:30:56 +02:00
Andrey Antukh
283ea16627 Merge pull request #5197 from penpot/luis-fix-inspector-indentation-ellipsis-viewer
🐛 Fix intentation and ellipsis in the left sidebar when inspector is activated in viewer mode
2024-10-22 20:24:28 +02:00
Andrey Antukh
15b33488c6 ⬆️ Update exporter dependencies 2024-10-22 20:23:38 +02:00
Andrey Antukh
0e2be44e17 ⬆️ Update frontend dependencies 2024-10-22 20:23:38 +02:00
Andrey Antukh
f949649ba3 ⬆️ Update backend dependencies 2024-10-22 20:23:38 +02:00
Andrey Antukh
b31a6f33a5 ⬆️ Update dependencies on common 2024-10-22 20:23:38 +02:00
Andrey Antukh
51ecbf15a9 ⬆️ Update yetti and http server dependency 2024-10-22 20:23:38 +02:00
Andrey Antukh
0fd783e65e Make nodejs available on backend docker image
Used for execute svgo-cli.js script
2024-10-22 20:23:38 +02:00
Andrey Antukh
1da5fd106a 🐛 Fix future linter issue on common schema ns 2024-10-22 20:23:34 +02:00
luisddm
17aafe6775 🐛 Fix intentation and ellipsis in the left sidebar when inspector is activated in viewer mode 2024-10-22 18:47:01 +02:00
Andrés Moya
9064b9f849 🐛 Fix file builder hangs on export 2024-10-22 11:14:47 +02:00
Pablo Alba
9fc8760dc5 🎉 Add test A/B for add a link to the libraries page 2024-10-21 17:45:54 +02:00
Andrey Antukh
22800e71df Merge pull request #5189 from penpot/palba-bugs-viewer-role
Issues on viewer role
2024-10-21 17:28:56 +02:00
Pablo Alba
352b09a891 🐛 Fix bad order in roles dropdown 2024-10-21 17:05:53 +02:00
Pablo Alba
68f560e29b 🐛 Fix corner case of change rol to viewer when editing a text 2024-10-21 17:05:53 +02:00
Pablo Alba
4622dd0e0d 🐛 Fix bad team permissions showing on team page for viewer 2024-10-21 16:06:38 +02:00
Andrey Antukh
ed822d9f46 ⬆️ Update text editor bundle 2024-10-21 12:36:01 +02:00
Andrey Antukh
c1359d9677 💄 Add minor improvement to doc formatting 2024-10-21 12:36:01 +02:00
Andrey Antukh
ac33df2054 🐛 Remove plugin data from binfile v3 export 2024-10-21 12:36:01 +02:00
Andrey Antukh
b800fcafb4 💄 Add minor improvements to dashboard project menu 2024-10-21 12:36:01 +02:00
Andrey Antukh
6b997928e5 💄 Add minor improvements to dashboard file menu 2024-10-21 12:36:01 +02:00
Andrey Antukh
ee533e2644 Prevent warning of button inside button on dashboard 2024-10-21 12:36:01 +02:00
Andrey Antukh
d6da8afdce Add improved abstraction for team permissions
Relevant changes:
- replace user-viewer? with can-edit removing many double
  negations on the code
- always use team permissions making the permissions access uniform
  around all the code
- expose team permissions to ui tree through ctx/team-permissions
  context
2024-10-21 12:36:01 +02:00
Andrey Antukh
b3fcbd91e4 🐛 Remove the usage of namespaced keywords on toplevel global state
Because debuging the global state value becomes dificult when
exist a name clash on namespaced keywords and not namespaced keywords.
2024-10-21 12:36:01 +02:00
Andrey Antukh
51c6abb261 Disable rename support on the ui for binfile-v3
Not supported on backend
2024-10-21 12:36:01 +02:00
Andrey Antukh
43b86d403c Remove unused props from binfile-v3 progress report message 2024-10-21 12:36:01 +02:00
Andrey Antukh
6a1399dd50 Merge remote-tracking branch 'origin/staging' into develop 2024-10-21 11:20:27 +02:00
Andrey Antukh
6e62472759 Merge pull request #5172 from penpot/niwinz-binfile-v3
🎉 Add binfile-v3 export/import file format
2024-10-18 17:34:20 +02:00
Andrey Antukh
6c9f4a8fd5 ♻️ Reorganize files export and import related code on frontend 2024-10-18 17:19:29 +02:00
Andrey Antukh
8618cb950f 🎉 Add binfile-v3 export/import file format 2024-10-18 17:19:29 +02:00
Andrey Antukh
4fb5d3fb20 🐛 Add missing :key prop on legacy-zip format exportation component 2024-10-18 17:19:29 +02:00
Andrey Antukh
e0669ebbf8 Add minor improvements to schema and spec namespaces 2024-10-18 17:19:29 +02:00
Andrey Antukh
015fd5bc3a Expose a list of valid buckets on main storage ns 2024-10-18 17:19:29 +02:00
Andrey Antukh
88d85706ad ♻️ Refactor context-menu component 2024-10-18 17:19:29 +02:00
Andrey Antukh
782d733bc9 Improve error response formatting 2024-10-18 17:19:29 +02:00
Andrey Antukh
1318019ccb Merge remote-tracking branch 'origin/staging' into develop 2024-10-18 17:19:10 +02:00
Andrey Antukh
1aa2c0f9de Merge pull request #5135 from penpot/palba-eva-viewer-role
  Add viewer role
2024-10-18 10:31:40 +02:00
Pablo Alba
bd08e99080 ♻️ Clean up and refactors of viewer role 2024-10-18 10:12:59 +02:00
Pablo Alba
66530ca868 ♻️ Minor fixes on viewer role on workspace 2024-10-17 16:29:41 +02:00
Andrey Antukh
b4c2f2ecaa Merge pull request #5170 from penpot/palba-fix-missing-permisions-on-file-etag-cache
🐛 Fix missing permissions on file cache
2024-10-17 11:58:10 +02:00
Andrey Antukh
a739688780 Merge remote-tracking branch 'origin/staging' into develop 2024-10-16 17:59:28 +02:00
Andrey Antukh
790f6ce4ed 💄 Add cosmetic changes to get-file rpc method 2024-10-16 17:58:04 +02:00
Andrey Antukh
40d7bb04b4 Reuse permission from rpc/cond middleware for get-file rpc method 2024-10-16 17:58:04 +02:00
Pablo Alba
22d7cfc7fa 🐛 Fix missing permissions on file cache 2024-10-16 17:58:04 +02:00
Andrey Antukh
d4c775b1f4 🐛 Fix unexpected rare condition exception on rpc cond middleware 2024-10-16 17:58:00 +02:00
Eva Marco
536c25c206 ♻️ Resolve minor errors on viewer role on dashboard 2024-10-16 10:37:52 +02:00
Pablo Alba
6fb65de100 Close menus and modals on role change 2024-10-15 13:38:46 +02:00
Eva Marco
043c4105db Add viewer only mode on webhook 2024-10-15 13:38:46 +02:00
Pablo Alba
823792339f Kick out of a team - Visibility of System Status 2024-10-15 13:38:46 +02:00
Pablo Alba
226ab7233b Add viewer role to workspace 2024-10-15 13:38:46 +02:00
Pablo Alba
cf150891df Add view mode to dashboard 2024-10-15 13:32:33 +02:00
Andrey Antukh
c841ed6419 Merge remote-tracking branch 'origin/staging' into develop 2024-10-15 09:30:03 +02:00
Linerly
65c1eb3a63 🌐 Add translations for: Indonesian.
Currently translated at 97.8% (1422 of 1453 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/id/
2024-10-12 18:16:34 +02:00
Andrey Antukh
8165635fad Merge remote-tracking branch 'origin/staging' into develop 2024-10-11 12:50:58 +02:00
alonso.torres
286a834f4a Merge remote-tracking branch 'origin/staging' into develop 2024-10-11 09:13:15 +02:00
Andrés Moya
c14d28dc1e :neckbeard: Winner of Code Challenge Lambda World 2024
https://community.penpot.app/t/were-attending-the-lambda-world-conf-october-2-4th/6647/2
2024-10-10 17:20:57 +02:00
Andrey Antukh
556ec45efc Merge pull request #5153 from penpot/yms-improve-flags-configuration-in-docker-compose
🐳 Improve flags configuration in docker-compose
2024-10-10 16:48:57 +02:00
Andrey Antukh
754e09b0de Merge remote-tracking branch 'origin/staging' into develop 2024-10-10 16:44:58 +02:00
Yamila Moreno
308b2d95f3 🐳 Improve flags configuration in docker-compose 2024-10-10 16:13:46 +02:00
Andrey Antukh
66053ae9df Merge remote-tracking branch 'origin/staging' into develop 2024-10-10 14:51:16 +02:00
Andrey Antukh
77348bb9a4 Merge pull request #5111 from penpot/bameda-docker-use-nginx-unprivileged-base-image
🐳 Use nginx-unprivileged as base image
2024-10-10 14:48:28 +02:00
David Barragán Merino
14257ae422 🐳 Change maintainer in docker images 2024-10-10 13:47:48 +02:00
David Barragán Merino
e64c956693 🐳 Use nginx-unprivileged as base image 2024-10-10 13:47:48 +02:00
David Barragán Merino
4a6b246f0f Add commands to build the docker images individually 2024-10-10 13:47:33 +02:00
Inex Code
6f7bc54a39 🌐 Add translations for: Russian.
Currently translated at 96.1% (1397 of 1453 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ru/
2024-10-10 12:15:49 +02:00
Eero Pitkänen
0c8678eb87 🐛 Fix dragging path points by returning closest point instead of only the distance 2024-10-10 11:15:49 +02:00
alonso.torres
5dd14b929a 📚 Update changelog 2024-10-08 15:36:01 +02:00
Stas Haas
06fadc45f2 🌐 Add translations for: German.
Currently translated at 98.6% (1433 of 1453 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/
2024-10-01 17:16:03 +02:00
IsCycleBai
f633a673c4 🌐 Add translations for: Chinese (Simplified Han script).
Currently translated at 94.9% (1379 of 1453 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hans/
2024-10-01 17:16:03 +02:00
Amerey.eu
e8d2c5e30d 🌐 Add translations for: Czech.
Currently translated at 99.5% (1447 of 1453 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/cs/
2024-09-28 08:15:50 +02:00
Tatsuto Yamamoto
2992ec064f 🌐 Add translations for: Japanese.
Currently translated at 16.5% (241 of 1453 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ja/
2024-09-26 17:15:50 +02:00
Cesar Andres Estrella Paredes
911281b7b9 🌐 Add translations for: Spanish.
Currently translated at 99.3% (1444 of 1453 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/es/
2024-09-26 17:15:49 +02:00
Denys Kisil
e2e6e7db85 🌐 Add translations for: Ukrainian (ukr_UA).
Currently translated at 91.2% (1326 of 1453 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/
2024-09-20 12:02:00 +02:00
Denys Kisil
2b492134be 🌐 Add translations for: Ukrainian (ukr_UA).
Currently translated at 85.5% (1243 of 1453 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/
2024-09-17 12:09:20 +02:00
Henrik Allberg
7bdc97fbfa 🌐 Add translations for: Swedish.
Currently translated at 99.5% (1446 of 1453 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/sv/
2024-09-13 23:09:19 +02:00
Henrik Allberg
5059d71509 🌐 Add translations for: Swedish.
Currently translated at 99.5% (1446 of 1453 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/sv/
2024-09-11 20:09:23 +00:00
Henrik Allberg
76c054a591 🌐 Add translations for: Swedish.
Currently translated at 60.9% (885 of 1453 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/sv/
2024-09-10 19:09:36 +00:00
Jarne Förster
4471dca3f3 🌐 Add translations for: German.
Currently translated at 98.0% (1424 of 1453 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/
2024-09-10 19:09:11 +00:00
Denys Kisil
6c3b82ed85 🌐 Add translations for: Ukrainian (ukr_UA).
Currently translated at 85.6% (1244 of 1453 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/
2024-09-09 20:32:26 +02:00
Madalena Melo
f91434433e 🌐 Added translation for: Swedish. 2024-09-09 16:10:57 +02:00
Madalena Melo
b6f82be56a 🌐 Added translation for: Portuguese. 2024-09-09 16:10:46 +02:00
Denys Kisil
c633970f9d 🌐 Add translations for: Ukrainian (ukr_UA).
Currently translated at 78.5% (1141 of 1453 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/
2024-09-08 14:09:15 +02:00
Denys Kisil
95e5b1ec5e 🌐 Add translations for: Ukrainian (ukr_UA).
Currently translated at 55.3% (804 of 1453 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ukr_UA/
2024-09-07 10:46:03 +02:00
Stas Haas
f84b3187a5 🌐 Add translations for: German.
Currently translated at 97.7% (1421 of 1453 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/
2024-09-04 12:09:13 +02:00
Unreal Vision
087f779fef 🌐 Add translations for: French.
Currently translated at 96.3% (1400 of 1453 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/
2024-09-04 12:09:12 +02:00
Oğuz Ersen
ca283c2d26 🌐 Add translations for: Turkish.
Currently translated at 99.5% (1447 of 1453 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/tr/
2024-08-26 13:09:24 +02:00
Stephan Paternotte
9008eb218b 🌐 Add translations for: Dutch.
Currently translated at 99.5% (1447 of 1453 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/nl/
2024-08-24 17:09:57 +02:00
Yaron Shahrabani
089b77379d 🌐 Add translations for: Hebrew.
Currently translated at 99.5% (1446 of 1453 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/
2024-08-24 17:09:56 +02:00
1987 changed files with 574648 additions and 185338 deletions

View File

@@ -1,6 +1,258 @@
version: 2
version: 2.1
jobs:
build:
lint:
docker:
- image: penpotapp/devenv:latest
working_directory: ~/repo
resource_class: medium+
steps:
- checkout
- run:
name: "fmt check"
working_directory: "."
command: |
yarn install
yarn run fmt:clj:check
- run:
name: "lint clj common"
working_directory: "."
command: |
yarn run lint:clj:common
- run:
name: "lint clj frontend"
working_directory: "."
command: |
yarn run lint:clj:frontend
- run:
name: "lint clj backend"
working_directory: "."
command: |
yarn run lint:clj:backend
- run:
name: "lint clj exporter"
working_directory: "."
command: |
yarn run lint:clj:exporter
- run:
name: "lint clj library"
working_directory: "."
command: |
yarn run lint:clj:library
test-common:
docker:
- image: penpotapp/devenv:latest
working_directory: ~/repo
resource_class: medium+
environment:
JAVA_OPTS: -Xmx4g -Xms100m -XX:+UseSerialGC
NODE_OPTIONS: --max-old-space-size=4096
steps:
- checkout
# Download and cache dependencies
- restore_cache:
keys:
- v1-dependencies-{{ checksum "common/deps.edn"}}-{{ checksum "common/yarn.lock" }}
- run:
name: "JVM tests"
working_directory: "./common"
command: |
clojure -M:dev:test
- run:
name: "NODE tests"
working_directory: "./common"
command: |
yarn install
yarn run test
- save_cache:
paths:
- ~/.m2
- ~/.yarn
- ~/.gitlibs
- ~/.cache/ms-playwright
key: v1-dependencies-{{ checksum "common/deps.edn"}}-{{ checksum "common/yarn.lock" }}
test-frontend:
docker:
- image: penpotapp/devenv:latest
working_directory: ~/repo
resource_class: medium+
environment:
JAVA_OPTS: -Xmx4g -Xms100m -XX:+UseSerialGC
NODE_OPTIONS: --max-old-space-size=4096
steps:
- checkout
# Download and cache dependencies
- restore_cache:
keys:
- v1-dependencies-{{ checksum "frontend/deps.edn"}}-{{ checksum "frontend/yarn.lock" }}
- run:
name: "install dependencies"
working_directory: "./frontend"
# We install playwright here because the dependent tasks
# uses the same cache as this task so we prepopulate it
command: |
yarn install
yarn run playwright install chromium
- run:
name: "lint scss on frontend"
working_directory: "./frontend"
command: |
yarn run lint:scss
- run:
name: "unit tests"
working_directory: "./frontend"
command: |
yarn run test
- save_cache:
paths:
- ~/.m2
- ~/.yarn
- ~/.gitlibs
- ~/.cache/ms-playwright
key: v1-dependencies-{{ checksum "frontend/deps.edn"}}-{{ checksum "frontend/yarn.lock" }}
test-library:
docker:
- image: penpotapp/devenv:latest
working_directory: ~/repo
resource_class: medium+
environment:
JAVA_OPTS: -Xmx6g
NODE_OPTIONS: --max-old-space-size=4096
steps:
- checkout
# Download and cache dependencies
- restore_cache:
keys:
- v1-dependencies-{{ checksum "frontend/deps.edn"}}-{{ checksum "frontend/yarn.lock" }}
- run:
name: Install dependencies and build
working_directory: "./library"
command: |
yarn install
- run:
name: Build and Test
working_directory: "./library"
command: |
./scripts/build
yarn run test
test-components:
docker:
- image: penpotapp/devenv:latest
working_directory: ~/repo
resource_class: medium+
environment:
JAVA_OPTS: -Xmx6g -Xms2g
NODE_OPTIONS: --max-old-space-size=4096
steps:
- checkout
# Download and cache dependencies
- restore_cache:
keys:
- v1-dependencies-{{ checksum "frontend/deps.edn"}}-{{ checksum "frontend/yarn.lock" }}
- run:
name: Install dependencies
working_directory: "./frontend"
command: |
yarn install
yarn run playwright install chromium
- run:
name: Build Storybook
working_directory: "./frontend"
command: yarn run build:storybook
- run:
name: Serve Storybook and run tests
working_directory: "./frontend"
command: |
npx concurrently -k -s first -n "SB,TEST" -c "magenta,blue" \
"npx http-server storybook-static --port 6006 --silent" \
"npx wait-on tcp:6006 && yarn test:storybook"
test-integration:
docker:
- image: penpotapp/devenv:latest
working_directory: ~/repo
resource_class: large
environment:
JAVA_OPTS: -Xmx6g -Xms2g
NODE_OPTIONS: --max-old-space-size=4096
steps:
- checkout
# Download and cache dependencies
- restore_cache:
keys:
- v1-dependencies-{{ checksum "frontend/deps.edn"}}-{{ checksum "frontend/yarn.lock" }}
# Build frontend
- run:
name: "frontend build"
working_directory: "./frontend"
command: |
yarn install
yarn run build:app:assets
yarn run build:app
yarn run build:app:libs
# Build the wasm bundle
- run:
name: "wasm build"
working_directory: "./render-wasm"
command: |
EMSDK_QUIET=1 . /opt/emsdk/emsdk_env.sh
./build release
# Run integration tests
- run:
name: "integration tests"
working_directory: "./frontend"
command: |
yarn run playwright install chromium
yarn run test:e2e -x --workers=4
test-backend:
docker:
- image: penpotapp/devenv:latest
- image: cimg/postgres:14.5
@@ -20,104 +272,15 @@ jobs:
steps:
- checkout
# Download and cache dependencies
- restore_cache:
keys:
- v1-dependencies-{{ checksum "backend/deps.edn" }}-{{ checksum "frontend/deps.edn"}}-{{ checksum "common/deps.edn"}}
# fallback to using the latest cache if no exact match is found
- v1-dependencies-
- run: cd .clj-kondo && cat config.edn
- run: cat .cljfmt.edn
- run: clj-kondo --version
- v1-dependencies-{{ checksum "backend/deps.edn" }}
- run:
name: "backend fmt check"
name: "tests"
working_directory: "./backend"
command: |
yarn install
yarn run fmt:clj:check
- run:
name: "exporter fmt check"
working_directory: "./exporter"
command: |
yarn install
yarn run fmt:clj:check
- run:
name: "common fmt check"
working_directory: "./common"
command: |
yarn install
yarn run fmt:clj:check
- run:
name: "frontend fmt check"
working_directory: "./frontend"
command: |
yarn install
yarn run fmt:clj:check
yarn run fmt:js:check
- run:
name: "common linter check"
working_directory: "./common"
command: |
yarn install
yarn run lint:clj
- run:
name: "frontend linter check"
working_directory: "./frontend"
command: |
yarn install
yarn run lint:scss
yarn run lint:clj
- run:
name: "backend linter check"
working_directory: "./backend"
command: |
yarn install
yarn run lint:clj
- run:
name: "exporter linter check"
working_directory: "./exporter"
command: |
yarn install
yarn run lint:clj
- run:
name: "common tests"
working_directory: "./common"
command: |
yarn test
clojure -M:dev:test
- run:
name: "frontend tests"
working_directory: "./frontend"
command: |
yarn install
yarn test
- run:
name: "frontend integration tests"
working_directory: "./frontend"
command: |
yarn install
yarn run build:app:assets
clojure -M:dev:shadow-cljs release main
yarn playwright install --with-deps chromium
yarn test:e2e
- run:
name: "backend tests"
working_directory: "./backend"
command: |
clojure -M:dev:test
clojure -M:dev:test --reporter kaocha.report/documentation
environment:
PENPOT_TEST_DATABASE_URI: "postgresql://localhost/penpot_test"
@@ -128,4 +291,67 @@ jobs:
- save_cache:
paths:
- ~/.m2
key: v1-dependencies-{{ checksum "backend/deps.edn" }}-{{ checksum "frontend/deps.edn"}}-{{ checksum "common/deps.edn"}}
- ~/.gitlibs
key: v1-dependencies-{{ checksum "backend/deps.edn" }}
test-render-wasm:
docker:
- image: penpotapp/devenv:latest
working_directory: ~/repo
resource_class: medium+
environment:
steps:
- checkout
- run:
name: "fmt check"
working_directory: "./render-wasm"
command: |
cargo fmt --check
- run:
name: "lint"
working_directory: "./render-wasm"
command: |
./lint
- run:
name: "cargo tests"
working_directory: "./render-wasm"
command: |
./test
workflows:
penpot:
jobs:
- lint
- test-frontend:
requires:
- lint: success
- test-library:
requires:
- test-frontend: success
- lint: success
- test-components:
requires:
- test-frontend: success
- lint: success
- test-integration:
requires:
- test-frontend: success
- lint: success
- test-backend:
requires:
- lint: success
- test-common:
requires:
- lint: success
- test-render-wasm

View File

@@ -45,10 +45,16 @@
:potok/reify-type
{:level :error}
:missing-protocol-method
{:level :off}
:unresolved-namespace
{:level :warning
:exclude [data_readers]}
:unused-value
{:level :off}
:single-key-in
{:level :warning}
@@ -58,6 +64,15 @@
:redundant-do
{:level :off}
:redundant-ignore
{:level :off}
:redundant-nested-call
{:level :off}
:redundant-str-call
{:level :off}
:earmuffed-var-not-dynamic
{:level :off}

View File

@@ -4,7 +4,6 @@
:remove-consecutive-blank-lines? false
:extra-indents {rumext.v2/fnc [[:inner 0]]
cljs.test/async [[:inner 0]]
app.common.schema/register! [[:inner 0] [:inner 1]]
promesa.exec/thread [[:inner 0]]
specify! [[:inner 0] [:inner 1]]}
}

View File

@@ -11,3 +11,9 @@ end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[*.{rs}]
indent_size = 4
indent_style = space
end_of_line = lf

View File

@@ -1,29 +1,19 @@
<!--
### Related Ticket
Some key notes before you open a PR:
<!-- Reference the related GitHub/Taiga ticket. -->
1. Select which branch should this PR be merged in? By default, you should always merge to the develop branch.
2. PR name follows [convention](http://karma-runner.github.io/4.0/dev/git-commit-msg.html)
3. All tests pass locally, UI and Unit tests
4. All business logic and validations must be on the server-side
5. Update necessary Documentation
6. Put `closes #XXXX` in your comment to auto-close the issue that your PR fixes
### Summary
### Steps to reproduce
Also, if you're new here
### Checklist
- Contribution Guide => https://github.com/uxbox/uxbox/blob/develop/CONTRIBUTING.md
- [ ] Choose the correct target branch; use `develop` by default.
- [ ] Provide a brief summary of the changes introduced.
- [ ] Add a detailed explanation of how to reproduce the issue and/or verify the fix, if applicable.
- [ ] Include screenshots or videos, if applicable.
- [ ] Add or modify existing integration tests in case of bugs or new features, if applicable.
- [ ] Check CI passes successfully.
- [ ] Update the `CHANGES.md` file, referencing the related GitHub issue, if applicable.
-->
> Please provide enough information so that others can review your pull request:
<!-- You can skip this if you're fixing a typo or updating existing documentation -->
> Explain the **details** for making this change. What existing problem does the pull request solve?
<!-- Example: When "Adding a function to do X", explain why it is necessary to have a way to do X. -->
> Screenshots/GIFs
<!-- Add images/recordings to better visualize the change: expected/current behviour -->
<!-- For more details, check the contribution guidelines: https://github.com/penpot/penpot/blob/develop/CONTRIBUTING.md -->

89
.github/workflows/build-bundle.yml vendored Normal file
View File

@@ -0,0 +1,89 @@
name: Bundles Builder
on:
# Create bundle from manual action
workflow_dispatch:
inputs:
gh_ref:
description: 'Name of the branch or ref'
type: string
required: true
default: 'develop'
build_wasm:
description: 'BUILD_WASM. Valid values: yes, no'
type: string
required: false
default: 'yes'
build_storybook:
description: 'BUILD_STORYBOOK. Valid values: yes, no'
type: string
required: false
default: 'yes'
workflow_call:
inputs:
gh_ref:
description: 'Name of the branch or ref'
type: string
required: true
default: 'develop'
build_wasm:
description: 'BUILD_WASM. Valid values: yes, no'
type: string
required: false
default: 'yes'
build_storybook:
description: 'BUILD_STORYBOOK. Valid values: yes, no'
type: string
required: false
default: 'yes'
jobs:
build-bundle:
name: Build and Upload Penpot Bundle
runs-on: ubuntu-24.04
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: ${{ secrets.AWS_REGION }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ inputs.gh_ref }}
- name: Extract some useful variables
id: vars
run: |
echo "gh_ref=${{ inputs.gh_ref || github.ref_name }}" >> $GITHUB_OUTPUT
- name: Build bundle
env:
BUILD_WASM: ${{ inputs.build_wasm }}
BUILD_STORYBOOK: ${{ inputs.build_storybook }}
run: ./manage.sh build-bundle
- name: Prepare directories for zipping
run: |
mkdir zips
mv bundles penpot
- name: Create zip bundle
run: |
echo "📦 Packaging Penpot bundle..."
zip -r zips/penpot.zip penpot
- name: Upload Penpot bundle to S3
run: |
aws s3 cp zips/penpot.zip s3://${{ secrets.S3_BUCKET }}/penpot-${{ steps.vars.outputs.gh_ref }}.zip
- name: Notify Mattermost
if: failure()
uses: mattermost/action-mattermost-notify@master
with:
MATTERMOST_WEBHOOK_URL: ${{ secrets.MATTERMOST_WEBHOOK }}
TEXT: |
❌ *[PENPOT] Error during the execution of the job*
📄 Triggered from ref: `${{ steps.vars.outputs.gh_ref }}`
🔗 Run: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}

21
.github/workflows/build-develop.yml vendored Normal file
View File

@@ -0,0 +1,21 @@
name: _DEVELOP
on:
schedule:
- cron: '16 5-20 * * 1-5'
jobs:
build-bundle:
uses: ./.github/workflows/build-bundle.yml
secrets: inherit
with:
gh_ref: "develop"
build_wasm: "yes"
build_storybook: "yes"
build-docker:
needs: build-bundle
uses: ./.github/workflows/build-docker.yml
secrets: inherit
with:
gh_ref: "develop"

View File

@@ -0,0 +1,36 @@
name: DevEnv Docker Image Builder
on:
workflow_dispatch:
jobs:
build-and-push:
name: Build and push DevEnv Docker image
environment: release-admins
runs-on: ubuntu-24.04
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Registry
uses: docker/login-action@v3
with:
username: ${{ secrets.PUB_DOCKER_USERNAME }}
password: ${{ secrets.PUB_DOCKER_PASSWORD }}
- name: Build and push DevEnv Docker image
uses: docker/build-push-action@v6
env:
DOCKER_IMAGE: 'penpotapp/devenv'
with:
context: ./docker/devenv/
file: ./docker/devenv/Dockerfile
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ env.DOCKER_IMAGE }}:latest
cache-from: type=registry,ref=${{ env.DOCKER_IMAGE }}:buildcache
cache-to: type=registry,ref=${{ env.DOCKER_IMAGE }}:buildcache,mode=max

101
.github/workflows/build-docker.yml vendored Normal file
View File

@@ -0,0 +1,101 @@
name: Docker Images Builder
on:
workflow_dispatch:
inputs:
gh_ref:
description: 'Name of the branch or ref'
type: string
required: true
default: 'develop'
workflow_call:
inputs:
gh_ref:
description: 'Name of the branch or ref'
type: string
required: true
default: 'develop'
jobs:
build-and-push:
name: Build and Push Penpot Docker Images
runs-on: ubuntu-24.04-arm
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ inputs.gh_ref }}
- name: Extract some useful variables
id: vars
run: |
echo "gh_ref=${{ inputs.gh_ref || github.ref_name }}" >> $GITHUB_OUTPUT
- name: Download Penpot Bundles
env:
FILE_NAME: penpot-${{ steps.vars.outputs.gh_ref }}.zip
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: ${{ secrets.AWS_REGION }}
run: |
pushd docker/images
aws s3 cp s3://${{ secrets.S3_BUCKET }}/$FILE_NAME .
unzip $FILE_NAME > /dev/null
mv penpot/backend bundle-backend
mv penpot/frontend bundle-frontend
mv penpot/exporter bundle-exporter
popd
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Registry
uses: docker/login-action@v3
with:
registry: ${{ secrets.DOCKER_REGISTRY }}
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and push Backend Docker image
uses: docker/build-push-action@v6
env:
DOCKER_IMAGE: 'backend'
BUNDLE_PATH: './bundle-backend'
with:
context: ./docker/images/
file: ./docker/images/Dockerfile.backend
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ secrets.DOCKER_REGISTRY }}/${{ env.DOCKER_IMAGE }}:${{ steps.vars.outputs.gh_ref }}
cache-from: type=registry,ref=${{ secrets.DOCKER_REGISTRY }}/${{ env.DOCKER_IMAGE }}:buildcache
cache-to: type=registry,ref=${{ secrets.DOCKER_REGISTRY }}/${{ env.DOCKER_IMAGE }}:buildcache,mode=max
- name: Build and push Frontend Docker image
uses: docker/build-push-action@v6
env:
DOCKER_IMAGE: 'frontend'
BUNDLE_PATH: './bundle-frontend'
with:
context: ./docker/images/
file: ./docker/images/Dockerfile.frontend
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ secrets.DOCKER_REGISTRY }}/${{ env.DOCKER_IMAGE }}:${{ steps.vars.outputs.gh_ref }}
cache-from: type=registry,ref=${{ secrets.DOCKER_REGISTRY }}/${{ env.DOCKER_IMAGE }}:buildcache
cache-to: type=registry,ref=${{ secrets.DOCKER_REGISTRY }}/${{ env.DOCKER_IMAGE }}:buildcache,mode=max
- name: Build and push Exporter Docker image
uses: docker/build-push-action@v6
env:
DOCKER_IMAGE: 'exporter'
BUNDLE_PATH: './bundle-exporter'
with:
context: ./docker/images/
file: ./docker/images/Dockerfile.exporter
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ secrets.DOCKER_REGISTRY }}/${{ env.DOCKER_IMAGE }}:${{ steps.vars.outputs.gh_ref }}
cache-from: type=registry,ref=${{ secrets.DOCKER_REGISTRY }}/${{ env.DOCKER_IMAGE }}:buildcache
cache-to: type=registry,ref=${{ secrets.DOCKER_REGISTRY }}/${{ env.DOCKER_IMAGE }}:buildcache,mode=max

21
.github/workflows/build-staging.yml vendored Normal file
View File

@@ -0,0 +1,21 @@
name: _STAGING
on:
schedule:
- cron: '36 5-20 * * 1-5'
jobs:
build-bundle:
uses: ./.github/workflows/build-bundle.yml
secrets: inherit
with:
gh_ref: "staging"
build_wasm: "yes"
build_storybook: "yes"
build-docker:
needs: build-bundle
uses: ./.github/workflows/build-docker.yml
secrets: inherit
with:
gh_ref: "staging"

30
.github/workflows/build-tag.yml vendored Normal file
View File

@@ -0,0 +1,30 @@
name: _TAG
on:
push:
tags:
- '*'
jobs:
build-bundle:
uses: ./.github/workflows/build-bundle.yml
secrets: inherit
with:
gh_ref: ${{ github.ref_name }}
build_wasm: "no"
build_storybook: "yes"
build-docker:
needs: build-bundle
uses: ./.github/workflows/build-docker.yml
secrets: inherit
with:
gh_ref: ${{ github.ref_name }}
# publish-final-tag:
# if: ${{ !contains(github.ref_name, '-RC') && !contains(github.ref_name, '-alpha') && !contains(github.ref_name, '-beta') && contains(github.ref_name, '.') }}
# needs: build-docker
# uses: ./.github/workflows/release.yml
# secrets: inherit
# with:
# gh_ref: ${{ github.ref_name }}

50
.github/workflows/commit-checker.yml vendored Normal file
View File

@@ -0,0 +1,50 @@
name: 'Commit Message Check'
on:
pull_request:
types:
- opened
- edited
- reopened
- synchronize
pull_request_target:
types:
- opened
- edited
- reopened
- synchronize
push:
branches:
- main
- develop
- staging
jobs:
check-commit-message:
name: Check Commit Message
runs-on: ubuntu-latest
steps:
- name: Check Commit Type
uses: gsactions/commit-message-checker@v2
with:
pattern: '^(Merge|Revert|:(lipstick|globe_with_meridians|wrench|books|arrow_up|arrow_down|zap|ambulance|construction|boom|fire|whale|bug|sparkles|paperclip|tada|recycle|rewind):)\s["A-Z].*[^.]$'
flags: 'gm'
error: 'Commit should match CONTRIBUTING.md guideline'
checkAllCommitMessages: 'true' # optional: this checks all commits associated with a pull request
accessToken: ${{ secrets.GITHUB_TOKEN }} # github access token is only required if checkAllCommitMessages is true
# - name: Check Line Length
# uses: gsactions/commit-message-checker@v2
# with:
# pattern: '^[^#].{74}'
# error: 'The maximum line length of 74 characters is exceeded.'
# excludeDescription: 'true' # optional: this excludes the description body of a pull request
# excludeTitle: 'true' # optional: this excludes the title of a pull request
# checkAllCommitMessages: 'true' # optional: this checks all commits associated with a pull request
# accessToken: ${{ secrets.GITHUB_TOKEN }} # github access token is only required if checkAllCommitMessages is ue
# - name: Check for Resolves / Fixes
# uses: gsactions/commit-message-checker@v2
# with:
# pattern: '^.+(Resolves|Fixes): \#[0-9]+$'
# error: 'You need at least one "Resolves|Fixes: #<issue number>" line.'

95
.github/workflows/release.yml vendored Normal file
View File

@@ -0,0 +1,95 @@
name: Release Publisher
on:
workflow_dispatch:
inputs:
gh_ref:
description: 'Tag to release'
type: string
required: true
workflow_call:
inputs:
gh_ref:
description: 'Tag to release'
type: string
required: true
permissions:
contents: write
jobs:
release:
environment: release-admins
runs-on: ubuntu-24.04
outputs:
version: ${{ steps.vars.outputs.gh_ref }}
release_notes: ${{ steps.extract_release_notes.outputs.release_notes }}
steps:
- name: Extract some useful variables
id: vars
run: |
echo "gh_ref=${{ inputs.gh_ref || github.ref_name }}" >> $GITHUB_OUTPUT
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ steps.vars.outputs.gh_ref }}
# # --- Publicly release the docker images ---
# - name: Login to private registry
# uses: docker/login-action@v3
# with:
# registry: ${{ secrets.DOCKER_REGISTRY }}
# username: ${{ secrets.DOCKER_USERNAME }}
# password: ${{ secrets.DOCKER_PASSWORD }}
# - name: Login to DockerHub
# uses: docker/login-action@v3
# with:
# username: ${{ secrets.PUB_DOCKER_USERNAME }}
# password: ${{ secrets.PUB_DOCKER_PASSWORD }}
# - name: Publish docker images to DockerHub
# env:
# TAG: ${{ steps.vars.outputs.gh_ref }}
# REGISTRY: ${{ secrets.DOCKER_REGISTRY }}
# HUB: ${{ secrets.PUB_DOCKER_HUB }}
# run: |
# IMAGES=("frontend" "backend" "exporter")
# EXTRA_TAGS=("main" "latest")
# for image in "${IMAGES[@]}"; do
# docker pull "$REGISTRY/penpotapp/$image:$TAG"
# docker tag "$REGISTRY/penpotapp/$image:$TAG" "penpotapp/$image:$TAG"
# docker push "penpotapp/$image:$TAG"
# for tag in "${EXTRA_TAGS[@]}"; do
# docker tag "$REGISTRY/penpotapp/$image:$TAG" "penpotapp/$image:$tag"
# docker push "penpotapp/$image:$tag"
# done
# done
# --- Release notes extraction ---
- name: Extract release notes from CHANGES.md
id: extract_release_notes
env:
TAG: ${{ steps.vars.outputs.gh_ref }}
run: |
RELEASE_NOTES=$(awk "/^## $TAG$/{flag=1; next} /^## /{flag=0} flag" CHANGES.md | awk '{$1=$1};1')
if [ -z "$RELEASE_NOTES" ]; then
RELEASE_NOTES="No changes for $TAG according to CHANGES.md"
fi
echo "release_notes<<EOF" >> $GITHUB_OUTPUT
echo "$RELEASE_NOTES" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
# --- Create GitHub release ---
- name: Create GitHub release
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.vars.outputs.gh_ref }}
name: ${{ steps.vars.outputs.gh_ref }}
body: ${{ steps.extract_release_notes.outputs.release_notes }}

10
.gitignore vendored
View File

@@ -30,6 +30,8 @@
/*.zip
/.clj-kondo/.cache
/_dump
/notes
/playground/
/backend/*.md
/backend/*.sql
/backend/*.txt
@@ -40,6 +42,7 @@
/backend/resources/public/assets
/backend/resources/public/media
/backend/target/
/backend/experiments
/bundle*
/cd.md
/clj-profiler/
@@ -50,9 +53,6 @@
/exporter/target
/frontend/.storybook/preview-body.html
/frontend/.storybook/preview-head.html
/frontend/cypress/fixtures/validuser.json
/frontend/cypress/videos/*/
/frontend/cypress/videos/*/
/frontend/dist/
/frontend/npm-debug.log
/frontend/out/
@@ -68,6 +68,10 @@
/vendor/**/target
/vendor/svgclean/bundle*.js
/web
/library/target/
/library/*.zip
/external
clj-profiler/
node_modules
/test-results/

2
.nvmrc
View File

@@ -1 +1 @@
v20.11.1
v22.19.0

View File

@@ -1,5 +1,570 @@
# CHANGELOG
## 2.11.0 (Unreleased)
### :rocket: Epics and highlights
- Deprecated configuration variables with the prefix `PENPOT_ASSETS_*`, and will be
removed in future versions:
- The `PENPOT_ASSETS_STORAGE_BACKEND` becomes `PENPOT_OBJECTS_STORAGE_BACKEND` and its
values passes from (`assets-fs` or `assets-s3`) to (`fs` or `s3`)
- The `PENPOT_STORAGE_ASSETS_FS_DIRECTORY` becomes `PENPOT_OBJECTS_STORAGE_FS_DIRECTORY`
- The `PENPOT_STORAGE_ASSETS_S3_BUCKET` becomes `PENPOT_OBJECTS_STORAGE_S3_BUCKET`
- The `PENPOT_STORAGE_ASSETS_S3_REGION` becomes `PENPOT_OBJECTS_STORAGE_S3_REGION`
- The `PENPOT_STORAGE_ASSETS_S3_ENDPOINT` becomes `PENPOT_OBJECTS_STORAGE_S3_ENDPOINT`
- The `PENPOT_STORAGE_ASSETS_S3_IO_THREADS` replaced (see below)
- Add `PENPOT_NETTY_IO_THREADS` and `PENPOT_EXECUTOR_THREADS` variables to provide the
control over concurrency of the shared resources used by netty. Penpot uses the netty IO
threads for AWS S3 SDK and Redis/Valkey communication, and the EXEC threads to perform
out of HTTP serving threads tasks such that cache invalidation, S3 response completion,
configuration reloading and many other auxiliar tasks. By default they use a half number
if available cpus with a minumum of 2 for both executors. You should not touch that
variables unless you are know what you are doing.
- Replace the `PENPOT_STORAGE_ASSETS_S3_IO_THREADS` with a more general configuration
`PENPOT_NETTY_IO_THREADS` used to configure a shared netty resources across different
services which use netty internally (redis connection, S3 SDK client). This
configuration is not very commonly used so don't expected real impact on any user.
### :heart: Community contributions (Thank you!)
### :sparkles: New features & Enhancements
- Show current Penpot version [Taiga #11603](https://tree.taiga.io/project/penpot/us/11603)
- Switch several variant copies at the same time [Taiga #11411](https://tree.taiga.io/project/penpot/us/11411)
- Invitations management improvements [Taiga #3479](https://tree.taiga.io/project/penpot/us/3479)
- Alternative ways of creating variants - Button Viewport [Taiga #11931](https://tree.taiga.io/project/penpot/us/11931)
### :bug: Bugs fixed
- Fix selection problems when devtools open [Taiga #11950](https://tree.taiga.io/project/penpot/issue/11950)
- Fix long font names overlap [Taiga #11844](https://tree.taiga.io/project/penpot/issue/11844)
- Fix paste behavior according to the selected element [Taiga #11979](https://tree.taiga.io/project/penpot/issue/11979)
- Fix problem with export size [Github #7160](https://github.com/penpot/penpot/issues/7160)
- Fix multi level library dependencies [Taiga #12155](https://tree.taiga.io/project/penpot/issue/12155)
- Fix component context menu options order in assets tab [Taiga #11941](https://tree.taiga.io/project/penpot/issue/11941)
## 2.10.0
### :rocket: Epics and highlights
- Variants
### :boom: Breaking changes & Deprecations
### :heart: Community contributions (Thank you!)
### :sparkles: New features & Enhancements
- Add efficiency enhancements to right sidebar [Github #7182](https://github.com/penpot/penpot/pull/7182)
- Add defaults for artboard drawing [Taiga #494](https://tree.taiga.io/project/penpot/us/494?milestone=465047)
- Continuous display of distances between elements when moving a layer with the keyboard [Taiga #1780](https://tree.taiga.io/project/penpot/us/1780)
- New Number token - unitless values [Taiga #10936](https://tree.taiga.io/project/penpot/us/10936)
- New font-family token [Taiga #10937](https://tree.taiga.io/project/penpot/us/10937)
- New text case token [Taiga #10942](https://tree.taiga.io/project/penpot/us/10942)
- New text-decoration token [Taiga #10941](https://tree.taiga.io/project/penpot/us/10941)
- New letter spacing token [Taiga #10940](https://tree.taiga.io/project/penpot/us/10940)
- New font weight token [Taiga #10939](https://tree.taiga.io/project/penpot/us/10939)
- Upgrade Node to v22.18.0 [Github #7283](https://github.com/penpot/penpot/pull/7283)
- Upgrade the base docker image for penpot frontend to v1.29.1 [Github #7283](https://github.com/penpot/penpot/pull/7283)
- Create variant from an existing component [Taiga #2088](https://tree.taiga.io/project/penpot/us/2088)
- Create variant from an existing variant [Taiga #8282](https://tree.taiga.io/project/penpot/us/8282)
- Actions over a component with variants [Taiga #10503](https://tree.taiga.io/project/penpot/us/10503)
- Create a variant by dragging a component into a component with variants [Taiga #8134](https://tree.taiga.io/project/penpot/us/8134)
- Transform a variant into an individual component [Taiga #8141](https://tree.taiga.io/project/penpot/us/8141)
- Delete variant [Taiga #6890](https://tree.taiga.io/project/penpot/us/6890)
- Restore an orphaned copy of a variant [Taiga #10446](https://tree.taiga.io/project/penpot/us/10446)
- Add, Edit & Delete variant properties name and value [Taiga #6892](https://tree.taiga.io/project/penpot/us/6892)
- Retrieve variants [Taiga #6888](https://tree.taiga.io/project/penpot/us/6888)
- Retrieve variants with nested components [Taiga #10277](https://tree.taiga.io/project/penpot/us/10277)
- Create variants in bulk from existing components [Taiga #7926](https://tree.taiga.io/project/penpot/us/7926)
- Alternative ways of creating variants - Button Design Tab [Taiga #10316](https://tree.taiga.io/project/penpot/us/10316)
- Fix problem with component swapping panel [Taiga #12175](https://tree.taiga.io/project/penpot/issue/12175)
### :bug: Bugs fixed
- Display strokes information in inspect tab [Taiga #11154](https://tree.taiga.io/project/penpot/issue/11154)
- Fix problem with booleans selection [Taiga #11627](https://tree.taiga.io/project/penpot/issue/11627)
- Fix missing font when copy&paste a chunk of text [Taiga #11522](https://tree.taiga.io/project/penpot/issue/11522)
- Fix bad swap slot after two swaps [Taiga #11659](https://tree.taiga.io/project/penpot/issue/11659)
- Fix missing package for the `penpot_exporter` Docker image [GitHub #7205](https://github.com/penpot/penpot/issues/7025)
- Fix issue where multiple dropdown menus could be opened simultaneously on the dashboard page [Taiga #11500](https://tree.taiga.io/project/penpot/issue/11500)
- Fix font size/variant not updated when editing a text [Taiga #11552](https://tree.taiga.io/project/penpot/issue/11552)
- Fix issue where Alt + arrow keys shortcut interferes with letter-spacing when moving text layers [Taiga #11552](https://tree.taiga.io/project/penpot/issue/11771)
- Fix consistency issues on how font variants are visualized [Taiga #11499](https://tree.taiga.io/project/penpot/us/11499)
- Fix parsing rx and ry SVG values for rect radius [Taiga #11861](https://tree.taiga.io/project/penpot/issue/11861)
- Fix misleading affordance in saved versions [Taiga #11887](https://tree.taiga.io/project/penpot/issue/11887)
- Fix pasting RTF text crashes penpot [Taiga #11717](https://tree.taiga.io/project/penpot/issue/11717)
- Fix navigation arrows in Libraries & Templates carousel [Taiga #10609](https://tree.taiga.io/project/penpot/issue/10609)
- Fix applying tokens with zero value to size [Taiga #11618](https://tree.taiga.io/project/penpot/issue/11618)
- Fix typo [Taiga #11969](https://tree.taiga.io/project/penpot/issue/11969)
- Fix typo [Taiga #11970](https://tree.taiga.io/project/penpot/issue/11970)
- Fix typos [Taiga #11971](https://tree.taiga.io/project/penpot/issue/11971)
- Fix inconsistent naming for "Flatten" [Taiga #8371](https://tree.taiga.io/project/penpot/issue/8371)
- Layout item tokens should be unapplied when moving out of a layout [Taiga #11012](https://tree.taiga.io/project/penpot/issue/11012)
- Fix incorrect date displayed for support plan [Taiga #11986](https://tree.taiga.io/project/penpot/issue/11986)
- Fix can't import 'borderWidth' type token [#132](https://github.com/tokens-studio/penpot/issues/132)
- Fix moving elements up or down while pressing alt [Taiga Issue #11992](https://tree.taiga.io/project/penpot/issue/11992)
- Fix conflicting shortcuts (remove dec/inc line height and letter spacing) [Taiga #12102](https://tree.taiga.io/project/penpot/issue/12102)
- Fix conflicting shortcuts (remove text-align shortcuts) [Taiga #12047](https://tree.taiga.io/project/penpot/issue/12047)
- Fix export file with empty tokens library [Taiga #12137](https://tree.taiga.io/project/penpot/issue/12137)
- Fix context menu on spacing tokens [Taiga #12141](https://tree.taiga.io/project/penpot/issue/12141)
## 2.9.0
### :rocket: Epics and highlights
### :boom: Breaking changes & Deprecations
### :heart: Community contributions (Thank you!)
- Clarify message when inviting existing team members to make it more user-friendly and clear which invitations will be sent. [Taiga #11441](https://tree.taiga.io/project/penpot/issue/11441) by [@iprithvitharun](https://github.com/iprithvitharun)
- Update email change confirmation message for clarity and correct grammar. [GitHub #6786](https://github.com/penpot/penpot/issues/6786) by [@iprithvitharun](https://github.com/iprithvitharun)
### :sparkles: New features & Enhancements
- Add visual indicator for new comments in the workspace [Taiga #11328](https://tree.taiga.io/project/penpot/issue/11328)
- On components overrides, separate the content of the text from the rest of properties [Taiga #7434](https://tree.taiga.io/project/penpot/us/7434)
- Improve dashboard's sidebar [Taiga #10700](https://tree.taiga.io/project/penpot/us/10700)
- Change "Save color" button to primary button [Taiga #9410](https://tree.taiga.io/project/penpot/issue/9410)
- Support for exif rotated images [GitHub #6767](https://github.com/penpot/penpot/issues/6767)
- Display Blend Mode and Layer Opacity properties in the Inspect tab [Taiga #11283](https://tree.taiga.io/project/penpot/issue/11283)
- Provide CSS `mix-blend-mode` property in code editor when present on shape [Taiga #11282](https://tree.taiga.io/project/penpot/issue/11282)
- Add the option to import tokens in a .zip file. [Taiga #11378](https://tree.taiga.io/project/penpot/us/11378)
- New typography token type - font size token [Taiga #10938](https://tree.taiga.io/project/penpot/us/10938)
- Hide bounding box while editing visual effects [Taiga #11576](https://tree.taiga.io/project/penpot/issue/11576)
- Improved text layer resizing: Allow double-click on text bounding box to set auto-width/auto-height [Taiga #11577](https://tree.taiga.io/project/penpot/issue/11577)
- Improve text layer auto-resize: auto-width switches to auto-height on horizontal resize, and only switches to fixed on vertical resize [Taiga #11578](https://tree.taiga.io/project/penpot/issue/11578)
- Add the ability to show login dialog on profile settings [Github #6871](https://github.com/penpot/penpot/pull/6871)
- Improve the application of tokens with object specific tokens [Taiga #10209](https://tree.taiga.io/project/penpot/us/10209)
- Add info to apply-token event [Taiga #11710](https://tree.taiga.io/project/penpot/task/11710)
- Fix double click on set name input [Taiga #11747](https://tree.taiga.io/project/penpot/issue/11747)
### :bug: Bugs fixed
- Copying font size does not copy the unit [Taiga #11143](https://tree.taiga.io/project/penpot/issue/11143)
- Fix text-decoration line-through that displays a wrong property value [Taiga #11145](https://tree.taiga.io/project/penpot/issue/11145)
- Fix display error message on register form [Taiga #11444](https://tree.taiga.io/project/penpot/issue/11444)
- Fix toggle focus mode did not restore viewport and selection upon exit [GitHub #6280](https://github.com/penpot/penpot/issues/6820)
- Fix problem when creating a layout from an existing layout [Taiga #11554](https://tree.taiga.io/project/penpot/issue/11554)
- Fix title button from Title Case to Capitalize [Taiga #11476](https://tree.taiga.io/project/penpot/issue/11476)
- Fix touchpad swipe leading to navigating back/forth [GitHub #4246](https://github.com/penpot/penpot/issues/4246)
- Keep color data when copying from info tab into CSS [Taiga #11144](https://tree.taiga.io/project/penpot/issue/11144)
- Update HSL values to modern syntax as defined in W3C CSS Color Module Level 4 [Taiga #11144](https://tree.taiga.io/project/penpot/issue/11144)
- Fix main component receives focus and is selected when using 'Show Main Component' [Taiga #11402](https://tree.taiga.io/project/penpot/issue/11402)
- Fix UI theme selection from main menu [Taiga #11567](https://tree.taiga.io/project/penpot/issue/11567)
- Fix duplicating pages with mainInstance shapes nested inside groups [Taiga #10774](https://tree.taiga.io/project/penpot/issue/10774)
- Fix ESC key not closing Add/Manage Libraries modal [Taiga #11523](https://tree.taiga.io/project/penpot/issue/11523)
- Fix copying a shadow color from info tab [Taiga #11211](https://tree.taiga.io/project/penpot/issue/11211)
- Fix remove color button in the gradient editor [Taiga #11623](https://tree.taiga.io/project/penpot/issue/11623)
- Fix "Copy as SVG" generates different code from the Inspect panel [Taiga #11519](https://tree.taiga.io/project/penpot/issue/11519)
- Fix overriden tokens in text copies are not preserved [Taiga #11486](https://tree.taiga.io/project/penpot/issue/11486)
- Fix problem when changing between flex/grid layout [Taiga #11625](https://tree.taiga.io/project/penpot/issue/11625)
- Fix opacity on stroke gradients [Taiga #11646](https://tree.taiga.io/project/penpot/issue/11646)
- Fix change from gradient to solid color [Taiga #11648](https://tree.taiga.io/project/penpot/issue/11648)
- Fix the context menu always closes after any action [Taiga #11624](https://tree.taiga.io/project/penpot/issue/11624)
- Fix X & Y position do not sincronize with tokens [Taiga #11617](https://tree.taiga.io/project/penpot/issue/11617)
- Fix tooltip position after first time [Taiga #11688](https://tree.taiga.io/project/penpot/issue/11688)
- Fix inconsistent ordering of pinned projects on dashboard sidebar [Taiga #11674](https://tree.taiga.io/project/penpot/issue/11674)
- Fix export button width on inspect tab [Taiga #11394](https://tree.taiga.io/project/penpot/issue/11394)
- Fix stroke width token application [Taiga #11724](https://tree.taiga.io/project/penpot/issue/11724)
- Fix number token application on shape [Taiga #11331](https://tree.taiga.io/project/penpot/task/11331)
- Fix auto height is fixed in the HTML inspect tab for text elements [Taiga #11680](https://tree.taiga.io/project/penpot/task/11680)
## 2.8.1
### :bug: Bugs fixed
- Fix unexpected exception on processing old texts [Github #6889](https://github.com/penpot/penpot/pull/6889)
- Fix error on inspect tab when selecting multiple shapes [Taiga #11655](https://tree.taiga.io/project/penpot/issue/11655)
- Fix missing package for the penport_exporter Docker image [GitHub #7205](https://github.com/penpot/penpot/issues/7025)
## 2.8.0
### :rocket: Epics and highlights
### :boom: Breaking changes & Deprecations
**Penpot Library**
The initial prototype is completly reworked to provide a more consistent API
and to have proper validation and params decoding. All the details can be found
on [its own changelog](library/CHANGES.md)
**Penpot migrate from Redis to Valkey**
As [Valkey](https://valkey.io/) is an opne-souce fork of [Redis](https://redis.io/)
version 7.2.4, this version of Penpot will be compatible with Redis but may diverge
in future versions. Therefore, **migration from Redis to ValKey is recommended for all
on-premises instances** that want to keep up to date.
### :heart: Community contributions (Thank you!)
- Add Serbian language [GitHub #5002](https://github.com/penpot/penpot/issues/5002) by [crnobog69](https://github.com/crnobog69)
### :sparkles: New features & Enhancements
- Optimize profile setup flow for better user experience [Taiga #10028](https://tree.taiga.io/project/penpot/us/10028)
- Rewrite path shape data PathData encoding [Taiga #8542](https://tree.taiga.io/project/penpot/us/8542?milestone=441308)
- Update base image for Docker Backend and Exporter to Ubuntu 24.04
- Update base image for Docker Frontend to Nginx 1.28.0
- Allow multi file token import [Github #27](https://github.com/tokens-studio/penpot/issues/27)
- Create `input*` wrapper component, and `label*`, `input-field*` and `hint-message*` components [Taiga #10713](https://tree.taiga.io/project/penpot/us/10713)
- Deselect layers (and path nodes) with Ctrl+Shift+Drag [Github #2509](https://github.com/penpot/penpot/issues/2509)
- Copy to SVG from contextual menu [Github #838](https://github.com/penpot/penpot/issues/838)
- Add styles for Inkeep Chat at workspace [Taiga #10708](https://tree.taiga.io/project/penpot/us/10708)
- Add configuration for air gapped installations with Docker
- Support system color scheme [Github #5030](https://github.com/penpot/penpot/issues/5030)
- Persist ruler visibility across files and reloads [GitHub #4586](https://github.com/penpot/penpot/issues/4586)
- Update google fonts (at 2025/05/19) [Taiga 10792](https://tree.taiga.io/project/penpot/us/10792)
- Add tooltip component to DS [Taiga 9220](https://tree.taiga.io/project/penpot/us/9220)
- Allow multi file token export [Taiga #10144](https://tree.taiga.io/project/penpot/us/10144)
- Fix problem when double click on hidden shapes [Taiga #11314](https://tree.taiga.io/project/penpot/issue/11314)
### :bug: Bugs fixed
- Fix getCurrentUser for plugins api [Taiga #11057](https://tree.taiga.io/project/penpot/issue/11057)
- Fix spacing / sizes of different elements in the measurements section of the design tab [Taiga #11076](https://tree.taiga.io/project/penpot/issue/11076)
- Fix selection of short paths [Github #4472](https://github.com/penpot/penpot/issues/4472)
- Fix element positioning on the right side to adjust to grid [#11073](https://tree.taiga.io/project/penpot/issue/11073)
- Fix palette is over sidebar [#11160](https://tree.taiga.io/project/penpot/issue/11160)
- Fix font size input not displaying "mixed" when multiple texts are selected [Taiga #11177](https://tree.taiga.io/project/penpot/issue/11177)
- Misalignments at Create account [Taiga #11315](https://tree.taiga.io/project/penpot/issue/11315)
- Fix issue with importing files where flex/grid is used [Taiga #11334](https://tree.taiga.io/project/penpot/issue/11334)
- Fix wrong color in the export progress bar [Taiga #11299](https://tree.taiga.io/project/penpot/issue/11299)
- Fix right sidebar width overflow on long layer names [Taiga #11212](https://tree.taiga.io/project/penpot/issue/11212)
- Fix comment icon fill [Taiga #11388](https://tree.taiga.io/project/penpot/issue/11388)
- Fix gap on radio-buttons component [Taiga #11360](https://tree.taiga.io/project/penpot/issue/11360)
- Fix button width [Taiga #11394](https://tree.taiga.io/project/penpot/issue/11394)
- Fix mixed letter spacing and line height [Taiga #11178](https://tree.taiga.io/project/penpot/issue/11178)
- Fix snap nodes shortcut [Taiga #11054](https://tree.taiga.io/project/penpot/issue/11054)
- Fix changing a text property in a text layer does not unapply the previously applied token in the same property [Taiga #11337](https://tree.taiga.io/project/penpot/issue/11337)
- Fix shortcut error pressing G+W from the View Mode [Taiga #11061](https://tree.taiga.io/project/penpot/issue/11061)
- Fix entering long project name [Taiga #11417](https://tree.taiga.io/project/penpot/issue/11417)
- Fix slow color picker [Taiga #11019](https://tree.taiga.io/project/penpot/issue/11019)
- Fix tooltip position after click [Taiga #11405](https://tree.taiga.io/project/penpot/issue/11405)
- Fix incorrect media translation on paste text with fill images [Github #6845](https://github.com/penpot/penpot/pull/6845)
## 2.7.2
### :bug: Bugs fixed
- Update plugins runtime [Github #6604](https://github.com/penpot/penpot/pull/6604)
- Backport from develop a minor fix that enables import of files
generated by penpot library [Github #6614](https://github.com/penpot/penpot/pull/6614)
- Fix copy in error message [GitHub #6615](https://github.com/penpot/penpot/pull/6615)
- Fix url on invitation link [Taiga #11284](https://tree.taiga.io/project/penpot/issue/11284)
## 2.7.1
### :bug: Bugs fixed
- Fix incorrect handling of strokes with images on importing files
- Fix tokens disappearing after manual additions [Taiga #11063](https://tree.taiga.io/project/penpot/issue/11063)
## 2.7.0
### :rocket: Epics and highlights
### :boom: Breaking changes & Deprecations
### :heart: Community contributions (Thank you!)
- Design improvements to the Invitations page with an empty state [GitHub #2608](https://github.com/penpot/penpot/issues/2608) by [@iprithvitharun](https://github.com/iprithvitharun)
### :sparkles: New features
- Update board presets with a newer devices [Taiga #10610](https://tree.taiga.io/project/penpot/us/10610)
- Propagate "sharing a prototype" to editors and viewers [Taiga #8853](https://tree.taiga.io/project/penpot/us/8853)
- Design improvements to the Invitations page with an empty state [Taiga #4554](https://tree.taiga.io/project/penpot/us/4554)
- Duplicate token sets [Taiga #10694](https://tree.taiga.io/project/penpot/issue/10694)
- Add set selection in create Token themes flow [Taiga #10746](https://tree.taiga.io/project/penpot/issue/10746)
- Display indicator on not active sets [Taiga #10668](https://tree.taiga.io/project/penpot/issue/10668)
### :bug: Bugs fixed
- Fix "at" icon to match all icons on app [Taiga #11136](https://tree.taiga.io/project/penpot/issue/11136)
- Fix problem in viewer with the back button [Taiga #10907](https://tree.taiga.io/project/penpot/issue/10907)
- Fix resize bar background on tokens panel [Taiga #10811](https://tree.taiga.io/project/penpot/issue/10811)
- Fix shortcut for history version panel [Taiga #11006](https://tree.taiga.io/project/penpot/issue/11006)
- Fix positioning of comment drafts when near the right / bottom edges of viewport [Taiga #10534](https://tree.taiga.io/project/penpot/issue/10534)
- Fix path having a wrong selrect [Taiga #10257](https://tree.taiga.io/project/penpot/issue/10257)
- Fix SVG `stroke-linecap` property when importing SVGs [Taiga #9489](https://tree.taiga.io/project/penpot/issue/9489)
- Fix position problems cutting-pasting a component [Taiga #10677](https://tree.taiga.io/project/penpot/issue/10677)
- Fix design tab has a horizontal scroll [Taiga #10660](https://tree.taiga.io/project/penpot/issue/10660)
- Fix long file names being clipped when longer than allowed length [Taiga #10662](https://tree.taiga.io/project/penpot/issue/10662)
- Fix problem with error detail in toast [Taiga #10519](https://tree.taiga.io/project/penpot/issue/10519)
- Fix view mode error when an external user tries to export something from a prototype using a shared link [Taiga #10251](https://tree.taiga.io/project/penpot/issue/10251)
- Fix merge path nodes with only one node selected [Taiga #9626](https://tree.taiga.io/project/penpot/issue/9626)
- Fix problem with import errors [Taiga #10040](https://tree.taiga.io/project/penpot/issue/10040)
- Fix color gradient on texts [Taiga Issue #7488](https://tree.taiga.io/project/penpot/issue/7488)
- Add support for self mentions [Taiga #10809](https://tree.taiga.io/project/penpot/issue/10809)
- Fix team info settings alignment [Taiga #10869](https://tree.taiga.io/project/penpot/issue/10869)
- Fix left sidebar horizontal scroll on nested layers [Taiga #10791](https://tree.taiga.io/project/penpot/issue/10791)
- Improve error message details importing tokens [Taiga Issue #10772](https://tree.taiga.io/project/penpot/issue/10772)
- Fix no selected set after Drag & Drop [Github #71](https://github.com/tokens-studio/penpot/issues/71)
- Styledictionary v5 Update [Github #6283](https://github.com/penpot/penpot/pull/6283)
- Fix Rename a set throws an internal error [Github #78](https://github.com/tokens-studio/penpot/issues/78)
- Fix Out of Sync Token Value & Color Picker [Github #102](https://github.com/tokens-studio/penpot/issues/102)
- Fix Color should preserve color space [Github #69](https://github.com/tokens-studio/penpot/issues/69)
- Fix cannot rename Design Token Sets when group of same name exists [Taiga Issue #10773](https://tree.taiga.io/project/penpot/issue/10773)
- Fix problem when duplicating grid layout [Github #6391](https://github.com/penpot/penpot/issues/6391)
- Fix issue that makes workspace shortcuts stop working [Taiga #11062](https://tree.taiga.io/project/penpot/issue/11062)
- Fix problem while syncing library colors and typographies [Taiga #11068](https://tree.taiga.io/project/penpot/issue/11068)
- Fix problem with path edition of shapes [Taiga #9496](https://tree.taiga.io/project/penpot/issue/9496)
- Fix exception on paste invalid html [Taiga #11047](https://tree.taiga.io/project/penpot/issue/11047)
- Fix share button being displayed with no permissions [Taiga #11086](https://tree.taiga.io/project/penpot/issue/11086)
- Fix inline styles in code tab [Taiga Issue #7583](https://tree.taiga.io/project/penpot/issue/7583)
- Fix exception on returning openapi.json
- Fix json encoding of TokensLib [Taiga #10994](https://tree.taiga.io/project/penpot/issue/10994)
## 2.6.2
### :bug: Bugs fixed
- Increase the height of the right sidebar dropdowns [Taiga #10615](https://tree.taiga.io/project/penpot/issue/10615)
- Fix scroll on token themes modal [Taiga #10745](https://tree.taiga.io/project/penpot/issue/10745)
- Fix collapsing grouped sets in "edit Theme" closes the dialog [Taiga #10771](https://tree.taiga.io/project/penpot/issue/10771)
- Fix unexpected exception on path editor on merge segments when undo stack is empty
- Fix pricing CTA to be under a config flag [Taiga #10808](https://tree.taiga.io/project/penpot/issue/10808)
- Fix allow moving a main component into another [Taiga #10818](https://tree.taiga.io/project/penpot/issue/10818)
- Fix several issues with internal srepl helpers
- Fix unexpected exception on template import from libraries
- Fix incorrect uuid parsing from different parts of code
- Fix update layout on component restore [Taiga #10637](https://tree.taiga.io/project/penpot/issue/10637)
- Fix horizontal scroll in viewer [Github #6290](https://github.com/penpot/penpot/issues/6290)
- Fix detach component in a particular case [Taiga #10837](https://tree.taiga.io/project/penpot/issue/10837)
## 2.6.1
### :bug: Bugs fixed
- Fix webhooks not shown in list [Taiga #10763](https://tree.taiga.io/project/penpot/issue/10763)
- Fix colorpicker scroll when dropdown displayed [Taiga #10696](https://tree.taiga.io/project/penpot/issue/10696)
- Clean internal workspace state on exit or url changed [Taiga #10619](https://tree.taiga.io/project/penpot/issue/10619)
## 2.6.0
### :rocket: Epics and highlights
- Design Tokens
### :boom: Breaking changes & Deprecations
### :heart: Community contributions (Thank you!)
### :sparkles: New features
- [COMMENTS] "Mark All as Read" Functionality in Dashboard [Taiga #9235](https://tree.taiga.io/project/penpot/us/9235)
- [COMMENTS] Bubble Groups [Taiga #9236](https://tree.taiga.io/project/penpot/us/9236)
- Change templates carrousel [Taiga #9803](https://tree.taiga.io/project/penpot/us/9803)
- [DESIGN TOKENS] Tokens CRUD. Types added: Color, Opacity, Border radius, Dimension, Sizing, Spacing, Rotation and Stroke.
- [DESIGN TOKENS] Create references (alias) that point to other tokens.
- [DESIGN TOKENS] Math operations in token values.
- [DESIGN TOKENS] Sets CRUD, grouping and reordering.
- [DESIGN TOKENS] Multidimensional Themes and Sets management.
- [DESIGN TOKENS] Apply/Remove tokens to/from elements from the Tokens tab.
- [DESIGN TOKENS] Integration with components.
- [DESIGN TOKENS] Import and export tokens from a JSON file.
- [DESIGN TOKENS] Apply Themes and Sets at document level.
- Add more descriptive tooltip to boards for first time users [Taiga #9426](https://tree.taiga.io/project/penpot/us/9426)
- First State of a Project Changes Consolidation [Taia #10605](https://tree.taiga.io/project/penpot/us/10605)
### :bug: Bugs fixed
- Fix opacity in frame containers [Github #5858](https://github.com/penpot/penpot/pull/5858)
- Avoid resizing on click [Taiga #10213](https://tree.taiga.io/project/penpot/issue/10213)
- Hide horizontal scroll from dashboard sidebar [Taiga #10422](https://tree.taiga.io/project/penpot/issue/10422)
- Fix cut and paste a copy a cmponent inside its parent [Taiga #10365](https://tree.taiga.io/project/penpot/us/10365)
- Fix duplicate page with component over frame [Taiga #8151](https://tree.taiga.io/project/penpot/issue/8151) and [Taiga #9698](https://tree.taiga.io/project/penpot/issue/9698)
- The plugin list in the navigation menu lacks scrolling, some plugins are not visible when a large number are installed [Taiga #9360](https://tree.taiga.io/project/penpot/us/9360)
- Fix hidden toolbar click event still available [Taiga #10437](https://tree.taiga.io/project/penpot/us/10437)
- Fix hovering over templates [Taiga #10545](https://tree.taiga.io/project/penpot/issue/10545)
- Fix problem with default shadows value in plugins [Plugins #191](https://github.com/penpot/penpot-plugins/issues/191)
- Fix problem with constraints when creating group [Taiga #10455](https://tree.taiga.io/project/penpot/issue/10455)
- Fix opening pen with shortcut multiple times breaks toolbar [Taiga #10566](https://tree.taiga.io/project/penpot/issue/10566)
- Fix actions when workspace is visited first time [Taiga #10548](https://tree.taiga.io/project/penpot/issue/10548)
- Chat icon overlaps "Show" button in carrousel section [Taiga #10542](https://tree.taiga.io/project/penpot/issue/10542)
- Fix assets name on inspect tab [Taiga #10630](https://tree.taiga.io/project/penpot/issue/10630)
- Fix chat icon overlaps "Show" button in carrousel section [Taiga #10542](https://tree.taiga.io/project/penpot/issue/10542)
- Fix incorrect handling of background task result (now task rows are properly marked as completed)
- Fix available size of resize handler [Taiga #10639](https://tree.taiga.io/project/penpot/issue/10639)
- Internal error when install a plugin by penpothub - Try plugin [Taiga #10542](https://tree.taiga.io/project/penpot/issue/10542)
- Add character limitation to asset inputs [Taiga #10669](https://tree.taiga.io/project/penpot/issue/10669)
- Fix Storybook link 'list of all available icons' wrong path [Taiga #10705](https://tree.taiga.io/project/penpot/issue/10705)
## 2.5.4
### :heart: Community contributions (Thank you!)
- Add support for WEBP format on shape export [Github #6053](https://github.com/penpot/penpot/pull/6053) and [Github #6074](https://github.com/penpot/penpot/pull/6074)
### :bug: Bugs fixed
- Fix feature loading on workspace when opening a file in a background
tab [Taiga #10377](https://tree.taiga.io/project/penpot/issue/10377)
- Fix minor inconsistencies on RPC `get-file-libraries` and `get-file`
methods (add missing team-id prop)
- Fix problem with viewer role and inspect mode [Taiga #9751](https://tree.taiga.io/project/penpot/issue/9751)
- Fix error when clicking on a comment at the viewer's sidebar [Taiga #10465](https://tree.taiga.io/project/penpot/issue/10465)
## 2.5.3
### :bug: Bugs fixed
- Component sync issues with multiple tabs [Taiga #10471](https://tree.taiga.io/project/penpot/issue/10471)
## 2.5.2
### :sparkles: New features
- When the workspace is empty, set default the board creation tool [Taiga #9425](https://tree.taiga.io/project/penpot/us/9425)
### :bug: Bugs fixed
- Fix scroll on storybook docs [taiga #9962](https://tree.taiga.io/project/penpot/issue/9962)
- Navigate tracking event firing multiple times [Taiga #10415](https://tree.taiga.io/project/penpot/issue/10415)
- Fix problem with selection colors [Taiga #10376](https://tree.taiga.io/project/penpot/issue/10376)
- Fix scroll on storybook icons list [taiga #9962](https://tree.taiga.io/project/penpot/issue/9962)
## 2.5.1
### :sparkles: New features
- Improve Nginx entryponit to get the resolvers dinamically by default
## 2.5.0
### :boom: Breaking changes & Deprecations
Although this is not a breaking change, we believe it's important to highlight it in this
section:
This release includes a fix for an internal bug in Penpot that caused incorrect handling
of media assets (e.g., fill images). The issue has been resolved since version 2.4.3, so
no new incorrect references will be generated. However, existing files may still contain
incorrect references.
To address this, we've provided a script to correct these references in existing files.
While having incorrect references generally doesn't result in visible issues, there are
rare cases where it can cause problems. For example, if a component library (containing
images) is deleted, and that library is being used in other files, running the FileGC task
(responsible for freeing up space and performing logical deletions) could leave those
files with broken references to the images.
To execute script:
```bash
docker exec -ti <container-name-or-id> ./run.sh app.migrations.media-refs '{:max-jobs 1}'
```
If you have a big database and many cores available, you can reduce the time of processing
all files by increasing paralelizacion changing the `max-jobs` value from 1 to N (where N
is a number of cores)
### :sparkles: New features
- [GRADIENTS] New gradients UI with multi-stop support. [Taiga #3418](https://tree.taiga.io/project/penpot/epic/3418)
- [GRADIENTS] Radial Gradient [Taiga #8768](https://tree.taiga.io/project/penpot/us/8768)
- Shareable link pointing to an specific board. [Taiga #3219](https://tree.taiga.io/project/penpot/us/3219)
- Copy styles in CSS [Taiga #9401](https://tree.taiga.io/project/penpot/us/9401)
- Copy/paste shape styles (fills, strokes, shadows, etc..) [Taiga #8937](https://tree.taiga.io/project/penpot/us/8937)
- Copy text content to clipboard [Taiga #9970](https://tree.taiga.io/project/penpot/us/9970?milestone=424203)
- Resize board to fit content option [Taiga #4707](https://tree.taiga.io/project/penpot/us/4707)
- Rename selected layer via Board name [Taiga #9430](https://tree.taiga.io/project/penpot/us/9430)
- [COMMENTS] Mention Functionality with and Sidebar Filters [Taiga #9237](https://tree.taiga.io/project/penpot/us/9237)
- [COMMENTS] Visual Changes in Comments [Taiga #9234](https://tree.taiga.io/project/penpot/us/9234)
- [COMMENTS] Notifications in Backend, Profile Section, and Mention Email Notification [Taiga #9233](https://tree.taiga.io/project/penpot/us/9233)
### :bug: Bugs fixed
- Fix menu shadow color [Taiga #10102](https://tree.taiga.io/project/penpot/issue/10102)
- Fix missing state refresh on notifications update [Taiga #10253](https://tree.taiga.io/project/penpot/issue/10253)
- Fix icon visualization on select component [Taiga #8889](https://tree.taiga.io/project/penpot/issue/8889)
- Fix typo on integration tests docs [Taiga #10112](https://tree.taiga.io/project/penpot/issue/10112)
- Fix menu shadow color [Taiga #10102](https://tree.taiga.io/project/penpot/issue/10102)
- Fix problem with alt key measures being stuck [Taiga #9348](https://tree.taiga.io/project/penpot/issue/9348)
- Fix error when reseting stroke cap
- Fix problem with strokes not refreshing in Safari [Taiga #9040](https://tree.taiga.io/project/penpot/issue/9040)
- Fix problem with multiple color changes [Taiga #9631](https://tree.taiga.io/project/penpot/issue/9631)
- Fix create new layers in a component copy [Taiga #10037](https://tree.taiga.io/project/penpot/issue/10037)
- Fix problem in plugins with zoomIntoView [Plugins #189](https://github.com/penpot/penpot-plugins/issues/189)
- Fix problem in plugins with renaming components [Taiga #10060](https://tree.taiga.io/project/penpot/issue/10060)
- Added upload svg with images method [#5489](https://github.com/penpot/penpot/issues/5489)
- Fix problem with root frame parent reference [Taiga #9437](https://tree.taiga.io/project/penpot/issue/9437)
- Fix change flex direction using plugins API [Taiga #9407](https://tree.taiga.io/project/penpot/issue/9407)
- Fix problem opening url when page-id didn't exist [Taiga #10157](https://tree.taiga.io/project/penpot/issue/10157)
- Fix problem with onboarding to a team [Taiga #10143](https://tree.taiga.io/project/penpot/issue/10143)
- Fix problem with grid layout crashing [Taiga #10127](https://tree.taiga.io/project/penpot/issue/10127)
- Fix rename locked boards [Taiga #10174](https://tree.taiga.io/project/penpot/issue/10174)
- Fix update-libraries dialog disappear when clicking outside [Taiga #10238](https://tree.taiga.io/project/penpot/issue/10238)
- Fix incorrect handling of team access requests with deleted/recreated users
- Fix incorect handling of profile settings related to invitation notifications [Taiga #10252](https://tree.taiga.io/project/penpot/issue/10252)
## 2.4.3
### :bug: Bugs fixed
- Fix errors from editable select on measures menu [Taiga #9888](https://tree.taiga.io/project/penpot/issue/9888)
- Fix exception on importing some templates from templates slider
- Consolidate adding share button to workspace
- Fix problem when pasting text [Taiga #9929](https://tree.taiga.io/project/penpot/issue/9929)
- Fix incorrect media reference handling on component instantiation
## 2.4.2
### :bug: Bugs fixed
- Fix detach when top copy is dangling and nested copy is not [Taiga #9699](https://tree.taiga.io/project/penpot/issue/9699)
- Fix problem in plugins with `replaceColor` method [#174](https://github.com/penpot/penpot-plugins/issues/174)
- Fix issue with recursive commponents [Taiga #9903](https://tree.taiga.io/project/penpot/issue/9903)
- Fix missing methods reference on API Docs
- Fix memory usage issue on file-gc asynchronous task (related to snapshots feature)
## 2.4.1
### :bug: Bugs fixed
- Fix error when importing files with touched components [Taiga #9625](https://tree.taiga.io/project/penpot/issue/9625)
- Fix problem when changing color libraries [Plugins #184](https://github.com/penpot/penpot-plugins/issues/184)
## 2.4.0
### :rocket: Epics and highlights
### :boom: Breaking changes & Deprecations
- Use [nginx-unprivileged](https://hub.docker.com/r/nginxinc/nginx-unprivileged) as base image for
Penpot's frontend docker image. Now all the docker images runs with the same unprivileged user
(penpot). Because of that, the default NGINX listen port is now 8080 instead of 80, so
you will have to modify your infrastructure to apply this change.
- Redis 7.2 is explicitly pinned in our example docker-compose.yml file. This is done because,
starting with the next versions, Redis is no longer distributed under an open-source license.
On-premise users are obviously free to upgrade to the version they are using or a more modern one.
Keep in mind that if you were using a version other than 7.2, you may have to recreate the volume
associated with the Redis container because the 7.2 storage format may not be compatible with what
you already have stored on the volume, and Redis may not start. In the near future, we will evaluate
whether to move to an open-source version of Redis (such as https://valkey.io/).
### :heart: Community contributions (Thank you!)
### :sparkles: New features
- Viewer role for team members [Taiga #1056](https://tree.taiga.io/project/penpot/us/1056) & [Taiga #6590](https://tree.taiga.io/project/penpot/us/6590)
- File history versions management [Taiga #187](https://tree.taiga.io/project/penpot/us/187?milestone=411120)
- Rename selected layer via keyboard shortcut and context menu option [Taiga #8882](https://tree.taiga.io/project/penpot/us/8882)
- New .penpot file format [Taiga #8657](https://tree.taiga.io/project/penpot/us/8657)
### :bug: Bugs fixed
- Fix problem with some texts desynchronization [Taiga #9379](https://tree.taiga.io/project/penpot/issue/9379)
- Fix problem with reoder grid layers [#5446](https://github.com/penpot/penpot/issues/5446)
- Fix problem with swap component style [#9542](https://tree.taiga.io/project/penpot/issue/9542)
## 2.3.3
### :bug: Bugs fixed
@@ -19,7 +584,6 @@
- Add initial documentation for Kubernetes
## 2.3.1
### :bug: Bugs fixed
@@ -27,7 +591,6 @@
- Fix unexpected issue on interaction between plugins sandbox and
internal impl of promise
## 2.3.0
### :rocket: Epics and highlights
@@ -53,7 +616,6 @@
You can enable it with the `enable-feature-text-editor-v2` configuration flag.
### :bug: Bugs fixed
- Fix problem with constraints buttons [Taiga #8465](https://tree.taiga.io/project/penpot/issue/8465)
@@ -93,8 +655,8 @@
### :boom: Breaking changes & Deprecations
- Removed "merge assets" option when exporting ".svg + .json" files. After the components changes the option wasn't
working properly and we're planning to change the format soon. We think it's better to deprecate the option for the
time being.
working properly and we're planning to change the format soon. We think it's better to deprecate the option for the
time being.
### :heart: Community contributions (Thank you!)
@@ -110,7 +672,7 @@ time being.
freeing up space in the database. It can be enabled with the
`enable-enable-tiered-file-data-storage` flag.
*(On-Premise feature, EXPERIMENTAL).*
_(On-Premise feature, EXPERIMENTAL)._
- **JSON Interoperability for HTTP API** [Taiga #8372](https://tree.taiga.io/project/penpot/us/8372)
@@ -153,7 +715,7 @@ time being.
- **Design System**
We implemented and subbed in new components from our Design System: `loader*` ([Taiga #8355](https://tree.taiga.io/project/penpot/task/8355)) and `tab-switcher*` ([Taiga #8518](https://tree.taiga.io/project/penpot/task/8518)).
We implemented and subbed in new components from our Design System: `loader*` ([Taiga #8355](https://tree.taiga.io/project/penpot/task/8355)) and `tab-switcher*` ([Taiga #8518](https://tree.taiga.io/project/penpot/task/8518)).
- **Storybook** [Taiga #6329](https://tree.taiga.io/project/penpot/us/6329)
@@ -176,6 +738,7 @@ time being.
- Fix problem with comments max length [Taiga #8778](https://tree.taiga.io/project/penpot/issue/8778)
- Fix copy/paste images in Safari [Taiga #8771](https://tree.taiga.io/project/penpot/issue/8771)
- Fix swap when the copy is the only child of a group [#5075](https://github.com/penpot/penpot/issues/5075)
- Fix file builder hangs when exporting [#5099](https://github.com/penpot/penpot/issues/5099)
## 2.1.5
@@ -207,11 +770,11 @@ time being.
### :sparkles: New features
- Consolidate templates new order and naming [Taiga #8392](https://tree.taiga.io/project/penpot/task/8392)
- Consolidate templates new order and naming [Taiga #8392](https://tree.taiga.io/project/penpot/task/8392)
### :bug: Bugs fixed
- Fix the search label in translations [Taiga #8402](https://tree.taiga.io/project/penpot/issue/8402)
- Fix the "search" label in translations [Taiga #8402](https://tree.taiga.io/project/penpot/issue/8402)
- Fix pencil loader [Taiga #8348](https://tree.taiga.io/project/penpot/issue/8348)
- Fix several issues on the OIDC.
- Fix regression on the `email-verification` flag [Taiga #8398](https://tree.taiga.io/project/penpot/issue/8398)
@@ -291,22 +854,21 @@ time being.
- Fix color palette sorting [Taiga #7458](https://tree.taiga.io/project/penpot/issue/7458)
- Fix style scoping problem with imported SVG [Taiga #7671](https://tree.taiga.io/project/penpot/issue/7671)
## 2.0.1
### :bug: Bugs fixed
- Fix different issues related to components v2 migrations including [Github #4443](https://github.com/penpot/penpot/issues/4443)
## 2.0.0 - I Just Can't Get Enough
### :rocket: Epics and highlights
- Grid CSS layout [Taiga #4915](https://tree.taiga.io/project/penpot/epic/4915)
- UI redesign [Taiga #4958](https://tree.taiga.io/project/penpot/epic/4958)
- New components System [Taiga #2662](https://tree.taiga.io/project/penpot/epic/2662)
- Swap components [Taiga #1331](https://tree.taiga.io/project/penpot/us/1331)
- Images as fill [Taiga #2983](https://tree.taiga.io/project/penpot/us/2983)
- Images as fill [Taiga #2983](https://tree.taiga.io/project/penpot/us/2983)
- HTML code generation [Taiga #5277](https://tree.taiga.io/project/penpot/us/5277)
- Light and dark themes [Taiga #2287](https://tree.taiga.io/project/penpot/us/2287)
@@ -315,9 +877,9 @@ time being.
- New strokes default to inside border [Taiga #6847](https://tree.taiga.io/project/penpot/issue/6847)
- Change default z ordering on layers in flex layout. The previous behavior was inconsistent with how HTML works and we changed it to be more consistent. Previous layers that overlapped could be hidden, the fastest way to fix this is changing the z-index property but a better way is to change the order of your layers.
### :heart: Community contributions (Thank you!)
- New Hausa, Yoruba and Igbo translations and update translation files (by All For Tech Empowerment Foundation) [Taiga #6950](https://tree.taiga.io/project/penpot/us/6950), [Taiga #6534](https://tree.taiga.io/project/penpot/us/6534)
- New Hausa, Yoruba and Igbo translations and update translation files (by All For Tech Empowerment Foundation) [Taiga #6950](https://tree.taiga.io/project/penpot/us/6950), [Taiga #6534](https://tree.taiga.io/project/penpot/us/6534)
- Hide bounding-box when editing shape (by @VasilevsVV) [#3930](https://github.com/penpot/penpot/pull/3930)
- CTRL + "+" to zoom into canvas instead of browser (by @audriu) [#3848](https://github.com/penpot/penpot/pull/3848)
- Add dev deps.edn in the project root (by @PEZ) [#3794](https://github.com/penpot/penpot/pull/3794)
@@ -326,6 +888,7 @@ time being.
- Typo (by StephanEggermont) [#157](https://github.com/penpot/penpot-docs/pull/157)
### :sparkles: New features
- Send comments with Ctrl+Enter / Cmd + Enter [Taiga #6085](https://tree.taiga.io/project/penpot/issue/6085)
- Select through stroke only rectangle [Taiga #5484](https://tree.taiga.io/project/penpot/issue/5484)
- Stroke default position [Taiga #6847](https://tree.taiga.io/project/penpot/issue/6847)
@@ -393,6 +956,7 @@ time being.
- [REDESIGN] Onboarding slides [Taiga #6678](https://tree.taiga.io/project/penpot/us/6678)
### :bug: Bugs fixed
- Fix pixelated thumbnails [Github #3681](https://github.com/penpot/penpot/issues/3681), [Github #3661](https://github.com/penpot/penpot/issues/3661)
- Fix problem with not applying colors to boards [Github #3941](https://github.com/penpot/penpot/issues/3941)
- Fix problem with path editor undoing changes [Github #3998](https://github.com/penpot/penpot/issues/3998)
@@ -401,7 +965,7 @@ time being.
- Selecting from Color Palette does not work for board when there is no existing fill [Taiga #6464](https://tree.taiga.io/project/penpot/issue/6464)
- Color thumbnails are consistently rounded in the inspect code mode [Taiga #5886](https://tree.taiga.io/project/penpot/issue/5886)
- Adding vector path points before first point of existing open path not working [Taiga #6593](https://tree.taiga.io/project/penpot/issue/6593)
- Some image formats include the extension when importing [Taiga #5485](https://tree.taiga.io/project/penpot/issue/5485)
- Some image formats include the extension when importing [Taiga #5485](https://tree.taiga.io/project/penpot/issue/5485)
- Gradient color tool doesn't work properly with flipped items [Taiga #6485](https://tree.taiga.io/project/penpot/issue/6485)
- [TEXT] Align options are not shown when several text are selected [Taiga #5948](https://tree.taiga.io/project/penpot/issue/5948)
- [VIEW MODE] Comments not working properly on multiple pages [Taiga #6281](https://tree.taiga.io/project/penpot/issue/6281)
@@ -445,7 +1009,7 @@ time being.
### :sparkles: New features
- Improve selected colors [Taiga #5805]( https://tree.taiga.io/project/penpot/us/5805)
- Improve selected colors [Taiga #5805](https://tree.taiga.io/project/penpot/us/5805)
### :bug: Bugs fixed
@@ -480,7 +1044,6 @@ time being.
- Fix deleted pages comments shown in right sidebar [Taiga #5648](https://tree.taiga.io/project/penpot/us/5648)
- Fix tooltip on toggle visibility and toggle lock buttons [Taiga #5141](https://tree.taiga.io/project/penpot/issue/5141)
## 1.19.1
### :bug: Bugs fixed
@@ -594,7 +1157,6 @@ time being.
- Update google fonts catalog (at 2023/07/06) [Taiga #5592](https://tree.taiga.io/project/penpot/issue/5592)
### :heart: Community contributions by (Thank you!)
- Update Typography palette order (by @akshay-gupta7) [Github #3156](https://github.com/penpot/penpot/pull/3156)
@@ -748,12 +1310,14 @@ time being.
- Fix problem with opacity in imported SVG's [Taiga #4923](https://tree.taiga.io/project/penpot/issue/4923)
### :heart: Community contributions by (Thank you!)
- To @ondrejkonec: for contributing to the code with:
- Refactor CSS variables [Github #2948](https://github.com/penpot/penpot/pull/2948)
## 1.17.3
### :bug: Bugs fixed
- Fix copy and paste very nested inside itself [Taiga #4848](https://tree.taiga.io/project/penpot/issue/4848)
- Fix custom fonts not rendered correctly [Taiga #4874](https://tree.taiga.io/project/penpot/issue/4874)
- Fix problem with shadows and blur on multiple selection
@@ -786,6 +1350,7 @@ time being.
## 1.17.1
### :bug: Bugs fixed
- Fix components groups items show the component name in list mode [Taiga #4770](https://tree.taiga.io/project/penpot/issue/4770)
- Fix typing CMD+Z on MacOS turns the cursor into a Zoom cursor [Taiga #4778](https://tree.taiga.io/project/penpot/issue/4778)
- Fix white space on small screens [Taiga #4774](https://tree.taiga.io/project/penpot/issue/4774)
@@ -900,7 +1465,7 @@ time being.
### :boom: Breaking changes & Deprecations
- Removed the support for v2 internal file data blob format. This
- Removed the support for v2 internal file data blob format. This
version has never been documented nor set as default value so
technically this is not a breaking change because we are removing
a "private API".
@@ -1005,7 +1570,6 @@ time being.
- Fix when ungrouping, the items previously grouped should ALWAYS remain selected [Taiga #4064](https://tree.taiga.io/project/penpot/issue/4064)
- Change shortcut for "Clear undo" [#2219](https://github.com/penpot/penpot/issues/2219)
## 1.15.2-beta
### :bug: Bugs fixed
@@ -1089,6 +1653,7 @@ time being.
- Fix bringing complete file data when launching the export dialog [Taiga #4006](https://tree.taiga.io/project/penpot/issue/4006)
### :arrow_up: Deps updates
### :heart: Community contributions by (Thank you!)
## 1.14.2-beta
@@ -1129,10 +1694,10 @@ time being.
- Prototype connection should be under the rules [Taiga #3384](https://tree.taiga.io/project/penpot/issue/3384)
- Fix problem with empty text boxes events [Taiga #3627](https://tree.taiga.io/project/penpot/issue/3627)
## 1.13.5-beta
### :bug: Bugs fixed
- Fix orientation artboard preset not working with differently sized artboards [Taiga #3548](https://tree.taiga.io/project/penpot/issue/3548)
- Fix background on export arboards [Taiga #1991](https://tree.taiga.io/project/penpot/issue/1991)
@@ -1276,6 +1841,7 @@ time being.
- Fix problem when resizing a group with texts with auto-width/height [#3171](https://tree.taiga.io/project/penpot/issue/3171)
### :arrow_up: Deps updates
### :heart: Community contributions by (Thank you!)
## 1.12.4-beta
@@ -1293,7 +1859,7 @@ time being.
### :bug: Bugs fixed
- Fix issue with shift+select to deselect shapes [Taiga #3154](https://tree.taiga.io/project/penpot/issue/3154)
- Fix issue with drag-select shapes [Taiga #3165](https://tree.taiga.io/project/penpot/issue/3165)
- Fix issue with drag-select shapes [Taiga #3165](https://tree.taiga.io/project/penpot/issue/3165)
- Fix issue on password persistence after registration process on private instances
## 1.12.2-beta
@@ -1311,7 +1877,6 @@ time being.
- Fix length of names in sidebar [Taiga #2962](https://tree.taiga.io/project/penpot/issue/2962)
- Fix issues on loki integration
## 1.12.0-beta
### :boom: Breaking changes

3
CODE_OF_CONDUCT.md Normal file
View File

@@ -0,0 +1,3 @@
# Penpot's Code of Conduct
Check it at: https://help.penpot.app/contributing-guide/coc/

View File

@@ -1,62 +1,59 @@
# Contributing Guide #
Thank you for your interest in contributing to Penpot. This is a
generic guide that details how to contribute to Penpot in a way that
is efficient for everyone. If you want a specific documentation for
different parts of the platform, please refer to `docs/` directory.
generic guide that details how to contribute to the project in a way that
is efficient for everyone. If you are looking for specific documentation on
different parts of the platform, please refer to the `docs/` directory,
or the rendered version at the [Help Center](https://help.penpot.app/).
## Reporting Bugs ##
We are using [GitHub Issues](https://github.com/penpot/penpot/issues)
for our public bugs. We keep a close eye on this and try to make it
for our public bugs. We keep a close eye on them and try to make it
clear when we have an internal fix in progress. Before filing a new
task, try to make sure your problem doesn't already exist.
If you found a bug, please report it, as far as possible with:
If you found a bug, please report it, as far as possible, with:
- a detailed explanation of steps to reproduce the error
- a browser and the browser version used
- a dev tools console exception stack trace (if it is available)
- the browser and browser version used
- a dev tools console exception stack trace (if available)
If you found a bug that you consider better discuss in private (for
example: security bugs), consider first send an email to
If you found a bug which you think is better to discuss in private (for
example, security bugs), consider first sending an email to
`support@penpot.app`.
**We don't have formal bug bounty program for security reports; this
is an open source application and your contribution will be recognized
**We don't have a formal bug bounty program for security reports; this
is an open source application, and your contribution will be recognized
in the changelog.**
## Pull requests ##
## Pull Requests ##
If you want propose a change or bug fix with the Pull-Request system
firstly you should carefully read the **DCO** section and format your
commits accordingly.
If you want to propose a change or bug fix via a pull request (PR),
you should first carefully read the section **Developer's Certificate of
Origin**. You must also format your code and commits according to the
instructions below.
If you intend to fix a bug it's fine to submit a pull request right
away but we still recommend to file an issue detailing what you're
If you intend to fix a bug, it's fine to submit a pull request right
away, but we still recommend filing an issue detailing what you're
fixing. This is helpful in case we don't accept that specific fix but
want to keep track of the issue.
If you want to implement or start working in a new feature, please
open a **question** / **discussion** issue for it. No pull-request
will be accepted without previous chat about the changes,
independently if it is a new feature, already planned feature or small
quick win.
If you want to implement or start working on a new feature, please
open a **question*- / **discussion*- issue for it. No PR
will be accepted without a prior discussion about the changes,
whether it is a new feature, an already planned one, or a quick win.
If is going to be your first pull request, You can learn how from this
free video series:
https://egghead.io/courses/how-to-contribute-to-an-open-source-project-on-github
We will use the `easy fix` mark for tag for indicate issues that are
easy for beginners.
If it is your first PR, you can learn how to proceed from
[this free video
series](https://egghead.io/courses/how-to-contribute-to-an-open-source-project-on-github)
We use the `easy fix` tag to indicate issues that are appropriate for beginners.
## Commit Guidelines ##
We have very precise rules over how our git commit messages can be formatted.
We have very precise rules on how our git commit messages must be formatted.
The commit message format is:
@@ -71,33 +68,37 @@ The commit message format is:
Where type is:
- :bug: `:bug:` a commit that fixes a bug
- :sparkles: `:sparkles:` a commit that an improvement
- :tada: `:tada:` a commit with new feature
- :sparkles: `:sparkles:` a commit that adds an improvement
- :tada: `:tada:` a commit with a new feature
- :recycle: `:recycle:` a commit that introduces a refactor
- :lipstick: `:lipstick:` a commit with cosmetic changes
- :ambulance: `:ambulance:` a commit that fixes critical bug
- :ambulance: `:ambulance:` a commit that fixes a critical bug
- :books: `:books:` a commit that improves or adds documentation
- :construction: `:construction:`: a wip commit
- :construction: `:construction:` a WIP commit
- :boom: `:boom:` a commit with breaking changes
- :wrench: `:wrench:` a commit for config updates
- :zap: `:zap:` a commit with performance improvements
- :whale: `:whale:` a commit for docker related stuff
- :rewind: `:rewind:` a commit that reverts changes
- :paperclip: `:paperclip:` a commit with other not relevant changes
- :arrow_up: `:arrow_up:` a commit with dependencies updates
- :whale: `:whale:` a commit for Docker-related stuff
- :paperclip: `:paperclip:` a commit with other non-relevant changes
- :arrow_up: `:arrow_up:` a commit with dependency updates
- :arrow_down: `:arrow_down:` a commit with dependency downgrades
- :fire: `:fire:` a commit that removes files or code
- :globe_with_meridians: `:globe_with_meridians:` a commit that adds or updates
translations
More info:
- https://gist.github.com/parmentf/035de27d6ed1dce0b36a
- https://gist.github.com/rxaviers/7360908
Each commit should have:
- A concise subject using imperative mood.
- The subject should have capitalized the first letter, without period
at the end and no larger than 65 characters.
- A concise subject using the imperative mood.
- The subject should capitalize the first letter, omit the period
at the end, and be no longer than 65 characters.
- A blank line between the subject line and the body.
- An entry on the CHANGES.md file if applicable, referencing the
github or taiga issue/user-story using the these same rules.
- An entry in the CHANGES.md file if applicable, referencing the
GitHub or Taiga issue/user story using these same rules.
Examples of good commit messages:
@@ -110,8 +111,30 @@ Examples of good commit messages:
- `:ambulance: Fix critical bug on user registration process`
- `:tada: Add new approach for user registration`
## Formatting and Linting ##
## Code of conduct ##
You will want to make sure your code is formatted and linted before submitting
a PR. We use [cljfmt](https://github.com/weavejester/cljfmt) and
[clj-kondo](https://github.com/clj-kondo/clj-kondo) for this. After installing
them on your system, you can run them with:
```bash
# Check formatting
yarn fmt:clj:check
# Check and fix formatting
yarn fmt:clj
# Run the linter
yarn lint:clj
```
There are more choices in `package.json`.
Ideally, you should run these commands as git pre-commit hooks. A convenient way
of defining them is to use [Husky](https://typicode.github.io/husky/#/).
## Code of Conduct ##
As contributors and maintainers of this project, we pledge to respect
all people who contribute through reporting issues, posting feature
@@ -131,11 +154,11 @@ unprofessional conduct.
Project maintainers have the right and responsibility to remove, edit,
or reject comments, commits, code, wiki edits, issues, and other
contributions that are not aligned to this Code of Conduct. Project
contributions that are not aligned with this Code of Conduct. Project
maintainers who do not follow the Code of Conduct may be removed from
the project team.
This code of conduct applies both within project spaces and in public
This Code of Conduct applies both within project spaces and in public
spaces when an individual is representing the project or its
community.
@@ -144,12 +167,11 @@ may be reported by opening an issue or contacting one or more of the
project maintainers.
This Code of Conduct is adapted from the Contributor Covenant, version
1.1.0, available from http://contributor-covenant.org/version/1/1/0/
1.1.0, available from [http://contributor-covenant.org/version/1/1/0/](http://contributor-covenant.org/version/1/1/0/)
## Developer's Certificate of Origin (DCO)
## Developer's Certificate of Origin (DCO) ##
By submitting code you are agree and can certify the below:
By submitting code you agree to and can certify the following:
Developer's Certificate of Origin 1.1
@@ -177,13 +199,15 @@ By submitting code you are agree and can certify the below:
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
Then, all your code patches (**documentation are excluded**) should
Then, all your code patches (**documentation is excluded**) should
contain a sign-off at the end of the patch/commit description body. It
can be automatically added on adding `-s` parameter to `git commit`.
can be automatically added by adding the `-s` parameter to `git commit`.
This is an example of the aspect of the line:
This is an example of what the line should look like:
Signed-off-by: Andrey Antukh <niwi@niwi.nz>
```
Signed-off-by: Andrey Antukh <niwi@niwi.nz>
```
Please, use your real name (sorry, no pseudonyms or anonymous
contributions are allowed).

View File

@@ -10,42 +10,44 @@
<p align="center">
<a href="https://www.mozilla.org/en-US/MPL/2.0" rel="nofollow"><img alt="License: MPL-2.0" src="https://img.shields.io/badge/MPL-2.0-blue.svg" style="max-width:100%;"></a>
<a href="https://gitter.im/penpot/community" rel="nofollow"><img alt="Gitter" src="https://badges.gitter.im/sereno-xyz/community.svg" style="max-width:100%;"></a>
<a href="https://community.penpot.app" rel="nofollow"><img alt="Penpot Community" src="https://img.shields.io/discourse/posts?server=https%3A%2F%2Fcommunity.penpot.app" style="max-width:100%;"></a>
<a href="https://tree.taiga.io/project/penpot/" title="Managed with Taiga.io" rel="nofollow"><img alt="Managed with Taiga.io" src="https://img.shields.io/badge/managed%20with-TAIGA.io-709f14.svg" style="max-width:100%;"></a>
<a href="https://gitpod.io/#https://github.com/penpot/penpot" rel="nofollow"><img alt="Gitpod ready-to-code" src="https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod" style="max-width:100%;"></a>
</p>
<p align="center">
<a href="https://penpot.app/"><b>Website</b></a> •
<a href="https://help.penpot.app/technical-guide/getting-started/"><b>Getting Started</b></a> •
<a href="https://help.penpot.app/user-guide/"><b>User Guide</b></a> •
<a href="https://help.penpot.app/user-guide/introduction/info/"><b>Tutorials & Info</b></a> •
<a href="https://penpot.app/"><b>Website</b></a> •
<a href="https://help.penpot.app/user-guide/"><b>User Guide</b></a> •
<a href="https://penpot.app/learning-center"><b>Learning Center</b></a> •
<a href="https://community.penpot.app/"><b>Community</b></a>
</p>
<p align="center">
<a href="https://www.youtube.com/@Penpot"><b>Youtube</b></a> •
<a href="https://peertube.kaleidos.net/a/penpot_app/video-channels"><b>Peertube</b></a> •
<a href="https://www.linkedin.com/company/penpot/"><b>Linkedin</b></a> •
<a href="https://instagram.com/penpot.app"><b>Instagram</b></a> •
<a href="https://fosstodon.org/@penpot/"><b>Mastodon</b></a> •
<a href="https://www.youtube.com/@Penpot"><b>Youtube</b></a> •
<a href="https://peertube.kaleidos.net/a/penpot_app/video-channels"><b>Peertube</b></a> •
<a href="https://www.linkedin.com/company/penpot/"><b>Linkedin</b></a> •
<a href="https://instagram.com/penpot.app"><b>Instagram</b></a> •
<a href="https://fosstodon.org/@penpot/"><b>Mastodon</b></a> •
<a href="https://bsky.app/profile/penpot.app"><b>Bluesky</b></a> •
<a href="https://twitter.com/penpotapp"><b>X</b></a>
</p>
<br />
[Penpot video](https://github.com/penpot/penpot/assets/5446186/b8ad0764-585e-4ddc-b098-9b4090d337cc)
[Penpot video](https://github.com/user-attachments/assets/7c67fd7c-04d3-4c9b-88ec-b6f5e23f8332
)
<br />
Penpot is the first **open-source** design tool for design and code collaboration. Designers can create stunning designs, interactive prototypes, design systems at scale, while developers enjoy ready-to-use code and make their workflow easy and fast. And all of this with no handoff drama.
Penpot is available on browser and [self host](https://penpot.app/self-host). Its web-based and works with open standards (SVG, CSS and HTML). And last but not least, its free!
Available on browser or self-hosted, Penpot works with open standards like SVG, CSS, HTML and JSON, and its free!
Penpots latest [huge release 2.0](https://penpot.app/dev-diaries), takes the platform to a whole new level. This update introduces the ground-breaking [CSS Grid Layout feature](https://penpot.app/penpot-2.0), a complete UI redesign, a new Components system, and much more. Plus, it's faster and more accessible.
The latest updates take Penpot even further. Its the first design tool to integrate native [design tokens](https://penpot.dev/collaboration/design-tokens)—a single source of truth to improve efficiency and collaboration between product design and development.
With the [huge 2.0 release](https://penpot.app/dev-diaries), Penpot took the platform to a whole new level. This update introduces the ground-breaking [CSS Grid Layout feature](https://penpot.app/penpot-2.0), a complete UI redesign, a new Components system, and much more.
For organizations that need extra service for its teams, [get in touch](https://cal.com/team/penpot/talk-to-us)
🎇 **Penpot Fest** is our design, code & Open Source event. Check out the highlights from [Penpot Fest 2023 edition](https://www.youtube.com/watch?v=sOpLZaK5mDc)!
🎇 Design, code, and Open Source meet at [Penpot Fest](https://penpot.app/penpotfest)! Be part of the 2025 edition in Madrid, Spain, on October 9-10.
## Table of contents ##
@@ -61,7 +63,7 @@ Penpots latest [huge release 2.0](https://penpot.app/dev-diaries), takes the
Penpot expresses designs as code. Designers can do their best work and see it will be beautifully implemented by developers in a two-way collaboration.
### Plugin system ###
[Penpot plugins](https://penpot.app/penpothub/plugins) let you expand the platform's capabilities, give you the flexibility to integrate it with other apps, and design custom solutions.
[Penpot plugins](https://penpot.app/penpothub/plugins) let you expand the platform's capabilities, give you the flexibility to integrate it with other apps, and design custom solutions.
### Designed for developers ###
Penpot was built to serve both designers and developers and create a fluid design-code process. You have the choice to enjoy real-time collaboration or play "solo".
@@ -75,23 +77,23 @@ Provide your team or organization with a completely owned collaborative design t
### Integrations ###
Penpot offers integration into the development toolchain, thanks to its support for webhooks and an API accessible through access tokens.
### Whats great for design ###
With Penpot you can design libraries to share and reuse; turn design elements into components and tokens to allow reusability and scalability; and build realistic user flows and interactions.
### Building Design Systems: design tokens, components and variants ###
Penpot brings design systems to code-minded teams: a single source of truth with native Design Tokens, Components, and Variants for scalable, reusable, and consistent UI across projects and platforms.
<br />
<p align="center">
<img src="https://img.plasmic.app/img-optimizer/v1/img?src=https%3A%2F%2Fimg.plasmic.app%2Fimg-optimizer%2Fv1%2Fimg%2F9dd677c36afb477e9666ccd1d3f009ad.png" alt="Open Source" style="width: 65%;">
<img src="https://github.com/user-attachments/assets/cce75ad6-f783-473f-8803-da9eb8255fef">
</p>
<br />
## Getting started ##
### Install with Elestio ###
Penpot is the only design & prototype platform that is deployment agnostic. You can use it or deploy it anywhere.
Penpot is the only design & prototype platform that is deployment agnostic. You can use it in our [SAAS](https://design.penpot.app) or deploy it anywhere.
Learn how to install it with Elestio and Docker, or other options on [our website](https://penpot.app/self-host).
Learn how to install it with Docker, Kubernetes, Elestio or other options on [our website](https://penpot.app/self-host).
<br />
<p align="center">
@@ -123,15 +125,21 @@ You will find the following categories:
</p>
<br />
### Code of Conduct ###
Anyone who contributes to Penpot, whether through code, in the community, or at an event, must adhere to the
[code of conduct](https://help.penpot.app/contributing-guide/coc/) and foster a positive and safe environment.
## Contributing ##
Any contribution will make a difference to improve Penpot. How can you get involved?
Any contribution will make a difference to improve Penpot. How can you get involved?
Choose your way:
Choose your way:
- Create and [share Libraries & Templates](https://penpot.app/libraries-templates.html) that will be helpful for the community
- Invite your [team to join](https://design.penpot.app/#/auth/register)
- Star this repo and follow us on Social Media: [Mastodon](https://fosstodon.org/@penpot/), [Youtube](https://www.youtube.com/c/Penpot), [Instagram](https://instagram.com/penpot.app), [Linkedin](https://www.linkedin.com/company/penpotdesign), [Peertube](https://peertube.kaleidos.net/a/penpot_app) and [X](https://twitter.com/penpotapp).
- Give this repo a star and follow us on Social Media: [Mastodon](https://fosstodon.org/@penpot/), [Youtube](https://www.youtube.com/c/Penpot), [Instagram](https://instagram.com/penpot.app), [Linkedin](https://www.linkedin.com/company/penpotdesign), [Peertube](https://peertube.kaleidos.net/a/penpot_app), [X](https://twitter.com/penpotapp) and [BlueSky](https://bsky.app/profile/penpot.app)
- Participate in the [Community](https://community.penpot.app/) space by asking and answering questions; reacting to others articles; opening your own conversations and following along on decisions affecting the project.
- Report bugs with our easy [guide for bugs hunting](https://help.penpot.app/contributing-guide/reporting-bugs/) or [GitHub issues](https://github.com/penpot/penpot/issues)
- Become a [translator](https://help.penpot.app/contributing-guide/translations)

View File

@@ -3,10 +3,10 @@
:deps
{penpot/common {:local/root "../common"}
org.clojure/clojure {:mvn/version "1.12.0-alpha12"}
org.clojure/clojure {:mvn/version "1.12.2"}
org.clojure/tools.namespace {:mvn/version "1.5.0"}
com.github.luben/zstd-jni {:mvn/version "1.5.6-3"}
com.github.luben/zstd-jni {:mvn/version "1.5.7-4"}
io.prometheus/simpleclient {:mvn/version "0.16.0"}
io.prometheus/simpleclient_hotspot {:mvn/version "0.16.0"}
@@ -17,33 +17,41 @@
io.prometheus/simpleclient_httpserver {:mvn/version "0.16.0"}
io.lettuce/lettuce-core {:mvn/version "6.3.2.RELEASE"}
io.lettuce/lettuce-core {:mvn/version "6.8.1.RELEASE"}
;; Minimal dependencies required by lettuce, we need to include them
;; explicitly because clojure dependency management does not support
;; yet the BOM format.
io.micrometer/micrometer-core {:mvn/version "1.14.2"}
io.micrometer/micrometer-observation {:mvn/version "1.14.2"}
java-http-clj/java-http-clj {:mvn/version "0.4.3"}
com.google.guava/guava {:mvn/version "33.4.8-jre"}
funcool/yetti
{:git/tag "v10.0"
:git/sha "520613f"
{:git/tag "v11.6"
:git/sha "94dc017"
:git/url "https://github.com/funcool/yetti.git"
:exclusions [org.slf4j/slf4j-api]}
com.github.seancorfield/next.jdbc {:mvn/version "1.3.939"}
metosin/reitit-core {:mvn/version "0.7.0"}
nrepl/nrepl {:mvn/version "1.1.2"}
cider/cider-nrepl {:mvn/version "0.48.0"}
com.github.seancorfield/next.jdbc
{:mvn/version "1.3.1070"}
org.postgresql/postgresql {:mvn/version "42.7.3"}
org.xerial/sqlite-jdbc {:mvn/version "3.46.0.0"}
metosin/reitit-core {:mvn/version "0.9.1"}
nrepl/nrepl {:mvn/version "1.4.0"}
com.zaxxer/HikariCP {:mvn/version "5.1.0"}
org.postgresql/postgresql {:mvn/version "42.7.7"}
org.xerial/sqlite-jdbc {:mvn/version "3.50.3.0"}
com.zaxxer/HikariCP {:mvn/version "7.0.2"}
io.whitfin/siphash {:mvn/version "2.0.0"}
buddy/buddy-hashers {:mvn/version "2.0.167"}
buddy/buddy-sign {:mvn/version "3.5.351"}
buddy/buddy-sign {:mvn/version "3.6.1-359"}
com.github.ben-manes.caffeine/caffeine {:mvn/version "3.1.8"}
com.github.ben-manes.caffeine/caffeine {:mvn/version "3.2.2"}
org.jsoup/jsoup {:mvn/version "1.17.2"}
org.jsoup/jsoup {:mvn/version "1.21.2"}
org.im4java/im4java
{:git/tag "1.4.0-penpot-2"
:git/sha "e2b3e16"
@@ -53,13 +61,12 @@
org.clojars.pntblnk/clj-ldap {:mvn/version "0.0.17"}
dawran6/emoji {:mvn/version "0.1.5"}
markdown-clj/markdown-clj {:mvn/version "1.12.1"}
dawran6/emoji {:mvn/version "0.2.0"}
markdown-clj/markdown-clj {:mvn/version "1.12.4"}
;; Pretty Print specs
pretty-spec/pretty-spec {:mvn/version "0.1.4"}
software.amazon.awssdk/s3 {:mvn/version "2.25.63"}
}
software.amazon.awssdk/s3 {:mvn/version "2.33.10"}}
:paths ["src" "resources" "target/classes"]
:aliases
@@ -74,12 +81,14 @@
:build
{:extra-deps
{io.github.clojure/tools.build {:git/tag "v0.10.3" :git/sha "15ead66"}}
{io.github.clojure/tools.build {:mvn/version "0.10.10"}}
:ns-default build}
:test
{:main-opts ["-m" "kaocha.runner"]
:jvm-opts ["-Dlog4j2.configurationFile=log4j2-devenv-repl.xml"]
:jvm-opts ["-Dlog4j2.configurationFile=log4j2-devenv-repl.xml"
"--sun-misc-unsafe-memory-access=allow"
"--enable-native-access=ALL-UNNAMED"]
:extra-deps {lambdaisland/kaocha {:mvn/version "1.91.1392"}}}
:outdated
@@ -88,8 +97,8 @@
:jmx-remote
{:jvm-opts ["-Dcom.sun.management.jmxremote"
"-Dcom.sun.management.jmxremote.port=9091"
"-Dcom.sun.management.jmxremote.rmi.port=9091"
"-Dcom.sun.management.jmxremote.port=9090"
"-Dcom.sun.management.jmxremote.rmi.port=9090"
"-Dcom.sun.management.jmxremote.local.only=false"
"-Dcom.sun.management.jmxremote.authenticate=false"
"-Dcom.sun.management.jmxremote.ssl=false"

View File

@@ -6,12 +6,14 @@
(ns user
(:require
[app.binfile.common :as bfc]
[app.common.data :as d]
[app.common.debug :as debug]
[app.common.exceptions :as ex]
[app.common.files.helpers :as cfh]
[app.common.fressian :as fres]
[app.common.geom.matrix :as gmt]
[app.common.json :as json]
[app.common.logging :as l]
[app.common.perf :as perf]
[app.common.pprint :as pp]
@@ -19,8 +21,9 @@
[app.common.schema.desc-js-like :as smdj]
[app.common.schema.desc-native :as smdn]
[app.common.schema.generators :as sg]
[app.common.schema.openapi :as oapi]
[app.common.spec :as us]
[app.common.json :as json]
[app.common.time :as ct]
[app.common.transit :as t]
[app.common.types.file :as ctf]
[app.common.uuid :as uuid]
@@ -30,9 +33,9 @@
[app.srepl.helpers :as srepl.helpers]
[app.srepl.main :as srepl]
[app.util.blob :as blob]
[app.util.time :as dt]
[clj-async-profiler.core :as prof]
[clojure.contrib.humanize :as hum]
[clojure.datafy :refer [datafy]]
[clojure.java.io :as io]
[clojure.pprint :refer [pprint print-table]]
[clojure.repl :refer :all]
@@ -137,7 +140,6 @@
;; :v6 v6
;; }])))
(defn calculate-frames
[{:keys [data]}]
(->> (vals (:pages-index data))

View File

@@ -4,7 +4,7 @@
"license": "MPL-2.0",
"author": "Kaleidos INC",
"private": true,
"packageManager": "yarn@4.3.1",
"packageManager": "yarn@4.9.2+sha512.1fc009bc09d13cfd0e19efa44cbfc2b9cf6ca61482725eb35bbc5e257e093ebf4130db6dfe15d604ff4b79efd8e1e8e99b25fa7d0a6197c9f9826358d4d65c3c",
"repository": {
"type": "git",
"url": "https://github.com/penpot/penpot"

View File

@@ -193,7 +193,7 @@
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div
style="font-family:Source Sans Pro, sans-serif;font-size:16px;line-height:150%;text-align:left;color:#000000;">
Click to the link below to confirm the change:</div>
Click the link below to confirm the change.</div>
</td>
</tr>
<tr>
@@ -217,8 +217,7 @@
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div
style="font-family:Source Sans Pro, sans-serif;font-size:16px;line-height:150%;text-align:left;color:#000000;">
If you received this email by mistake, please consider changing your password for security
reasons.</div>
If you did not request this change, consider changing your password for security reasons.</div>
</td>
</tr>
<tr>

View File

@@ -2,12 +2,11 @@ Hello {{name|abbreviate:25}}!
We received a request to change your current email to {{ pending-email }}.
Click to the link below to confirm the change:
Click the link below to confirm the change.
{{ public-uri }}/#/auth/verify-token?token={{token}}
If you received this email by mistake, please consider changing your password
for security reasons.
If you did not request this change, consider changing your password for security reasons.
Enjoy!
The Penpot team.

View File

@@ -0,0 +1,244 @@
<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office">
<head>
<title>
</title>
<!--[if !mso]><!-- -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!--<![endif]-->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type="text/css">
#outlook a {
padding: 0;
}
body {
margin: 0;
padding: 0;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
table,
td {
border-collapse: collapse;
mso-table-lspace: 0pt;
mso-table-rspace: 0pt;
}
img {
border: 0;
height: auto;
line-height: 100%;
outline: none;
text-decoration: none;
-ms-interpolation-mode: bicubic;
}
p {
display: block;
margin: 13px 0;
}
</style>
<!--[if mso]>
<xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:PixelsPerInch>96</o:PixelsPerInch>
</o:OfficeDocumentSettings>
</xml>
<![endif]-->
<!--[if lte mso 11]>
<style type="text/css">
.mj-outlook-group-fix { width:100% !important; }
</style>
<![endif]-->
<!--[if !mso]><!-->
<link href="https://fonts.googleapis.com/css?family=Source%20Sans%20Pro" rel="stylesheet" type="text/css">
<style type="text/css">
@import url(https://fonts.googleapis.com/css?family=Source%20Sans%20Pro);
</style>
<!--<![endif]-->
<style type="text/css">
@media only screen and (min-width:480px) {
.mj-column-per-100 {
width: 100% !important;
max-width: 100%;
}
.mj-column-px-425 {
width: 425px !important;
max-width: 425px;
}
}
</style>
<style type="text/css">
@media only screen and (max-width:480px) {
table.mj-full-width-mobile {
width: 100% !important;
}
td.mj-full-width-mobile {
width: auto !important;
}
}
</style>
</head>
<body style="background-color:#E5E5E5;">
<div style="background-color:#E5E5E5;">
<!--[if mso | IE]>
<table
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:0;text-align:center;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td
class="" style="vertical-align:top;width:600px;"
>
<![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix"
style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;"
width="100%">
<tr>
<td align="left" style="font-size:0px;padding:16px;word-break:break-word;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation"
style="border-collapse:collapse;border-spacing:0px;">
<tbody>
<tr>
<td style="width:97px;">
<img height="32" src="{{ public-uri }}/images/email/uxbox-title.png"
style="border:0;display:block;outline:none;text-decoration:none;height:32px;width:100%;font-size:13px;"
width="97" />
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<table
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="background:#FFFFFF;background-color:#FFFFFF;margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation"
style="background:#FFFFFF;background-color:#FFFFFF;width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:20px 0;text-align:center;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td
class="" style="vertical-align:top;width:600px;"
>
<![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix"
style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;"
width="100%">
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div
style="font-family:Source Sans Pro, sans-serif;font-size:24px;font-weight:600;line-height:150%;text-align:left;color:#000000;">
Hello {{name|abbreviate:25}}!</div>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div
style="font-family:Source Sans Pro, sans-serif;font-size:16px;line-height:150%;text-align:left;color:#000000;">
<span style="font-weight:bold;">{{ source-user }}</span> has mentioned you on a comment at "{{ comment-reference }}".</div>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Source Sans Pro, sans-serif;font-size:16px;font-style:italic;line-height:150%;text-align:left;color:#212426;
border-top: 1px solid #bfbfbf; border-bottom: 1px solid #bfbfbf; padding: 32px 0px;">
{{ comment-content }}
</div>
</td>
</tr>
<tr>
<td align="center" vertical-align="middle"
style="font-size:0px;padding:10px 25px;word-break:break-word;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation"
style="border-collapse:separate;line-height:100%;">
<tr>
<td align="center" bgcolor="#6911d4" role="presentation"
style="border:none;border-radius:8px;cursor:auto;mso-padding-alt:10px 25px;background:#6911d4;"
valign="middle">
<a href="{{ comment-url }}"
style="display:inline-block;background:#6911d4;color:#FFFFFF;font-family:Source Sans Pro, sans-serif;font-size:16px;font-weight:normal;line-height:120%;margin:0;text-decoration:none;text-transform:none;padding:10px 25px;mso-padding-alt:0px;border-radius:8px;"
target="_blank"> GO TO THE COMMENT </a>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div
style="font-family:Source Sans Pro, sans-serif;font-size:16px;line-height:150%;text-align:left;color:#000000;">
The Penpot team.</div>
</td>
</tr>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
{% include "app/email/includes/footer.html" %}
</div>
</body>
</html>

View File

@@ -0,0 +1 @@
Mentioned in comment

View File

@@ -0,0 +1,13 @@
Hello {{name|abbreviate:25}}!
{{ source-user }} has mentioned you on a comment at "{{ comment-reference }}".
--
{{ comment-content }}
--
{{ comment-url }}
The Penpot team.

View File

@@ -0,0 +1,244 @@
<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office">
<head>
<title>
</title>
<!--[if !mso]><!-- -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!--<![endif]-->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type="text/css">
#outlook a {
padding: 0;
}
body {
margin: 0;
padding: 0;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
table,
td {
border-collapse: collapse;
mso-table-lspace: 0pt;
mso-table-rspace: 0pt;
}
img {
border: 0;
height: auto;
line-height: 100%;
outline: none;
text-decoration: none;
-ms-interpolation-mode: bicubic;
}
p {
display: block;
margin: 13px 0;
}
</style>
<!--[if mso]>
<xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:PixelsPerInch>96</o:PixelsPerInch>
</o:OfficeDocumentSettings>
</xml>
<![endif]-->
<!--[if lte mso 11]>
<style type="text/css">
.mj-outlook-group-fix { width:100% !important; }
</style>
<![endif]-->
<!--[if !mso]><!-->
<link href="https://fonts.googleapis.com/css?family=Source%20Sans%20Pro" rel="stylesheet" type="text/css">
<style type="text/css">
@import url(https://fonts.googleapis.com/css?family=Source%20Sans%20Pro);
</style>
<!--<![endif]-->
<style type="text/css">
@media only screen and (min-width:480px) {
.mj-column-per-100 {
width: 100% !important;
max-width: 100%;
}
.mj-column-px-425 {
width: 425px !important;
max-width: 425px;
}
}
</style>
<style type="text/css">
@media only screen and (max-width:480px) {
table.mj-full-width-mobile {
width: 100% !important;
}
td.mj-full-width-mobile {
width: auto !important;
}
}
</style>
</head>
<body style="background-color:#E5E5E5;">
<div style="background-color:#E5E5E5;">
<!--[if mso | IE]>
<table
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:0;text-align:center;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td
class="" style="vertical-align:top;width:600px;"
>
<![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix"
style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;"
width="100%">
<tr>
<td align="left" style="font-size:0px;padding:16px;word-break:break-word;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation"
style="border-collapse:collapse;border-spacing:0px;">
<tbody>
<tr>
<td style="width:97px;">
<img height="32" src="{{ public-uri }}/images/email/uxbox-title.png"
style="border:0;display:block;outline:none;text-decoration:none;height:32px;width:100%;font-size:13px;"
width="97" />
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<table
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="background:#FFFFFF;background-color:#FFFFFF;margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation"
style="background:#FFFFFF;background-color:#FFFFFF;width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:20px 0;text-align:center;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td
class="" style="vertical-align:top;width:600px;"
>
<![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix"
style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;"
width="100%">
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div
style="font-family:Source Sans Pro, sans-serif;font-size:24px;font-weight:600;line-height:150%;text-align:left;color:#000000;">
Hello {{name|abbreviate:25}}!</div>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div
style="font-family:Source Sans Pro, sans-serif;font-size:16px;line-height:150%;text-align:left;color:#000000;">
<span style="font-weight:bold;">{{ source-user }}</span> has commented at "{{ comment-reference }}".</div>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Source Sans Pro, sans-serif;font-size:16px;font-style:italic;line-height:150%;text-align:left;color:#212426;
border-top: 1px solid #bfbfbf; border-bottom: 1px solid #bfbfbf; padding: 32px 0px;">
{{ comment-content }}
</div>
</td>
</tr>
<tr>
<td align="center" vertical-align="middle"
style="font-size:0px;padding:10px 25px;word-break:break-word;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation"
style="border-collapse:separate;line-height:100%;">
<tr>
<td align="center" bgcolor="#6911d4#31EFB8" role="presentation"
style="border:none;border-radius:8px;cursor:auto;mso-padding-alt:10px 25px;background:#6911d4;"
valign="middle">
<a href="{{ comment-url }}"
style="display:inline-block;background:#6911d4;color:#FFFFFF;font-family:Source Sans Pro, sans-serif;font-size:16px;font-weight:normal;line-height:120%;margin:0;text-decoration:none;text-transform:none;padding:10px 25px;mso-padding-alt:0px;border-radius:8px;"
target="_blank"> GO TO THE COMMENT </a>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div
style="font-family:Source Sans Pro, sans-serif;font-size:16px;line-height:150%;text-align:left;color:#000000;">
The Penpot team.</div>
</td>
</tr>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
{% include "app/email/includes/footer.html" %}
</div>
</body>
</html>

View File

@@ -0,0 +1 @@
New comment

View File

@@ -0,0 +1,13 @@
Hello {{name|abbreviate:25}}!
{{ source-user }} has commented at "{{ comment-reference }}".
--
{{ comment-content }}
--
{{ comment-url }}
The Penpot team.

View File

@@ -0,0 +1,244 @@
<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office">
<head>
<title>
</title>
<!--[if !mso]><!-- -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!--<![endif]-->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type="text/css">
#outlook a {
padding: 0;
}
body {
margin: 0;
padding: 0;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
table,
td {
border-collapse: collapse;
mso-table-lspace: 0pt;
mso-table-rspace: 0pt;
}
img {
border: 0;
height: auto;
line-height: 100%;
outline: none;
text-decoration: none;
-ms-interpolation-mode: bicubic;
}
p {
display: block;
margin: 13px 0;
}
</style>
<!--[if mso]>
<xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:PixelsPerInch>96</o:PixelsPerInch>
</o:OfficeDocumentSettings>
</xml>
<![endif]-->
<!--[if lte mso 11]>
<style type="text/css">
.mj-outlook-group-fix { width:100% !important; }
</style>
<![endif]-->
<!--[if !mso]><!-->
<link href="https://fonts.googleapis.com/css?family=Source%20Sans%20Pro" rel="stylesheet" type="text/css">
<style type="text/css">
@import url(https://fonts.googleapis.com/css?family=Source%20Sans%20Pro);
</style>
<!--<![endif]-->
<style type="text/css">
@media only screen and (min-width:480px) {
.mj-column-per-100 {
width: 100% !important;
max-width: 100%;
}
.mj-column-px-425 {
width: 425px !important;
max-width: 425px;
}
}
</style>
<style type="text/css">
@media only screen and (max-width:480px) {
table.mj-full-width-mobile {
width: 100% !important;
}
td.mj-full-width-mobile {
width: auto !important;
}
}
</style>
</head>
<body style="background-color:#E5E5E5;">
<div style="background-color:#E5E5E5;">
<!--[if mso | IE]>
<table
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:0;text-align:center;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td
class="" style="vertical-align:top;width:600px;"
>
<![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix"
style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;"
width="100%">
<tr>
<td align="left" style="font-size:0px;padding:16px;word-break:break-word;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation"
style="border-collapse:collapse;border-spacing:0px;">
<tbody>
<tr>
<td style="width:97px;">
<img height="32" src="{{ public-uri }}/images/email/uxbox-title.png"
style="border:0;display:block;outline:none;text-decoration:none;height:32px;width:100%;font-size:13px;"
width="97" />
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<table
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="background:#FFFFFF;background-color:#FFFFFF;margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation"
style="background:#FFFFFF;background-color:#FFFFFF;width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:20px 0;text-align:center;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td
class="" style="vertical-align:top;width:600px;"
>
<![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix"
style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;"
width="100%">
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div
style="font-family:Source Sans Pro, sans-serif;font-size:24px;font-weight:600;line-height:150%;text-align:left;color:#000000;">
Hello {{name|abbreviate:25}}!</div>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div
style="font-family:Source Sans Pro, sans-serif;font-size:16px;line-height:150%;text-align:left;color:#000000;">
<span style="font-weight:bold;">{{ source-user }}</span> has created a comment in a thread you've been mentioned at "{{ comment-reference }}".</div>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Source Sans Pro, sans-serif;font-size:16px;font-style:italic;line-height:150%;text-align:left;color:#212426;
border-top: 1px solid #bfbfbf; border-bottom: 1px solid #bfbfbf; padding: 32px 0px;">
{{ comment-content }}
</div>
</td>
</tr>
<tr>
<td align="center" vertical-align="middle"
style="font-size:0px;padding:10px 25px;word-break:break-word;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation"
style="border-collapse:separate;line-height:100%;">
<tr>
<td align="center" bgcolor="#6911d4#31EFB8" role="presentation"
style="border:none;border-radius:8px;cursor:auto;mso-padding-alt:10px 25px;background:#6911d4;"
valign="middle">
<a href="{{ comment-url }}"
style="display:inline-block;background:#6911d4;color:#FFFFFF;font-family:Source Sans Pro, sans-serif;font-size:16px;font-weight:normal;line-height:120%;margin:0;text-decoration:none;text-transform:none;padding:10px 25px;mso-padding-alt:0px;border-radius:8px;"
target="_blank"> GO TO THE COMMENT </a>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div
style="font-family:Source Sans Pro, sans-serif;font-size:16px;line-height:150%;text-align:left;color:#000000;">
The Penpot team.</div>
</td>
</tr>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
{% include "app/email/includes/footer.html" %}
</div>
</body>
</html>

View File

@@ -0,0 +1 @@
New response in comment

View File

@@ -0,0 +1,13 @@
Hello {{name|abbreviate:25}}!
{{ source-user }} has created a comment in a thread you've been mentioned at "{{ comment-reference }}".
--
{{ comment-content }}
--
{{ comment-url }}
The Penpot team.

View File

@@ -195,12 +195,12 @@
<table border="0" cellpadding="0" cellspacing="0" role="presentation"
style="border-collapse:separate;line-height:100%;">
<tr>
<td align="center" bgcolor="#31EFB8" role="presentation"
style="border:none;border-radius:3px;cursor:auto;mso-padding-alt:10px 25px;background:#31EFB8;"
<td align="center" bgcolor="#6911d4" role="presentation"
style="border:none;border-radius:8px;cursor:auto;mso-padding-alt:10px 25px;background:#6911d4;"
valign="middle">
<a href="{{ public-uri }}/#/auth/verify-token?token={{token}}"
style="display:inline-block;background:#31EFB8;color:#1F1F1F;font-family:Source Sans Pro, sans-serif;font-size:16px;font-weight:normal;line-height:120%;margin:0;text-decoration:none;text-transform:none;padding:10px 25px;mso-padding-alt:0px;border-radius:3px;"
target="_blank"> Accept invite </a>
style="display:inline-block;background:#6911d4;color:#FFFFFF;font-family:Source Sans Pro, sans-serif;font-size:16px;font-weight:normal;line-height:120%;margin:0;text-decoration:none;text-transform:none;padding:10px 25px;mso-padding-alt:0px;border-radius:8px;"
target="_blank"> ACCEPT INVITE </a>
</td>
</tr>
</table>

View File

@@ -1 +1 @@
Invitation to join {{team}}
{{invited-by|abbreviate:25}} has invited you to join the team “{{ team|abbreviate:25 }}

View File

@@ -196,12 +196,12 @@
<table border="0" cellpadding="0" cellspacing="0" role="presentation"
style="border-collapse:separate;line-height:100%;">
<tr>
<td align="center" bgcolor="#31EFB8" role="presentation"
style="border:none;border-radius:3px;cursor:auto;mso-padding-alt:10px 25px;background:#31EFB8;"
<td align="center" bgcolor="#6911d4" role="presentation"
style="border:none;border-radius:8px;cursor:auto;mso-padding-alt:10px 25px;background:#6911d4;"
valign="middle">
<a href="{{ public-uri }}/#/dashboard/team/{{team-id}}/projects"
style="display:inline-block;background:#31EFB8;color:#1F1F1F;font-family:Source Sans Pro, sans-serif;font-size:16px;font-weight:normal;line-height:120%;margin:0;text-decoration:none;text-transform:none;padding:10px 25px;mso-padding-alt:0px;border-radius:3px;"
target="_blank"> Go to the Team </a>
style="display:inline-block;background:#6911d4;color:#FFFFFF;font-family:Source Sans Pro, sans-serif;font-size:16px;font-weight:normal;line-height:120%;margin:0;text-decoration:none;text-transform:none;padding:10px 25px;mso-padding-alt:0px;border-radius:8px;"
target="_blank"> GO TO THE TEAM </a>
</td>
</tr>
</table>

View File

@@ -196,12 +196,12 @@
<table border="0" cellpadding="0" cellspacing="0" role="presentation"
style="border-collapse:separate;line-height:100%;">
<tr>
<td align="center" bgcolor="#31EFB8" role="presentation"
style="border:none;border-radius:3px;cursor:auto;mso-padding-alt:10px 25px;background:#31EFB8;"
<td align="center" bgcolor="#6911d4" role="presentation"
style="border:none;border-radius:8px;cursor:auto;mso-padding-alt:10px 25px;background:#6911d4;"
valign="middle">
<a href="{{ public-uri }}/#/auth/recovery?token={{token}}"
style="display:inline-block;background:#31EFB8;color:#1F1F1F;font-family:Source Sans Pro, sans-serif;font-size:16px;font-weight:normal;line-height:120%;margin:0;text-decoration:none;text-transform:none;padding:10px 25px;mso-padding-alt:0px;border-radius:3px;"
target="_blank"> Reset password </a>
style="display:inline-block;background:#6911d4;color:#FFFFFF;font-family:Source Sans Pro, sans-serif;font-size:16px;font-weight:normal;line-height:120%;margin:0;text-decoration:none;text-transform:none;padding:10px 25px;mso-padding-alt:0px;border-radius:8px;"
target="_blank"> RESET PASSWORD </a>
</td>
</tr>
</table>

View File

@@ -196,12 +196,12 @@
<table border="0" cellpadding="0" cellspacing="0" role="presentation"
style="border-collapse:separate;line-height:100%;">
<tr>
<td align="center" bgcolor="#31EFB8" role="presentation"
style="border:none;border-radius:3px;cursor:auto;mso-padding-alt:10px 25px;background:#31EFB8;"
<td align="center" bgcolor="#6911d4" role="presentation"
style="border:none;border-radius:8px;cursor:auto;mso-padding-alt:10px 25px;background:#6911d4;"
valign="middle">
<a href="{{ public-uri }}/#/auth/verify-token?token={{token}}"
style="display:inline-block;background:#31EFB8;color:#1F1F1F;font-family:Source Sans Pro, sans-serif;font-size:16px;font-weight:normal;line-height:120%;margin:0;text-decoration:none;text-transform:none;padding:10px 25px;mso-padding-alt:0px;border-radius:3px;"
target="_blank"> Verify email </a>
style="display:inline-block;background:#6911d4;color:#FFFFFF;font-family:Source Sans Pro, sans-serif;font-size:16px;font-weight:normal;line-height:120%;margin:0;text-decoration:none;text-transform:none;padding:10px 25px;mso-padding-alt:0px;border-radius:8px;"
target="_blank"> VERIFY EMAIL </a>
</td>
</tr>
</table>

View File

@@ -204,12 +204,12 @@
<table border="0" cellpadding="0" cellspacing="0" role="presentation"
style="border-collapse:separate;line-height:100%">
<tr>
<td align="center" bgcolor="#31EFB8" role="presentation"
style="border:none;border-radius:3px;cursor:auto;mso-padding-alt:10px 25px;background:#31EFB8;"
<td align="center" bgcolor="#6911d4" role="presentation"
style="border:none;border-radius:8px;cursor:auto;mso-padding-alt:10px 25px;background:#6911d4;"
valign="middle">
<a href="{{ public-uri }}/#/view/{{file-id}}?page-id={{page-id}}&section=interactions&index=0&share=true"
style="display:inline-block;background:#31EFB8;color:#1F1F1F;font-family:Source Sans Pro, sans-serif;font-size:16px;font-weight:normal;line-height:120%;margin:0;text-decoration:none;text-transform:none;padding:10px 25px;mso-padding-alt:0px;border-radius:3px;"
target="_blank"> Send a View-Only link </a>
<a href="{{ public-uri }}/#/view?file-id={{file-id}}&page-id={{page-id}}&section=interactions&index=0&share=true"
style="display:inline-block;background:#6911d4;color:#FFFFFF;font-family:Source Sans Pro, sans-serif;font-size:16px;font-weight:normal;line-height:120%;margin:0;text-decoration:none;text-transform:none;padding:10px 25px;mso-padding-alt:0px;border-radius:8px;"
target="_blank"> SEND A VIEW-ONLY LINK </a>
</td>
</tr>
</table>
@@ -251,4 +251,4 @@
</div>
</body>
</html>
</html>

View File

@@ -6,7 +6,7 @@ Since this file is in your Penpot team, you can provide access by sending a view
To proceed, please click the link below to generate and send the view-only link:
{{ public-uri }}/#/view/{{file-id}}?page-id={{page-id}}&section=interactions&index=0&share=true
{{ public-uri }}/#/view?file-id={{file-id}}&page-id={{page-id}}&section=interactions&index=0&share=true

View File

@@ -227,12 +227,12 @@
<table border="0" cellpadding="0" cellspacing="0" role="presentation"
style="border-collapse:separate;line-height:100%">
<tr>
<td align="center" bgcolor="#31EFB8" role="presentation"
style="border:none;border-radius:3px;cursor:auto;mso-padding-alt:10px 25px;background:#31EFB8;"
<td align="center" bgcolor="#6911d4" role="presentation"
style="border:none;border-radius:8px;cursor:auto;mso-padding-alt:10px 25px;background:#6911d4;"
valign="middle">
<a href="{{ public-uri }}/#/view/{{file-id}}?page-id={{page-id}}&section=interactions&index=0&share=true"
style="display:inline-block;background:#31EFB8;color:#1F1F1F;font-family:Source Sans Pro, sans-serif;font-size:16px;font-weight:normal;line-height:120%;margin:0;text-decoration:none;text-transform:none;padding:10px 25px;mso-padding-alt:0px;border-radius:3px;"
target="_blank"> Send a View-Only link </a>
<a href="{{ public-uri }}/#/view?file-id={{file-id}}&page-id={{page-id}}&section=interactions&index=0&share=true"
style="display:inline-block;background:#6911d4;color:#FFFFFF;font-family:Source Sans Pro, sans-serif;font-size:16px;font-weight:normal;line-height:120%;margin:0;text-decoration:none;text-transform:none;padding:10px 25px;mso-padding-alt:0px;border-radius:8px;"
target="_blank"> SEND A VIEW-ONLY LINK </a>
</td>
</tr>
</table>
@@ -274,4 +274,4 @@
</div>
</body>
</html>
</html>

View File

@@ -19,7 +19,7 @@ Alternatively, you can create and share a view-only link to the file. This will
Click the link below to generate and send the link:
{{ public-uri }}/#/view/{{file-id}}?page-id={{page-id}}&section=interactions&index=0&share=true
{{ public-uri }}/#/view?file-id={{file-id}}&page-id={{page-id}}&section=interactions&index=0&share=true

View File

@@ -211,12 +211,12 @@
<table border="0" cellpadding="0" cellspacing="0" role="presentation"
style="border-collapse:separate;line-height:100%">
<tr>
<td align="center" bgcolor="#31EFB8" role="presentation"
style="border:none;border-radius:3px;cursor:auto;mso-padding-alt:10px 25px;background:#31EFB8;"
<td align="center" bgcolor="#6911d4" role="presentation"
style="border:none;border-radius:8px;cursor:auto;mso-padding-alt:10px 25px;background:#6911d4;"
valign="middle">
<a href="{{ public-uri }}/#/dashboard/team/{{team-id}}/members?invite-email={{requested-by-email|urlescape }}"
style="display:inline-block;background:#31EFB8;color:#1F1F1F;font-family:Source Sans Pro, sans-serif;font-size:16px;font-weight:normal;line-height:120%;margin:0;text-decoration:none;text-transform:none;padding:10px 25px;mso-padding-alt:0px;border-radius:3px;"
target="_blank"> Give access to “{{team-name|abbreviate:25}}” Team </a>
<a href="{{ public-uri }}/#/dashboard/members?team-id={{team-id}}&invite-email={{requested-by-email|urlescape }}"
style="display:inline-block;background:#6911d4;color:#FFFFFF;font-family:Source Sans Pro, sans-serif;font-size:16px;font-weight:normal;line-height:120%;margin:0;text-decoration:none;text-transform:none;padding:10px 25px;mso-padding-alt:0px;border-radius:8px;"
target="_blank"> GIVE ACCESS TO “{{team-name|abbreviate:25}}” TEAM </a>
</td>
</tr>
</table>
@@ -244,12 +244,12 @@
<table border="0" cellpadding="0" cellspacing="0" role="presentation"
style="border-collapse:separate;line-height:100%">
<tr>
<td align="center" bgcolor="#31EFB8" role="presentation"
style="border:none;border-radius:3px;cursor:auto;mso-padding-alt:10px 25px;background:#31EFB8;"
<td align="center" bgcolor="#6911d4" role="presentation"
style="border:none;border-radius:8px;cursor:auto;mso-padding-alt:10px 25px;background:#6911d4;"
valign="middle">
<a href="{{ public-uri }}/#/view/{{file-id}}?page-id={{page-id}}&section=interactions&index=0&share=true"
style="display:inline-block;background:#31EFB8;color:#1F1F1F;font-family:Source Sans Pro, sans-serif;font-size:16px;font-weight:normal;line-height:120%;margin:0;text-decoration:none;text-transform:none;padding:10px 25px;mso-padding-alt:0px;border-radius:3px;"
target="_blank"> Send a View-Only link </a>
<a href="{{ public-uri }}/#/view?file-id={{file-id}}&page-id={{page-id}}&section=interactions&index=0&share=true"
style="display:inline-block;background:#6911d4;color:#FFFFFF;font-family:Source Sans Pro, sans-serif;font-size:16px;font-weight:normal;line-height:120%;margin:0;text-decoration:none;text-transform:none;padding:10px 25px;mso-padding-alt:0px;border-radius:8px;"
target="_blank"> SEND A VIEW-ONLY LINK </a>
</td>
</tr>
</table>
@@ -292,4 +292,4 @@
</div>
</body>
</html>
</html>

View File

@@ -13,7 +13,7 @@ This will automatically include {{requested-by|abbreviate:25}} in the team, so t
Click the link below to provide team access:
{{ public-uri }}/#/dashboard/team/{{team-id}}/members?invite-email={{requested-by-email|urlescape}}
{{ public-uri }}/#/dashboard/members?team-id={{team-id}}&invite-email={{requested-by-email|urlescape}}
@@ -23,8 +23,7 @@ Alternatively, you can create and share a view-only link to the file. This will
Click the link below to generate and send the link:
{{ public-uri }}/#/view/{{file-id}}?page-id={{page-id}}&section=interactions&index=0&share=true
{{ public-uri }}/#/view?file-id={{file-id}}&page-id={{page-id}}&section=interactions&index=0&share=true
If you do not wish to grant access at this time, you can simply disregard this email.

View File

@@ -202,12 +202,12 @@
<table border="0" cellpadding="0" cellspacing="0" role="presentation"
style="border-collapse:separate;line-height:100%;">
<tr>
<td align="center" bgcolor="#31EFB8" role="presentation"
style="border:none;border-radius:3px;cursor:auto;mso-padding-alt:10px 25px;background:#31EFB8;"
<td align="center" bgcolor="#6911d4" role="presentation"
style="border:none;border-radius:8px;cursor:auto;mso-padding-alt:10px 25px;background:#6911d4;"
valign="middle">
<a href="{{ public-uri }}/#/dashboard/team/{{team-id}}/members?invite-email={{requested-by-email|urlescape}}"
style="display:inline-block;background:#31EFB8;color:#1F1F1F;font-family:Source Sans Pro, sans-serif;font-size:16px;font-weight:normal;line-height:120%;margin:0;text-decoration:none;text-transform:none;padding:10px 25px;mso-padding-alt:0px;border-radius:3px;"
target="_blank"> Give access to “{{team-name|abbreviate:25}}” </a>
<a href="{{ public-uri }}/#/dashboard/members?team-id={{team-id}}&invite-email={{requested-by-email|urlescape}}"
style="display:inline-block;background:#6911d4;color:#FFFFFF;font-family:Source Sans Pro, sans-serif;font-size:16px;font-weight:normal;line-height:120%;margin:0;text-decoration:none;text-transform:none;padding:10px 25px;mso-padding-alt:0px;border-radius:8px;"
target="_blank"> GIVE ACCESS TO “{{team-name|abbreviate:25}}” TEAM </a>
</td>
</tr>
</table>
@@ -249,4 +249,4 @@
</div>
</body>
</html>
</html>

View File

@@ -4,7 +4,7 @@ Hello!
To provide access, please click the link below:
{{ public-uri }}/#/dashboard/team/{{team-id}}/members?invite-email={{requested-by-email|urlescape}}
{{ public-uri }}/#/dashboard/members?team-id={{team-id}}&invite-email={{requested-by-email|urlescape}}
If you do not wish to grant access at this time, you can simply disregard this email.

View File

@@ -1,4 +1,7 @@
[{:id "wireframing-kit"
[{:id "tokens-starter-kit"
:name "Design tokens starter kit"
:file-uri "https://github.com/penpot/penpot-files/raw/refs/heads/main/Tokens%20starter%20kit.penpot"},
{:id "wireframing-kit"
:name "Wireframe library"
:file-uri "https://github.com/penpot/penpot-files/raw/refs/heads/main/Wireframing%20kit%20v1.1.penpot"}
{:id "prototype-examples"

View File

@@ -17,38 +17,6 @@ Debug Main Page
<desc><a href="/dbg/error">CLICK HERE TO SEE THE ERROR REPORTS</a> </desc>
</fieldset>
<fieldset>
<legend>Download file data:</legend>
<desc>Given an FILE-ID, downloads the file data as file. The file data is encoded using transit.</desc>
<form method="get" action="/dbg/file/data">
<div class="row">
<input type="text" style="width:300px" name="file-id" placeholder="file-id" />
</div>
<div class="row">
<input type="submit" name="download" value="Download" />
<input type="submit" name="clone" value="Clone" />
</div>
</form>
</fieldset>
<fieldset>
<legend>Upload File Data:</legend>
<desc>Create a new file on your draft projects using the file downloaded from the previous section.</desc>
<form method="post" enctype="multipart/form-data" action="/dbg/file/data">
<div class="row">
<input type="file" name="file" value="" />
</div>
<div class="row">
<label>Import with same id?</label>
<input type="checkbox" name="reuseid" />
</div>
<div class="row">
<input type="submit" value="Upload" />
</div>
</form>
</fieldset>
<fieldset>
<legend>Profile Management</legend>
<form method="post" action="/dbg/actions/resend-email-verification">
@@ -81,6 +49,50 @@ Debug Main Page
</section>
<section class="widget">
<fieldset>
<legend>Download RAW file data:</legend>
<desc>Given an FILE-ID, downloads the file AS-IS (no validation
checks, just exports the file data and related objects in raw)
<br/>
<br/>
<b>WARNING: this operation does not performs any checks</b>
</desc>
<form method="get" action="/dbg/actions/file-raw-export-import">
<div class="row">
<input type="text" style="width:300px" name="file-id" placeholder="file-id" />
</div>
<div class="row">
<input type="submit" name="download" value="Download" />
<input type="submit" name="clone" value="Clone" />
</div>
</form>
</fieldset>
<fieldset>
<legend>Upload File Data:</legend>
<desc>Create a new file on your draft projects using the file downloaded from the previous section.
<br/>
<br/>
<b>WARNING: this operation does not performs any checks</b>
</desc>
<form method="post" enctype="multipart/form-data" action="/dbg/actions/file-raw-export-import">
<div class="row">
<input type="file" name="file" value="" />
</div>
<div class="row">
<label>Import with same id?</label>
<input type="checkbox" name="reuseid" />
</div>
<div class="row">
<input type="submit" value="Upload" />
</div>
</form>
</fieldset>
</section>
<section class="widget">
<fieldset>
<legend>Export binfile:</legend>
@@ -88,7 +100,7 @@ Debug Main Page
the related libraries in a single custom formatted binary
file.</desc>
<form method="get" action="/dbg/file/export">
<form method="get" action="/dbg/actions/file-export">
<div class="row set-of-inputs">
<input type="text" style="width:300px" name="file-ids" placeholder="file-id" />
<input type="text" style="width:300px" name="file-ids" placeholder="file-id" />
@@ -114,37 +126,13 @@ Debug Main Page
</fieldset>
<fieldset>
<legend>Import binfile:</legend>
<desc>Import penpot file in binary
format. If <strong>overwrite</strong> is checked, all files will
be overwritten using the same ids found in the file instead of
generating a new ones.</desc>
<desc>Import penpot file in binary format.</desc>
<form method="post" enctype="multipart/form-data" action="/dbg/file/import">
<form method="post" enctype="multipart/form-data" action="/dbg/actions/file-import">
<div class="row">
<input type="file" name="file" value="" />
</div>
<div class="row">
<label>Overwrite?</label>
<input type="checkbox" name="overwrite" />
<br />
<small>
Instead of creating a new file with all relations remapped,
reuses all ids and updates/overwrites the objects that are
already exists on the database.
<strong>Warning, this operation should be used with caution.</strong>
</small>
</div>
<div class="row">
<label>Migrate?</label>
<input type="checkbox" name="migrate" />
<br />
<small>
Applies the file migrations on the importation process.
</small>
</div>
<div class="row">
<input type="submit" name="upload" value="Upload" />
</div>
@@ -154,15 +142,36 @@ Debug Main Page
<section class="widget">
<fieldset>
<legend>Reset file version</legend>
<desc>Allows reset file data version to a specific number/</desc>
<form method="post" action="/dbg/actions/reset-file-version">
<legend>Feature Flags for Team</legend>
<desc>Add a feature flag to a team</desc>
<form method="post" action="/dbg/actions/handle-team-features">
<div class="row">
<input type="text" style="width:300px" name="file-id" placeholder="file-id" />
<input type="text" style="width:300px" name="team-id" placeholder="team-id" />
</div>
<div class="row">
<input type="number" style="width:100px" name="version" placeholder="version" value="32" />
<select type="text" style="width:100px" name="feature">
{% for feature in supported-features %}
<option value="{{feature}}">{{feature}}</option>
{% endfor %}
</select>
</div>
<div class="row">
<select style="width:100px" name="action">
<option value="">Action...</option>
<option value="show">Show</option>
<option value="enable">Enable</option>
<option value="disable">Disable</option>
</select>
</div>
<div class="row">
<label for="check-feature">Skip feature check</label>
<input id="check-feature" type="checkbox" name="skip-check" />
<br />
<small>
Do not check if the feature is supported
</small>
</div>
<div class="row">
@@ -174,7 +183,6 @@ Debug Main Page
</small>
</div>
<div class="row">
<input type="submit" value="Submit" />
</div>

View File

@@ -7,7 +7,9 @@ penpot - error list
{% block content %}
<nav>
<div class="title">
<h1>Error reports (last 200)</h1>
<h1>Error reports (last 200)
<a href="/dbg">[GO BACK]</a>
</h1>
</div>
</nav>
<main class="horizontal-list">

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="info" monitorInterval="30">
<Configuration status="fatal" monitorInterval="30">
<Appenders>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="[%d{YYYY-MM-dd HH:mm:ss.SSS}] %level{length=1} %logger{36} - %msg%n"

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="info" monitorInterval="30">
<Configuration status="fatal" monitorInterval="30">
<Appenders>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="[%d{YYYY-MM-dd HH:mm:ss.SSS}] %level{length=1} %logger{36} - %msg%n"

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="info" monitorInterval="30">
<Configuration status="fatal" monitorInterval="30">
<Appenders>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="[%d{YYYY-MM-dd HH:mm:ss.SSS}] %level{length=1} %logger{36} - %msg%n"

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="info" monitorInterval="60">
<Configuration status="fatal" monitorInterval="60">
<Appenders>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="[%d{YYYY-MM-dd HH:mm:ss.SSS}] %level{length=1} %logger{36} - %msg%n"

View File

@@ -7,6 +7,8 @@ set -ex
rm -rf target;
mkdir -p target/classes;
mkdir -p target/dist;
mkdir -p target/dist/scripts;
echo "$CURRENT_VERSION" > target/classes/version.txt;
cp ../CHANGES.md target/classes/changelog.md;
@@ -15,6 +17,7 @@ mv target/penpot.jar target/dist/penpot.jar
cp resources/log4j2.xml target/dist/log4j2.xml
cp scripts/run.template.sh target/dist/run.sh;
cp scripts/manage.py target/dist/manage.py
cp scripts/svgo-cli.js target/dist/scripts/;
chmod +x target/dist/run.sh;
chmod +x target/dist/manage.py

View File

@@ -35,40 +35,35 @@ def get_prepl_conninfo():
return host, port
def send_eval(expr):
def send(data):
host, port = get_prepl_conninfo()
with socket.create_connection((host, port)) as s:
f = s.makefile(mode="rw")
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((host, port))
s.send(expr.encode("utf-8"))
s.send(b":repl/quit\n\n")
json.dump(data, f)
f.write("\n")
f.flush()
with s.makefile() as f:
while True:
line = f.readline()
result = json.loads(line)
tag = result.get("tag", None)
if tag == "ret":
return result.get("val", None), result.get("exception", None)
elif tag == "out":
print(result.get("val"), end="")
else:
raise RuntimeError("unexpected response from PREPL")
while True:
line = f.readline()
result = json.loads(line)
tag = result.get("tag", None)
def encode(val):
return json.dumps(json.dumps(val))
if tag == "ret":
return result.get("val", None), result.get("err", None)
elif tag == "out":
print(result.get("val"), end="")
else:
raise RuntimeError("unexpected response from PREPL")
def print_error(res):
for error in res["via"]:
print("ERR:", error["message"])
break
def print_error(error):
print("ERR:", error["hint"])
def run_cmd(params):
try:
expr = "(app.srepl.cli/exec {})".format(encode(params))
res, failed = send_eval(expr)
if failed:
print_error(res)
res, err = send(params)
if err:
print_error(err)
sys.exit(-1)
return res
@@ -76,19 +71,27 @@ def run_cmd(params):
print("EXC:", str(cause))
sys.exit(-2)
def create_profile(fullname, email, password):
def create_profile(fullname, email, password, skip_tutorial=False, skip_walkthrough=False):
props = {}
if skip_tutorial:
props["viewed-tutorial?"] = True
if skip_walkthrough:
props["viewed-walkthrough?"] = True
params = {
"cmd": "create-profile",
"params": {
"fullname": fullname,
"email": email,
"password": password
"password": password,
**props
}
}
res = run_cmd(params)
print(f"Created: {res['email']} / {res['id']}")
def update_profile(email, fullname, password, is_active):
params = {
"cmd": "update-profile",
@@ -96,7 +99,7 @@ def update_profile(email, fullname, password, is_active):
"email": email,
"fullname": fullname,
"password": password,
"is_active": is_active
"isActive": is_active
}
}
@@ -138,7 +141,7 @@ def derive_password(password):
params = {
"cmd": "derive-password",
"params": {
"password": password,
"password": password
}
}
@@ -175,6 +178,8 @@ parser.add_argument("-n", "--fullname", help="fullname", action="store")
parser.add_argument("-e", "--email", help="email", action="store")
parser.add_argument("-p", "--password", help="password", action="store")
parser.add_argument("-c", "--connect", help="connect to PREPL", action="store", default="tcp://localhost:6063")
parser.add_argument("--skip-tutorial", help="mark tutorial as viewed", action="store_true")
parser.add_argument("--skip-walkthrough", help="mark walkthrough as viewed", action="store_true")
args = parser.parse_args()

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env bash
export PENPOT_SECRET_KEY=super-secret-devenv-key
export PENPOT_HOST=devenv
export PENPOT_TENANT=dev
export PENPOT_FLAGS="\
$PENPOT_FLAGS \
enable-login-with-ldap \
@@ -12,7 +12,7 @@ export PENPOT_FLAGS="\
enable-login-with-gitlab \
enable-backend-worker \
enable-backend-asserts \
enable-feature-fdata-pointer-map \
disable-feature-fdata-pointer-map \
enable-feature-fdata-objects-map \
enable-audit-log \
enable-transit-readable-response \
@@ -28,9 +28,10 @@ export PENPOT_FLAGS="\
enable-auto-file-snapshot \
enable-webhooks \
enable-access-tokens \
enable-tiered-file-data-storage \
disable-tiered-file-data-storage \
enable-file-validation \
enable-file-schema-validation";
enable-file-schema-validation \
enable-subscriptions";
# Default deletion delay for devenv
export PENPOT_DELETION_DELAY="24h"
@@ -70,20 +71,25 @@ export PENPOT_OBJECTS_STORAGE_S3_ENDPOINT=http://minio:9000
export PENPOT_OBJECTS_STORAGE_S3_BUCKET=penpot
export PENPOT_OBJECTS_STORAGE_FS_DIRECTORY="assets"
export OPTIONS="
-A:jmx-remote -A:dev \
-J-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager \
-J-Djdk.attach.allowAttachSelf \
-J-Dpolyglot.engine.WarnInterpreterOnly=false \
-J-Dlog4j2.configurationFile=log4j2-devenv-repl.xml \
-J-XX:+EnableDynamicAgentLoading \
-J-XX:-OmitStackTraceInFastThrow \
-J-XX:+UnlockDiagnosticVMOptions \
-J-XX:+DebugNonSafepoints \
-J-Djdk.tracePinnedThreads=full"
export JAVA_OPTS="\
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager \
-Djdk.attach.allowAttachSelf \
-Dlog4j2.configurationFile=log4j2-devenv-repl.xml \
-Djdk.tracePinnedThreads=full \
-Dim4java.useV7=true \
-XX:+UseShenandoahGC \
-XX:+EnableDynamicAgentLoading \
-XX:-OmitStackTraceInFastThrow \
-XX:+UnlockExperimentalVMOptions \
-XX:+UnlockDiagnosticVMOptions \
-XX:+DebugNonSafepoints \
-XX:ShenandoahGCMode=generational \
-XX:+UseCompactObjectHeaders \
--sun-misc-unsafe-memory-access=allow \
--enable-preview \
--enable-native-access=ALL-UNNAMED";
# Enable preview
export OPTIONS="$OPTIONS -J--enable-preview"
export OPTIONS="-A:jmx-remote -A:dev"
# Setup HEAP
# export OPTIONS="$OPTIONS -J-Xms50m -J-Xmx1024m"
@@ -104,9 +110,6 @@ export OPTIONS="$OPTIONS -J--enable-preview"
# Setup GC
# export OPTIONS="$OPTIONS -J-XX:+UseZGC"
# Enable ImageMagick v7.x support
# export OPTIONS="-J-Dim4java.useV7=true $OPTIONS";
export OPTIONS_EVAL="nil"
# export OPTIONS_EVAL="(set! *warn-on-reflection* true)"

44
backend/scripts/run Executable file
View File

@@ -0,0 +1,44 @@
#!/usr/bin/env bash
export PENPOT_SECRET_KEY=super-secret-devenv-key
export PENPOT_HOST=devenv
export PENPOT_FLAGS="\
$PENPOT_FLAGS \
enable-backend-asserts \
enable-feature-fdata-pointer-map \
enable-feature-fdata-objects-map \
enable-file-snapshot \
enable-tiered-file-data-storage";
export JAVA_OPTS="
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager \
-Djdk.attach.allowAttachSelf \
-Dlog4j2.configurationFile=log4j2-devenv.xml \
-XX:+EnableDynamicAgentLoading \
-XX:-OmitStackTraceInFastThrow \
-XX:+UnlockDiagnosticVMOptions \
-XX:+DebugNonSafepoints";
export CLOJURE_OPTIONS="-A:dev"
# Default deletion delay for devenv
export PENPOT_DELETION_DELAY="24h"
# Setup default upload media file size to 100MiB
export PENPOT_MEDIA_MAX_FILE_SIZE=104857600
# Setup default multipart upload size to 300MiB
export PENPOT_HTTP_SERVER_MAX_MULTIPART_BODY_SIZE=314572800
export AWS_ACCESS_KEY_ID=penpot-devenv
export AWS_SECRET_ACCESS_KEY=penpot-devenv
export PENPOT_OBJECTS_STORAGE_BACKEND=s3
export PENPOT_OBJECTS_STORAGE_S3_ENDPOINT=http://minio:9000
export PENPOT_OBJECTS_STORAGE_S3_BUCKET=penpot
entrypoint=${1:-app.main};
shift 1;
set -ex
clojure $CLOJURE_OPTIONS -A:dev -M -m $entrypoint "$@";

View File

@@ -18,9 +18,9 @@ if [ -f ./environ ]; then
source ./environ
fi
export JVM_OPTS="-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager -Dlog4j2.configurationFile=log4j2.xml -XX:-OmitStackTraceInFastThrow -Dpolyglot.engine.WarnInterpreterOnly=false --enable-preview $JVM_OPTS"
export JAVA_OPTS="-Dim4java.useV7=true -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager -Dlog4j2.configurationFile=log4j2.xml -XX:-OmitStackTraceInFastThrow --sun-misc-unsafe-memory-access=allow --enable-native-access=ALL-UNNAMED --enable-preview $JVM_OPTS $JAVA_OPTS"
ENTRYPOINT=${1:-app.main};
set -ex
exec $JAVA_CMD $JVM_OPTS -jar penpot.jar -m $ENTRYPOINT
exec $JAVA_CMD $JAVA_OPTS -jar penpot.jar -m $ENTRYPOINT

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env bash
export PENPOT_SECRET_KEY=super-secret-devenv-key
export PENPOT_HOST=devenv
export PENPOT_TENANT=dev
export PENPOT_FLAGS="\
$PENPOT_FLAGS \
enable-prepl-server \
@@ -10,9 +10,10 @@ export PENPOT_FLAGS="\
enable-webhooks \
enable-backend-asserts \
enable-audit-log \
enable-login-with-ldap \
enable-transit-readable-response \
enable-demo-users \
enable-feature-fdata-pointer-map \
disable-feature-fdata-pointer-map \
enable-feature-fdata-objects-map \
disable-secure-session-cookies \
enable-rpc-climit \
@@ -20,20 +21,10 @@ export PENPOT_FLAGS="\
enable-quotes \
enable-file-snapshot \
enable-access-tokens \
enable-tiered-file-data-storage \
disable-tiered-file-data-storage \
enable-file-validation \
enable-file-schema-validation";
export OPTIONS="
-A:jmx-remote -A:dev \
-J-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager \
-J-Djdk.attach.allowAttachSelf \
-J-Dpolyglot.engine.WarnInterpreterOnly=false \
-J-Dlog4j2.configurationFile=log4j2-devenv.xml \
-J-XX:+EnableDynamicAgentLoading \
-J-XX:-OmitStackTraceInFastThrow \
-J-XX:+UnlockDiagnosticVMOptions \
-J-XX:+DebugNonSafepoints"
enable-file-schema-validation \
enable-subscriptions";
# Default deletion delay for devenv
export PENPOT_DELETION_DELAY="24h"
@@ -44,9 +35,6 @@ export PENPOT_MEDIA_MAX_FILE_SIZE=104857600
# Setup default multipart upload size to 300MiB
export PENPOT_HTTP_SERVER_MAX_MULTIPART_BODY_SIZE=314572800
# Enable ImageMagick v7.x support
# export OPTIONS="-J-Dim4java.useV7=true $OPTIONS";
# Initialize MINIO config
mc alias set penpot-s3/ http://minio:9000 minioadmin minioadmin -q
mc admin user add penpot-s3 penpot-devenv penpot-devenv -q
@@ -64,6 +52,18 @@ export PENPOT_OBJECTS_STORAGE_S3_BUCKET=penpot
entrypoint=${1:-app.main};
set -ex
export JAVA_OPTS="\
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager \
-Djdk.attach.allowAttachSelf \
-Dlog4j2.configurationFile=log4j2-devenv.xml \
-Djdk.tracePinnedThreads=full \
-Dim4java.useV7=true \
-XX:-OmitStackTraceInFastThrow \
--sun-misc-unsafe-memory-access=allow \
--enable-preview \
--enable-native-access=ALL-UNNAMED";
clojure $OPTIONS -A:dev -M -m $entrypoint;
export OPTIONS="-A:jmx-remote -A:dev"
set -ex
clojure $OPTIONS -M -m $entrypoint;

214
backend/scripts/svgo-cli.js Normal file
View File

File diff suppressed because one or more lines are too long

View File

@@ -8,7 +8,7 @@
(:require
[buddy.hashers :as hashers]))
(def default-params
(def ^:private default-options
{:alg :argon2id
:memory 32768 ;; 32 MiB
:iterations 3
@@ -16,12 +16,12 @@
(defn derive-password
[password]
(hashers/derive password default-params))
(hashers/derive password default-options))
(defn verify-password
[attempt password]
(try
(hashers/verify attempt password)
(hashers/verify attempt password default-options)
(catch Throwable _
{:update false
:valid false})))

View File

@@ -8,9 +8,8 @@
(:require
[app.common.exceptions :as ex]
[app.common.logging :as l]
[app.common.spec :as us]
[app.common.schema :as sm]
[clj-ldap.client :as ldap]
[clojure.spec.alpha :as s]
[clojure.string]
[integrant.core :as ig]))
@@ -58,21 +57,26 @@
:email email
:backend "ldap"})))
(s/def ::fullname ::us/not-empty-string)
(s/def ::email ::us/email)
(s/def ::backend ::us/not-empty-string)
(def ^:private schema:info-data
[:map
[:fullname ::sm/text]
[:email ::sm/email]
[:backend ::sm/text]])
(s/def ::info-data
(s/keys :req-un [::fullname ::email ::backend]))
(def ^:private valid-info-data?
(sm/lazy-validator schema:info-data))
(def ^:private explain-info-data
(sm/lazy-explainer schema:info-data))
(defn authenticate
[cfg params]
(with-open [conn (connect cfg)]
(when-let [user (-> (assoc cfg ::conn conn)
(retrieve-user params))]
(when-not (s/valid? ::info-data user)
(let [explain (s/explain-str ::info-data user)]
(l/warn ::l/raw (str "invalid response from ldap, looks like ldap is not configured correctly\n" explain))
(when-not (valid-info-data? user)
(let [explain (explain-info-data user)]
(l/warn :hint "invalid response from ldap, looks like ldap is not configured correctly" :data user)
(ex/raise :type :restriction
:code :wrong-ldap-response
:explain explain)))
@@ -102,38 +106,31 @@
:host (:host cfg) :port (:port cfg) :cause cause)
nil))))
(s/def ::enabled? ::us/boolean)
(s/def ::host ::us/string)
(s/def ::port ::us/integer)
(s/def ::ssl ::us/boolean)
(s/def ::tls ::us/boolean)
(s/def ::query ::us/string)
(s/def ::base-dn ::us/string)
(s/def ::bind-dn ::us/string)
(s/def ::bind-password ::us/string)
(s/def ::attrs-email ::us/string)
(s/def ::attrs-fullname ::us/string)
(s/def ::attrs-username ::us/string)
(def ^:private schema:params
[:map
[:host {:optional true} :string]
[:port {:optional true} ::sm/int]
[:bind-dn {:optional true} :string]
[:bind-passwor {:optional true} :string]
[:query {:optional true} :string]
[:base-dn {:optional true} :string]
[:attrs-email {:optional true} :string]
[:attrs-username {:optional true} :string]
[:attrs-fullname {:optional true} :string]
[:ssl {:optional true} ::sm/boolean]
[:tls {:optional true} ::sm/boolean]])
(s/def ::provider-params
(s/keys :opt-un [::host ::port
::ssl ::tls
::enabled?
::bind-dn
::bind-password
::query
::attrs-email
::attrs-username
::attrs-fullname]))
(def ^:private check-params
(sm/check-fn schema:params :hint "Invalid LDAP provider parameters"))
(s/def ::provider
(s/nilable ::provider-params))
(defmethod ig/pre-init-spec ::provider
[_]
(s/spec ::provider))
(defmethod ig/assert-key ::provider
[_ params]
(when (:enabled params)
(some->> params check-params)))
(defmethod ig/init-key ::provider
[_ cfg]
(when (:enabled? cfg)
(when (:enabled cfg)
(try-connectivity cfg)))
(sm/register! ::provider schema:params)

View File

@@ -12,7 +12,8 @@
[app.common.data.macros :as dm]
[app.common.exceptions :as ex]
[app.common.logging :as l]
[app.common.spec :as us]
[app.common.schema :as sm]
[app.common.time :as ct]
[app.common.uri :as u]
[app.config :as cf]
[app.db :as db]
@@ -28,15 +29,13 @@
[app.tokens :as tokens]
[app.util.inet :as inet]
[app.util.json :as json]
[app.util.time :as dt]
[buddy.sign.jwk :as jwk]
[buddy.sign.jwt :as jwt]
[clojure.set :as set]
[clojure.spec.alpha :as s]
[cuerdas.core :as str]
[integrant.core :as ig]
[ring.request :as rreq]
[ring.response :as-alias rres]))
[yetti.request :as yreq]
[yetti.response :as-alias yres]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; HELPERS
@@ -140,8 +139,9 @@
(l/warn :hint "unable to retrieve JWKs (unexpected exception)"
:cause cause)))))
(defmethod ig/pre-init-spec ::providers/generic [_]
(s/keys :req [::http/client]))
(defmethod ig/assert-key ::providers/generic
[_ params]
(assert (http/client? (::http/client params)) "expected a valid http client"))
(defmethod ig/init-key ::providers/generic
[_ cfg]
@@ -197,6 +197,10 @@
;; GITHUB AUTH PROVIDER
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn- int-in-range?
[val start end]
(and (<= start val) (< val end)))
(defn- retrieve-github-email
[cfg tdata props]
(or (some-> props :github/email)
@@ -207,7 +211,7 @@
{:keys [status body]} (http/req! cfg params {:sync? true})]
(when-not (s/int-in-range? 200 300 status)
(when-not (int-in-range? status 200 300)
(ex/raise :type :internal
:code :unable-to-retrieve-github-emails
:hint "unable to retrieve github emails"
@@ -217,8 +221,9 @@
(->> body json/decode (filter :primary) first :email))))
(defmethod ig/pre-init-spec ::providers/github [_]
(s/keys :req [::http/client]))
(defmethod ig/assert-key ::providers/github
[_ params]
(assert (http/client? (::http/client params)) "expected a valid http client"))
(defmethod ig/init-key ::providers/github
[_ cfg]
@@ -394,7 +399,7 @@
:status (:status response)
:body (:body response))
(when-not (s/int-in-range? 200 300 (:status response))
(when-not (int-in-range? (:status response) 200 300)
(ex/raise :type :internal
:code :unable-to-retrieve-user-info
:hint "unable to retrieve user info"
@@ -418,15 +423,15 @@
(l/warn :hint "unable to get user info from JWT token (unexpected exception)"
:cause cause))))
(s/def ::backend ::us/not-empty-string)
(s/def ::email ::us/not-empty-string)
(s/def ::fullname ::us/not-empty-string)
(s/def ::props (s/map-of ::us/keyword any?))
(s/def ::info
(s/keys :req-un [::backend
::email
::fullname
::props]))
(def ^:private schema:info
[:map
[:backend ::sm/text]
[:email ::sm/email]
[:fullname ::sm/text]
[:props [:map-of :keyword :any]]])
(def ^:private valid-info?
(sm/validator schema:info))
(defn- get-info
[{:keys [::provider ::setup/props] :as cfg} {:keys [params] :as request}]
@@ -444,7 +449,7 @@
(l/trc :hint "user info" :info info)
(when-not (s/valid? ::info info)
(when-not (valid-info? info)
(l/warn :hint "received incomplete profile info object (please set correct scopes)" :info info)
(ex/raise :type :internal
:code :incomplete-user-info
@@ -492,8 +497,8 @@
(defn- redirect-response
[uri]
{::rres/status 302
::rres/headers {"location" (str uri)}})
{::yres/status 302
::yres/headers {"location" (str uri)}})
(defn- redirect-with-error
([error] (redirect-with-error error nil))
@@ -509,7 +514,7 @@
[cfg info request]
(let [info (assoc info
:iss :prepared-register
:exp (dt/in-future {:hours 48}))
:exp (ct/in-future {:hours 48}))
params {:token (tokens/generate (::setup/props cfg) info)
:provider (:provider (:path-params request))
@@ -566,7 +571,7 @@
token (or (:invitation-token info)
(tokens/generate (::setup/props cfg)
{:iss :auth
:exp (dt/in-future "15m")
:exp (ct/in-future "15m")
:profile-id (:id profile)}))
props (audit/profile->props profile)
context (d/without-nils {:external-session-id (:external-session-id info)})]
@@ -598,7 +603,7 @@
(defn- get-external-session-id
[request]
(let [session-id (rreq/get-header request "x-external-session-id")]
(let [session-id (yreq/get-header request "x-external-session-id")]
(when (string? session-id)
(if (or (> (count session-id) 256)
(= session-id "null")
@@ -614,12 +619,12 @@
:invitation-token (:invitation-token params)
:external-session-id esid
:props props
:exp (dt/in-future "4h")}
:exp (ct/in-future "4h")}
state (tokens/generate (::setup/props cfg)
(d/without-nils params))
uri (build-auth-uri cfg state)]
{::rres/status 200
::rres/body {:redirect-uri uri}}))
{::yres/status 200
::yres/body {:redirect-uri uri}}))
(defn- callback-handler
[{:keys [::provider] :as cfg} request]
@@ -655,46 +660,37 @@
:provider provider
:hint "provider not configured"))))))})
(s/def ::client-id ::us/string)
(s/def ::client-secret ::us/string)
(s/def ::base-uri ::us/string)
(s/def ::token-uri ::us/string)
(s/def ::auth-uri ::us/string)
(s/def ::user-uri ::us/string)
(s/def ::scopes ::us/set-of-strings)
(s/def ::roles ::us/set-of-strings)
(s/def ::roles-attr ::us/string)
(s/def ::email-attr ::us/string)
(s/def ::name-attr ::us/string)
(def ^:private schema:provider
[:map {:title "provider"}
[:client-id ::sm/text]
[:client-secret ::sm/text]
[:base-uri {:optional true} ::sm/text]
[:token-uri {:optional true} ::sm/text]
[:auth-uri {:optional true} ::sm/text]
[:user-uri {:optional true} ::sm/text]
[:scopes {:optional true}
[::sm/set ::sm/text]]
[:roles {:optional true}
[::sm/set ::sm/text]]
[:roles-attr {:optional true} ::sm/text]
[:email-attr {:optional true} ::sm/text]
[:name-attr {:optional true} ::sm/text]])
(s/def ::provider
(s/keys :req-un [::client-id
::client-secret]
:opt-un [::base-uri
::token-uri
::auth-uri
::user-uri
::scopes
::roles
::roles-attr
::email-attr
::name-attr]))
(def ^:private schema:routes-params
[:map
::session/manager
::http/client
::setup/props
::db/pool
[::providers [:map-of :keyword [:maybe schema:provider]]]])
(s/def ::providers (s/map-of ::us/keyword (s/nilable ::provider)))
(s/def ::routes vector?)
(defmethod ig/pre-init-spec ::routes
[_]
(s/keys :req [::session/manager
::http/client
::setup/props
::db/pool
::providers]))
(defmethod ig/assert-key ::routes
[_ params]
(assert (sm/check schema:routes-params params)))
(defmethod ig/init-key ::routes
[_ cfg]
(let [cfg (update cfg :provider d/without-nils)]
(let [cfg (update cfg :providers d/without-nils)]
["" {:middleware [[session/authz cfg]
[provider-lookup cfg]]}
["/auth/oauth"

View File

@@ -0,0 +1,131 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) KALEIDOS INC
(ns app.binfile.cleaner
"A collection of helpers for perform cleaning of artifacts; mainly
for recently imported shapes."
(:require
[app.common.data :as d]
[app.common.types.shape :as cts]
[app.common.uuid :as uuid]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; PRE DECODE
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn- pre-clean-bool-content
[shape]
(if-let [content (get shape :bool-content)]
(-> shape
(assoc :content content)
(dissoc :bool-content))
shape))
(defn- pre-clean-shadow-color
[shape]
(d/update-when shape :shadow
(fn [shadows]
(mapv (fn [shadow]
(update shadow :color
(fn [color]
(let [ref-id (get color :id)
ref-file (get color :file-id)]
(-> (d/without-qualified color)
(select-keys [:opacity :color :gradient :image :ref-id :ref-file])
(cond-> ref-id
(assoc :ref-id ref-id))
(cond-> ref-file
(assoc :ref-file ref-file)))))))
shadows))))
(defn clean-shape-pre-decode
"Applies a pre-decode phase migration to the shape"
[shape]
(cond-> shape
(= "bool" (:type shape))
(pre-clean-bool-content)
(contains? shape :shadow)
(pre-clean-shadow-color)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; POST DECODE
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn- fix-shape-shadow-color
"Some shapes can come with invalid `id` property on shadow colors
caused by incorrect uuid parsing bug that should be already fixed;
this function removes the invalid id from the data structure."
[shape]
(let [fix-color
(fn [{:keys [id] :as color}]
(if (uuid? id)
color
(if (and (string? id)
(re-matches uuid/regex id))
(assoc color :id (uuid/uuid id))
(dissoc color :id))))
fix-shadow
(fn [shadow]
(d/update-when shadow :color fix-color))
xform
(map fix-shadow)]
(d/update-when shape :shadow
(fn [shadows]
(into [] xform shadows)))))
(defn- fix-root-shape
"Ensure all root objects are well formed shapes"
[shape]
(if (= (:id shape) uuid/zero)
(-> shape
(assoc :parent-id uuid/zero)
(assoc :frame-id uuid/zero)
;; We explicitly dissoc them and let the shape-setup
;; to regenerate it with valid values.
(dissoc :selrect)
(dissoc :points)
(cts/setup-shape))
shape))
(defn- fix-legacy-flex-dir
"This operation is only relevant to old data and it is fixed just
for convenience."
[shape]
(d/update-when shape :layout-flex-dir
(fn [dir]
(case dir
:reverse-row :row-reverse
:reverse-column :column-reverse
dir))))
(defn clean-shape-post-decode
"A shape procesor that expected to be executed after schema decoding
process but before validation."
[shape]
(-> shape
(fix-shape-shadow-color)
(fix-root-shape)
(fix-legacy-flex-dir)))
(defn- fix-container
[container]
(-> container
;; Remove possible `nil` keys on objects
(d/update-when :objects dissoc nil)
(d/update-when :objects d/update-vals clean-shape-post-decode)))
(defn clean-file
[file & {:as _opts}]
(update file :data
(fn [data]
(-> data
(d/update-when :pages-index d/update-vals fix-container)
(d/update-when :components d/update-vals fix-container)
(d/without-nils)))))

View File

@@ -9,33 +9,73 @@
binfile format implementations and management rpc methods."
(:require
[app.common.data :as d]
[app.common.data.macros :as dm]
[app.common.exceptions :as ex]
[app.common.features :as cfeat]
[app.common.files.helpers :as cfh]
[app.common.files.migrations :as fmg]
[app.common.files.validate :as fval]
[app.common.logging :as l]
[app.common.schema :as sm]
[app.common.time :as ct]
[app.common.types.file :as ctf]
[app.common.uuid :as uuid]
[app.common.weak :as weak]
[app.config :as cf]
[app.db :as db]
[app.db.sql :as sql]
[app.features.components-v2 :as feat.compv2]
[app.features.fdata :as feat.fdata]
[app.features.fdata :as fdata]
[app.features.file-migrations :as fmigr]
[app.loggers.audit :as-alias audit]
[app.loggers.webhooks :as-alias webhooks]
[app.storage :as sto]
[app.util.blob :as blob]
[app.util.pointer-map :as pmap]
[app.util.time :as dt]
[app.worker :as-alias wrk]
[clojure.set :as set]
[clojure.walk :as walk]
[cuerdas.core :as str]))
[cuerdas.core :as str]
[datoteka.fs :as fs]
[datoteka.io :as io]))
(set! *warn-on-reflection* true)
(def ^:dynamic *state* nil)
(def ^:dynamic *options* nil)
(def ^:dynamic *reference-file* nil)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; DEFAULTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Threshold in MiB when we pass from using
;; in-memory byte-array's to use temporal files.
(def temp-file-threshold
(* 1024 1024 2))
;; A maximum (storage) object size allowed: 100MiB
(def ^:const max-object-size
(* 1024 1024 100))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(declare get-resolved-file-libraries)
(declare update-file!)
(def file-attrs
(sm/keys ctf/schema:file))
(defn parse-file-format
[template]
(assert (fs/path? template) "expected InputStream for `template`")
(with-open [^java.lang.AutoCloseable input (io/input-stream template)]
(let [buffer (byte-array 4)]
(io/read-to-buffer input buffer)
(if (and (= (aget buffer 0) 80)
(= (aget buffer 1) 75)
(= (aget buffer 2) 3)
(= (aget buffer 3) 4))
:binfile-v3
:binfile-v1))))
(def xf-map-id
(map :id))
@@ -56,6 +96,13 @@
(def conj-vec
(fnil conj []))
(defn initial-state
[]
{:storage-objects #{}
:files #{}
:teams #{}
:projects #{}})
(defn collect-storage-objects
[state items]
(update state :storage-objects into xf-map-media-id items))
@@ -87,33 +134,87 @@
attrs))
(defn update-index
([coll]
(update-index {} coll identity))
([index coll]
(update-index index coll identity))
([index coll attr]
(reduce #(index-object %1 %2 attr) index coll)))
(defn decode-row
"A generic decode row helper"
[{:keys [data features] :as row}]
(cond-> row
features (assoc :features (db/decode-pgarray features #{}))
data (assoc :data (blob/decode data))))
[{:keys [data changes features] :as row}]
(when row
(cond-> row
features (assoc :features (db/decode-pgarray features #{}))
changes (assoc :changes (blob/decode changes))
data (assoc :data (blob/decode data)))))
(def sql:get-minimal-file
"SELECT f.id,
f.revn,
f.modified_at,
f.deleted_at
FROM file AS f
WHERE f.id = ?")
(defn get-minimal-file
[cfg id & {:as opts}]
(db/get-with-sql cfg [sql:get-minimal-file id] opts))
(defn decode-file
"A general purpose file decoding function that resolves all external
pointers, run migrations and return plain vanilla file map"
[cfg {:keys [id] :as file} & {:keys [migrate?] :or {migrate? true}}]
(binding [pmap/*load-fn* (partial fdata/load-pointer cfg id)]
(let [file (->> file
(fmigr/resolve-applied-migrations cfg)
(fdata/resolve-file-data cfg))
libs (delay (get-resolved-file-libraries cfg file))]
(-> file
(update :features db/decode-pgarray #{})
(update :data blob/decode)
(update :data fdata/process-pointers deref)
(update :data fdata/process-objects (partial into {}))
(update :data assoc :id id)
(cond-> migrate? (fmg/migrate-file libs))))))
(defn get-file
[cfg file-id]
"Get file, resolve all features and apply migrations.
Usefull when you have plan to apply massive or not cirurgical
operations on file, because it removes the ovehead of lazy fetching
and decoding."
[cfg file-id & {:as opts}]
(db/run! cfg (fn [{:keys [::db/conn] :as cfg}]
(binding [pmap/*load-fn* (partial feat.fdata/load-pointer cfg file-id)]
(when-let [file (db/get* conn :file {:id file-id}
{::db/remove-deleted false})]
(-> file
(decode-row)
(update :data feat.fdata/process-pointers deref)
(update :data feat.fdata/process-objects (partial into {}))))))))
(when-let [row (db/get* conn :file {:id file-id}
(assoc opts ::db/remove-deleted false))]
(decode-file cfg row opts)))))
(defn clean-file-features
[file]
(update file :features (fn [features]
(if (set? features)
(-> features
(cfeat/migrate-legacy-features)
(set/difference cfeat/frontend-only-features)
(set/difference cfeat/backend-only-features))
#{}))))
(defn get-project
[cfg project-id]
(db/get cfg :project {:id project-id}))
(def ^:private sql:get-teams
"SELECT t.* FROM team WHERE id = ANY(?)")
(defn get-teams
[cfg ids]
(let [conn (db/get-connection cfg)
ids (db/create-array conn "uuid" ids)]
(->> (db/exec! conn [sql:get-teams ids])
(map decode-row))))
(defn get-team
[cfg team-id]
(-> (db/get cfg :team {:id team-id})
@@ -129,10 +230,8 @@
"Given a set of file-id's, return all matching relations with the libraries"
[cfg ids]
(dm/assert!
"expected a set of uuids"
(and (set? ids)
(every? uuid? ids)))
(assert (set? ids) "expected a set of uuids")
(assert (every? uuid? ids) "expected a set of uuids")
(db/run! cfg (fn [{:keys [::db/conn]}]
(let [ids (db/create-array conn "uuid" ids)
@@ -167,9 +266,10 @@
(defn get-file-object-thumbnails
"Return all file object thumbnails for a given file."
[cfg file-id]
(db/query cfg :file-tagged-object-thumbnail
{:file-id file-id
:deleted-at nil}))
(->> (db/query cfg :file-tagged-object-thumbnail
{:file-id file-id
:deleted-at nil})
(not-empty)))
(defn get-file-thumbnail
"Return the thumbnail for the specified file-id"
@@ -180,70 +280,91 @@
:data nil}
{::sql/columns [:media-id :file-id :revn]}))
(def ^:private sql:get-missing-media-references
"SELECT fmo.*
FROM file_media_object AS fmo
WHERE fmo.id = ANY(?::uuid[])
AND file_id != ?")
(def ^:private
xform:collect-media-id
(comp
(map :objects)
(mapcat vals)
(mapcat (fn [obj]
;; NOTE: because of some bug, we ended with
;; many shape types having the ability to
;; have fill-image attribute (which initially
;; designed for :path shapes).
(sequence
(keep :id)
(concat [(:fill-image obj)
(:metadata obj)]
(map :fill-image (:fills obj))
(map :stroke-image (:strokes obj))
(->> (:content obj)
(tree-seq map? :children)
(mapcat :fills)
(map :fill-image))))))))
(defn update-media-references!
"Given a file and a coll of media-refs, check if all provided
references are correct or fix them in-place"
[{:keys [::db/conn] :as cfg} {file-id :id :as file} media-refs]
(let [missing-index
(reduce (fn [result {:keys [id] :as fmo}]
(assoc result id
(-> fmo
(assoc :id (uuid/next))
(assoc :file-id file-id)
(dissoc :created-at)
(dissoc :deleted-at))))
{}
(db/exec! conn [sql:get-missing-media-references
(->> (into #{} xf-map-id media-refs)
(db/create-array conn "uuid"))
file-id]))
(defn collect-used-media
"Given a fdata (file data), returns all media references."
[data]
(-> #{}
(into xform:collect-media-id (vals (:pages-index data)))
(into xform:collect-media-id (vals (:components data)))
(into (keys (:media data)))))
lookup-index
(fn [id]
(if-let [mobj (get missing-index id)]
(do
(l/trc :hint "lookup index"
:file-id (str file-id)
:snap-id (str (:snapshot-id file))
:id (str id)
:result (str (get mobj :id)))
(get mobj :id))
id))
update-shapes
(fn [data {:keys [page-id shape-id]}]
(d/update-in-when data [:pages-index page-id :objects shape-id] cfh/relink-refs lookup-index))
file
(update file :data #(reduce update-shapes % media-refs))]
(doseq [[old-id item] missing-index]
(l/dbg :hint "create missing references"
:file-id (str file-id)
:snap-id (str (:snapshot-id file))
:old-id (str old-id)
:id (str (:id item)))
(db/insert! conn :file-media-object item
{::db/return-keys false}))
file))
(def sql:get-file-media
"SELECT * FROM file_media_object WHERE id = ANY(?)")
(defn get-file-media
[cfg {:keys [data id] :as file}]
[cfg {:keys [data] :as file}]
(db/run! cfg (fn [{:keys [::db/conn]}]
(let [ids (collect-used-media data)
ids (db/create-array conn "uuid" ids)
sql (str "SELECT * FROM file_media_object WHERE id = ANY(?)")]
(let [used (cfh/collect-used-media data)
used (db/create-array conn "uuid" used)]
(db/exec! conn [sql:get-file-media used])))))
;; We assoc the file-id again to the file-media-object row
;; because there are cases that used objects refer to other
;; files and we need to ensure in the exportation process that
;; all ids matches
(->> (db/exec! conn [sql ids])
(mapv #(assoc % :file-id id)))))))
(def ^:private sql:get-team-files
(def ^:private sql:get-team-files-ids
"SELECT f.id FROM file AS f
JOIN project AS p ON (p.id = f.project_id)
WHERE p.team_id = ?")
(defn get-team-files
(defn get-team-files-ids
"Get a set of file ids for the specified team-id"
[{:keys [::db/conn]} team-id]
(->> (db/exec! conn [sql:get-team-files team-id])
(->> (db/exec! conn [sql:get-team-files-ids team-id])
(into #{} xf-map-id)))
(def ^:private sql:get-team-projects
"SELECT p.id FROM project AS p
"SELECT p.* FROM project AS p
WHERE p.team_id = ?
AND p.deleted_at IS NULL")
(defn get-team-projects
"Get a set of project ids for the team"
[{:keys [::db/conn]} team-id]
(->> (db/exec! conn [sql:get-team-projects team-id])
[cfg team-id]
(->> (db/exec! cfg [sql:get-team-projects team-id])
(into #{} xf-map-id)))
(def ^:private sql:get-project-files
@@ -257,53 +378,16 @@
(->> (db/exec! conn [sql:get-project-files project-id])
(into #{} xf-map-id)))
(defn remap-thumbnail-object-id
[object-id file-id]
(str/replace-first object-id #"^(.*?)/" (str file-id "/")))
(defn- relink-shapes
"A function responsible to analyze all file data and
replace the old :component-file reference with the new
ones, using the provided file-index."
[data]
(letfn [(process-map-form [form]
(cond-> form
;; Relink image shapes
(and (map? (:metadata form))
(= :image (:type form)))
(update-in [:metadata :id] lookup-index)
;; Relink paths with fill image
(map? (:fill-image form))
(update-in [:fill-image :id] lookup-index)
;; This covers old shapes and the new :fills.
(uuid? (:fill-color-ref-file form))
(update :fill-color-ref-file lookup-index)
;; This covers the old shapes and the new :strokes
(uuid? (:stroke-color-ref-file form))
(update :stroke-color-ref-file lookup-index)
;; This covers all text shapes that have typography referenced
(uuid? (:typography-ref-file form))
(update :typography-ref-file lookup-index)
;; This covers the component instance links
(uuid? (:component-file form))
(update :component-file lookup-index)
;; This covers the shadows and grids (they have directly
;; the :file-id prop)
(uuid? (:file-id form))
(update :file-id lookup-index)))
(process-form [form]
(if (map? form)
(try
(process-map-form form)
(catch Throwable cause
(l/warn :hint "failed form" :form (pr-str form) ::l/sync? true)
(throw cause)))
form))]
(walk/postwalk process-form data)))
(cfh/relink-refs data lookup-index))
(defn- relink-media
"A function responsible of process the :media attr of file data and
@@ -334,118 +418,207 @@
[cfg data file-id]
(let [library-ids (get-libraries cfg [file-id])]
(reduce (fn [data library-id]
(let [library (get-file cfg library-id)]
(ctf/absorb-assets data (:data library))))
(if-let [library (get-file cfg library-id)]
(ctf/absorb-assets data (:data library))
data))
data
library-ids)))
(defn- fix-version
[file]
(let [file (fmg/fix-version file)]
;; FIXME: We're temporarily activating all migrations because a
;; problem in the environments messed up with the version numbers
;; When this problem is fixed delete the following line
(if (> (:version file) 22)
(assoc file :version 22)
file)))
(defn disable-database-timeouts!
[cfg]
(let [conn (db/get-connection cfg)]
(db/exec-one! conn ["SET LOCAL idle_in_transaction_session_timeout = 0"])
(db/exec-one! conn ["SET CONSTRAINTS ALL DEFERRED"])))
(defn invalidate-thumbnails
[cfg file-id]
(let [storage (sto/resolve cfg)
sql-1
(str "update file_tagged_object_thumbnail "
" set deleted_at = now() "
" where file_id=? returning media_id")
sql-2
(str "update file_thumbnail "
" set deleted_at = now() "
" where file_id=? returning media_id")]
(run! #(sto/touch-object! storage %)
(sequence
(keep :media-id)
(concat
(db/exec! cfg [sql-1 file-id])
(db/exec! cfg [sql-2 file-id]))))))
(defn process-file
[{:keys [id] :as file}]
(-> file
(fix-version)
(update :data (fn [fdata]
(-> fdata
(assoc :id id)
(dissoc :recent-colors))))
(fmg/migrate-file)
(update :data (fn [fdata]
(-> fdata
(update :pages-index relink-shapes)
(update :components relink-shapes)
(update :media relink-media)
(update :colors relink-colors)
(d/without-nils))))))
[cfg {:keys [id] :as file}]
(let [libs (delay (get-resolved-file-libraries cfg file))]
(-> file
(update :data (fn [fdata]
(-> fdata
(assoc :id id)
(dissoc :recent-colors))))
(update :data (fn [fdata]
(-> fdata
(update :pages-index relink-shapes)
(update :components relink-shapes)
(update :media relink-media)
(update :colors relink-colors)
(d/without-nils))))
(fmg/migrate-file libs)
(defn- upsert-file!
[conn file]
(let [sql (str "INSERT INTO file (id, project_id, name, revn, version, is_shared, data, created_at, modified_at) "
"VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) "
"ON CONFLICT (id) DO UPDATE SET data=?, version=?")]
(db/exec-one! conn [sql
(:id file)
(:project-id file)
(:name file)
(:revn file)
(:version file)
(:is-shared file)
(:data file)
(:created-at file)
(:modified-at file)
(:data file)
(:version file)])))
;; NOTE: this is necessary because when we just creating a new
;; file from imported artifact or cloned file there are no
;; migrations registered on the database, so we need to persist
;; all of them, not only the applied
(vary-meta dissoc ::fmg/migrated))))
(defn persist-file!
"Applies all the final validations and perist the file."
[{:keys [::db/conn ::timestamp] :as cfg} {:keys [id] :as file}]
(defn encode-file
[cfg {:keys [id features] :as file}]
(let [file (if (and (contains? features "fdata/objects-map")
(:data file))
(fdata/enable-objects-map file)
file)
(dm/assert!
"expected valid timestamp"
(dt/instant? timestamp))
file (if (and (contains? features "fdata/pointer-map")
(:data file))
(let [file (-> file
(assoc :created-at timestamp)
(assoc :modified-at timestamp)
(assoc :ignore-sync-until (dt/plus timestamp (dt/duration {:seconds 5})))
(update :features
(fn [features]
(let [features (cfeat/check-supported-features! features)]
(-> (::features cfg #{})
(set/difference cfeat/frontend-only-features)
(set/union features))))))
(binding [pmap/*tracked* (pmap/create-tracked :inherit true)]
(let [file (fdata/enable-pointer-map file)]
(fdata/persist-pointers! cfg id)
file))
file)]
_ (when (contains? cf/flags :file-schema-validation)
(fval/validate-file-schema! file))
(-> file
(d/update-when :features into-array)
(d/update-when :data blob/encode))))
_ (when (contains? cf/flags :soft-file-schema-validation)
(let [result (ex/try! (fval/validate-file-schema! file))]
(when (ex/exception? result)
(l/error :hint "file schema validation error" :cause result))))
(defn- file->params
[file]
(-> (select-keys file file-attrs)
(dissoc :team-id)
(dissoc :migrations)))
file (if (contains? (:features file) "fdata/objects-map")
(feat.fdata/enable-objects-map file)
file)
(defn insert-file!
"Insert a new file into the database table. Expectes a not-encoded file.
Returns nil."
[{:keys [::db/conn] :as cfg} file & {:as opts}]
file (if (contains? (:features file) "fdata/pointer-map")
(binding [pmap/*tracked* (pmap/create-tracked)]
(let [file (feat.fdata/enable-pointer-map file)]
(feat.fdata/persist-pointers! cfg id)
file))
file)
(when (:migrations file)
(fmigr/upsert-migrations! conn file))
params (-> file
(update :features db/encode-pgarray conn "text")
(update :data blob/encode))]
(let [file (encode-file cfg file)]
(db/insert! conn :file
(file->params file)
{::db/return-keys false})
nil))
(defn update-file!
"Update an existing file on the database. Expects not encoded file."
[{:keys [::db/conn] :as cfg} {:keys [id] :as file} & {:as opts}]
(if (::reset-migrations opts false)
(fmigr/reset-migrations! conn file)
(fmigr/upsert-migrations! conn file))
(let [file
(encode-file cfg file)
params
(file->params (dissoc file :id))]
(db/update! conn :file params
{:id id}
{::db/return-keys false})
nil))
(defn save-file!
"Applies all the final validations and perist the file, binfile
specific, should not be used outside of binfile domain.
Returns nil"
[{:keys [::timestamp] :as cfg} file & {:as opts}]
(assert (ct/inst? timestamp) "expected valid timestamp")
(let [file (-> file
(assoc :created-at timestamp)
(assoc :modified-at timestamp)
(cond-> (not (::overwrite cfg))
(assoc :ignore-sync-until (ct/plus timestamp (ct/duration {:seconds 5}))))
(update :features
(fn [features]
(-> (::features cfg #{})
(set/union features)
;; We never want to store
;; frontend-only features on file
(set/difference cfeat/frontend-only-features)))))]
(when (contains? cf/flags :file-schema-validation)
(fval/validate-file-schema! file))
(when (contains? cf/flags :soft-file-schema-validation)
(let [result (ex/try! (fval/validate-file-schema! file))]
(when (ex/exception? result)
(l/error :hint "file schema validation error" :cause result))))
(if (::overwrite cfg)
(upsert-file! conn params)
(db/insert! conn :file params ::db/return-keys false))
(update-file! cfg file (assoc opts ::reset-migrations true))
(insert-file! cfg file opts))))
file))
(def ^:private sql:get-file-libraries
"WITH RECURSIVE libs AS (
SELECT fl.*, flr.synced_at
FROM file AS fl
JOIN file_library_rel AS flr ON (flr.library_file_id = fl.id)
WHERE flr.file_id = ?::uuid
UNION
SELECT fl.*, flr.synced_at
FROM file AS fl
JOIN file_library_rel AS flr ON (flr.library_file_id = fl.id)
JOIN libs AS l ON (flr.file_id = l.id)
)
SELECT l.id,
l.features,
l.project_id,
p.team_id,
l.created_at,
l.modified_at,
l.deleted_at,
l.name,
l.revn,
l.vern,
l.synced_at,
l.is_shared,
l.version
FROM libs AS l
INNER JOIN project AS p ON (p.id = l.project_id)
WHERE l.deleted_at IS NULL OR l.deleted_at > now();")
(defn apply-pending-migrations!
"Apply alredy registered pending migrations to files"
[cfg]
(doseq [[feature file-id] (-> *state* deref :pending-to-migrate)]
(case feature
"components/v2"
(feat.compv2/migrate-file! cfg file-id
:validate? (::validate cfg true)
:skip-on-graphic-error? true)
(defn get-file-libraries
[conn file-id]
(into []
(comp
;; FIXME: :is-indirect set to false to all rows looks
;; completly useless
(map #(assoc % :is-indirect false))
(map decode-row))
(db/exec! conn [sql:get-file-libraries file-id])))
"fdata/shape-data-type"
nil
(defn get-resolved-file-libraries
"Get all file libraries including itself. Returns an instance of
LoadableWeakValueMap that allows do not have strong references to
the loaded libraries and reduce possible memory pressure on having
all this libraries loaded at same time on processing file validation
or file migration.
(ex/raise :type :internal
:code :no-migration-defined
:hint (str/ffmt "no migation for feature '%' on file importation" feature)
:feature feature))))
This still requires at least one library at time to be loaded while
access to it is performed, but it improves considerable not having
the need of loading all the libraries at the same time."
[{:keys [::db/conn] :as cfg} {:keys [id] :as file}]
(let [library-ids (->> (get-file-libraries conn (:id file))
(map :id)
(cons (:id file)))
load-fn #(get-file cfg % :migrate? false)]
(weak/loadable-weak-value-map library-ids load-fn {id file})))

View File

@@ -0,0 +1,42 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) KALEIDOS INC
(ns app.binfile.migrations
"A binfile related migrations handling"
(:require
[app.binfile.common :as bfc]
[app.common.exceptions :as ex]
[app.common.features :as cfeat]
[clojure.set :as set]
[cuerdas.core :as str]))
(defn register-pending-migrations!
"All features that are enabled and requires explicit migration are
added to the state for a posterior migration step."
[cfg {:keys [id features] :as file}]
(doseq [feature (-> (::features cfg)
(set/difference cfeat/no-migration-features)
(set/difference cfeat/backend-only-features)
(set/difference features))]
(vswap! bfc/*state* update :pending-to-migrate (fnil conj []) [feature id]))
file)
(defn apply-pending-migrations!
"Apply alredy registered pending migrations to files"
[_cfg]
(doseq [[feature _file-id] (-> bfc/*state* deref :pending-to-migrate)]
(case feature
"components/v2"
nil
"fdata/shape-data-type"
nil
(ex/raise :type :internal
:code :no-migration-defined
:hint (str/ffmt "no migation for feature '%' on file importation" feature)
:feature feature))))

View File

@@ -9,6 +9,7 @@
(:refer-clojure :exclude [assert])
(:require
[app.binfile.common :as bfc]
[app.binfile.migrations :as bfm]
[app.common.data :as d]
[app.common.data.macros :as dm]
[app.common.exceptions :as ex]
@@ -16,6 +17,7 @@
[app.common.fressian :as fres]
[app.common.logging :as l]
[app.common.spec :as us]
[app.common.time :as ct]
[app.common.types.file :as ctf]
[app.common.uuid :as uuid]
[app.config :as cf]
@@ -29,7 +31,6 @@
[app.storage.tmp :as tmp]
[app.tasks.file-gc]
[app.util.events :as events]
[app.util.time :as dt]
[app.worker :as-alias wrk]
[clojure.java.io :as jio]
[clojure.set :as set]
@@ -49,15 +50,6 @@
(set! *warn-on-reflection* true)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; DEFAULTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Threshold in MiB when we pass from using
;; in-memory byte-array's to use temporal files.
(def temp-file-threshold
(* 1024 1024 2))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; LOW LEVEL STREAM IO API
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -65,11 +57,6 @@
(def ^:const buffer-size (:xnio/buffer-size yt/defaults))
(def ^:const penpot-magic-number 800099563638710213)
;; A maximum (storage) object size allowed: 100MiB
(def ^:const max-object-size
(* 1024 1024 100))
(def ^:dynamic *position* nil)
(defn get-mark
@@ -236,7 +223,7 @@
(defn copy-stream!
[^OutputStream output ^InputStream input ^long size]
(let [written (io/copy! input output :size size)]
(let [written (io/copy input output :size size)]
(l/trace :fn "copy-stream!" :position @*position* :size size :written written ::l/sync? true)
(swap! *position* + written)
written))
@@ -258,18 +245,18 @@
p (tmp/tempfile :prefix "penpot.binfile.")]
(assert-mark m :stream)
(when (> s max-object-size)
(when (> s bfc/max-object-size)
(ex/raise :type :validation
:code :max-file-size-reached
:hint (str/ffmt "unable to import storage object with size % bytes" s)))
(if (> s temp-file-threshold)
(if (> s bfc/temp-file-threshold)
(with-open [^OutputStream output (io/output-stream p)]
(let [readed (io/copy! input output :offset 0 :size s)]
(let [readed (io/copy input output :offset 0 :size s)]
(l/trace :fn "read-stream*!" :expected s :readed readed :position @*position* ::l/sync? true)
(swap! *position* + readed)
[s p]))
[s (io/read-as-bytes input :size s)])))
[s (io/read input :size s)])))
(defmacro assert-read-label!
[input expected-label]
@@ -312,7 +299,7 @@
(defmulti write-section ::section)
(defn write-export!
[{:keys [::include-libraries ::embed-assets] :as cfg}]
[{:keys [::bfc/include-libraries ::bfc/embed-assets] :as cfg}]
(when (and include-libraries embed-assets)
(throw (IllegalArgumentException.
"the `include-libraries` and `embed-assets` are mutally excluding options")))
@@ -337,7 +324,7 @@
[:v1/metadata :v1/files :v1/rels :v1/sobjects]))))
(defmethod write-section :v1/metadata
[{:keys [::output ::ids ::include-libraries] :as cfg}]
[{:keys [::output ::bfc/ids ::bfc/include-libraries] :as cfg}]
(if-let [fids (get-files cfg ids)]
(let [lids (when include-libraries
(bfc/get-libraries cfg ids))
@@ -349,7 +336,7 @@
:hint "unable to retrieve files for export")))
(defmethod write-section :v1/files
[{:keys [::output ::embed-assets ::include-libraries] :as cfg}]
[{:keys [::output ::bfc/embed-assets ::bfc/include-libraries] :as cfg}]
;; Initialize SIDS with empty vector
(vswap! bfc/*state* assoc :sids [])
@@ -381,10 +368,12 @@
::l/sync? true)
(doseq [item media]
(l/dbg :hint "write penpot file media object" :id (:id item) ::l/sync? true))
(l/dbg :hint "write penpot file media object"
:id (:id item) ::l/sync? true))
(doseq [item thumbnails]
(l/dbg :hint "write penpot file object thumbnail" :media-id (str (:media-id item)) ::l/sync? true))
(l/dbg :hint "write penpot file object thumbnail"
:media-id (str (:media-id item)) ::l/sync? true))
(doto output
(write-obj! file)
@@ -394,7 +383,7 @@
(vswap! bfc/*state* update :sids into bfc/xf-map-media-id thumbnails))))
(defmethod write-section :v1/rels
[{:keys [::output ::include-libraries] :as cfg}]
[{:keys [::output ::bfc/include-libraries] :as cfg}]
(let [ids (-> bfc/*state* deref :files set)
rels (when include-libraries
(bfc/get-files-rels cfg ids))]
@@ -433,25 +422,19 @@
(defmulti read-import ::version)
(defmulti read-section ::section)
(s/def ::profile-id ::us/uuid)
(s/def ::project-id ::us/uuid)
(s/def ::input io/input-stream?)
(s/def ::overwrite? (s/nilable ::us/boolean))
(s/def ::bfc/profile-id ::us/uuid)
(s/def ::bfc/project-id ::us/uuid)
(s/def ::bfc/input io/input-stream?)
(s/def ::ignore-index-errors? (s/nilable ::us/boolean))
;; FIXME: replace with schema
(s/def ::read-import-options
(s/keys :req [::db/pool ::sto/storage ::project-id ::profile-id ::input]
:opt [::overwrite? ::ignore-index-errors?]))
(s/keys :req [::db/pool ::sto/storage ::bfc/project-id ::bfc/profile-id ::bfc/input]
:opt [::ignore-index-errors?]))
(defn read-import!
"Do the importation of the specified resource in penpot custom binary
format. There are some options for customize the importation
behavior:
`::bfc/overwrite`: if true, instead of creating new files and remapping id references,
it reuses all ids and updates existing objects; defaults to `false`."
[{:keys [::input ::bfc/timestamp] :or {timestamp (dt/now)} :as options}]
format."
[{:keys [::bfc/input ::bfc/timestamp] :or {timestamp (ct/now)} :as options}]
(dm/assert!
"expected input stream"
@@ -459,15 +442,15 @@
(dm/assert!
"expected valid instant"
(dt/instant? timestamp))
(ct/inst? timestamp))
(let [version (read-header! input)]
(read-import (assoc options ::version version ::bfc/timestamp timestamp))))
(defn- read-import-v1
[{:keys [::db/conn ::project-id ::profile-id ::input] :as cfg}]
(db/exec-one! conn ["SET LOCAL idle_in_transaction_session_timeout = 0"])
(db/exec-one! conn ["SET CONSTRAINTS ALL DEFERRED"])
[{:keys [::db/conn ::bfc/project-id ::bfc/profile-id ::bfc/input] :as cfg}]
(bfc/disable-database-timeouts! cfg)
(pu/with-open [input (zstd-input-stream input)
input (io/data-input-stream input)]
@@ -485,13 +468,13 @@
(let [options (-> cfg
(assoc ::bfc/features features)
(assoc ::section section)
(assoc ::input input))]
(assoc ::bfc/input input))]
(binding [bfc/*options* options]
(events/tap :progress {:op :import :section section})
(read-section options))))
[:v1/metadata :v1/files :v1/rels :v1/sobjects])
(bfc/apply-pending-migrations! cfg)
(bfm/apply-pending-migrations! cfg)
;; Knowing that the ids of the created files are in index,
;; just lookup them and return it as a set
@@ -503,7 +486,7 @@
(db/tx-run! options read-import-v1))
(defmethod read-section :v1/metadata
[{:keys [::input]}]
[{:keys [::bfc/input]}]
(let [{:keys [version files]} (read-obj! input)]
(l/dbg :hint "metadata readed"
:version (:full version)
@@ -520,18 +503,8 @@
(update :object-id #(str/replace-first % #"^(.*?)/" (str file-id "/")))))
thumbnails))
(defn- clean-features
[file]
(update file :features (fn [features]
(if (set? features)
(-> features
(cfeat/migrate-legacy-features)
(set/difference cfeat/backend-only-features))
#{}))))
(defmethod read-section :v1/files
[{:keys [::db/conn ::input ::project-id ::bfc/overwrite ::name] :as system}]
[{:keys [::bfc/input ::bfc/project-id ::bfc/name] :as system}]
(doseq [[idx expected-file-id] (d/enumerate (-> bfc/*state* deref :files))]
(let [file (read-obj! input)
media (read-obj! input)
@@ -539,7 +512,7 @@
file-id (:id file)
file-id' (bfc/lookup-index file-id)
file (clean-features file)
file (bfc/clean-file-features file)
thumbnails (:thumbnails file)]
(when (not= file-id expected-file-id)
@@ -559,7 +532,9 @@
(when (seq thumbnails)
(let [thumbnails (remap-thumbnails thumbnails file-id')]
(l/dbg :hint "updated index with thumbnails" :total (count thumbnails) ::l/sync? true)
(l/dbg :hint "updated index with thumbnails"
:total (count thumbnails)
::l/sync? true)
(vswap! bfc/*state* update :thumbnails bfc/into-vec thumbnails)))
(when (seq media)
@@ -576,8 +551,8 @@
(cond-> (and (= idx 0) (some? name))
(assoc :name name))
(assoc :project-id project-id)
(dissoc :thumbnails)
(bfc/process-file))]
(dissoc :thumbnails))
file (bfc/process-file system file)]
;; All features that are enabled and requires explicit migration are
;; added to the state for a posterior migration step.
@@ -587,15 +562,12 @@
(vswap! bfc/*state* update :pending-to-migrate (fnil conj []) [feature file-id']))
(l/dbg :hint "create file" :id (str file-id') ::l/sync? true)
(bfc/persist-file! system file)
(when overwrite
(db/delete! conn :file-thumbnail {:file-id file-id'}))
(bfc/save-file! system file ::db/return-keys false)
file-id'))))
(defmethod read-section :v1/rels
[{:keys [::db/conn ::input ::bfc/timestamp]}]
[{:keys [::db/conn ::bfc/input ::bfc/timestamp]}]
(let [rels (read-obj! input)
ids (into #{} (-> bfc/*state* deref :files))]
;; Insert all file relations
@@ -619,7 +591,7 @@
::l/sync? true))))))
(defmethod read-section :v1/sobjects
[{:keys [::db/conn ::input ::bfc/overwrite ::bfc/timestamp] :as cfg}]
[{:keys [::db/conn ::bfc/input ::bfc/timestamp] :as cfg}]
(let [storage (sto/resolve cfg)
ids (read-obj! input)
thumb? (into #{} (map :media-id) (:thumbnails @bfc/*state*))]
@@ -672,8 +644,7 @@
(-> item
(assoc :file-id file-id)
(d/update-when :media-id bfc/lookup-index)
(d/update-when :thumbnail-id bfc/lookup-index))
{::db/on-conflict-do-nothing? overwrite}))))
(d/update-when :thumbnail-id bfc/lookup-index))))))
(doseq [item (:thumbnails @bfc/*state*)]
(let [item (update item :media-id bfc/lookup-index)]
@@ -682,8 +653,7 @@
:media-id (str (:media-id item))
:object-id (:object-id item)
::l/sync? true)
(db/insert! conn :file-tagged-object-thumbnail item
{::db/on-conflict-do-nothing? overwrite})))))
(db/insert! conn :file-tagged-object-thumbnail item)))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; HIGH LEVEL API
@@ -693,26 +663,26 @@
"Do the exportation of a specified file in custom penpot binary
format. There are some options available for customize the output:
`::include-libraries`: additionally to the specified file, all the
`::bfc/include-libraries`: additionally to the specified file, all the
linked libraries also will be included (including transitive
dependencies).
`::embed-assets`: instead of including the libraries, embed in the
`::bfc/embed-assets`: instead of including the libraries, embed in the
same file library all assets used from external libraries."
[{:keys [::ids] :as cfg} output]
[{:keys [::bfc/ids] :as cfg} output]
(dm/assert!
"expected a set of uuid's for `::ids` parameter"
"expected a set of uuid's for `::bfc/ids` parameter"
(and (set? ids)
(every? uuid? ids)))
(dm/assert!
"expected instance of jio/IOFactory for `input`"
(satisfies? jio/IOFactory output))
(io/coercible? output))
(let [id (uuid/next)
tp (dt/tpoint)
tp (ct/tpoint)
ab (volatile! false)
cs (volatile! nil)]
(try
@@ -738,26 +708,26 @@
:cause @cs)))))
(defn import-files!
[cfg input]
[{:keys [::bfc/input] :as cfg}]
(dm/assert!
"expected valid profile-id and project-id on `cfg`"
(and (uuid? (::profile-id cfg))
(uuid? (::project-id cfg))))
(and (uuid? (::bfc/profile-id cfg))
(uuid? (::bfc/project-id cfg))))
(dm/assert!
"expected instance of jio/IOFactory for `input`"
(satisfies? jio/IOFactory input))
(let [id (uuid/next)
tp (dt/tpoint)
tp (ct/tpoint)
cs (volatile! nil)]
(l/info :hint "import: started" :id (str id))
(try
(binding [*position* (atom 0)]
(pu/with-open [input (io/input-stream input)]
(read-import! (assoc cfg ::input input))))
(read-import! (assoc cfg ::bfc/input input))))
(catch ZstdIOException cause
(ex/raise :type :validation
@@ -772,6 +742,6 @@
(finally
(l/info :hint "import: terminated"
:id (str id)
:elapsed (dt/format-duration (tp))
:elapsed (ct/format-duration (tp))
:error? (some? @cs))))))

View File

@@ -13,6 +13,7 @@
[app.common.data :as d]
[app.common.features :as cfeat]
[app.common.logging :as l]
[app.common.time :as ct]
[app.common.transit :as t]
[app.common.uuid :as uuid]
[app.config :as cf]
@@ -23,7 +24,6 @@
[app.storage :as sto]
[app.storage.tmp :as tmp]
[app.util.events :as events]
[app.util.time :as dt]
[app.worker :as-alias wrk]
[clojure.set :as set]
[cuerdas.core :as str]
@@ -141,16 +141,15 @@
(write! cfg :team-font-variant id font))))
(defn- write-project!
[cfg project-id]
(let [project (bfc/get-project cfg project-id)]
(events/tap :progress
{:op :export
:section :write-project
:id project-id
:name (:name project)})
(l/trc :hint "write" :obj "project" :id (str project-id))
(write! cfg :project (str project-id) project)
(vswap! bfc/*state* update :projects conj project-id)))
[cfg project]
(events/tap :progress
{:op :export
:section :write-project
:id (:id project)
:name (:name project)})
(l/trc :hint "write" :obj "project" :id (str (:id project)))
(write! cfg :project (str (:id project)) project)
(vswap! bfc/*state* update :projects conj (:id project)))
(defn- write-file!
[cfg file-id]
@@ -191,7 +190,7 @@
[{:keys [::sto/storage] :as cfg} id]
(let [sobj (sto/get-object storage id)
data (with-open [input (sto/get-object-data storage sobj)]
(io/read-as-bytes input))]
(io/read input))]
(l/trc :hint "write" :obj "storage-object" :id (str id) :size (:size sobj))
(write! cfg :storage-object id (meta sobj) data)))
@@ -282,8 +281,8 @@
(let [file (-> (read-obj cfg :file file-id)
(update :id bfc/lookup-index)
(update :project-id bfc/lookup-index)
(bfc/process-file))]
(update :project-id bfc/lookup-index))
file (bfc/process-file cfg file)]
(events/tap :progress
{:op :import
@@ -298,7 +297,7 @@
(set/difference (:features file)))]
(vswap! bfc/*state* update :pending-to-migrate (fnil conj []) [feature (:id file)]))
(bfc/persist-file! cfg file))
(bfc/save-file! cfg file ::db/return-keys false))
(doseq [thumbnail (read-seq cfg :file-object-thumbnail file-id)]
(let [thumbnail (-> thumbnail
@@ -345,7 +344,7 @@
(defn export-team!
[cfg team-id]
(let [id (uuid/next)
tp (dt/tpoint)
tp (ct/tpoint)
cfg (create-database cfg)]
(l/inf :hint "start"
@@ -363,7 +362,7 @@
(bfc/get-team-projects cfg team-id))
(run! (partial write-file! cfg)
(bfc/get-team-files cfg team-id))
(bfc/get-team-files-ids cfg team-id))
(run! (partial write-storage-object! cfg)
(-> bfc/*state* deref :storage-objects))
@@ -379,15 +378,15 @@
(l/inf :hint "end"
:operation "export"
:id (str id)
:elapsed (dt/format-duration elapsed)))))))
:elapsed (ct/format-duration elapsed)))))))
(defn import-team!
[cfg path]
(let [id (uuid/next)
tp (dt/tpoint)
tp (ct/tpoint)
cfg (-> (create-database cfg path)
(assoc ::bfc/timestamp (dt/now)))]
(assoc ::bfc/timestamp (ct/now)))]
(l/inf :hint "start"
:operation "import"
@@ -435,4 +434,4 @@
(l/inf :hint "end"
:operation "import"
:id (str id)
:elapsed (dt/format-duration elapsed)))))))
:elapsed (ct/format-duration elapsed)))))))

View File

File diff suppressed because it is too large Load Diff

View File

@@ -12,9 +12,10 @@
[app.common.exceptions :as ex]
[app.common.flags :as flags]
[app.common.schema :as sm]
[app.common.time :as ct]
[app.common.uri :as u]
[app.common.version :as v]
[app.util.overrides]
[app.util.time :as dt]
[clojure.core :as c]
[clojure.java.io :as io]
[cuerdas.core :as str]
@@ -26,11 +27,11 @@
[_ data]
(d/without-nils data))
(defmethod ig/prep-key :default
[_ data]
(if (map? data)
(d/without-nils data)
data))
(defmethod ig/expand-key :default
[k v]
{k (if (map? v)
(d/without-nils v)
v)})
(def default
{:database-uri "postgresql://postgres/penpot"
@@ -42,7 +43,6 @@
:rpc-rlimit-config "resources/rlimit.edn"
:rpc-climit-config "resources/climit.edn"
:auto-file-snapshot-total 10
:auto-file-snapshot-every 5
:auto-file-snapshot-timeout "3h"
@@ -59,10 +59,10 @@
:smtp-default-reply-to "Penpot <no-reply@example.com>"
:smtp-default-from "Penpot <no-reply@example.com>"
:profile-complaint-max-age (dt/duration {:days 7})
:profile-complaint-max-age (ct/duration {:days 7})
:profile-complaint-threshold 2
:profile-bounce-max-age (dt/duration {:days 7})
:profile-bounce-max-age (ct/duration {:days 7})
:profile-bounce-threshold 10
:telemetry-uri "https://telemetry.penpot.app/"
@@ -96,17 +96,16 @@
[:http-server-max-body-size {:optional true} ::sm/int]
[:http-server-max-multipart-body-size {:optional true} ::sm/int]
[:http-server-io-threads {:optional true} ::sm/int]
[:http-server-worker-threads {:optional true} ::sm/int]
[:http-server-max-worker-threads {:optional true} ::sm/int]
[:telemetry-uri {:optional true} :string]
[:telemetry-with-taiga {:optional true} ::sm/boolean] ;; DELETE
[:auto-file-snapshot-total {:optional true} ::sm/int]
[:auto-file-snapshot-every {:optional true} ::sm/int]
[:auto-file-snapshot-timeout {:optional true} ::dt/duration]
[:auto-file-snapshot-timeout {:optional true} ::ct/duration]
[:media-max-file-size {:optional true} ::sm/int]
[:deletion-delay {:optional true} ::dt/duration] ;; REVIEW
[:deletion-delay {:optional true} ::ct/duration] ;; REVIEW
[:telemetry-enabled {:optional true} ::sm/boolean]
[:default-blob-version {:optional true} ::sm/int]
[:allow-demo-users {:optional true} ::sm/boolean]
@@ -126,7 +125,7 @@
[:worker-webhook-parallelism {:optional true} ::sm/int]
[:database-password {:optional true} [:maybe :string]]
[:database-uri {:optional true} :string]
[:database-uri {:optional true} ::sm/uri]
[:database-username {:optional true} [:maybe :string]]
[:database-readonly {:optional true} ::sm/boolean]
[:database-min-pool-size {:optional true} ::sm/int]
@@ -142,13 +141,17 @@
[:quotes-font-variants-per-team {:optional true} ::sm/int]
[:quotes-comment-threads-per-file {:optional true} ::sm/int]
[:quotes-comments-per-file {:optional true} ::sm/int]
[:quotes-snapshots-per-file {:optional true} ::sm/int]
[:quotes-snapshots-per-team {:optional true} ::sm/int]
[:quotes-team-access-requests-per-team {:optional true} ::sm/int]
[:quotes-team-access-requests-per-requester {:optional true} ::sm/int]
[:auth-data-cookie-domain {:optional true} :string]
[:auth-token-cookie-name {:optional true} :string]
[:auth-token-cookie-max-age {:optional true} ::dt/duration]
[:auth-token-cookie-max-age {:optional true} ::ct/duration]
[:registration-domain-whitelist {:optional true} [::sm/set :string]]
[:email-verify-threshold {:optional true} ::dt/duration]
[:email-verify-threshold {:optional true} ::ct/duration]
[:github-client-id {:optional true} :string]
[:github-client-secret {:optional true} :string]
@@ -183,12 +186,12 @@
[:ldap-starttls {:optional true} ::sm/boolean]
[:ldap-user-query {:optional true} :string]
[:profile-bounce-max-age {:optional true} ::dt/duration]
[:profile-bounce-max-age {:optional true} ::ct/duration]
[:profile-bounce-threshold {:optional true} ::sm/int]
[:profile-complaint-max-age {:optional true} ::dt/duration]
[:profile-complaint-max-age {:optional true} ::ct/duration]
[:profile-complaint-threshold {:optional true} ::sm/int]
[:redis-uri {:optional true} :string]
[:redis-uri {:optional true} ::sm/uri]
[:email-domain-blacklist {:optional true} ::fs/path]
[:email-domain-whitelist {:optional true} ::fs/path]
@@ -211,34 +214,32 @@
[:media-uri {:optional true} :string]
[:assets-path {:optional true} :string]
;; Legacy, will be removed in 2.5
[:netty-io-threads {:optional true} ::sm/int]
[:executor-threads {:optional true} ::sm/int]
;; DEPRECATED
[:assets-storage-backend {:optional true} :keyword]
[:storage-assets-fs-directory {:optional true} :string]
[:storage-assets-s3-bucket {:optional true} :string]
[:storage-assets-s3-region {:optional true} :keyword]
[:storage-assets-s3-endpoint {:optional true} :string]
[:storage-assets-s3-io-threads {:optional true} ::sm/int]
[:storage-assets-s3-endpoint {:optional true} ::sm/uri]
[:objects-storage-backend {:optional true} :keyword]
[:objects-storage-fs-directory {:optional true} :string]
[:objects-storage-s3-bucket {:optional true} :string]
[:objects-storage-s3-region {:optional true} :keyword]
[:objects-storage-s3-endpoint {:optional true} :string]
[:objects-storage-s3-io-threads {:optional true} ::sm/int]]))
(def default-flags
[:enable-backend-api-doc
:enable-backend-openapi-doc
:enable-backend-worker
:enable-secure-session-cookies
:enable-email-verification
:enable-v2-migration])
[:objects-storage-s3-endpoint {:optional true} ::sm/uri]]))
(defn- parse-flags
[config]
(flags/parse flags/default
default-flags
(:flags config)))
(let [public-uri (c/get config :public-uri)
public-uri (some-> public-uri (u/uri))
extra-flags (if (and public-uri
(= (:scheme public-uri) "http")
(not= (:host public-uri) "localhost"))
#{:disable-secure-session-cookies}
#{})]
(flags/parse flags/default extra-flags (:flags config))))
(defn read-env
[prefix]
@@ -298,7 +299,7 @@
(defn get-deletion-delay
[]
(or (c/get config :deletion-delay)
(dt/duration {:days 7})))
(ct/duration {:days 7})))
(defn get
"A configuration getter. Helps code be more testable."

View File

@@ -10,20 +10,21 @@
[app.common.data :as d]
[app.common.exceptions :as ex]
[app.common.geom.point :as gpt]
[app.common.json :as json]
[app.common.logging :as l]
[app.common.spec :as us]
[app.common.schema :as sm]
[app.common.time :as ct]
[app.common.transit :as t]
[app.common.uuid :as uuid]
[app.db.sql :as sql]
[app.metrics :as mtx]
[app.util.json :as json]
[app.util.time :as dt]
[clojure.java.io :as io]
[clojure.set :as set]
[clojure.spec.alpha :as s]
[integrant.core :as ig]
[next.jdbc :as jdbc]
[next.jdbc.date-time :as jdbc-dt])
[next.jdbc.date-time :as jdbc-dt]
[next.jdbc.prepare :as jdbc.prepare]
[next.jdbc.transaction])
(:import
com.zaxxer.hikari.HikariConfig
com.zaxxer.hikari.HikariDataSource
@@ -33,6 +34,7 @@
java.io.InputStream
java.io.OutputStream
java.sql.Connection
java.sql.PreparedStatement
java.sql.Savepoint
org.postgresql.PGConnection
org.postgresql.geometric.PGpoint
@@ -42,6 +44,8 @@
org.postgresql.util.PGInterval
org.postgresql.util.PGobject))
(def ^:dynamic *conn* nil)
(declare open)
(declare create-pool)
@@ -49,27 +53,17 @@
;; Initialization
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(s/def ::connection-timeout ::us/integer)
(s/def ::max-size ::us/integer)
(s/def ::min-size ::us/integer)
(s/def ::name keyword?)
(s/def ::password ::us/string)
(s/def ::uri ::us/not-empty-string)
(s/def ::username ::us/string)
(s/def ::validation-timeout ::us/integer)
(s/def ::read-only? ::us/boolean)
(s/def ::pool-options
(s/keys :opt [::uri
::name
::min-size
::max-size
::connection-timeout
::validation-timeout
::username
::password
::mtx/metrics
::read-only?]))
(def ^:private schema:pool-options
[:map {:title "pool-options"}
[::connect-timeout {:optional true} ::sm/int]
[::max-size {:optional true} ::sm/int]
[::min-size {:optional true} ::sm/int]
[::name {:optional true} :keyword]
[::uri {:optional true} ::sm/uri]
[::password {:optional true} :string]
[::username {:optional true} :string]
[::validation-timeout {:optional true} ::sm/int]
[::read-only {:optional true} ::sm/boolean]])
(def defaults
{::name :main
@@ -79,27 +73,26 @@
::validation-timeout 10000
::idle-timeout 120000 ; 2min
::max-lifetime 1800000 ; 30m
::read-only? false})
::read-only false})
(defmethod ig/prep-key ::pool
[_ cfg]
(merge defaults (d/without-nils cfg)))
;; Don't validate here, just validate that a map is received.
(defmethod ig/pre-init-spec ::pool [_] ::pool-options)
(defmethod ig/assert-key ::pool
[_ options]
(assert (sm/check schema:pool-options options)))
(defmethod ig/init-key ::pool
[_ {:keys [::uri ::read-only?] :as cfg}]
(when uri
(l/info :hint "initialize connection pool"
:name (d/name (::name cfg))
:uri uri
:read-only read-only?
:with-credentials (and (contains? cfg ::username)
(contains? cfg ::password))
:min-size (::min-size cfg)
:max-size (::max-size cfg))
(create-pool cfg)))
[_ cfg]
(let [{:keys [::uri ::read-only] :as cfg}
(merge defaults cfg)]
(when uri
(l/info :hint "initialize connection pool"
:name (d/name (::name cfg))
:uri (str uri)
:read-only read-only
:credentials (and (contains? cfg ::username)
(contains? cfg ::password))
:min-size (::min-size cfg)
:max-size (::max-size cfg))
(create-pool cfg))))
(defmethod ig/halt-key! ::pool
[_ pool]
@@ -115,13 +108,15 @@
"SET idle_in_transaction_session_timeout = 300000;"))
(defn- create-datasource-config
[{:keys [::mtx/metrics ::uri] :as cfg}]
[{:keys [::uri] :as cfg}]
;; (app.common.pprint/pprint cfg)
(let [config (HikariConfig.)]
(doto config
(.setJdbcUrl (str "jdbc:" uri))
(.setPoolName (d/name (::name cfg)))
(.setAutoCommit true)
(.setReadOnly (::read-only? cfg))
(.setReadOnly (::read-only cfg))
(.setConnectionTimeout (::connection-timeout cfg))
(.setValidationTimeout (::validation-timeout cfg))
(.setIdleTimeout (::idle-timeout cfg))
@@ -132,8 +127,8 @@
(.setInitializationFailTimeout -1))
;; When metrics namespace is provided
(when metrics
(->> (::mtx/registry metrics)
(when-let [instance (::mtx/metrics cfg)]
(->> (mtx/get-registry instance)
(PrometheusMetricsTrackerFactory.)
(.setMetricsTrackerFactory config)))
@@ -150,10 +145,22 @@
[conn]
(instance? Connection conn))
(s/def ::conn some?)
(s/def ::nilable-pool (s/nilable ::pool))
(s/def ::pool pool?)
(s/def ::connectable some?)
(defn connectable?
[o]
(or (connection? o)
(pool? o)))
(sm/register!
{:type ::conn
:pred connection?})
(sm/register!
{:type ::connectable
:pred connectable?})
(sm/register!
{:type ::pool
:pred pool?})
(defn closed?
[pool]
@@ -221,16 +228,6 @@
(let [^OutputStream os (.getOutputStream ^LargeObject lobj)]
(io/make-output-stream os opts))))
(defmacro with-atomic
[& args]
(if (symbol? (first args))
(let [cfgs (first args)
body (rest args)]
`(jdbc/with-transaction [conn# (::pool ~cfgs)]
(let [~cfgs (assoc ~cfgs ::conn conn#)]
~@body)))
`(jdbc/with-transaction ~@args)))
(defn open
[system-or-pool]
(if (pool? system-or-pool)
@@ -268,19 +265,17 @@
:else (throw (IllegalArgumentException. "unable to resolve connectable"))))
(def ^:private params-mapping
{::return-keys? :return-keys
::return-keys :return-keys})
{::return-keys :return-keys})
(defn rename-opts
[opts]
(set/rename-keys opts params-mapping))
(def ^:private default-insert-opts
{:builder-fn sql/as-kebab-maps
:return-keys true})
(assoc sql/default-opts :return-keys true))
(def ^:private default-opts
{:builder-fn sql/as-kebab-maps})
sql/default-opts)
(defn exec!
([ds sv] (exec! ds sv nil))
@@ -331,7 +326,7 @@
(defn update!
"A helper that build an UPDATE SQL statement and executes it.
Given a connectable object, a table name, a hash map of columns and
Given a connectable object, a table name, a hash map of columns and
values to set, and either a hash map of columns and values to search
on or a vector of a SQL where clause and parameters, perform an
update on the table.
@@ -384,9 +379,9 @@
(defn is-row-deleted?
[{:keys [deleted-at]}]
(and (dt/instant? deleted-at)
(and (ct/inst? deleted-at)
(< (inst-ms deleted-at)
(inst-ms (dt/now)))))
(inst-ms (ct/now)))))
(defn get*
"Retrieve a single row from database that matches a simple filters. Do
@@ -411,10 +406,38 @@
:hint "database object not found"))
row))
(defn get-with-sql
[ds sql & {:as opts}]
(let [rows (cond->> (exec! ds sql opts)
(::remove-deleted opts true)
(remove is-row-deleted?)
:always
(not-empty))]
(when (and (not rows) (::throw-if-not-exists opts true))
(ex/raise :type :not-found
:code :object-not-found
:hint "database object not found"))
(first rows)))
(def ^:private default-plan-opts
(-> default-opts
(assoc :fetch-size 1000)
(assoc :concurrency :read-only)
(assoc :cursors :close)
(assoc :result-type :forward-only)))
(defn plan
[ds sql]
(-> (get-connectable ds)
(jdbc/plan sql sql/default-opts)))
([ds sql]
(-> (get-connectable ds)
(jdbc/plan sql default-plan-opts)))
([ds sql opts]
(-> (get-connectable ds)
(jdbc/plan sql (merge default-plan-opts opts)))))
(defn cursor
"Return a lazy seq of rows using server side cursors"
@@ -525,43 +548,31 @@
(l/trc :hint "explicit rollback requested (savepoint)")
(.rollback conn sp))))
(defn transact!
"A lower-level function for executing function in a transaction"
([transactable f] (transact! transactable f {}))
([transactable f opts]
(binding [next.jdbc.transaction/*nested-tx* :ignore]
(jdbc/transact transactable f opts))))
(defn tx-run!
"Run a function in a transaction."
[system f & params]
(cond
(connection? system)
(if (connection? system)
(tx-run! {::conn system} f)
(pool? system)
(tx-run! {::pool system} f)
(::conn system)
(let [conn (::conn system)
sp (savepoint conn)]
(try
(let [system' (-> system
(assoc ::savepoint sp)
(dissoc ::rollback))
result (apply f system' params)]
(if (::rollback system)
(rollback! conn sp)
(release! conn sp))
result)
(catch Throwable cause
(.rollback ^Connection conn ^Savepoint sp)
(throw cause))))
(::pool system)
(with-atomic [conn (::pool system)]
(let [system' (-> system
(assoc ::conn conn)
(dissoc ::rollback))
result (apply f system' params)]
(when (::rollback system)
(rollback! conn))
result))
:else
(throw (IllegalArgumentException. "invalid system/cfg provided"))))
(if (pool? system)
(tx-run! {::pool system} f)
(if-let [conn (or (::conn system)
(::pool system))]
(transact! conn
(fn [conn]
(let [system' (-> system
(dissoc ::rollback)
(assoc ::conn conn))]
(apply f system' params)))
{:rollback-only (::rollback system)
:read-only (::read-only system)})
(throw (IllegalArgumentException. "invalid system/cfg provided"))))))
(defn run!
[system f & params]
@@ -594,7 +605,7 @@
(string? o)
(pginterval o)
(dt/duration? o)
(ct/duration? o)
(interval (inst-ms o))
:else
@@ -608,7 +619,7 @@
val (.getValue o)]
(if (or (= typ "json")
(= typ "jsonb"))
(json/decode val)
(json/decode val :key-fn keyword)
val))))
(defn decode-transit-pgobject
@@ -649,7 +660,7 @@
(when data
(doto (org.postgresql.util.PGobject.)
(.setType "jsonb")
(.setValue (json/encode-str data)))))
(.setValue (json/encode data)))))
;; --- Locks
@@ -695,3 +706,8 @@
[cause]
(and (sql-exception? cause)
(= "40001" (.getSQLState ^java.sql.SQLException cause))))
(extend-protocol jdbc.prepare/SettableParameter
clojure.lang.Keyword
(set-parameter [^clojure.lang.Keyword v ^PreparedStatement s ^long i]
(.setObject s i ^String (d/name v))))

View File

@@ -15,14 +15,15 @@
(defn kebab-case [s] (str/replace s #"_" "-"))
(defn snake-case [s] (str/replace s #"-" "_"))
(def default-opts
{:table-fn snake-case
:column-fn snake-case})
(defn as-kebab-maps
[rs opts]
(jdbc-opt/as-unqualified-modified-maps rs (assoc opts :label-fn kebab-case)))
(def default-opts
{:table-fn snake-case
:column-fn snake-case
:builder-fn as-kebab-maps})
(defn insert
([table key-map]
(insert table key-map nil))
@@ -38,7 +39,10 @@
(defn insert-many
[table cols rows opts]
(let [opts (merge default-opts opts)]
(let [opts (merge default-opts opts)
opts (cond-> opts
(::on-conflict-do-nothing opts)
(assoc :suffix "ON CONFLICT DO NOTHING"))]
(sql/for-insert-multi table cols rows opts)))
(defn select
@@ -49,8 +53,15 @@
opts (cond-> opts
(::order-by opts) (assoc :order-by (::order-by opts))
(::columns opts) (assoc :columns (::columns opts))
(::for-update opts) (assoc :suffix "FOR UPDATE")
(::for-share opts) (assoc :suffix "FOR SHARE"))]
(or (::db/for-update opts)
(::for-update opts))
(assoc :suffix "FOR UPDATE")
(or (::db/for-share opts)
(::for-share opts))
(assoc :suffix "FOR SHARE"))]
(sql/for-query table where-params opts))))
(defn update

View File

@@ -12,18 +12,12 @@
[app.common.logging :as l]
[app.common.pprint :as pp]
[app.common.schema :as sm]
[app.common.spec :as us]
[app.config :as cf]
[app.db :as db]
[app.db.sql :as sql]
[app.email.invite-to-team :as-alias email.invite-to-team]
[app.email.join-team :as-alias email.join-team]
[app.email.request-team-access :as-alias email.request-team-access]
[app.metrics :as mtx]
[app.util.template :as tmpl]
[app.worker :as wrk]
[clojure.java.io :as io]
[clojure.spec.alpha :as s]
[cuerdas.core :as str]
[integrant.core :as ig])
(:import
@@ -223,50 +217,45 @@
[{:type "text/html"
:content html}]))}))
(s/def ::priority #{:high :low})
(s/def ::to (s/or :single ::us/email
:multi (s/coll-of ::us/email)))
(s/def ::from ::us/email)
(s/def ::reply-to ::us/email)
(s/def ::lang string?)
(s/def ::extra-data ::us/string)
(def ^:private schema:context
[:map
[:to [:or ::sm/email [::sm/vec ::sm/email]]]
[:reply-to {:optional true} ::sm/email]
[:from {:optional true} ::sm/email]
[:lang {:optional true} ::sm/text]
[:priority {:optional true} [:enum :high :low]]
[:extra-data {:optional true} ::sm/text]])
(s/def ::context
(s/keys :req-un [::to]
:opt-un [::reply-to ::from ::lang ::priority ::extra-data]))
(def ^:private check-context
(sm/check-fn schema:context))
(defn template-factory
([id] (template-factory id {}))
([id extra-context]
(s/assert keyword? id)
(fn [context]
(us/verify ::context context)
(when-let [spec (s/get-spec id)]
(s/assert spec context))
[& {:keys [id schema]}]
(assert (keyword? id) "id should be provided and it should be a keyword")
(let [check-fn (if schema
(sm/check-fn schema)
(constantly nil))]
(fn [context]
(let [context (-> context check-context check-fn)
email (build-email-template id context)]
(when-not email
(ex/raise :type :internal
:code :email-template-does-not-exists
:hint "seems like the template is wrong or does not exists."
:template-id id))
(let [context (merge (if (fn? extra-context)
(extra-context)
extra-context)
context)
email (build-email-template id context)]
(when-not email
(ex/raise :type :internal
:code :email-template-does-not-exists
:hint "seems like the template is wrong or does not exists."
:context {:id id}))
(cond-> (assoc email :id (name id))
(:extra-data context)
(assoc :extra-data (:extra-data context))
(cond-> (assoc email :id (name id))
(:extra-data context)
(assoc :extra-data (:extra-data context))
(:from context)
(assoc :from (:from context))
(:from context)
(assoc :from (:from context))
(:reply-to context)
(assoc :reply-to (:reply-to context))
(:to context)
(assoc :to (:to context)))))))
(:reply-to context)
(assoc :reply-to (:reply-to context))
(:to context)
(assoc :to (:to context)))))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; PUBLIC HIGH-LEVEL API
@@ -280,7 +269,8 @@
"Schedule an already defined email to be sent using asynchronously
using worker task."
[{:keys [::conn ::factory] :as context}]
(us/verify some? conn)
(assert (db/connectable? conn) "expected a valid database connection or pool")
(let [email (if factory
(factory context)
(dissoc context ::conn))]
@@ -297,8 +287,6 @@
(declare send-to-logger!)
(s/def ::sendmail fn?)
(defmethod ig/init-key ::sendmail
[_ cfg]
(fn [params]
@@ -324,8 +312,9 @@
(when (contains? cf/flags :log-emails)
(send-to-logger! cfg params))))
(defmethod ig/pre-init-spec ::handler [_]
(s/keys :req [::sendmail ::mtx/metrics]))
(defmethod ig/assert-key ::handler
[_ params]
(assert (fn? (::sendmail params)) "expected valid sendmail handler"))
(defmethod ig/init-key ::handler
[_ {:keys [::sendmail]}]
@@ -352,125 +341,152 @@
;; EMAIL FACTORIES
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(s/def ::subject ::us/string)
(s/def ::content ::us/string)
(def ^:private schema:feedback
[:map
[:subject ::sm/text]
[:content ::sm/text]])
(s/def ::feedback
(s/keys :req-un [::subject ::content]))
(def feedback
(def user-feedback
"A profile feedback email."
(template-factory ::feedback))
(template-factory
:id ::feedback
:schema schema:feedback))
(s/def ::name ::us/string)
(s/def ::register
(s/keys :req-un [::name]))
(def ^:private schema:register
[:map [:name ::sm/text]])
(def register
"A new profile registration welcome email."
(template-factory ::register))
(template-factory
:id ::register
:schema schema:register))
(s/def ::token ::us/string)
(s/def ::password-recovery
(s/keys :req-un [::name ::token]))
(def ^:private schema:password-recovery
[:map
[:name ::sm/text]
[:token ::sm/text]])
(def password-recovery
"A password recovery notification email."
(template-factory ::password-recovery))
(template-factory
:id ::password-recovery
:schema schema:password-recovery))
(s/def ::pending-email ::us/email)
(s/def ::change-email
(s/keys :req-un [::name ::pending-email ::token]))
(def ^:private schema:change-email
[:map
[:name ::sm/text]
[:pending-email ::sm/email]
[:token ::sm/text]])
(def change-email
"Password change confirmation email"
(template-factory ::change-email))
(template-factory
:id ::change-email
:schema schema:change-email))
(s/def ::email.invite-to-team/invited-by ::us/string)
(s/def ::email.invite-to-team/team ::us/string)
(s/def ::email.invite-to-team/token ::us/string)
(s/def ::invite-to-team
(s/keys :req-un [::email.invite-to-team/invited-by
::email.invite-to-team/token
::email.invite-to-team/team]))
(def ^:private schema:invite-to-team
[:map
[:invited-by ::sm/text]
[:team ::sm/text]
[:token ::sm/text]])
(def invite-to-team
"Teams member invitation email."
(template-factory ::invite-to-team))
(template-factory
:id ::invite-to-team
:schema schema:invite-to-team))
(s/def ::email.join-team/invited-by ::us/string)
(s/def ::email.join-team/team ::us/string)
(s/def ::email.join-team/team-id ::us/uuid)
(s/def ::join-team
(s/keys :req-un [::email.join-team/invited-by
::email.join-team/team-id
::email.join-team/team]))
(def ^:private schema:join-team
[:map
[:invited-by ::sm/text]
[:team ::sm/text]
[:team-id ::sm/uuid]])
(def join-team
"Teams member joined after request email."
(template-factory ::join-team))
(template-factory
:id ::join-team
:schema schema:join-team))
(s/def ::email.request-team-access/requested-by ::us/string)
(s/def ::email.request-team-access/requested-by-email ::us/string)
(s/def ::email.request-team-access/team-name ::us/string)
(s/def ::email.request-team-access/team-id ::us/uuid)
(s/def ::email.request-team-access/file-name ::us/string)
(s/def ::email.request-team-access/file-id ::us/uuid)
(s/def ::email.request-team-access/page-id ::us/uuid)
(s/def ::request-file-access
(s/keys :req-un [::email.request-team-access/requested-by
::email.request-team-access/requested-by-email
::email.request-team-access/team-name
::email.request-team-access/team-id
::email.request-team-access/file-name
::email.request-team-access/file-id
::email.request-team-access/page-id]))
(def ^:private schema:request-file-access
[:map
[:requested-by ::sm/text]
[:requested-by-email ::sm/text]
[:team-name ::sm/text]
[:team-id ::sm/uuid]
[:file-name ::sm/text]
[:file-id ::sm/uuid]
[:page-id ::sm/uuid]])
(def request-file-access
"File access request email."
(template-factory ::request-file-access))
(s/def ::request-file-access-yourpenpot
(s/keys :req-un [::email.request-team-access/requested-by
::email.request-team-access/requested-by-email
::email.request-team-access/team-name
::email.request-team-access/team-id
::email.request-team-access/file-name
::email.request-team-access/file-id
::email.request-team-access/page-id]))
(template-factory
:id ::request-file-access
:schema schema:request-file-access))
(def request-file-access-yourpenpot
"File access on Your Penpot request email."
(template-factory ::request-file-access-yourpenpot))
(s/def ::request-file-access-yourpenpot-view
(s/keys :req-un [::email.request-team-access/requested-by
::email.request-team-access/requested-by-email
::email.request-team-access/team-name
::email.request-team-access/team-id
::email.request-team-access/file-name
::email.request-team-access/file-id
::email.request-team-access/page-id]))
(template-factory
:id ::request-file-access-yourpenpot
:schema schema:request-file-access))
(def request-file-access-yourpenpot-view
"File access on Your Penpot view mode request email."
(template-factory ::request-file-access-yourpenpot-view))
(template-factory
:id ::request-file-access-yourpenpot-view
:schema schema:request-file-access))
(s/def ::request-team-access
(s/keys :req-un [::email.request-team-access/requested-by
::email.request-team-access/requested-by-email
::email.request-team-access/team-name
::email.request-team-access/team-id]))
(def ^:private schema:request-team-access
[:map
[:requested-by ::sm/text]
[:requested-by-email ::sm/text]
[:team-name ::sm/text]
[:team-id ::sm/uuid]])
(def request-team-access
"Team access request email."
(template-factory ::request-team-access))
(template-factory
:id ::request-team-access
:schema schema:request-team-access))
(def ^:private schema:comment-mention
[:map
[:name ::sm/text]
[:source-user ::sm/text]
[:comment-reference ::sm/text]
[:comment-content ::sm/text]
[:comment-url ::sm/text]])
(def comment-mention
(template-factory
:id ::comment-mention
:schema schema:comment-mention))
(def ^:private schema:comment-thread
[:map
[:name ::sm/text]
[:source-user ::sm/text]
[:comment-reference ::sm/text]
[:comment-content ::sm/text]
[:comment-url ::sm/text]])
(def comment-thread
(template-factory
:id ::comment-thread
:schema schema:comment-thread))
(def ^:private schema:comment-notification
[:map
[:name ::sm/text]
[:source-user ::sm/text]
[:comment-reference ::sm/text]
[:comment-content ::sm/text]
[:comment-url ::sm/text]])
(def comment-notification
(template-factory
:id ::comment-notification
:schema schema:comment-notification))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; BOUNCE/COMPLAINS HELPERS

View File

File diff suppressed because it is too large Load Diff

View File

@@ -9,12 +9,16 @@
(:require
[app.common.data :as d]
[app.common.exceptions :as ex]
[app.common.files.helpers :as cfh]
[app.common.files.migrations :as fmg]
[app.common.logging :as l]
[app.common.types.objects-map :as omap]
[app.common.types.path :as path]
[app.db :as db]
[app.db.sql :as-alias sql]
[app.storage :as sto]
[app.util.blob :as blob]
[app.util.objects-map :as omap]
[app.util.objects-map :as omap.legacy]
[app.util.pointer-map :as pmap]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -30,13 +34,10 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn enable-objects-map
[file]
[file & _opts]
(let [update-page
(fn [page]
(if (and (pmap/pointer-map? page)
(not (pmap/loaded? page)))
page
(update page :objects omap/wrap)))
(update page :objects omap/wrap))
update-data
(fn [fdata]
@@ -46,6 +47,20 @@
(update :data update-data)
(update :features conj "fdata/objects-map"))))
(defn disable-objects-map
[file & _opts]
(let [update-page
(fn [page]
(update page :objects #(into {} %)))
update-data
(fn [fdata]
(update fdata :pages-index d/update-vals update-page))]
(-> file
(update :data update-data)
(update :features disj "fdata/objects-map"))))
(defn process-objects
"Apply a function to all objects-map on the file. Usualy used for convert
the objects-map instances to plain maps"
@@ -55,7 +70,8 @@
(fn [page]
(update page :objects
(fn [objects]
(if (omap/objects-map? objects)
(if (or (omap/objects-map? objects)
(omap.legacy/objects-map? objects))
(update-fn objects)
objects)))))
fdata))
@@ -78,6 +94,12 @@
(let [data (get-file-data system file)]
(assoc file :data data)))
(defn decode-file-data
[_system {:keys [data] :as file}]
(cond-> file
(bytes? data)
(assoc :data (blob/decode data))))
(defn load-pointer
"A database loader pointer helper"
[system file-id id]
@@ -136,10 +158,56 @@
(defn enable-pointer-map
"Enable the fdata/pointer-map feature on the file."
[file]
[file & _opts]
(-> file
(update :data (fn [fdata]
(-> fdata
(update :pages-index d/update-vals pmap/wrap)
(d/update-when :components pmap/wrap))))
(update :features conj "fdata/pointer-map")))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; PATH-DATA
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn enable-path-data
"Enable the fdata/path-data feature on the file."
[file & _opts]
(letfn [(update-object [object]
(if (or (cfh/path-shape? object)
(cfh/bool-shape? object))
(update object :content path/content)
object))
(update-container [container]
(d/update-when container :objects d/update-vals update-object))]
(-> file
(update :data (fn [data]
(-> data
(update :pages-index d/update-vals update-container)
(d/update-when :components d/update-vals update-container))))
(update :features conj "fdata/path-data"))))
(defn disable-path-data
[file & _opts]
(letfn [(update-object [object]
(if (or (cfh/path-shape? object)
(cfh/bool-shape? object))
(update object :content vec)
object))
(update-container [container]
(d/update-when container :objects d/update-vals update-object))]
(when-let [conn db/*conn*]
(db/delete! conn :file-migration {:file-id (:id file)
:name "0003-convert-path-content"}))
(-> file
(update :data (fn [data]
(-> data
(update :pages-index d/update-vals update-container)
(d/update-when :components d/update-vals update-container))))
(update :features disj "fdata/path-data")
(update :migrations disj "0003-convert-path-content")
(vary-meta update ::fmg/migrated disj "0003-convert-path-content"))))

View File

@@ -0,0 +1,53 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) KALEIDOS INC
(ns app.features.file-migrations
"Backend specific code for file migrations. Implemented as permanent feature of files."
(:require
[app.common.data :as d]
[app.common.exceptions :as ex]
[app.common.files.migrations :as fmg :refer [xf:map-name]]
[app.db :as db]
[app.db.sql :as-alias sql]))
(def ^:private sql:get-file-migrations
"SELECT name FROM file_migration WHERE file_id = ? ORDER BY created_at ASC")
(defn resolve-applied-migrations
[cfg {:keys [id] :as file}]
(let [conn (db/get-connection cfg)]
(assoc file :migrations
(->> (db/plan conn [sql:get-file-migrations id])
(transduce xf:map-name conj (d/ordered-set))
(not-empty)))))
(defn upsert-migrations!
"Persist or update file migrations. Return the updated/inserted number
of rows"
[cfg {:keys [id] :as file}]
(let [conn (db/get-connection cfg)
migrations (or (-> file meta ::fmg/migrated)
(-> file :migrations))
columns [:file-id :name]
rows (->> migrations
(mapv (fn [name] [id name]))
(not-empty))]
(when-not rows
(ex/raise :type :internal
:code :missing-migrations
:hint "no migrations available on file"))
(-> (db/insert-many! conn :file-migration columns rows
{::db/return-keys false
::sql/on-conflict-do-nothing true})
(db/get-update-count))))
(defn reset-migrations!
"Replace file migrations"
[cfg {:keys [id] :as file}]
(db/delete! cfg :file-migration {:file-id id})
(upsert-migrations! cfg file))

View File

@@ -0,0 +1,32 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) KALEIDOS INC
(ns app.features.logical-deletion
"A code related to handle logical deletion mechanism"
(:require
[app.common.time :as ct]
[app.config :as cf]))
(def ^:private canceled-status
#{"canceled" "unpaid"})
(defn get-deletion-delay
"Calculate the next deleted-at for a resource (file, team, etc) in function
of team settings"
[team]
(if-let [{:keys [type status]} (get team :subscription)]
(cond
(and (= "unlimited" type) (not (contains? canceled-status status)))
(ct/duration {:days 30})
(and (= "enterprise" type) (not (contains? canceled-status status)))
(ct/duration {:days 90})
:else
(cf/get-deletion-delay))
(cf/get-deletion-delay)))

View File

@@ -9,6 +9,7 @@
[app.auth.oidc :as-alias oidc]
[app.common.data :as d]
[app.common.logging :as l]
[app.common.schema :as sm]
[app.common.transit :as t]
[app.db :as-alias db]
[app.http.access-token :as actoken]
@@ -16,6 +17,7 @@
[app.http.awsns :as-alias awsns]
[app.http.debug :as-alias debug]
[app.http.errors :as errors]
[app.http.management :as mgmt]
[app.http.middleware :as mw]
[app.http.session :as session]
[app.http.websocket :as-alias ws]
@@ -24,14 +26,12 @@
[app.rpc :as-alias rpc]
[app.rpc.doc :as-alias rpc.doc]
[app.setup :as-alias setup]
[clojure.spec.alpha :as s]
[integrant.core :as ig]
[promesa.exec :as px]
[reitit.core :as r]
[reitit.middleware :as rr]
[ring.request :as rreq]
[ring.response :as-alias rres]
[yetti.adapter :as yt]))
[yetti.adapter :as yt]
[yetti.request :as yreq]
[yetti.response :as-alias yres]))
(declare router-handler)
@@ -39,57 +39,67 @@
;; HTTP SERVER
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(s/def ::handler fn?)
(s/def ::router some?)
(s/def ::port integer?)
(s/def ::host string?)
(s/def ::name string?)
(def default-params
{::port 6060
::host "0.0.0.0"
::max-body-size 31457280 ; default 30 MiB
::max-multipart-body-size 367001600}) ; default 350 MiB
(s/def ::max-body-size integer?)
(s/def ::max-multipart-body-size integer?)
(s/def ::io-threads integer?)
(defmethod ig/expand-key ::server
[k v]
{k (merge default-params (d/without-nils v))})
(defmethod ig/prep-key ::server
[_ cfg]
(merge {::port 6060
::host "0.0.0.0"
::max-body-size (* 1024 1024 30) ; default 30 MiB
::max-multipart-body-size (* 1024 1024 120)} ; default 120 MiB
(d/without-nils cfg)))
(def ^:private schema:server-params
[:map
[::port ::sm/int]
[::host ::sm/text]
[::io-threads {:optional true} ::sm/int]
[::max-worker-threads {:optional true} ::sm/int]
[::max-body-size {:optional true} ::sm/int]
[::max-multipart-body-size {:optional true} ::sm/int]
[::router {:optional true} [:fn r/router?]]
[::handler {:optional true} ::sm/fn]])
(defmethod ig/pre-init-spec ::server [_]
(s/keys :req [::port ::host]
:opt [::max-body-size
::max-multipart-body-size
::router
::handler
::io-threads]))
(defmethod ig/assert-key ::server
[_ params]
(assert (sm/check schema:server-params params)))
(defmethod ig/init-key ::server
[_ {:keys [::handler ::router ::host ::port] :as cfg}]
[_ {:keys [::handler ::router ::host ::port ::mtx/metrics] :as cfg}]
(l/info :hint "starting http server" :port port :host host)
(let [options {:http/port port
:http/host host
:http/max-body-size (::max-body-size cfg)
:http/max-multipart-body-size (::max-multipart-body-size cfg)
:xnio/io-threads (or (::io-threads cfg)
(max 3 (px/get-available-processors)))
:xnio/dispatch :virtual
:ring/compat :ring2
:socket/backlog 4069}
(let [on-dispatch
(fn [_ start-at-ns]
(let [timing (- (System/nanoTime) start-at-ns)
timing (int (/ timing 1000000))]
(mtx/run! metrics
:id :http-server-dispatch-timing
:val timing)))
handler (cond
(some? router)
(router-handler router)
options
{:http/port port
:http/host host
:http/max-body-size (::max-body-size cfg)
:http/max-multipart-body-size (::max-multipart-body-size cfg)
:xnio/direct-buffers false
:xnio/io-threads (::io-threads cfg)
:xnio/max-worker-threads (::max-worker-threads cfg)
:ring/compat :ring2
:events/on-dispatch on-dispatch
:socket/backlog 4069}
(some? handler)
handler
handler
(cond
(some? router)
(router-handler router)
:else
(throw (UnsupportedOperationException. "handler or router are required")))
(some? handler)
handler
options (d/without-nils options)
server (yt/server handler options)]
:else
(throw (UnsupportedOperationException. "handler or router are required")))
server
(yt/server handler (d/without-nils options))]
(assoc cfg ::server (yt/start! server))))
@@ -100,12 +110,12 @@
(defn- not-found-handler
[_]
{::rres/status 404})
{::yres/status 404})
(defn- router-handler
[router]
(letfn [(resolve-handler [request]
(if-let [match (r/match-by-path router (rreq/path request))]
(if-let [match (r/match-by-path router (yreq/path request))]
(let [params (:path-params match)
result (:result match)
handler (or (:handler result) not-found-handler)
@@ -114,11 +124,11 @@
(partial not-found-handler request)))
(on-error [cause request]
(let [{:keys [::rres/body] :as response} (errors/handle cause request)]
(let [{:keys [::yres/body] :as response} (errors/handle cause request)]
(cond-> response
(map? body)
(-> (update ::rres/headers assoc "content-type" "application/transit+json")
(assoc ::rres/body (t/encode-str body {:type :json-verbose}))))))]
(-> (update ::yres/headers assoc "content-type" "application/transit+json")
(assoc ::yres/body (t/encode-str body {:type :json-verbose}))))))]
(fn [request]
(let [handler (resolve-handler request)]
@@ -131,18 +141,27 @@
;; HTTP ROUTER
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defmethod ig/pre-init-spec ::router [_]
(s/keys :req [::session/manager
::ws/routes
::rpc/routes
::rpc.doc/routes
::oidc/routes
::setup/props
::assets/routes
::debug/routes
::db/pool
::mtx/routes
::awsns/routes]))
(def ^:private schema:routes
[:vector :any])
(def ^:private schema:router-params
[:map
[::ws/routes schema:routes]
[::rpc/routes schema:routes]
[::rpc.doc/routes schema:routes]
[::oidc/routes schema:routes]
[::assets/routes schema:routes]
[::debug/routes schema:routes]
[::mtx/routes schema:routes]
[::awsns/routes schema:routes]
[::mgmt/routes schema:routes]
::session/manager
::setup/props
::db/pool])
(defmethod ig/assert-key ::router
[_ params]
(assert (sm/check schema:router-params params)))
(defmethod ig/init-key ::router
[_ cfg]
@@ -150,10 +169,10 @@
[["" {:middleware [[mw/server-timing]
[mw/params]
[mw/format-response]
[mw/parse-request]
[mw/errors errors/handle]
[session/soft-auth cfg]
[actoken/soft-auth cfg]
[mw/parse-request]
[mw/errors errors/handle]
[mw/restrict-methods]]}
(::mtx/routes cfg)
@@ -163,6 +182,9 @@
["/webhooks"
(::awsns/routes cfg)]
["/management"
(::mgmt/routes cfg)]
(::ws/routes cfg)
["/api" {:middleware [[mw/cors]]}

View File

@@ -12,13 +12,13 @@
[app.main :as-alias main]
[app.setup :as-alias setup]
[app.tokens :as tokens]
[ring.request :as rreq]))
[yetti.request :as yreq]))
(def header-re #"^Token\s+(.*)")
(defn- get-token
[request]
(some->> (rreq/get-header request "authorization")
(some->> (yreq/get-header request "authorization")
(re-matches header-re)
(second)))

View File

@@ -9,20 +9,18 @@
(:require
[app.common.data :as d]
[app.common.exceptions :as ex]
[app.common.spec :as us]
[app.common.time :as ct]
[app.common.uri :as u]
[app.db :as db]
[app.storage :as sto]
[app.util.time :as dt]
[clojure.spec.alpha :as s]
[integrant.core :as ig]
[ring.response :as-alias rres]))
[yetti.response :as-alias yres]))
(def ^:private cache-max-age
(dt/duration {:hours 24}))
(ct/duration {:hours 24}))
(def ^:private signature-max-age
(dt/duration {:hours 24 :minutes 15}))
(ct/duration {:hours 24 :minutes 15}))
(defn get-id
[{:keys [path-params]}]
@@ -37,8 +35,8 @@
(defn- serve-object-from-s3
[{:keys [::sto/storage] :as cfg} obj]
(let [{:keys [host port] :as url} (sto/get-object-url storage obj {:max-age signature-max-age})]
{::rres/status 307
::rres/headers {"location" (str url)
{::yres/status 307
::yres/headers {"location" (str url)
"x-host" (cond-> host port (str ":" port))
"x-mtype" (-> obj meta :content-type)
"cache-control" (str "max-age=" (inst-ms cache-max-age))}}))
@@ -51,8 +49,8 @@
headers {"x-accel-redirect" (:path purl)
"content-type" (:content-type mdata)
"cache-control" (str "max-age=" (inst-ms cache-max-age))}]
{::rres/status 204
::rres/headers headers}))
{::yres/status 204
::yres/headers headers}))
(defn- serve-object
"Helper function that returns the appropriate response depending on
@@ -69,7 +67,7 @@
obj (sto/get-object storage id)]
(if obj
(serve-object cfg obj)
{::rres/status 404})))
{::yres/status 404})))
(defn- generic-handler
"A generic handler helper/common code for file-media based handlers."
@@ -80,7 +78,7 @@
sobj (sto/get-object storage (kf mobj))]
(if sobj
(serve-object cfg sobj)
{::rres/status 404})))
{::yres/status 404})))
(defn file-objects-handler
"Handler that serves storage objects by file media id."
@@ -95,11 +93,10 @@
;; --- Initialization
(s/def ::path ::us/string)
(s/def ::routes vector?)
(defmethod ig/pre-init-spec ::routes [_]
(s/keys :req [::sto/storage ::path]))
(defmethod ig/assert-key ::routes
[_ params]
(assert (sto/valid-storage? (::sto/storage params)) "expected valid storage instance")
(assert (string? (::path params))))
(defmethod ig/init-key ::routes
[_ cfg]

View File

@@ -10,37 +10,36 @@
[app.common.exceptions :as ex]
[app.common.logging :as l]
[app.common.pprint :as pp]
[app.common.schema :as sm]
[app.db :as db]
[app.db.sql :as sql]
[app.http.client :as http]
[app.main :as-alias main]
[app.setup :as-alias setup]
[app.tokens :as tokens]
[app.worker :as-alias wrk]
[clojure.data.json :as j]
[clojure.spec.alpha :as s]
[cuerdas.core :as str]
[integrant.core :as ig]
[promesa.exec :as px]
[ring.request :as rreq]
[ring.response :as-alias rres]))
[yetti.request :as yreq]
[yetti.response :as-alias yres]))
(declare parse-json)
(declare handle-request)
(declare parse-notification)
(declare process-report)
(defmethod ig/pre-init-spec ::routes [_]
(s/keys :req [::http/client
::setup/props
::db/pool]))
(defmethod ig/assert-key ::routes
[_ params]
(assert (http/client? (::http/client params)) "expect a valid http client")
(assert (sm/valid? ::setup/props (::setup/props params)) "expected valid setup props")
(assert (db/pool? (::db/pool params)) "expect valid database pool"))
(defmethod ig/init-key ::routes
[_ cfg]
(letfn [(handler [request]
(let [data (-> request rreq/body slurp)]
(px/run! :vthread (partial handle-request cfg data)))
{::rres/status 200})]
(let [data (-> request yreq/body slurp)]
(handle-request cfg data)
{::yres/status 200}))]
["/sns" {:handler handler
:allowed-methods #{:post}}]))

View File

@@ -7,20 +7,20 @@
(ns app.http.client
"Http client abstraction layer."
(:require
[app.common.spec :as us]
[clojure.spec.alpha :as s]
[app.common.schema :as sm]
[integrant.core :as ig]
[java-http-clj.core :as http]
[promesa.core :as p])
(:import
java.net.http.HttpClient))
(s/def ::client #(instance? HttpClient %))
(s/def ::client-holder
(s/keys :req [::client]))
(defn client?
[o]
(instance? HttpClient o))
(defmethod ig/pre-init-spec ::client [_]
(s/keys :req []))
(sm/register!
{:type ::client
:pred client?})
(defmethod ig/init-key ::client
[_ _]
@@ -30,7 +30,7 @@
(defn send!
([client req] (send! client req {}))
([client req {:keys [response-type sync?] :or {response-type :string sync? false}}]
(us/assert! ::client client)
(assert (client? client) "expected valid http client")
(if sync?
(http/send req {:client client :as response-type})
(try

View File

@@ -7,34 +7,39 @@
(ns app.http.debug
(:refer-clojure :exclude [error-handler])
(:require
[app.binfile.common :as bfc]
[app.binfile.v1 :as bf.v1]
[app.binfile.v3 :as bf.v3]
[app.common.data :as d]
[app.common.exceptions :as ex]
[app.common.features :as cfeat]
[app.common.logging :as l]
[app.common.pprint :as pp]
[app.common.time :as ct]
[app.common.transit :as t]
[app.common.uuid :as uuid]
[app.config :as cf]
[app.db :as db]
[app.features.file-migrations :as feat.fmig]
[app.http.session :as session]
[app.rpc.commands.auth :as auth]
[app.rpc.commands.files-create :refer [create-file]]
[app.rpc.commands.profile :as profile]
[app.rpc.commands.teams :as teams]
[app.setup :as-alias setup]
[app.srepl.helpers :as srepl]
[app.srepl.main :as srepl]
[app.storage :as-alias sto]
[app.storage.tmp :as tmp]
[app.util.blob :as blob]
[app.util.template :as tmpl]
[app.util.time :as dt]
[clojure.spec.alpha :as s]
[cuerdas.core :as str]
[datoteka.io :as io]
[emoji.core :as emj]
[integrant.core :as ig]
[markdown.core :as md]
[markdown.transformers :as mdt]
[ring.request :as rreq]
[ring.response :as rres]))
[yetti.request :as yreq]
[yetti.response :as yres]))
;; (selmer.parser/cache-off!)
@@ -44,29 +49,29 @@
(defn index-handler
[_cfg _request]
{::rres/status 200
::rres/headers {"content-type" "text/html"}
::rres/body (-> (io/resource "app/templates/debug.tmpl")
(tmpl/render {:version (:full cf/version)}))})
{::yres/status 200
::yres/headers {"content-type" "text/html"}
::yres/body (-> (io/resource "app/templates/debug.tmpl")
(tmpl/render {:version (:full cf/version)
:supported-features cfeat/supported-features}))})
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; FILE CHANGES
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn prepare-response
[body]
(let [headers {"content-type" "application/transit+json"}]
{::rres/status 200
::rres/body body
::rres/headers headers}))
(defn- get-resolved-file
[cfg file-id]
(some-> (bfc/get-file cfg file-id :migrate? false)
(update :data blob/encode)))
(defn prepare-download-response
[body filename]
(let [headers {"content-disposition" (str "attachment; filename=" filename)
"content-type" "application/octet-stream"}]
{::rres/status 200
::rres/body body
::rres/headers headers}))
(defn prepare-download
[file filename]
{::yres/status 200
::yres/headers
{"content-disposition" (str "attachment; filename=" filename ".json")
"content-type" "application/octet-stream"}
::yres/body
(t/encode file {:type :json-verbose})})
(def sql:retrieve-range-of-changes
"select revn, changes from file_change where file_id=? and revn >= ? and revn <= ? order by revn")
@@ -74,45 +79,51 @@
(def sql:retrieve-single-change
"select revn, changes, data from file_change where file_id=? and revn = ?")
(defn- retrieve-file-data
[{:keys [::db/pool]} {:keys [params ::session/profile-id] :as request}]
(defn- download-file-data
[cfg {:keys [params ::session/profile-id] :as request}]
(let [file-id (some-> params :file-id parse-uuid)
revn (some-> params :revn parse-long)
filename (str file-id)]
(when-not file-id
(ex/raise :type :validation
:code :missing-arguments))
(let [data (if (integer? revn)
(some-> (db/exec-one! pool [sql:retrieve-single-change file-id revn]) :data)
(some-> (db/get-by-id pool :file file-id) :data))]
(when-not data
(ex/raise :type :not-found
:code :enpty-data
:hint "empty response"))
(if-let [file (get-resolved-file cfg file-id)]
(cond
(contains? params :download)
(prepare-download-response data filename)
(prepare-download file filename)
(contains? params :clone)
(let [profile (profile/get-profile pool profile-id)
project-id (:default-project-id profile)]
(db/tx-run! cfg
(fn [{:keys [::db/conn] :as cfg}]
(let [profile (profile/get-profile conn profile-id)
project-id (:default-project-id profile)
file (-> (create-file cfg {:id (uuid/next)
:name (str "Cloned: " (:name file))
:features (:features file)
:project-id project-id
:profile-id profile-id})
(assoc :data (:data file))
(assoc :migrations (:migrations file)))]
(db/run! pool (fn [{:keys [::db/conn] :as cfg}]
(create-file cfg {:id file-id
:name (str "Cloned file: " filename)
:project-id project-id
:profile-id profile-id})
(db/update! conn :file
{:data data}
{:id file-id})
{::rres/status 201
::rres/body "OK CREATED"})))
(feat.fmig/reset-migrations! conn file)
(db/update! conn :file
{:data (:data file)}
{:id (:id file)}
{::db/return-keys false})
{::yres/status 201
::yres/body "OK CLONED"})))
:else
(prepare-response (blob/decode data))))))
(ex/raise :type :validation
:code :invalid-params
:hint "invalid button"))
(ex/raise :type :not-found
:code :enpty-data
:hint "empty response"))))
(defn- is-file-exists?
[pool id]
@@ -120,81 +131,61 @@
(-> (db/exec-one! pool [sql id]) :exists)))
(defn- upload-file-data
[{:keys [::db/pool]} {:keys [::session/profile-id params] :as request}]
[{:keys [::db/pool] :as cfg} {:keys [::session/profile-id params] :as request}]
(let [profile (profile/get-profile pool profile-id)
project-id (:default-project-id profile)
data (some-> params :file :path io/read-as-bytes)]
file (some-> params :file :path io/read* t/decode)]
(if (and data project-id)
(let [fname (str "Imported file *: " (dt/now))
(if (and file project-id)
(let [fname (str "Imported: " (:name file) "(" (ct/now) ")")
reuse-id? (contains? params :reuseid)
file-id (or (and reuse-id? (ex/ignoring (-> params :file :filename parse-uuid)))
(uuid/next))]
(if (and reuse-id? file-id
(is-file-exists? pool file-id))
(do
(db/update! pool :file
{:data data
:deleted-at nil}
{:id file-id})
{::rres/status 200
::rres/body "OK UPDATED"})
(db/tx-run! cfg
(fn [{:keys [::db/conn] :as cfg}]
(db/update! conn :file
{:data (:data file)
:features (into-array (:features file))
:deleted-at nil}
{:id file-id}
{::db/return-keys false})
(feat.fmig/reset-migrations! conn file)
{::yres/status 200
::yres/body "OK UPDATED"}))
(db/tx-run! cfg
(fn [{:keys [::db/conn] :as cfg}]
(let [file (-> (create-file cfg {:id file-id
:name fname
:features (:features file)
:project-id project-id
:profile-id profile-id})
(assoc :data (:data file))
(assoc :migrations (:migrations file)))]
(db/run! pool (fn [{:keys [::db/conn] :as cfg}]
(create-file cfg {:id file-id
:name fname
:project-id project-id
:profile-id profile-id})
(db/update! conn :file
{:data data}
{:id file-id})
{::rres/status 201
::rres/body "OK CREATED"}))))
{:data (:data file)}
{:id file-id}
{::db/return-keys false})
(feat.fmig/reset-migrations! conn file)
{::yres/status 201
::yres/body "OK CREATED"})))))
{::rres/status 500
::rres/body "ERROR"})))
(ex/raise :type :validation
:code :invalid-params
:hint "invalid file uploaded"))))
(defn file-data-handler
(defn raw-export-import-handler
[cfg request]
(case (rreq/method request)
:get (retrieve-file-data cfg request)
(case (yreq/method request)
:get (download-file-data cfg request)
:post (upload-file-data cfg request)
(ex/raise :type :http
:code :method-not-found)))
(defn file-changes-handler
[{:keys [::db/pool]} {:keys [params] :as request}]
(letfn [(retrieve-changes [file-id revn]
(if (str/includes? revn ":")
(let [[start end] (->> (str/split revn #":")
(map str/trim)
(map parse-long))]
(some->> (db/exec! pool [sql:retrieve-range-of-changes file-id start end])
(map :changes)
(map blob/decode)
(mapcat identity)
(vec)))
(if-let [revn (parse-long revn)]
(let [item (db/exec-one! pool [sql:retrieve-single-change file-id revn])]
(some-> item :changes blob/decode vec))
(ex/raise :type :validation :code :invalid-arguments))))]
(let [file-id (some-> params :id parse-uuid)
revn (or (some-> params :revn parse-long) "latest")
filename (str file-id)]
(when (or (not file-id) (not revn))
(ex/raise :type :validation
:code :invalid-arguments
:hint "missing arguments"))
(let [data (retrieve-changes file-id revn)]
(if (contains? params :download)
(prepare-download-response data filename)
(prepare-response data))))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ERROR BROWSER
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -231,19 +222,19 @@
(-> (io/resource "app/templates/error-report.v3.tmpl")
(tmpl/render (-> content
(assoc :id id)
(assoc :created-at (dt/format-instant created-at :rfc1123))))))]
(assoc :created-at (ct/format-inst created-at :rfc1123))))))]
(if-let [report (get-report request)]
(let [result (case (:version report)
1 (render-template-v1 report)
2 (render-template-v2 report)
3 (render-template-v3 report))]
{::rres/status 200
::rres/body result
::rres/headers {"content-type" "text/html; charset=utf-8"
{::yres/status 200
::yres/body result
::yres/headers {"content-type" "text/html; charset=utf-8"
"x-robots-tag" "noindex"}})
{::rres/status 404
::rres/body "not found"})))
{::yres/status 404
::yres/body "not found"})))
(def sql:error-reports
"SELECT id, created_at,
@@ -255,11 +246,11 @@
(defn error-list-handler
[{:keys [::db/pool]} _request]
(let [items (->> (db/exec! pool [sql:error-reports])
(map #(update % :created-at dt/format-instant :rfc1123)))]
{::rres/status 200
::rres/body (-> (io/resource "app/templates/error-list.tmpl")
(map #(update % :created-at ct/format-inst :rfc1123)))]
{::yres/status 200
::yres/body (-> (io/resource "app/templates/error-list.tmpl")
(tmpl/render {:items items}))
::rres/headers {"content-type" "text/html; charset=utf-8"
::yres/headers {"content-type" "text/html; charset=utf-8"
"x-robots-tag" "noindex"}}))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -281,29 +272,30 @@
(ex/raise :type :validation
:code :missing-arguments))
(let [path (tmp/tempfile :prefix "penpot.export.")]
(let [path (tmp/tempfile :prefix "penpot.export." :min-age "30m")]
(with-open [output (io/output-stream path)]
(-> cfg
(assoc ::bf.v1/ids file-ids)
(assoc ::bf.v1/embed-assets embed?)
(assoc ::bf.v1/include-libraries libs?)
(bf.v1/export-files! output)))
(assoc ::bfc/ids file-ids)
(assoc ::bfc/embed-assets embed?)
(assoc ::bfc/include-libraries libs?)
(bf.v3/export-files! output)))
(if clone?
(let [profile (profile/get-profile pool profile-id)
project-id (:default-project-id profile)
cfg (assoc cfg
::bf.v1/overwrite false
::bf.v1/profile-id profile-id
::bf.v1/project-id project-id)]
(bf.v1/import-files! cfg path)
{::rres/status 200
::rres/headers {"content-type" "text/plain"}
::rres/body "OK CLONED"})
::bfc/overwrite false
::bfc/profile-id profile-id
::bfc/project-id project-id
::bfc/input path)]
(bf.v3/import-files! cfg)
{::yres/status 200
::yres/headers {"content-type" "text/plain"}
::yres/body "OK CLONED"})
{::rres/status 200
::rres/body (io/input-stream path)
::rres/headers {"content-type" "application/octet-stream"
{::yres/status 200
::yres/body (io/input-stream path)
::yres/headers {"content-type" "application/octet-stream"
"content-disposition" (str "attachmen; filename=" (first file-ids) ".penpot")}}))))
@@ -316,24 +308,30 @@
(let [profile (profile/get-profile pool profile-id)
project-id (:default-project-id profile)
overwrite? (contains? params :overwrite)
migrate? (contains? params :migrate)]
team (teams/get-team pool
:profile-id profile-id
:project-id project-id)]
(when-not project-id
(ex/raise :type :validation
:code :missing-project
:hint "project not found"))
(let [path (-> params :file :path)
cfg (assoc cfg
::bf.v1/overwrite overwrite?
::bf.v1/migrate migrate?
::bf.v1/profile-id profile-id
::bf.v1/project-id project-id)]
(bf.v1/import-files! cfg path)
{::rres/status 200
::rres/headers {"content-type" "text/plain"}
::rres/body "OK"})))
(let [path (-> params :file :path)
format (bfc/parse-file-format path)
cfg (assoc cfg
::bfc/profile-id profile-id
::bfc/project-id project-id
::bfc/input path
::bfc/features (cfeat/get-team-enabled-features cf/flags team))]
(if (= format :binfile-v3)
(bf.v3/import-files! cfg)
(bf.v1/import-files! cfg))
{::yres/status 200
::yres/headers {"content-type" "text/plain"}
::yres/body "OK"})))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ACTIONS
@@ -363,34 +361,34 @@
(db/update! conn :profile {:is-blocked true} {:id (:id profile)})
(db/delete! conn :http-session {:profile-id (:id profile)})
{::rres/status 200
::rres/headers {"content-type" "text/plain"}
::rres/body (str/ffmt "PROFILE '%' BLOCKED" (:email profile))})
{::yres/status 200
::yres/headers {"content-type" "text/plain"}
::yres/body (str/ffmt "PROFILE '%' BLOCKED" (:email profile))})
(contains? params :unblock)
(do
(db/update! conn :profile {:is-blocked false} {:id (:id profile)})
{::rres/status 200
::rres/headers {"content-type" "text/plain"}
::rres/body (str/ffmt "PROFILE '%' UNBLOCKED" (:email profile))})
{::yres/status 200
::yres/headers {"content-type" "text/plain"}
::yres/body (str/ffmt "PROFILE '%' UNBLOCKED" (:email profile))})
(contains? params :resend)
(if (:is-blocked profile)
{::rres/status 200
::rres/headers {"content-type" "text/plain"}
::rres/body "PROFILE ALREADY BLOCKED"}
{::yres/status 200
::yres/headers {"content-type" "text/plain"}
::yres/body "PROFILE ALREADY BLOCKED"}
(do
(#'auth/send-email-verification! cfg profile)
{::rres/status 200
::rres/headers {"content-type" "text/plain"}
::rres/body (str/ffmt "RESENDED FOR '%'" (:email profile))}))
{::yres/status 200
::yres/headers {"content-type" "text/plain"}
::yres/body (str/ffmt "RESENDED FOR '%'" (:email profile))}))
:else
(do
(db/update! conn :profile {:is-active true} {:id (:id profile)})
{::rres/status 200
::rres/headers {"content-type" "text/plain"}
::rres/body (str/ffmt "PROFILE '%' ACTIVATED" (:email profile))}))))))
{::yres/status 200
::yres/headers {"content-type" "text/plain"}
::yres/body (str/ffmt "PROFILE '%' ACTIVATED" (:email profile))}))))))
(defn- reset-file-version
@@ -415,11 +413,55 @@
(db/tx-run! cfg srepl/process-file! file-id #(assoc % :version version))
{::rres/status 200
::rres/headers {"content-type" "text/plain"}
::rres/body "OK"}))
{::yres/status 200
::yres/headers {"content-type" "text/plain"}
::yres/body "OK"}))
(defn- handle-team-features
[cfg {:keys [params] :as request}]
(let [team-id (some-> params :team-id d/parse-uuid)
feature (some-> params :feature str)
action (some-> params :action)
skip-check (contains? params :skip-check)]
(when (nil? team-id)
(ex/raise :type :validation
:code :invalid-team-id
:hint "provided invalid team id"))
(if (= action "show")
(let [team (db/run! cfg teams/get-team-info {:id team-id})]
{::yres/status 200
::yres/headers {"content-type" "text/plain"}
::yres/body (apply str "Team features:\n"
(->> (:features team)
(map (fn [feature]
(str "- " feature "\n")))))})
(do
(when-not (contains? params :force)
(ex/raise :type :validation
:code :missing-force
:hint "missing force checkbox"))
(cond
(= action "enable")
(srepl/enable-team-feature! team-id feature :skip-check skip-check)
(= action "disable")
(srepl/disable-team-feature! team-id feature :skip-check skip-check)
:else
(ex/raise :type :validation
:code :invalid-action
:hint (str "invalid action: " action)))
{::yres/status 200
::yres/headers {"content-type" "text/plain"}
::yres/body "OK"}))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; OTHER SMALL VIEWS/HANDLERS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -429,13 +471,13 @@
[{:keys [::db/pool]} _]
(try
(db/exec-one! pool ["select count(*) as count from server_prop;"])
{::rres/status 200
::rres/body "OK"}
{::yres/status 200
::yres/body "OK"}
(catch Throwable cause
(l/warn :hint "unable to execute query on health handler"
:cause cause)
{::rres/status 503
::rres/body "KO"})))
{::yres/status 503
::yres/body "KO"})))
(defn changelog-handler
[_ _]
@@ -444,11 +486,11 @@
(md->html [text]
(md/md-to-html-string text :replacement-transformers (into [transform-emoji] mdt/transformer-vector)))]
(if-let [clog (io/resource "changelog.md")]
{::rres/status 200
::rres/headers {"content-type" "text/html; charset=utf-8"}
::rres/body (-> clog slurp md->html)}
{::rres/status 404
::rres/body "NOT FOUND"})))
{::yres/status 200
::yres/headers {"content-type" "text/html; charset=utf-8"}
::yres/body (-> clog slurp md->html)}
{::yres/status 404
::yres/body "NOT FOUND"})))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; INIT
@@ -471,8 +513,29 @@
(ex/raise :type :authentication
:code :only-admins-allowed)))))})
(defmethod ig/pre-init-spec ::routes [_]
(s/keys :req [::db/pool ::session/manager]))
(def errors
(letfn [(handle-error [cause]
(when-let [data (ex-data cause)]
(when (= :validation (:type data))
(str "Error: " (or (:hint data) (ex-message cause)) "\n"))))]
{:name ::errors
:compile
(fn [& _params]
(fn [handler]
(fn [request]
(try
(handler request)
(catch Throwable cause
(let [body (or (handle-error cause)
(ex/format-throwable cause))]
{::yres/status 400
::yres/headers {"content-type" "text/plain"}
::yres/body body}))))))}))
(defmethod ig/assert-key ::routes
[_ params]
(assert (db/pool? (::db/pool params)) "expected a valid database pool")
(assert (session/manager? (::session/manager params)) "expected a valid session manager"))
(defmethod ig/init-key ::routes
[_ {:keys [::db/pool] :as cfg}]
@@ -484,11 +547,14 @@
["/changelog" {:handler (partial changelog-handler cfg)}]
["/error/:id" {:handler (partial error-handler cfg)}]
["/error" {:handler (partial error-list-handler cfg)}]
["/actions/resend-email-verification"
{:handler (partial resend-email-notification cfg)}]
["/actions/reset-file-version"
{:handler (partial reset-file-version cfg)}]
["/file/export" {:handler (partial export-handler cfg)}]
["/file/import" {:handler (partial import-handler cfg)}]
["/file/data" {:handler (partial file-data-handler cfg)}]
["/file/changes" {:handler (partial file-changes-handler cfg)}]]])
["/actions" {:middleware [[errors]]}
["/resend-email-verification"
{:handler (partial resend-email-notification cfg)}]
["/reset-file-version"
{:handler (partial reset-file-version cfg)}]
["/handle-team-features"
{:handler (partial handle-team-features cfg)}]
["/file-export" {:handler (partial export-handler cfg)}]
["/file-import" {:handler (partial import-handler cfg)}]
["/file-raw-export-import" {:handler (partial raw-export-import-handler cfg)}]]]])

View File

@@ -16,8 +16,8 @@
[app.http.session :as-alias session]
[app.util.inet :as inet]
[clojure.spec.alpha :as s]
[ring.request :as rreq]
[ring.response :as rres]))
[yetti.request :as yreq]
[yetti.response :as yres]))
(defn request->context
"Extracts error report relevant context data from request."
@@ -25,14 +25,13 @@
(let [claims (-> {}
(into (::session/token-claims request))
(into (::actoken/token-claims request)))]
{:request/path (:path request)
:request/method (:method request)
:request/params (:params request)
:request/user-agent (rreq/get-header request "user-agent")
:request/user-agent (yreq/get-header request "user-agent")
:request/ip-addr (inet/parse-request request)
:request/profile-id (:uid claims)
:version/frontend (or (rreq/get-header request "x-frontend-version") "unknown")
:version/frontend (or (yreq/get-header request "x-frontend-version") "unknown")
:version/backend (:full cf/version)}))
@@ -46,34 +45,38 @@
(defmethod handle-error :authentication
[err _ _]
{::rres/status 401
::rres/body (ex-data err)})
{::yres/status 401
::yres/body (ex-data err)})
(defmethod handle-error :authorization
[err _ _]
{::rres/status 403
::rres/body (ex-data err)})
{::yres/status 403
::yres/body (ex-data err)})
(defmethod handle-error :restriction
[err _ _]
[err request _]
(let [{:keys [code] :as data} (ex-data err)]
(if (= code :method-not-allowed)
{::rres/status 405
::rres/body data}
{::rres/status 400
::rres/body data})))
{::yres/status 405
::yres/body data}
(binding [l/*context* (request->context request)]
(l/err :hint "restriction error"
:cause err)
{::yres/status 400
::yres/body data}))))
(defmethod handle-error :rate-limit
[err _ _]
(let [headers (-> err ex-data ::http/headers)]
{::rres/status 429
::rres/headers headers}))
{::yres/status 429
::yres/headers headers}))
(defmethod handle-error :concurrency-limit
[err _ _]
(let [headers (-> err ex-data ::http/headers)]
{::rres/status 429
::rres/headers headers}))
{::yres/status 429
::yres/headers headers}))
(defmethod handle-error :validation
[err request parent-cause]
@@ -84,22 +87,26 @@
(= code :schema-validation)
(= code :data-validation))
(let [explain (ex/explain data)]
{::rres/status 400
::rres/body (-> data
{::yres/status 400
::yres/body (-> data
(dissoc ::s/problems ::s/value ::s/spec ::sm/explain)
(cond-> explain (assoc :explain explain)))})
(= code :vern-conflict)
{::yres/status 409 ;; 409 - Conflict
::yres/body data}
(= code :request-body-too-large)
{::rres/status 413 ::rres/body data}
{::yres/status 413 ::yres/body data}
(= code :invalid-image)
(binding [l/*context* (request->context request)]
(let [cause (or parent-cause err)]
(l/warn :hint "unexpected error on processing image" :cause cause)
{::rres/status 400 ::rres/body data}))
(l/warn :hint "image process error" :cause cause)
{::yres/status 400 ::yres/body data}))
:else
{::rres/status 400 ::rres/body data})))
{::yres/status 400 ::yres/body data})))
(defmethod handle-error :assertion
[error request parent-cause]
@@ -110,46 +117,47 @@
(= code :data-validation)
(let [explain (ex/explain data)]
(l/error :hint "data assertion error" :cause cause)
{::rres/status 500
::rres/body {:type :server-error
:code :assertion
:data (-> data
(dissoc ::sm/explain)
(cond-> explain (assoc :explain explain)))}})
{::yres/status 500
::yres/body (-> data
(dissoc ::sm/explain)
(cond-> explain (assoc :explain explain))
(assoc :type :server-error)
(assoc :code :assertion))})
(= code :spec-validation)
(let [explain (ex/explain data)]
(l/error :hint "spec assertion error" :cause cause)
{::rres/status 500
::rres/body {:type :server-error
:code :assertion
:data (-> data
(dissoc ::s/problems ::s/value ::s/spec)
(cond-> explain (assoc :explain explain)))}})
{::yres/status 500
::yres/body (-> data
(dissoc ::s/problems ::s/value ::s/spec)
(cond-> explain (assoc :explain explain))
(assoc :type :server-error)
(assoc :code :assertion))})
:else
(do
(l/error :hint "assertion error" :cause cause)
{::rres/status 500
::rres/body {:type :server-error
:code :assertion
:data data}})))))
{::yres/status 500
::yres/body (-> data
(assoc :type :server-error)
(assoc :code :assertion))})))))
(defmethod handle-error :not-found
[err _ _]
{::rres/status 404
::rres/body (ex-data err)})
{::yres/status 404
::yres/body (ex-data err)})
(defmethod handle-error :internal
[error request parent-cause]
(binding [l/*context* (request->context request)]
(let [cause (or parent-cause error)]
(let [cause (or parent-cause error)
data (ex-data error)]
(l/error :hint "internal error" :cause cause)
{::rres/status 500
::rres/body {:type :server-error
:code :unhandled
:hint (ex-message error)
:data (ex-data error)}})))
{::yres/status 500
::yres/body (-> data
(assoc :type :server-error)
(update :code #(or % :unhandled))
(assoc :hint (ex-message error)))})))
(defmethod handle-error :default
[error request parent-cause]
@@ -169,24 +177,24 @@
(let [state (.getSQLState ^java.sql.SQLException error)
cause (or parent-cause error)]
(binding [l/*context* (request->context request)]
(l/error :hint "PSQL error"
(l/error :hint "postgresql error"
:cause cause)
(cond
(= state "57014")
{::rres/status 504
::rres/body {:type :server-error
{::yres/status 504
::yres/body {:type :server-error
:code :statement-timeout
:hint (ex-message error)}}
(= state "25P03")
{::rres/status 504
::rres/body {:type :server-error
{::yres/status 504
::yres/body {:type :server-error
:code :idle-in-transaction-timeout
:hint (ex-message error)}}
:else
{::rres/status 500
::rres/body {:type :server-error
{::yres/status 500
::yres/body {:type :server-error
:code :unexpected
:hint (ex-message error)
:state state}}))))
@@ -200,25 +208,25 @@
(nil? edata)
(binding [l/*context* (request->context request)]
(l/error :hint "unexpected error" :cause cause)
{::rres/status 500
::rres/body {:type :server-error
{::yres/status 500
::yres/body {:type :server-error
:code :unexpected
:hint (ex-message error)}})
:else
(binding [l/*context* (request->context request)]
(l/error :hint "unhandled error" :cause cause)
{::rres/status 500
::rres/body {:type :server-error
:code :unhandled
:hint (ex-message error)
:data edata}}))))
{::yres/status 500
::yres/body (-> edata
(assoc :type :server-error)
(update :code #(or % :unhandled))
(assoc :hint (ex-message error)))}))))
(defmethod handle-exception java.io.IOException
[cause _ _]
(l/wrn :hint "io exception" :cause cause)
{::rres/status 500
::rres/body {:type :server-error
{::yres/status 500
::yres/body {:type :server-error
:code :io-exception
:hint (ex-message cause)}})
@@ -244,4 +252,4 @@
(defn handle'
[cause request]
(::rres/body (handle cause request)))
(::yres/body (handle cause request)))

View File

@@ -0,0 +1,234 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) KALEIDOS INC
(ns app.http.management
"Internal mangement HTTP API"
(:require
[app.common.logging :as l]
[app.common.schema :as sm]
[app.common.schema.generators :as sg]
[app.common.time :as ct]
[app.db :as db]
[app.main :as-alias main]
[app.rpc.commands.profile :as cmd.profile]
[app.setup :as-alias setup]
[app.tokens :as tokens]
[app.worker :as-alias wrk]
[integrant.core :as ig]
[yetti.response :as-alias yres]))
;; ---- ROUTES
(declare ^:private authenticate)
(declare ^:private get-customer)
(declare ^:private update-customer)
(defmethod ig/assert-key ::routes
[_ params]
(assert (db/pool? (::db/pool params)) "expect valid database pool"))
(def ^:private default-system
{:name ::default-system
:compile
(fn [_ _]
(fn [handler cfg]
(fn [request]
(handler cfg request))))})
(def ^:private transaction
{:name ::transaction
:compile
(fn [data _]
(when (:transaction data)
(fn [handler]
(fn [cfg request]
(db/tx-run! cfg handler request)))))})
(defmethod ig/init-key ::routes
[_ cfg]
["" {:middleware [[default-system cfg]
[transaction]]}
["/authenticate"
{:handler authenticate
:allowed-methods #{:post}}]
["/get-customer"
{:handler get-customer
:transaction true
:allowed-methods #{:post}}]
["/update-customer"
{:handler update-customer
:allowed-methods #{:post}
:transaction true}]])
;; ---- HELPERS
(defn- coercer
[schema & {:as opts}]
(let [decode-fn (sm/decoder schema sm/json-transformer)
check-fn (sm/check-fn schema opts)]
(fn [data]
(-> data decode-fn check-fn))))
;; ---- API: AUTHENTICATE
(defn- authenticate
[cfg request]
(let [token (-> request :params :token)
props (get cfg ::setup/props)
result (tokens/verify props {:token token :iss "authentication"})]
{::yres/status 200
::yres/body result}))
;; ---- API: GET-CUSTOMER
(def ^:private schema:get-customer
[:map [:id ::sm/uuid]])
(def ^:private coerce-get-customer-params
(coercer schema:get-customer
:type :validation
:hint "invalid data provided for `get-customer` rpc call"))
(def ^:private sql:get-customer-slots
"WITH teams AS (
SELECT tpr.team_id AS id,
tpr.profile_id AS profile_id
FROM team_profile_rel AS tpr
WHERE tpr.is_owner IS true
AND tpr.profile_id = ?
), teams_with_slots AS (
SELECT tpr.team_id AS id,
count(*) AS total
FROM team_profile_rel AS tpr
WHERE tpr.team_id IN (SELECT id FROM teams)
AND tpr.can_edit IS true
GROUP BY 1
ORDER BY 2
)
SELECT max(total) AS total FROM teams_with_slots;")
(defn- get-customer-slots
[cfg profile-id]
(let [result (db/exec-one! cfg [sql:get-customer-slots profile-id])]
(:total result)))
(defn- get-customer
[cfg request]
(let [profile-id (-> request :params coerce-get-customer-params :id)
profile (cmd.profile/get-profile cfg profile-id)
result {:id (get profile :id)
:name (get profile :fullname)
:email (get profile :email)
:num-editors (get-customer-slots cfg profile-id)
:subscription (-> profile :props :subscription)}]
{::yres/status 200
::yres/body result}))
;; ---- API: UPDATE-CUSTOMER
(def ^:private schema:timestamp
(sm/type-schema
{:type ::timestamp
:pred ct/inst?
:type-properties
{:title "inst"
:description "The same as :app.common.time/inst but encodes to epoch"
:error/message "should be an instant"
:gen/gen (->> (sg/small-int)
(sg/fmap (fn [v] (ct/inst v))))
:decode/string ct/inst
:encode/string inst-ms
:decode/json ct/inst
:encode/json inst-ms}}))
(def ^:private schema:subscription
[:map {:title "Subscription"}
[:id ::sm/text]
[:customer-id ::sm/text]
[:type [:enum
"unlimited"
"professional"
"enterprise"]]
[:status [:enum
"active"
"canceled"
"incomplete"
"incomplete_expired"
"past_due"
"paused"
"trialing"
"unpaid"]]
[:billing-period [:enum
"month"
"day"
"week"
"year"]]
[:quantity :int]
[:description [:maybe ::sm/text]]
[:created-at schema:timestamp]
[:start-date [:maybe schema:timestamp]]
[:ended-at [:maybe schema:timestamp]]
[:trial-end [:maybe schema:timestamp]]
[:trial-start [:maybe schema:timestamp]]
[:cancel-at [:maybe schema:timestamp]]
[:canceled-at [:maybe schema:timestamp]]
[:current-period-end [:maybe schema:timestamp]]
[:current-period-start [:maybe schema:timestamp]]
[:cancel-at-period-end :boolean]
[:cancellation-details
[:map {:title "CancellationDetails"}
[:comment [:maybe ::sm/text]]
[:reason [:maybe ::sm/text]]
[:feedback [:maybe
[:enum
"customer_service"
"low_quality"
"missing_feature"
"other"
"switched_service"
"too_complex"
"too_expensive"
"unused"]]]]]])
(def ^:private schema:update-customer
[:map
[:id ::sm/uuid]
[:subscription [:maybe schema:subscription]]])
(def ^:private coerce-update-customer-params
(coercer schema:update-customer
:type :validation
:hint "invalid data provided for `update-customer` rpc call"))
(defn- update-customer
[cfg request]
(let [{:keys [id subscription]}
(-> request :params coerce-update-customer-params)
{:keys [props] :as profile}
(cmd.profile/get-profile cfg id ::db/for-update true)
props
(assoc props :subscription subscription)]
(l/dbg :hint "update customer"
:profile-id (str id)
:subscription-type (get subscription :type)
:subscription-status (get subscription :status)
:subscription-quantity (get subscription :quantity))
(db/update! cfg :profile
{:props (db/tjson props)}
{:id id}
{::db/return-keys false})
{::yres/status 201
::yres/body nil}))

View File

@@ -15,10 +15,10 @@
[app.http.errors :as errors]
[app.util.pointer-map :as pmap]
[cuerdas.core :as str]
[ring.request :as rreq]
[ring.response :as rres]
[yetti.adapter :as yt]
[yetti.middleware :as ymw])
[yetti.middleware :as ymw]
[yetti.request :as yreq]
[yetti.response :as yres])
(:import
io.undertow.server.RequestTooBigException
java.io.InputStream
@@ -37,17 +37,17 @@
(defn- get-reader
^java.io.BufferedReader
[request]
(let [^InputStream body (rreq/body request)]
(let [^InputStream body (yreq/body request)]
(java.io.BufferedReader.
(java.io.InputStreamReader. body))))
(defn wrap-parse-request
[handler]
(letfn [(process-request [request]
(let [header (rreq/get-header request "content-type")]
(let [header (yreq/get-header request "content-type")]
(cond
(str/starts-with? header "application/transit+json")
(with-open [^InputStream is (rreq/body request)]
(with-open [^InputStream is (yreq/body request)]
(let [params (t/read! (t/reader is))]
(-> request
(assoc :body-params params)
@@ -85,7 +85,7 @@
(errors/handle cause request)))]
(fn [request]
(if (= (rreq/method request) :post)
(if (= (yreq/method request) :post)
(try
(-> request process-request handler)
(catch Throwable cause
@@ -113,57 +113,53 @@
(defn wrap-format-response
[handler]
(letfn [(transit-streamable-body [data opts]
(reify rres/StreamableResponseBody
(-write-body-to-stream [_ _ output-stream]
(try
(with-open [^OutputStream bos (buffered-output-stream output-stream buffer-size)]
(let [tw (t/writer bos opts)]
(t/write! tw data)))
(catch java.io.IOException _)
(catch Throwable cause
(binding [l/*context* {:value data}]
(l/error :hint "unexpected error on encoding response"
:cause cause)))
(finally
(.close ^OutputStream output-stream))))))
(letfn [(transit-streamable-body [data opts _ output-stream]
(try
(with-open [^OutputStream bos (buffered-output-stream output-stream buffer-size)]
(let [tw (t/writer bos opts)]
(t/write! tw data)))
(catch java.io.IOException _)
(catch Throwable cause
(binding [l/*context* {:value data}]
(l/error :hint "unexpected error on encoding response"
:cause cause)))
(finally
(.close ^OutputStream output-stream))))
(json-streamable-body [data]
(reify rres/StreamableResponseBody
(-write-body-to-stream [_ _ output-stream]
(try
(let [encode (or (-> data meta :encode/json) identity)
data (encode data)]
(with-open [^OutputStream bos (buffered-output-stream output-stream buffer-size)]
(with-open [^java.io.OutputStreamWriter writer (java.io.OutputStreamWriter. bos)]
(json/write writer data :key-fn json/write-camel-key :value-fn write-json-value))))
(catch java.io.IOException _)
(catch Throwable cause
(binding [l/*context* {:value data}]
(l/error :hint "unexpected error on encoding response"
:cause cause)))
(finally
(.close ^OutputStream output-stream))))))
(json-streamable-body [data _ output-stream]
(try
(let [encode (or (-> data meta :encode/json) identity)
data (encode data)]
(with-open [^OutputStream bos (buffered-output-stream output-stream buffer-size)]
(with-open [^java.io.OutputStreamWriter writer (java.io.OutputStreamWriter. bos)]
(json/write writer data :key-fn json/write-camel-key :value-fn write-json-value))))
(catch java.io.IOException _)
(catch Throwable cause
(binding [l/*context* {:value data}]
(l/error :hint "unexpected error on encoding response"
:cause cause)))
(finally
(.close ^OutputStream output-stream))))
(format-response-with-json [response _]
(let [body (::rres/body response)]
(let [body (::yres/body response)]
(if (or (boolean? body) (coll? body))
(-> response
(update ::rres/headers assoc "content-type" "application/json")
(assoc ::rres/body (json-streamable-body body)))
(update ::yres/headers assoc "content-type" "application/json")
(assoc ::yres/body (yres/stream-body (partial json-streamable-body body))))
response)))
(format-response-with-transit [response request]
(let [body (::rres/body response)]
(let [body (::yres/body response)]
(if (or (boolean? body) (coll? body))
(let [qs (rreq/query request)
(let [qs (yreq/query request)
opts (if (or (contains? cf/flags :transit-readable-response)
(str/includes? qs "transit_verbose"))
{:type :json-verbose}
{:type :json})]
(-> response
(update ::rres/headers assoc "content-type" "application/transit+json")
(assoc ::rres/body (transit-streamable-body body opts))))
(update ::yres/headers assoc "content-type" "application/transit+json")
(assoc ::yres/body (yres/stream-body (partial transit-streamable-body body opts)))))
response)))
(format-from-params [{:keys [query-params] :as request}]
@@ -172,7 +168,7 @@
(format-response [response request]
(let [accept (or (format-from-params request)
(rreq/get-header request "accept"))]
(yreq/get-header request "accept"))]
(cond
(or (= accept "application/transit+json")
(str/includes? accept "application/transit+json"))
@@ -221,11 +217,11 @@
(defn wrap-cors
[handler]
(fn [request]
(let [response (if (= (rreq/method request) :options)
{::rres/status 200}
(let [response (if (= (yreq/method request) :options)
{::yres/status 200}
(handler request))
origin (rreq/get-header request "origin")]
(update response ::rres/headers with-cors-headers origin))))
origin (yreq/get-header request "origin")]
(update response ::yres/headers with-cors-headers origin))))
(def cors
{:name ::cors
@@ -240,7 +236,7 @@
(when-let [allowed (:allowed-methods data)]
(fn [handler]
(fn [request]
(let [method (rreq/method request)]
(let [method (yreq/method request)]
(if (contains? allowed method)
(handler request)
{::rres/status 405}))))))})
{::yres/status 405}))))))})

View File

@@ -9,7 +9,8 @@
(:require
[app.common.data :as d]
[app.common.logging :as l]
[app.common.spec :as us]
[app.common.schema :as sm]
[app.common.time :as ct]
[app.common.uri :as u]
[app.config :as cf]
[app.db :as db]
@@ -18,12 +19,9 @@
[app.main :as-alias main]
[app.setup :as-alias setup]
[app.tokens :as tokens]
[app.util.time :as dt]
[clojure.spec.alpha :as s]
[cuerdas.core :as str]
[integrant.core :as ig]
[ring.request :as rreq]
[yetti.request :as yrq]))
[yetti.request :as yreq]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; DEFAULTS
@@ -37,10 +35,10 @@
(def default-auth-data-cookie-name "auth-data")
;; Default value for cookie max-age
(def default-cookie-max-age (dt/duration {:days 7}))
(def default-cookie-max-age (ct/duration {:days 7}))
;; Default age for automatic session renewal
(def default-renewal-max-age (dt/duration {:hours 6}))
(def default-renewal-max-age (ct/duration {:hours 6}))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; PROTOCOLS
@@ -52,21 +50,32 @@
(update! [_ data])
(delete! [_ key]))
(s/def ::manager #(satisfies? ISessionManager %))
(defn manager?
[o]
(satisfies? ISessionManager o))
(sm/register!
{:type ::manager
:pred manager?})
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; STORAGE IMPL
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(s/def ::session-params
(s/keys :req-un [::user-agent
::profile-id
::created-at]))
(def ^:private schema:params
[:map {:title "session-params"}
[:user-agent ::sm/text]
[:profile-id ::sm/uuid]
[:created-at ::ct/inst]])
(def ^:private valid-params?
(sm/validator schema:params))
(defn- prepare-session-params
[key params]
(us/assert! ::us/not-empty-string key)
(us/assert! ::session-params params)
(assert (string? key) "expected key to be a string")
(assert (not (str/blank? key)) "expected key to be not empty")
(assert (valid-params? params) "expected valid params")
{:user-agent (:user-agent params)
:profile-id (:profile-id params)
@@ -86,7 +95,7 @@
params))
(update! [_ params]
(let [updated-at (dt/now)]
(let [updated-at (ct/now)]
(db/update! pool :http-session
{:updated-at updated-at}
{:id (:id params)})
@@ -109,7 +118,7 @@
params))
(update! [_ params]
(let [updated-at (dt/now)]
(let [updated-at (ct/now)]
(swap! cache update (:id params) assoc :updated-at updated-at)
(assoc params :updated-at updated-at)))
@@ -117,8 +126,9 @@
(swap! cache dissoc token)
nil))))
(defmethod ig/pre-init-spec ::manager [_]
(s/keys :req [::db/pool]))
(defmethod ig/assert-key ::manager
[_ params]
(assert (db/pool? (::db/pool params)) "expect valid database pool"))
(defmethod ig/init-key ::manager
[_ {:keys [::db/pool]}]
@@ -141,14 +151,14 @@
(defn create-fn
[{:keys [::manager ::setup/props]} profile-id]
(us/assert! ::manager manager)
(us/assert! ::us/uuid profile-id)
(assert (manager? manager) "expected valid session manager")
(assert (uuid? profile-id) "expected valid uuid for profile-id")
(fn [request response]
(let [uagent (rreq/get-header request "user-agent")
(let [uagent (yreq/get-header request "user-agent")
params {:profile-id profile-id
:user-agent uagent
:created-at (dt/now)}
:created-at (ct/now)}
token (gen-token props params)
session (write! manager token params)]
(l/trace :hint "create" :profile-id (str profile-id))
@@ -158,10 +168,10 @@
(defn delete-fn
[{:keys [::manager]}]
(us/assert! ::manager manager)
(assert (manager? manager) "expected valid session manager")
(fn [request response]
(let [cname (cf/get :auth-token-cookie-name default-auth-token-cookie-name)
cookie (yrq/get-cookie request cname)]
cookie (yreq/get-cookie request cname)]
(l/trace :hint "delete" :profile-id (:profile-id request))
(some->> (:value cookie) (delete! manager))
(-> response
@@ -183,7 +193,7 @@
(defn- get-token
[request]
(let [cname (cf/get :auth-token-cookie-name default-auth-token-cookie-name)
cookie (some-> (yrq/get-cookie request cname) :value)]
cookie (some-> (yreq/get-cookie request cname) :value)]
(when-not (str/empty? cookie)
cookie)))
@@ -193,13 +203,13 @@
(defn- renew-session?
[{:keys [updated-at] :as session}]
(and (dt/instant? updated-at)
(let [elapsed (dt/diff updated-at (dt/now))]
(and (ct/inst? updated-at)
(let [elapsed (ct/diff updated-at (ct/now))]
(neg? (compare default-renewal-max-age elapsed)))))
(defn- wrap-soft-auth
[handler {:keys [::manager ::setup/props]}]
(us/assert! ::manager manager)
(assert (manager? manager) "expected valid session manager")
(letfn [(handle-request [request]
(try
(let [token (get-token request)
@@ -217,7 +227,7 @@
(defn- wrap-authz
[handler {:keys [::manager]}]
(us/assert! ::manager manager)
(assert (manager? manager) "expected valid session manager")
(fn [request]
(let [session (get-session manager (::token request))
request (cond-> request
@@ -246,14 +256,14 @@
(defn- assign-auth-token-cookie
[response {token :id updated-at :updated-at}]
(let [max-age (cf/get :auth-token-cookie-max-age default-cookie-max-age)
created-at (or updated-at (dt/now))
renewal (dt/plus created-at default-renewal-max-age)
expires (dt/plus created-at max-age)
created-at (or updated-at (ct/now))
renewal (ct/plus created-at default-renewal-max-age)
expires (ct/plus created-at max-age)
secure? (contains? cf/flags :secure-session-cookies)
strict? (contains? cf/flags :strict-session-cookies)
cors? (contains? cf/flags :cors)
name (cf/get :auth-token-cookie-name default-auth-token-cookie-name)
comment (str "Renewal at: " (dt/format-instant renewal :rfc1123))
comment (str "Renewal at: " (ct/format-inst renewal :rfc1123))
cookie {:path "/"
:http-only true
:expires expires
@@ -269,11 +279,11 @@
domain (cf/get :auth-data-cookie-domain)
cname default-auth-data-cookie-name
created-at (or updated-at (dt/now))
renewal (dt/plus created-at default-renewal-max-age)
expires (dt/plus created-at max-age)
created-at (or updated-at (ct/now))
renewal (ct/plus created-at default-renewal-max-age)
expires (ct/plus created-at max-age)
comment (str "Renewal at: " (dt/format-instant renewal :rfc1123))
comment (str "Renewal at: " (ct/format-inst renewal :rfc1123))
secure? (contains? cf/flags :secure-session-cookies)
strict? (contains? cf/flags :strict-session-cookies)
cors? (contains? cf/flags :cors)
@@ -308,16 +318,17 @@
;; TASK: SESSION GC
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(s/def ::tasks/max-age ::dt/duration)
;; FIXME: MOVE
(defmethod ig/pre-init-spec ::tasks/gc [_]
(s/keys :req [::db/pool]
:opt [::tasks/max-age]))
(defmethod ig/assert-key ::tasks/gc
[_ params]
(assert (db/pool? (::db/pool params)) "expected valid database pool")
(assert (ct/duration? (::tasks/max-age params))))
(defmethod ig/prep-key ::tasks/gc
[_ cfg]
(defmethod ig/expand-key ::tasks/gc
[k v]
(let [max-age (cf/get :auth-token-cookie-max-age default-cookie-max-age)]
(merge {::tasks/max-age max-age} (d/without-nils cfg))))
{k (merge {::tasks/max-age max-age} (d/without-nils v))}))
(def ^:private
sql:delete-expired
@@ -326,16 +337,17 @@
or (updated_at is null and
created_at < now() - ?::interval)")
(defmethod ig/init-key ::tasks/gc
[_ {:keys [::db/pool ::tasks/max-age] :as cfg}]
(l/debug :hint "initializing session gc task" :max-age max-age)
(fn [_]
(db/with-atomic [conn pool]
(let [interval (db/interval max-age)
result (db/exec-one! conn [sql:delete-expired interval interval])
result (:next.jdbc/update-count result)]
(l/debug :task "gc"
:hint "clean http sessions"
:deleted result)
result))))
(defn- collect-expired-tasks
[{:keys [::db/conn ::tasks/max-age]}]
(let [interval (db/interval max-age)
result (db/exec-one! conn [sql:delete-expired interval interval])
result (:next.jdbc/update-count result)]
(l/debug :task "gc"
:hint "clean http sessions"
:deleted result)
result))
(defmethod ig/init-key ::tasks/gc
[_ {:keys [::tasks/max-age] :as cfg}]
(l/debug :hint "initializing session gc task" :max-age max-age)
(fn [_] (db/tx-run! cfg collect-expired-tasks)))

View File

@@ -16,7 +16,7 @@
[promesa.exec :as px]
[promesa.exec.csp :as sp]
[promesa.util :as pu]
[ring.response :as rres])
[yetti.response :as yres])
(:import
java.io.OutputStream))
@@ -33,7 +33,7 @@
(println "event:" (d/name name))
(println "data:" (t/encode-str data {:type :json-verbose}))
(println))]
(.getBytes data "UTF-8"))
(.getBytes ^String data "UTF-8"))
(catch Throwable cause
(l/err :hint "unexpected error on encoding value on sse stream"
:cause cause)
@@ -49,24 +49,24 @@
(defn response
[handler & {:keys [buf] :or {buf 32} :as opts}]
(fn [request]
{::rres/headers default-headers
::rres/status 200
::rres/body (reify rres/StreamableResponseBody
(-write-body-to-stream [_ _ output]
(binding [events/*channel* (sp/chan :buf buf :xf (keep encode))]
(let [listener (events/start-listener
(partial write! output)
(partial pu/close! output))]
(try
(let [result (handler)]
(events/tap :end result))
{::yres/headers default-headers
::yres/status 200
::yres/body (yres/stream-body
(fn [_ output]
(let [channel (sp/chan :buf buf :xf (keep encode))
listener (events/spawn-listener
channel
(partial write! output)
(partial pu/close! output))]
(try
(binding [events/*channel* channel]
(let [result (handler)]
(events/tap :end result)))
(catch java.io.EOFException cause
(events/tap :error (errors/handle' cause request)))
(catch Throwable cause
(l/err :hint "unexpected error on processing sse response"
:cause cause)
(events/tap :error (errors/handle' cause request)))
(finally
(sp/close! events/*channel*)
(px/await! listener)))))))}))
(catch Throwable cause
(let [result (errors/handle' cause request)]
(events/tap channel :error result)))
(finally
(sp/close! channel)
(px/await! listener))))))}))

View File

@@ -11,17 +11,15 @@
[app.common.logging :as l]
[app.common.pprint :as pp]
[app.common.schema :as sm]
[app.common.time :as ct]
[app.common.uuid :as uuid]
[app.db :as db]
[app.http.session :as session]
[app.metrics :as mtx]
[app.msgbus :as mbus]
[app.util.time :as dt]
[app.util.websocket :as ws]
[clojure.spec.alpha :as s]
[integrant.core :as ig]
[promesa.exec.csp :as sp]
[ring.websocket :as rws]
[yetti.websocket :as yws]))
(def recv-labels
@@ -113,7 +111,6 @@
fsub (::file-subscription @state)
tsub (::team-subscription @state)
msg {:type :disconnect
:subs-id profile-id
:profile-id profile-id
:session-id session-id}]
@@ -138,9 +135,7 @@
(l/trace :fn "handle-message" :event "subscribe-team" :team-id team-id :conn-id id)
(let [prev-subs (get @state ::team-subscription)
channel (sp/chan :buf (sp/dropping-buffer 64)
:xf (comp
(remove #(= (:session-id %) session-id))
(map #(assoc % :subs-id team-id))))]
:xf (remove #(= (:session-id %) session-id)))]
(sp/pipe channel output-ch false)
(mbus/sub! msgbus :topic team-id :chan channel)
@@ -159,8 +154,7 @@
(l/trace :fn "handle-message" :event "subscribe-file" :file-id file-id :conn-id id)
(let [psub (::file-subscription @state)
fch (sp/chan :buf (sp/dropping-buffer 64)
:xf (comp (remove #(= (:session-id %) session-id))
(map #(assoc % :subs-id file-id))))]
:xf (remove #(= (:session-id %) session-id)))]
(let [subs {:file-id file-id :channel fch :topic file-id}]
(swap! state assoc ::file-subscription subs))
@@ -191,7 +185,6 @@
;; Notifify the rest of participants of the new connection.
(let [message {:type :join-file
:file-id file-id
:subs-id file-id
:session-id session-id
:profile-id profile-id}]
(mbus/pub! msgbus :topic file-id :message message))))
@@ -246,7 +239,7 @@
(defn- on-connect
[{:keys [::mtx/metrics]} {:keys [::ws/id] :as wsp}]
(let [created-at (dt/now)]
(let [created-at (ct/now)]
(l/trace :fn "on-connect" :conn-id id)
(swap! state assoc id wsp)
(mtx/run! metrics
@@ -260,7 +253,7 @@
(mtx/run! metrics :id :websocket-active-connections :dec 1)
(mtx/run! metrics
:id :websocket-session-timing
:val (/ (inst-ms (dt/diff created-at (dt/now))) 1000.0))))))
:val (/ (inst-ms (ct/diff created-at (ct/now))) 1000.0))))))
(defn- on-rcv-message
[{:keys [::mtx/metrics ::profile-id ::session-id]} message]
@@ -280,7 +273,7 @@
(defn- http-handler
[cfg {:keys [params ::session/profile-id] :as request}]
(let [session-id (some-> params :session-id sm/parse-uuid)]
(let [session-id (some-> params :session-id uuid/parse*)]
(when-not (uuid? session-id)
(ex/raise :type :validation
:code :missing-session-id
@@ -303,7 +296,7 @@
:else
(do
(l/trace :hint "websocket request" :profile-id profile-id :session-id session-id)
{::rws/listener (ws/listener request
{::yws/listener (ws/listener request
::ws/on-rcv-message (partial on-rcv-message cfg)
::ws/on-snd-message (partial on-snd-message cfg)
::ws/on-connect (partial on-connect cfg)
@@ -311,13 +304,17 @@
::profile-id profile-id
::session-id session-id)}))))
(defmethod ig/pre-init-spec ::routes [_]
(s/keys :req [::mbus/msgbus
::mtx/metrics
::db/pool
::session/manager]))
(s/def ::routes vector?)
(def ^:private schema:routes-params
[:map
::mbus/msgbus
::mtx/metrics
::db/pool
::session/manager])
(defmethod ig/assert-key ::routes
[_ params]
(assert (sm/valid? schema:routes-params params)))
(defmethod ig/init-key ::routes
[_ cfg]

View File

@@ -10,7 +10,8 @@
[app.common.data :as d]
[app.common.data.macros :as dm]
[app.common.logging :as l]
[app.common.spec :as us]
[app.common.schema :as sm]
[app.common.time :as ct]
[app.common.uuid :as uuid]
[app.config :as cf]
[app.db :as db]
@@ -23,11 +24,8 @@
[app.setup :as-alias setup]
[app.util.inet :as inet]
[app.util.services :as-alias sv]
[app.util.time :as dt]
[app.worker :as wrk]
[clojure.spec.alpha :as s]
[cuerdas.core :as str]
[integrant.core :as ig]))
[cuerdas.core :as str]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; HELPERS
@@ -95,55 +93,38 @@
;; --- SPECS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; COLLECTOR
;; COLLECTOR API
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Defines a service that collects the audit/activity log using
;; internal database. Later this audit log can be transferred to
;; an external storage and data cleared.
(s/def ::profile-id ::us/uuid)
(s/def ::name ::us/string)
(s/def ::type ::us/string)
(s/def ::props (s/map-of ::us/keyword any?))
(s/def ::ip-addr ::us/string)
(def ^:private schema:event
[:map {:title "event"}
[::type ::sm/text]
[::name ::sm/text]
[::profile-id ::sm/uuid]
[::ip-addr {:optional true} ::sm/text]
[::props {:optional true} [:map-of :keyword :any]]
[::context {:optional true} [:map-of :keyword :any]]
[::tracked-at {:optional true} ::ct/inst]
[::webhooks/event? {:optional true} ::sm/boolean]
[::webhooks/batch-timeout {:optional true} ::ct/duration]
[::webhooks/batch-key {:optional true}
[:or ::sm/fn ::sm/text :keyword]]])
(s/def ::webhooks/event? ::us/boolean)
(s/def ::webhooks/batch-timeout ::dt/duration)
(s/def ::webhooks/batch-key
(s/or :fn fn? :str string? :kw keyword?))
(s/def ::event
(s/keys :req [::type ::name ::profile-id]
:opt [::ip-addr
::props
::webhooks/event?
::webhooks/batch-timeout
::webhooks/batch-key]))
(s/def ::collector
(s/keys :req [::wrk/executor ::db/pool]))
(defmethod ig/pre-init-spec ::collector [_]
(s/keys :req [::db/pool ::wrk/executor]))
(defmethod ig/init-key ::collector
[_ {:keys [::db/pool] :as cfg}]
(cond
(db/read-only? pool)
(l/warn :hint "audit disabled (db is read-only)")
:else
cfg))
(def ^:private check-event
(sm/check-fn schema:event))
(defn prepare-event
[cfg mdata params result]
(let [resultm (meta result)
request (-> params meta ::http/request)
profile-id (or (::profile-id resultm)
(:profile-id result)
(::rpc/profile-id params)
uuid/zero)
(let [resultm (meta result)
request (-> params meta ::http/request)
profile-id (or (::profile-id resultm)
(:profile-id result)
(::rpc/profile-id params)
uuid/zero)
session-id (get params ::rpc/external-session-id)
event-origin (get params ::rpc/external-event-origin)
@@ -155,14 +136,14 @@
(clean-props))
token-id (::actoken/id request)
context (-> (::context resultm)
(assoc :external-session-id session-id)
(assoc :external-event-origin event-origin)
(assoc :access-token-id (some-> token-id str))
(d/without-nils))
token-id (::actoken/id request)
context (-> (::context resultm)
(assoc :external-session-id session-id)
(assoc :external-event-origin event-origin)
(assoc :access-token-id (some-> token-id str))
(d/without-nils))
ip-addr (inet/parse-request request)]
ip-addr (inet/parse-request request)]
{::type (or (::type resultm)
(::rpc/type cfg))
@@ -218,7 +199,7 @@
(defn- handle-event!
[cfg event]
(let [params (event->params event)
tnow (dt/now)]
tnow (ct/now)]
(when (contains? cf/flags :audit-log)
;; NOTE: this operation may cause primary key conflicts on inserts
@@ -273,12 +254,12 @@
"Submit audit event to the collector."
[cfg event]
(try
(let [event (d/without-nils event)
(let [event (-> (d/without-nils event)
(check-event))
cfg (-> cfg
(assoc ::rtry/when rtry/conflict-exception?)
(assoc ::rtry/max-retries 6)
(assoc ::rtry/label "persist-audit-log"))]
(us/verify! ::event event)
(rtry/invoke! cfg db/tx-run! handle-event! event))
(catch Throwable cause
(l/error :hint "unexpected error processing event" :cause cause))))
@@ -289,10 +270,10 @@
logic."
[cfg event]
(when (contains? cf/flags :audit-log)
(let [event (d/without-nils event)]
(us/verify! ::event event)
(let [event (-> (d/without-nils event)
(check-event))]
(db/run! cfg (fn [cfg]
(let [tnow (dt/now)
(let [tnow (ct/now)
params (-> (event->params event)
(assoc :created-at tnow)
(update :tracked-at #(or % tnow)))]

View File

@@ -8,6 +8,8 @@
(:require
[app.common.exceptions :as ex]
[app.common.logging :as l]
[app.common.schema :as sm]
[app.common.time :as ct]
[app.common.transit :as t]
[app.common.uuid :as uuid]
[app.config :as cf]
@@ -15,8 +17,6 @@
[app.http.client :as http]
[app.setup :as-alias setup]
[app.tokens :as tokens]
[app.util.time :as dt]
[clojure.spec.alpha :as s]
[integrant.core :as ig]
[lambdaisland.uri :as u]
[promesa.exec :as px]))
@@ -55,7 +55,7 @@
[{:keys [::uri] :as cfg} events]
(let [token (tokens/generate (::setup/props cfg)
{:iss "authentication"
:iat (dt/now)
:iat (ct/now)
:uid uuid/zero})
body (t/encode {:events events})
headers {"content-type" "application/transit+json"
@@ -108,8 +108,15 @@
(mark-archived! cfg rows)
(count events)))))))
(defmethod ig/pre-init-spec ::handler [_]
(s/keys :req [::db/pool ::setup/props ::http/client]))
(def ^:private schema:handler-params
[:map
::db/pool
::setup/props
::http/client])
(defmethod ig/assert-key ::handler
[_ params]
(assert (sm/valid? schema:handler-params params) "valid params expected for handler"))
(defmethod ig/init-key ::handler
[_ cfg]

View File

@@ -8,7 +8,6 @@
(:require
[app.common.logging :as l]
[app.db :as db]
[clojure.spec.alpha :as s]
[integrant.core :as ig]))
(def ^:private sql:clean-archived
@@ -22,8 +21,9 @@
(l/debug :hint "delete archived audit log entries" :deleted result)
result))
(defmethod ig/pre-init-spec ::handler [_]
(s/keys :req [::db/pool]))
(defmethod ig/assert-key ::handler
[_ params]
(assert (db/pool? (::db/pool params)) "valid database pool expected"))
(defmethod ig/init-key ::handler
[_ cfg]

View File

@@ -12,7 +12,6 @@
[app.common.logging :as l]
[app.common.pprint :as pp]
[app.common.schema :as sm]
[app.common.spec :as us]
[app.config :as cf]
[app.db :as db]
[clojure.spec.alpha :as s]
@@ -38,11 +37,11 @@
(defn record->report
[{:keys [::l/context ::l/message ::l/props ::l/logger ::l/level ::l/cause] :as record}]
(us/assert! ::l/record record)
(assert (l/valid-record? record) "expectd valid log record")
(if (or (instance? java.util.concurrent.CompletionException cause)
(instance? java.util.concurrent.ExecutionException cause))
(-> record
(assoc ::trace (ex/format-throwable cause :data? false :explain? false :header? false :summary? false))
(assoc ::trace (ex/format-throwable cause :data? true :explain? false :header? false :summary? false))
(assoc ::l/cause (ex-cause cause))
(record->report))
@@ -54,30 +53,34 @@
(assoc :logger/name logger)
(assoc :logger/level level)
(dissoc :request/params :value :params :data))]
(merge
{:context (-> (into (sorted-map) ctx)
(pp/pprint-str :length 50))
:props (pp/pprint-str props :length 50)
:hint (or (ex-message cause) @message)
:hint (or (when-let [message (ex-message cause)]
(if-let [props-hint (:hint props)]
(str props-hint ": " message)
message))
@message)
:trace (or (::trace record)
(ex/format-throwable cause :data? false :explain? false :header? false :summary? false))}
(some-> cause (ex/format-throwable :data? true :explain? false :header? false :summary? false)))}
(when-let [params (or (:request/params context) (:params context))]
{:params (pp/pprint-str params :length 30 :level 13)})
{:params (pp/pprint-str params :length 20 :level 20)})
(when-let [value (:value context)]
{:value (pp/pprint-str value :length 30 :level 12)})
{:value (pp/pprint-str value :length 30 :level 13)})
(when-let [data (some-> data (dissoc ::s/problems ::s/value ::s/spec ::sm/explain :hint))]
{:data (pp/pprint-str data :length 30 :level 12)})
{:data (pp/pprint-str data :length 30 :level 13)})
(when-let [explain (ex/explain data :length 30 :level 12)]
(when-let [explain (ex/explain data :length 30 :level 13)]
{:explain explain})))))
(defn error-record?
[{:keys [::l/level ::l/cause]}]
(and (= :error level)
(ex/exception? cause)))
[{:keys [::l/level]}]
(= :error level))
(defn- handle-event
[{:keys [::db/pool]} {:keys [::l/id] :as record}]
@@ -91,8 +94,9 @@
(catch Throwable cause
(l/warn :hint "unexpected exception on database error logger" :cause cause))))
(defmethod ig/pre-init-spec ::reporter [_]
(s/keys :req [::db/pool]))
(defmethod ig/assert-key ::reporter
[_ params]
(assert (db/pool? (::db/pool params)) "expect valid database pool"))
(defmethod ig/init-key ::reporter
[_ cfg]

View File

@@ -9,12 +9,10 @@
(:require
[app.common.exceptions :as ex]
[app.common.logging :as l]
[app.common.spec :as us]
[app.config :as cf]
[app.http.client :as http]
[app.loggers.database :as ldb]
[app.util.json :as json]
[clojure.spec.alpha :as s]
[integrant.core :as ig]
[promesa.exec :as px]
[promesa.exec.csp :as sp]))
@@ -54,7 +52,7 @@
(defn record->report
[{:keys [::l/context ::l/id ::l/cause] :as record}]
(us/assert! ::l/record record)
(assert (l/valid-record? record) "expectd valid log record")
{:id id
:tenant (cf/get :tenant)
:host (cf/get :host)
@@ -75,8 +73,9 @@
(catch Throwable cause
(l/warn :hint "unhandled error" :cause cause)))))
(defmethod ig/pre-init-spec ::reporter [_]
(s/keys :req [::http/client]))
(defmethod ig/assert-key ::reporter
[_ params]
(assert (http/client? (::http/client params)) "expect valid http client"))
(defmethod ig/init-key ::reporter
[_ cfg]

View File

@@ -10,15 +10,15 @@
[app.common.data :as d]
[app.common.data.macros :as dm]
[app.common.logging :as l]
[app.common.time :as ct]
[app.common.transit :as t]
[app.common.uri :as uri]
[app.config :as cf]
[app.db :as db]
[app.http.client :as http]
[app.util.time :as dt]
[app.loggers.audit :as audit]
[app.worker :as wrk]
[clojure.data.json :as json]
[clojure.spec.alpha :as s]
[cuerdas.core :as str]
[integrant.core :as ig]))
@@ -60,24 +60,35 @@
(some->> (:project-id props) (lookup-webhooks-by-project pool))
(some->> (:file-id props) (lookup-webhooks-by-file pool))))
(defmethod ig/pre-init-spec ::process-event-handler [_]
(s/keys :req [::db/pool]))
(defmethod ig/assert-key ::process-event-handler
[_ params]
(assert (db/pool? (::db/pool params)) "expect valid database pool")
(assert (http/client? (::http/client params)) "expect valid http client"))
(defmethod ig/init-key ::process-event-handler
[_ cfg]
(fn [{:keys [props] :as task}]
(l/dbg :hint "process webhook event" :name (:name props))
(when-let [items (lookup-webhooks cfg props)]
(l/trc :hint "webhooks found for event" :total (count items))
(db/tx-run! cfg (fn [cfg]
(doseq [item items]
(wrk/submit! (-> cfg
(assoc ::wrk/task :run-webhook)
(assoc ::wrk/queue :webhooks)
(assoc ::wrk/max-retries 3)
(assoc ::wrk/params {:event props
:config item})))))))))
(let [items (lookup-webhooks cfg props)
event {::audit/profile-id (:profile-id props)
::audit/name "webhook"
::audit/type "trigger"
::audit/props {:name (get props :name)
:event-id (get props :id)
:total-affected (count items)}}]
(audit/insert! cfg event)
(when items
(l/trc :hint "webhooks found for event" :total (count items))
(db/tx-run! cfg (fn [cfg]
(doseq [item items]
(wrk/submit! (-> cfg
(assoc ::wrk/task :run-webhook)
(assoc ::wrk/queue :webhooks)
(assoc ::wrk/max-retries 3)
(assoc ::wrk/params {:event props
:config item}))))))))))
;; --- RUN
(declare interpret-exception)
@@ -87,12 +98,14 @@
{:key-fn str/camel
:indent true})
(defmethod ig/pre-init-spec ::run-webhook-handler [_]
(s/keys :req [::http/client ::db/pool]))
(defmethod ig/assert-key ::run-webhook-handler
[_ params]
(assert (db/pool? (::db/pool params)) "expect valid database pool")
(assert (http/client? (::http/client params)) "expect valid http client"))
(defmethod ig/prep-key ::run-webhook-handler
[_ cfg]
(merge {::max-errors 3} (d/without-nils cfg)))
(defmethod ig/expand-key ::run-webhook-handler
[k v]
{k (merge {::max-errors 3} (d/without-nils v))})
(defmethod ig/init-key ::run-webhook-handler
[_ {:keys [::db/pool ::max-errors] :as cfg}]
@@ -111,7 +124,7 @@
{:id (:id whook)})))
(db/update! pool :webhook
{:updated-at (dt/now)
{:updated-at (ct/now)
:error-code nil
:error-count 0}
{:id (:id whook)})))
@@ -119,7 +132,7 @@
(report-delivery! [whook req rsp err]
(db/insert! pool :webhook-delivery
{:webhook-id (:id whook)
:created-at (dt/now)
:created-at (ct/now)
:error-code err
:req-data (db/tjson req)
:rsp-data (db/tjson rsp)}))]
@@ -142,7 +155,7 @@
(let [req {:uri (:uri whook)
:headers {"content-type" (:mtype whook)
"user-agent" (str/ffmt "penpot/%" (:main cf/version))}
:timeout (dt/duration "4s")
:timeout (ct/duration "4s")
:method :post
:body body}]
(try

View File

@@ -9,7 +9,9 @@
[app.auth.ldap :as-alias ldap]
[app.auth.oidc :as-alias oidc]
[app.auth.oidc.providers :as-alias oidc.providers]
[app.common.exceptions :as ex]
[app.common.logging :as l]
[app.common.time :as ct]
[app.config :as cf]
[app.db :as-alias db]
[app.email :as-alias email]
@@ -18,16 +20,17 @@
[app.http.awsns :as http.awsns]
[app.http.client :as-alias http.client]
[app.http.debug :as-alias http.debug]
[app.http.management :as mgmt]
[app.http.session :as-alias session]
[app.http.session.tasks :as-alias session.tasks]
[app.http.websocket :as http.ws]
[app.loggers.webhooks :as-alias webhooks]
[app.metrics :as-alias mtx]
[app.metrics.definition :as-alias mdef]
[app.migrations.v2 :as migrations.v2]
[app.msgbus :as-alias mbus]
[app.redis :as-alias rds]
[app.rpc :as-alias rpc]
[app.rpc.climit :as-alias climit]
[app.rpc.doc :as-alias rpc.doc]
[app.setup :as-alias setup]
[app.srepl :as-alias srepl]
@@ -37,9 +40,9 @@
[app.storage.gc-touched :as-alias sto.gc-touched]
[app.storage.s3 :as-alias sto.s3]
[app.svgo :as-alias svgo]
[app.util.time :as dt]
[app.util.cron]
[app.worker :as-alias wrk]
[cider.nrepl :refer [cider-nrepl-handler]]
[app.worker.executor]
[clojure.test :as test]
[clojure.tools.namespace.repl :as repl]
[cuerdas.core :as str]
@@ -146,42 +149,28 @@
::mdef/labels []
::mdef/type :histogram}
:executors-active-threads
{::mdef/name "penpot_executors_active_threads"
::mdef/help "Current number of threads available in the executor service."
::mdef/labels ["name"]
::mdef/type :gauge}
:executors-completed-tasks
{::mdef/name "penpot_executors_completed_tasks_total"
::mdef/help "Approximate number of completed tasks by the executor."
::mdef/labels ["name"]
::mdef/type :counter}
:executors-running-threads
{::mdef/name "penpot_executors_running_threads"
::mdef/help "Current number of threads with state RUNNING."
::mdef/labels ["name"]
::mdef/type :gauge}})
:http-server-dispatch-timing
{::mdef/name "penpot_http_server_dispatch_timing"
::mdef/help "Histogram of dispatch handler"
::mdef/labels []
::mdef/type :histogram}})
(def system-config
{::db/pool
{::db/uri (cf/get :database-uri)
::db/username (cf/get :database-username)
::db/password (cf/get :database-password)
::db/read-only? (cf/get :database-readonly false)
::db/read-only (cf/get :database-readonly false)
::db/min-size (cf/get :database-min-pool-size 0)
::db/max-size (cf/get :database-max-pool-size 60)
::mtx/metrics (ig/ref ::mtx/metrics)}
;; Default thread pool for IO operations
::wrk/executor
{}
;; Default netty IO pool (shared between several services)
::wrk/netty-io-executor
{:threads (cf/get :netty-io-threads)}
::wrk/monitor
{::mtx/metrics (ig/ref ::mtx/metrics)
::wrk/executor (ig/ref ::wrk/executor)
::wrk/name "default"}
::wrk/netty-executor
{:threads (cf/get :executor-threads)}
:app.migrations/migrations
{::db/pool (ig/ref ::db/pool)}
@@ -195,14 +184,19 @@
::rds/redis
{::rds/uri (cf/get :redis-uri)
::mtx/metrics (ig/ref ::mtx/metrics)
::wrk/executor (ig/ref ::wrk/executor)}
::wrk/netty-executor
(ig/ref ::wrk/netty-executor)
::wrk/netty-io-executor
(ig/ref ::wrk/netty-io-executor)}
::mbus/msgbus
{::wrk/executor (ig/ref ::wrk/executor)
{::wrk/executor (ig/ref ::wrk/netty-executor)
::rds/redis (ig/ref ::rds/redis)}
:app.storage.tmp/cleaner
{::wrk/executor (ig/ref ::wrk/executor)}
{::wrk/executor (ig/ref ::wrk/netty-executor)}
::sto.gc-deleted/handler
{::db/pool (ig/ref ::db/pool)
@@ -230,8 +224,10 @@
::http/host (cf/get :http-server-host)
::http/router (ig/ref ::http/router)
::http/io-threads (cf/get :http-server-io-threads)
::http/max-worker-threads (cf/get :http-server-max-worker-threads)
::http/max-body-size (cf/get :http-server-max-body-size)
::http/max-multipart-body-size (cf/get :http-server-max-multipart-body-size)}
::http/max-multipart-body-size (cf/get :http-server-max-multipart-body-size)
::mtx/metrics (ig/ref ::mtx/metrics)}
::ldap/provider
{:host (cf/get :ldap-host)
@@ -245,7 +241,7 @@
:base-dn (cf/get :ldap-base-dn)
:bind-dn (cf/get :ldap-bind-dn)
:bind-password (cf/get :ldap-bind-password)
:enabled? (contains? cf/flags :login-with-ldap)}
:enabled (contains? cf/flags :login-with-ldap)}
::oidc.providers/google
{}
@@ -271,6 +267,10 @@
::email/blacklist (ig/ref ::email/blacklist)
::email/whitelist (ig/ref ::email/whitelist)}
::mgmt/routes
{::db/pool (ig/ref ::db/pool)
::setup/props (ig/ref ::setup/props)}
:app.http/router
{::session/manager (ig/ref ::session/manager)
::db/pool (ig/ref ::db/pool)
@@ -279,6 +279,7 @@
::setup/props (ig/ref ::setup/props)
::mtx/routes (ig/ref ::mtx/routes)
::oidc/routes (ig/ref ::oidc/routes)
::mgmt/routes (ig/ref ::mgmt/routes)
::http.debug/routes (ig/ref ::http.debug/routes)
::http.assets/routes (ig/ref ::http.assets/routes)
::http.ws/routes (ig/ref ::http.ws/routes)
@@ -298,28 +299,29 @@
:app.http.assets/routes
{::http.assets/path (cf/get :assets-path)
::http.assets/cache-max-age (dt/duration {:hours 24})
::http.assets/cache-max-agesignature-max-age (dt/duration {:hours 24 :minutes 5})
::http.assets/cache-max-age (ct/duration {:hours 24})
::http.assets/cache-max-agesignature-max-age (ct/duration {:hours 24 :minutes 5})
::sto/storage (ig/ref ::sto/storage)}
:app.rpc/climit
{::mtx/metrics (ig/ref ::mtx/metrics)
::wrk/executor (ig/ref ::wrk/executor)}
::rpc/climit
{::mtx/metrics (ig/ref ::mtx/metrics)
::wrk/executor (ig/ref ::wrk/netty-executor)
::climit/config (cf/get :rpc-climit-config)
::climit/enabled (contains? cf/flags :rpc-climit)}
:app.rpc/rlimit
{::wrk/executor (ig/ref ::wrk/executor)}
{::wrk/executor (ig/ref ::wrk/netty-executor)}
:app.rpc/methods
{::http.client/client (ig/ref ::http.client/client)
::db/pool (ig/ref ::db/pool)
::wrk/executor (ig/ref ::wrk/executor)
::wrk/executor (ig/ref ::wrk/netty-executor)
::session/manager (ig/ref ::session/manager)
::ldap/provider (ig/ref ::ldap/provider)
::sto/storage (ig/ref ::sto/storage)
::mtx/metrics (ig/ref ::mtx/metrics)
::mbus/msgbus (ig/ref ::mbus/msgbus)
::rds/redis (ig/ref ::rds/redis)
::svgo/optimizer (ig/ref ::svgo/optimizer)
::rpc/climit (ig/ref ::rpc/climit)
::rpc/rlimit (ig/ref ::rpc/rlimit)
@@ -330,7 +332,7 @@
::email/whitelist (ig/ref ::email/whitelist)}
:app.rpc.doc/routes
{:methods (ig/ref :app.rpc/methods)}
{:app.rpc/methods (ig/ref :app.rpc/methods)}
:app.rpc/routes
{::rpc/methods (ig/ref :app.rpc/methods)
@@ -346,7 +348,6 @@
:file-gc (ig/ref :app.tasks.file-gc/handler)
:file-gc-scheduler (ig/ref :app.tasks.file-gc-scheduler/handler)
:offload-file-data (ig/ref :app.tasks.offload-file-data/handler)
:file-xlog-gc (ig/ref :app.tasks.file-xlog-gc/handler)
:tasks-gc (ig/ref :app.tasks.tasks-gc/handler)
:telemetry (ig/ref :app.tasks.telemetry/handler)
:storage-gc-deleted (ig/ref ::sto.gc-deleted/handler)
@@ -379,8 +380,7 @@
::email/default-from (cf/get :smtp-default-from)}
::email/handler
{::email/sendmail (ig/ref ::email/sendmail)
::mtx/metrics (ig/ref ::mtx/metrics)}
{::email/sendmail (ig/ref ::email/sendmail)}
:app.tasks.tasks-gc/handler
{::db/pool (ig/ref ::db/pool)}
@@ -403,10 +403,6 @@
{::db/pool (ig/ref ::db/pool)
::sto/storage (ig/ref ::sto/storage)}
:app.tasks.file-xlog-gc/handler
{::db/pool (ig/ref ::db/pool)
::sto/storage (ig/ref ::sto/storage)}
:app.tasks.telemetry/handler
{::db/pool (ig/ref ::db/pool)
::http.client/client (ig/ref ::http.client/client)
@@ -430,9 +426,6 @@
;; module requires the migrations to run before initialize.
::migrations (ig/ref :app.migrations/migrations)}
::svgo/optimizer
{}
:app.loggers.audit.archive-task/handler
{::setup/props (ig/ref ::setup/props)
::db/pool (ig/ref ::db/pool)
@@ -476,58 +469,58 @@
(cf/get :objects-storage-s3-bucket))
::sto.s3/io-threads (or (cf/get :storage-assets-s3-io-threads)
(cf/get :objects-storage-s3-io-threads))
::wrk/executor (ig/ref ::wrk/executor)}
::wrk/netty-io-executor
(ig/ref ::wrk/netty-io-executor)}
:app.storage.fs/backend
{::sto.fs/directory (or (cf/get :storage-assets-fs-directory)
(cf/get :objects-storage-fs-directory))}})
(def worker-config
{::wrk/cron
{::wrk/registry (ig/ref ::wrk/registry)
::db/pool (ig/ref ::db/pool)
::wrk/entries
[{:cron #app/cron "0 0 * * * ?" ;; hourly
:task :file-xlog-gc}
{:cron #app/cron "0 0 0 * * ?" ;; daily
[{:cron #penpot/cron "0 0 0 * * ?" ;; daily
:task :session-gc}
{:cron #app/cron "0 0 0 * * ?" ;; daily
{:cron #penpot/cron "0 0 0 * * ?" ;; daily
:task :objects-gc}
{:cron #app/cron "0 0 0 * * ?" ;; daily
{:cron #penpot/cron "0 0 0 * * ?" ;; daily
:task :storage-gc-deleted}
{:cron #app/cron "0 0 0 * * ?" ;; daily
{:cron #penpot/cron "0 0 0 * * ?" ;; daily
:task :storage-gc-touched}
{:cron #app/cron "0 0 0 * * ?" ;; daily
{:cron #penpot/cron "0 0 0 * * ?" ;; daily
:task :tasks-gc}
{:cron #app/cron "0 0 2 * * ?" ;; daily
{:cron #penpot/cron "0 0 2 * * ?" ;; daily
:task :file-gc-scheduler}
{:cron #app/cron "0 30 */3,23 * * ?"
{:cron #penpot/cron "0 30 */3,23 * * ?"
:task :telemetry}
(when (contains? cf/flags :audit-log-archive)
{:cron #app/cron "0 */5 * * * ?" ;; every 5m
{:cron #penpot/cron "0 */5 * * * ?" ;; every 5m
:task :audit-log-archive})
(when (contains? cf/flags :audit-log-gc)
{:cron #app/cron "30 */5 * * * ?" ;; every 5m
{:cron #penpot/cron "30 */5 * * * ?" ;; every 5m
:task :audit-log-gc})]}
::wrk/dispatcher
{::rds/redis (ig/ref ::rds/redis)
::mtx/metrics (ig/ref ::mtx/metrics)
::db/pool (ig/ref ::db/pool)}
::db/pool (ig/ref ::db/pool)
::wrk/tenant (cf/get :tenant)}
[::default ::wrk/runner]
{::wrk/parallelism (cf/get ::worker-default-parallelism 1)
::wrk/queue :default
::wrk/tenant (cf/get :tenant)
::rds/redis (ig/ref ::rds/redis)
::wrk/registry (ig/ref ::wrk/registry)
::mtx/metrics (ig/ref ::mtx/metrics)
@@ -536,6 +529,7 @@
[::webhook ::wrk/runner]
{::wrk/parallelism (cf/get ::worker-webhook-parallelism 1)
::wrk/queue :webhooks
::wrk/tenant (cf/get :tenant)
::rds/redis (ig/ref ::rds/redis)
::wrk/registry (ig/ref ::wrk/registry)
::mtx/metrics (ig/ref ::mtx/metrics)
@@ -553,7 +547,7 @@
(-> system-config
(cond-> (contains? cf/flags :backend-worker)
(merge worker-config))
(ig/prep)
(ig/expand)
(ig/init))))
(l/inf :hint "welcome to penpot"
:flags (str/join "," (map name cf/flags))
@@ -566,7 +560,7 @@
(alter-var-root #'system (fn [sys]
(when sys (ig/halt! sys))
(-> config
(ig/prep)
(ig/expand)
(ig/init)))))
(defn stop
@@ -612,22 +606,11 @@
(let [p (promise)]
(when (contains? cf/flags :nrepl-server)
(l/inf :hint "start nrepl server" :port 6064)
(nrepl/start-server :bind "0.0.0.0" :port 6064 :handler cider-nrepl-handler))
(nrepl/start-server :bind "0.0.0.0" :port 6064))
(start)
(when (contains? cf/flags :v2-migration)
(px/sleep 5000)
(migrations.v2/migrate app.main/system))
(deref p))
(catch Throwable cause
(binding [*out* *err*]
(println "==== ERROR ===="))
(.printStackTrace cause)
(when-let [cause' (ex-cause cause)]
(binding [*out* *err*]
(println "==== CAUSE ===="))
(.printStackTrace cause'))
(ex/print-throwable cause)
(px/sleep 500)
(System/exit -1))))

View File

@@ -8,45 +8,36 @@
"Media & Font postprocessing."
(:require
[app.common.data :as d]
[app.common.data.macros :as dm]
[app.common.exceptions :as ex]
[app.common.logging :as l]
[app.common.media :as cm]
[app.common.schema :as sm]
[app.common.schema.openapi :as-alias oapi]
[app.common.spec :as us]
[app.common.svg :as csvg]
[app.common.time :as ct]
[app.config :as cf]
[app.db :as-alias db]
[app.storage :as-alias sto]
[app.storage.tmp :as tmp]
[app.util.time :as dt]
[buddy.core.bytes :as bb]
[buddy.core.codecs :as bc]
[clojure.java.shell :as sh]
[clojure.spec.alpha :as s]
[clojure.string]
[clojure.xml :as xml]
[cuerdas.core :as str]
[datoteka.fs :as fs]
[datoteka.io :as io])
(:import
clojure.lang.XMLHandler
java.io.InputStream
javax.xml.XMLConstants
javax.xml.parsers.SAXParserFactory
org.apache.commons.io.IOUtils
org.im4java.core.ConvertCmd
org.im4java.core.IMOperation
org.im4java.core.Info))
(s/def ::path fs/path?)
(s/def ::filename string?)
(s/def ::size integer?)
(s/def ::headers (s/map-of string? string?))
(s/def ::mtype string?)
(s/def ::upload
(s/keys :req-un [::filename ::size ::path]
:opt-un [::mtype ::headers]))
;; A subset of fields from the ::upload spec
(s/def ::input
(s/keys :req-un [::path]
:opt-un [::mtype]))
(sm/register! ::upload
(def schema:upload
[:map {:title "Upload"}
[:filename :string]
[:size ::sm/int]
@@ -55,8 +46,16 @@
[:headers {:optional true}
[:map-of :string :string]]])
(def ^:private schema:input
[:map {:title "Input"}
[:path ::fs/path]
[:mtype {:optional true} ::sm/text]])
(def ^:private check-input
(sm/check-fn schema:input))
(defn validate-media-type!
([upload] (validate-media-type! upload cm/valid-image-types))
([upload] (validate-media-type! upload cm/image-types))
([upload allowed]
(when-not (contains? allowed (:mtype upload))
(ex/raise :type :validation
@@ -96,17 +95,44 @@
(catch Throwable e
(process-error e))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; SVG PARSING
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn- secure-parser-factory
[^InputStream input ^XMLHandler handler]
(.. (doto (SAXParserFactory/newInstance)
(.setFeature XMLConstants/FEATURE_SECURE_PROCESSING true)
(.setFeature "http://apache.org/xml/features/disallow-doctype-decl" true))
(newSAXParser)
(parse input handler)))
(defn- strip-doctype
[data]
(cond-> data
(str/includes? data "<!DOCTYPE")
(str/replace #"<\!DOCTYPE[^>]*>" "")))
(defn- parse-svg
[text]
(let [text (strip-doctype text)]
(dm/with-open [istream (IOUtils/toInputStream ^String text "UTF-8")]
(xml/parse istream secure-parser-factory))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; IMAGE THUMBNAILS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(s/def ::width integer?)
(s/def ::height integer?)
(s/def ::format #{:jpeg :webp :png})
(s/def ::quality #(< 0 % 101))
(def ^:private schema:thumbnail-params
[:map {:title "ThumbnailParams"}
[:input schema:input]
[:format [:enum :jpeg :webp :png]]
[:quality [:int {:min 1 :max 100}]]
[:width :int]
[:height :int]])
(s/def ::thumbnail-params
(s/keys :req-un [::input ::format ::width ::height]))
(def ^:private check-thumbnail-params
(sm/check-fn schema:thumbnail-params))
;; Related info on how thumbnails generation
;; http://www.imagemagick.org/Usage/thumbnails/
@@ -128,30 +154,38 @@
:data tmp)))
(defmethod process :generic-thumbnail
[{:keys [quality width height] :as params}]
(us/assert ::thumbnail-params params)
(let [op (doto (IMOperation.)
(.addImage)
(.autoOrient)
(.strip)
(.thumbnail ^Integer (int width) ^Integer (int height) ">")
(.quality (double quality))
(.addImage))]
(generic-process (assoc params :operation op))))
[params]
(let [{:keys [quality width height] :as params}
(check-thumbnail-params params)
operation
(doto (IMOperation.)
(.addImage)
(.autoOrient)
(.strip)
(.thumbnail ^Integer (int width) ^Integer (int height) ">")
(.quality (double quality))
(.addImage))]
(generic-process (assoc params :operation operation))))
(defmethod process :profile-thumbnail
[{:keys [quality width height] :as params}]
(us/assert ::thumbnail-params params)
(let [op (doto (IMOperation.)
(.addImage)
(.autoOrient)
(.strip)
(.thumbnail ^Integer (int width) ^Integer (int height) "^")
(.gravity "center")
(.extent (int width) (int height))
(.quality (double quality))
(.addImage))]
(generic-process (assoc params :operation op))))
[params]
(let [{:keys [quality width height] :as params}
(check-thumbnail-params params)
operation
(doto (IMOperation.)
(.addImage)
(.autoOrient)
(.strip)
(.thumbnail ^Integer (int width) ^Integer (int height) "^")
(.gravity "center")
(.extent (int width) (int height))
(.quality (double quality))
(.addImage))]
(generic-process (assoc params :operation operation))))
(defn get-basic-info-from-svg
[{:keys [tag attrs] :as data}]
@@ -181,17 +215,33 @@
{:width (int width)
:height (int height)})))]))
(defn- get-dimensions-with-orientation [^String path]
;; Image magick doesn't give info about exif rotation so we use the identify command
;; If we are processing an animated gif we use the first frame with -scene 0
(let [dim-result (sh/sh "identify" "-format" "%w %h\n" path)
orient-result (sh/sh "identify" "-format" "%[EXIF:Orientation]\n" path)]
(if (and (= 0 (:exit dim-result))
(= 0 (:exit orient-result)))
(let [[w h] (-> (:out dim-result)
str/trim
(clojure.string/split #"\s+")
(->> (mapv #(Integer/parseInt %))))
orientation (-> orient-result :out str/trim)]
(case orientation
("6" "8") {:width h :height w} ; Rotated 90 or 270 degrees
{:width w :height h})) ; Normal or unknown orientation
nil)))
(defmethod process :info
[{:keys [input] :as params}]
(us/assert ::input input)
(let [{:keys [path mtype]} input]
(let [{:keys [path mtype] :as input} (check-input input)]
(if (= mtype "image/svg+xml")
(let [info (some-> path slurp csvg/parse get-basic-info-from-svg)]
(let [info (some-> path slurp parse-svg get-basic-info-from-svg)]
(when-not info
(ex/raise :type :validation
:code :invalid-svg-file
:hint "uploaded svg does not provides dimensions"))
(merge input info {:ts (dt/now)}))
(merge input info {:ts (ct/now)}))
(let [instance (Info. (str path))
mtype' (.getProperty instance "Mime type")]
@@ -201,13 +251,17 @@
:code :media-type-mismatch
:hint (str "Seems like you are uploading a file whose content does not match the extension."
"Expected: " mtype ". Got: " mtype')))
;; For an animated GIF, getImageWidth/Height returns the delta size of one frame (if no frame given
;; it returns size of the last one), whereas getPageWidth/Height always return the full size of
;; any frame.
(assoc input
:width (.getPageWidth instance)
:height (.getPageHeight instance)
:ts (dt/now))))))
(let [{:keys [width height]}
(or (get-dimensions-with-orientation (str path))
(do
(l/warn "Failed to read image dimensions with orientation; falling back to im4java"
{:path path})
{:width (.getPageWidth instance)
:height (.getPageHeight instance)}))]
(assoc input
:width width
:height height
:ts (ct/now)))))))
(defmethod process-error org.im4java.core.InfoException
[error]
@@ -225,7 +279,7 @@
(letfn [(ttf->otf [data]
(let [finput (tmp/tempfile :prefix "penpot.font." :suffix "")
foutput (fs/path (str finput ".otf"))
_ (io/write-to-file! data finput)
_ (io/write* finput data)
res (sh/sh "fontforge" "-lang=ff" "-c"
(str/fmt "Open('%s'); Generate('%s')"
(str finput)
@@ -236,7 +290,7 @@
(otf->ttf [data]
(let [finput (tmp/tempfile :prefix "penpot.font." :suffix "")
foutput (fs/path (str finput ".ttf"))
_ (io/write-to-file! data finput)
_ (io/write* finput data)
res (sh/sh "fontforge" "-lang=ff" "-c"
(str/fmt "Open('%s'); Generate('%s')"
(str finput)
@@ -250,14 +304,14 @@
;; command.
(let [finput (tmp/tempfile :prefix "penpot.font." :suffix "")
foutput (fs/path (str finput ".woff"))
_ (io/write-to-file! data finput)
_ (io/write* finput data)
res (sh/sh "sfnt2woff" (str finput))]
(when (zero? (:exit res))
foutput)))
(woff->sfnt [data]
(let [finput (tmp/tempfile :prefix "penpot" :suffix "")
_ (io/write-to-file! data finput)
_ (io/write* finput data)
res (sh/sh "woff2sfnt" (str finput)
:out-enc :bytes)]
(when (zero? (:exit res))

View File

@@ -8,9 +8,8 @@
(:refer-clojure :exclude [run!])
(:require
[app.common.logging :as l]
[app.common.spec :as us]
[app.common.schema :as sm]
[app.metrics.definition :as-alias mdef]
[clojure.spec.alpha :as s]
[integrant.core :as ig])
(:import
io.prometheus.client.CollectorRegistry
@@ -34,41 +33,52 @@
(declare create-collector)
(declare handler)
(defprotocol IMetrics
(get-registry [_])
(get-collector [_ id])
(get-handler [_]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; METRICS SERVICE PROVIDER
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(s/def ::mdef/name string?)
(s/def ::mdef/help string?)
(s/def ::mdef/labels (s/every string? :kind vector?))
(s/def ::mdef/type #{:gauge :counter :summary :histogram})
(sm/register!
{:type ::collector
:pred #(instance? SimpleCollector %)
:type-properties
{:title "collector"
:description "An instance of SimpleCollector"}})
(s/def ::mdef/instance
#(instance? SimpleCollector %))
(sm/register!
{:type ::registry
:pred #(instance? CollectorRegistry %)
:type-properties
{:title "Metrics Registry"
:description "Instance of CollectorRegistry"}})
(s/def ::mdef/definition
(s/keys :req [::mdef/name
::mdef/help
::mdef/type]
:opt [::mdef/labels
::mdef/instance]))
(def ^:private schema:definitions
[:map-of :keyword
[:map {:title "definition"}
[::mdef/name :string]
[::mdef/help :string]
[::mdef/type [:enum :gauge :counter :summary :histogram]]
[::mdef/labels {:optional true} [::sm/vec :string]]
[::mdef/instance {:optional true} ::collector]]])
(s/def ::definitions
(s/map-of keyword? ::mdef/definition))
(defn metrics?
[o]
(satisfies? IMetrics o))
(s/def ::registry
#(instance? CollectorRegistry %))
(sm/register!
{:type ::metrics
:pred metrics?})
(s/def ::handler fn?)
(s/def ::metrics
(s/keys :req [::registry
::handler
::definitions]))
(def ^:private valid-definitions?
(sm/validator schema:definitions))
(s/def ::default ::definitions)
(defmethod ig/pre-init-spec ::metrics [_]
(s/keys :req-un [::default]))
(defmethod ig/assert-key ::metrics
[_ {:keys [default]}]
(assert (valid-definitions? default) "expected valid definitions"))
(defmethod ig/init-key ::metrics
[_ cfg]
@@ -81,12 +91,14 @@
{}
(:default cfg))]
(us/verify! ::definitions definitions)
{::handler (partial handler registry)
::definitions definitions
::registry registry}))
(reify
IMetrics
(get-handler [_]
(partial handler registry))
(get-collector [_ id]
(get definitions id))
(get-registry [_]
registry))))
(defn- handler
[registry _]
@@ -96,17 +108,14 @@
{:headers {"content-type" TextFormat/CONTENT_TYPE_004}
:body (.toString writer)}))
(s/def ::routes vector?)
(defmethod ig/pre-init-spec ::routes [_]
(s/keys :req [::metrics]))
(defmethod ig/assert-key ::routes
[_ {:keys [::metrics]}]
(assert (metrics? metrics) "expected a valid instance for metrics"))
(defmethod ig/init-key ::routes
[_ {:keys [::metrics]}]
(let [registry (::registry metrics)]
["/metrics" {:handler (partial handler registry)
:allowed-methods #{:get}}]))
["/metrics" {:handler (get-handler metrics)
:allowed-methods #{:get}}])
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Implementation
@@ -126,8 +135,9 @@
(defmulti create-collector ::mdef/type)
(defn run!
[{:keys [::definitions]} & {:keys [id] :as params}]
(when-let [mobj (get definitions id)]
[instance & {:keys [id] :as params}]
(assert (metrics? instance) "expected valid metrics instance")
(when-let [mobj (get-collector instance id)]
(run-collector! mobj params)
true))

View File

@@ -11,7 +11,6 @@
[app.db :as db]
[app.migrations.clj.migration-0023 :as mg0023]
[app.util.migrations :as mg]
[clojure.spec.alpha :as s]
[integrant.core :as ig]))
(def migrations
@@ -412,7 +411,43 @@
:fn (mg/resource "app/migrations/sql/0129-mod-file-change-table.sql")}
{:name "0130-mod-file-change-table"
:fn (mg/resource "app/migrations/sql/0130-mod-file-change-table.sql")}])
:fn (mg/resource "app/migrations/sql/0130-mod-file-change-table.sql")}
{:name "0131-mod-webhook-table"
:fn (mg/resource "app/migrations/sql/0131-mod-webhook-table.sql")}
{:name "0132-mod-file-change-table"
:fn (mg/resource "app/migrations/sql/0132-mod-file-change-table.sql")}
{:name "0133-mod-file-table"
:fn (mg/resource "app/migrations/sql/0133-mod-file-table.sql")}
{:name "0134-mod-file-change-table"
:fn (mg/resource "app/migrations/sql/0134-mod-file-change-table.sql")}
{:name "0135-mod-team-invitation-table.sql"
:fn (mg/resource "app/migrations/sql/0135-mod-team-invitation-table.sql")}
{:name "0136-mod-comments-mentions.sql"
:fn (mg/resource "app/migrations/sql/0136-mod-comments-mentions.sql")}
{:name "0137-add-file-migration-table.sql"
:fn (mg/resource "app/migrations/sql/0137-add-file-migration-table.sql")}
{:name "0138-mod-file-data-fragment-table.sql"
:fn (mg/resource "app/migrations/sql/0138-mod-file-data-fragment-table.sql")}
{:name "0139-mod-file-change-table.sql"
:fn (mg/resource "app/migrations/sql/0139-mod-file-change-table.sql")}
{:name "0140-mod-file-change-table.sql"
:fn (mg/resource "app/migrations/sql/0140-mod-file-change-table.sql")}
{:name "0140-add-locked-by-column-to-file-change-table"
:fn (mg/resource "app/migrations/sql/0140-add-locked-by-column-to-file-change-table.sql")}
{:name "0141-add-idx-to-file-library-rel"
:fn (mg/resource "app/migrations/sql/0141-add-idx-to-file-library-rel.sql")}])
(defn apply-migrations!
[pool name migrations]
@@ -420,9 +455,9 @@
(mg/setup! conn)
(mg/migrate! conn {:name name :steps migrations})))
(defmethod ig/pre-init-spec ::migrations
[_]
(s/keys :req [::db/pool]))
(defmethod ig/assert-key ::migrations
[_ {:keys [::db/pool]}]
(assert (db/pool? pool) "expected valid pool"))
(defmethod ig/init-key ::migrations
[module {:keys [::db/pool]}]

View File

@@ -0,0 +1,49 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) KALEIDOS INC
(ns app.migrations.media-refs
"A media refs migration fixer script"
(:require
[app.common.exceptions :as ex]
[app.common.logging :as l]
[app.common.pprint]
[app.srepl.fixes.media-refs :refer [process-file]]
[app.srepl.main :as srepl]
[clojure.edn :as edn]))
(def ^:private required-services
[:app.storage.s3/backend
:app.storage.fs/backend
:app.storage/storage
:app.metrics/metrics
:app.db/pool
:app.worker/executor])
(defn -main
[& [options]]
(try
(let [config-var (requiring-resolve 'app.main/system-config)
start-var (requiring-resolve 'app.main/start-custom)
stop-var (requiring-resolve 'app.main/stop)
config (select-keys @config-var required-services)]
(start-var config)
(let [options (if (string? options)
(ex/ignoring (edn/read-string options))
{})]
(l/inf :hint "executing media-refs migration" :options options)
(srepl/process-files! process-file options))
(stop-var)
(System/exit 0))
(catch Throwable cause
(ex/print-throwable cause)
(flush)
(System/exit -1))))

Some files were not shown because too many files have changed in this diff Show More