diff --git a/.circleci/config.yml b/.circleci/config.yml
index 73f5bef6dd..4d219ba911 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -3,19 +3,19 @@ jobs:
build:
docker:
- image: penpotapp/devenv:latest
- - image: cimg/postgres:13.5
+ - image: cimg/postgres:14.5
environment:
POSTGRES_USER: penpot_test
POSTGRES_PASSWORD: penpot_test
POSTGRES_DB: penpot_test
- - image: cimg/redis:6.2.6
+ - image: cimg/redis:7.0.5
working_directory: ~/repo
resource_class: large
environment:
# Customize the JVM maximum heap limit
- JVM_OPTS: -Xmx1g
+ JVM_OPTS: -Xmx4g
steps:
- checkout
@@ -29,6 +29,13 @@ jobs:
- run: cd .clj-kondo && cat config.edn
+ - run:
+ name: frontend styles prettier
+ working_directory: "./frontend"
+ command: |
+ yarn install
+ yarn run lint-scss
+
- run:
name: common lint
working_directory: "./common"
@@ -43,13 +50,6 @@ jobs:
clj-kondo --version
clj-kondo --parallel --lint src/
- - run:
- name: frontend styles prettier
- working_directory: "./frontend"
- command: |
- yarn install
- yarn run lint-scss
-
- run:
name: backend lint
working_directory: "./backend"
@@ -57,47 +57,42 @@ jobs:
clj-kondo --version
clj-kondo --parallel --lint src/
- # run backend test
+ - run:
+ working_directory: "./common"
+ name: common tests
+ command: |
+ yarn install
+ yarn test
+ clojure -X:dev:test :patterns '["common-tests.*-test"]'
+
+ environment:
+ PATH: /usr/local/nodejs/bin/:/usr/local/bin:/bin:/usr/bin
+ JVM_OPTS: -Xmx4g
+ NODE_OPTIONS: --max-old-space-size=4096
+
- run:
name: backend test
working_directory: "./backend"
- command: "clojure -X:dev:test"
+ command: |
+ clojure -X:dev:test :patterns '["backend-tests.*-test"]'
+
environment:
PENPOT_TEST_DATABASE_URI: "postgresql://localhost/penpot_test"
PENPOT_TEST_DATABASE_USERNAME: penpot_test
PENPOT_TEST_DATABASE_PASSWORD: penpot_test
PENPOT_TEST_REDIS_URI: "redis://localhost/1"
+ JVM_OPTS: -Xmx4g
- run:
name: frontend tests
working_directory: "./frontend"
command: |
yarn install
- clojure -M:dev:shadow-cljs compile test
- node target/tests.js
-
- environment:
- PATH: /usr/local/nodejs/bin/:/usr/local/bin:/bin:/usr/bin
-
- - run:
- working_directory: "./common"
- name: common tests (cljs)
- command: |
- yarn install
- yarn run compile-test
- node target/test.js
-
- environment:
- PATH: /usr/local/nodejs/bin/:/usr/local/bin:/bin:/usr/bin
-
- - run:
- working_directory: "./common"
- name: common tests (clj)
- command: |
- clojure -X:dev:test
+ yarn test
environment:
PATH: /usr/local/nodejs/bin/:/usr/local/bin:/bin:/usr/bin
+ NODE_OPTIONS: --max-old-space-size=4096
- save_cache:
paths:
diff --git a/.clj-kondo/config.edn b/.clj-kondo/config.edn
index 7b0b571f28..5989d2c526 100644
--- a/.clj-kondo/config.edn
+++ b/.clj-kondo/config.edn
@@ -7,6 +7,7 @@
app.common.data/export clojure.core/def
app.db/with-atomic clojure.core/with-open
app.common.data.macros/get-in clojure.core/get-in
+ app.common.data.macros/with-open clojure.core/with-open
app.common.data.macros/select-keys clojure.core/select-keys
app.common.logging/with-context clojure.core/do}
@@ -44,6 +45,15 @@
:redundant-do
{:level :off}
+ :earmuffed-var-not-dynamic
+ {:level :off}
+
+ :dynamic-var-not-earmuffed
+ {:level :off}
+
+ :used-underscored-binding
+ {:level :warning}
+
:unused-binding
{:exclude-destructured-as true
:exclude-destructured-keys-in-fn-args false
diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml
new file mode 100644
index 0000000000..67ba1d4fe1
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug-report.yml
@@ -0,0 +1,89 @@
+description: Create a report to help us improve
+labels: ["bug"]
+name: Bug report
+title: "bug: "
+body:
+ - type: markdown
+ attributes:
+ value: |
+ ## Before you start
+
+ Please search our [existing issues](https://github.com/penpot/penpot/issues) and open [pull requests](https://github.com/penpot/penpot/pulls) to lessen the change of filing duplicate issues or feature requests. Thank you.
+
+ ---
+ - type: textarea
+ attributes:
+ label: Steps To Reproduce
+ description: Steps to reproduce the behavior.
+ placeholder: |
+ Steps to reproduce the behavior:
+ 1. Go to '...'
+ 2. Click on '....'
+ 3. Scroll down to '....'
+ validations:
+ required: true
+ - type: textarea
+ id: expected
+ attributes:
+ description: A clear and concise description of what you expected to happen.
+ label: Expected behavior
+ validations:
+ required: true
+ - type: textarea
+ id: actual
+ attributes:
+ description: A clear and concise description of what happens instead; what the bug is.
+ label: Actual behavior
+ validations:
+ required: true
+ - type: textarea
+ id: screenshots
+ attributes:
+ description: If applicable, add screenshots to help explain your problem.
+ label: Screenshots or video
+ - type: textarea
+ id: desktop
+ attributes:
+ label: Desktop (please complete the following information)
+ placeholder: |
+ - OS (e.g. iOS):
+ - Browser & version (e.g. Chrome 89.0):
+ - type: textarea
+ id: mobile
+ attributes:
+ label: Smartphone (please complete the following information)
+ placeholder: |
+ - Device & model (e.g. iPhone 6):
+ - OS & version (e.g. iOS 8.1):
+ - Browser & version (e.g. stock browser 22):
+ - type: textarea
+ id: environment
+ attributes:
+ label: Environment (please complete the following information)
+ placeholder: |
+ - Host (e.g. https://design.penpot.app, local instance):
+
+ *If self-hosted:*
+ - OS Version (e.g. Ubuntu 16.04):
+ - Docker / Docker-compose version (e.g. Docker version 18.03.0-ce, build 0520e24):
+ - Image version (e.g. Alpine):
+
+ Docker commands or docker-compose file (if possible and if proceed.x):
+ ```
+
+ ```
+ - type: textarea
+ id: frontend-trace
+ attributes:
+ label: Frontend Stack Trace
+ render: console
+ - type: textarea
+ id: backend-trace
+ attributes:
+ label: Backend Stack Trace
+ render: console
+ - type: textarea
+ id: additional-context
+ attributes:
+ label: Additional context
+ description: Any other context about the problem.
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
deleted file mode 100644
index bdbe87a01c..0000000000
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ /dev/null
@@ -1,72 +0,0 @@
----
-
-name: Bug report
-about: Create a report to help us improve
-title: ''
-labels: bug
-assignees: ''
-
----
-
-**To Reproduce**
-
-Steps to reproduce the behavior:
-1. Go to '...'
-2. Click on '....'
-3. Scroll down to '....'
-
-**Expected behavior**
-
-A clear and concise description of what you expected to happen.
-
-**Actual behavior**
-
-A clear and concise description of what happens instead; what the bug is.
-
-**Screenshots**
-
-If applicable, add screenshots to help explain your problem.
-
-**Desktop (please complete the following information):**
-- OS (e.g. iOS):
-- Browser & version (e.g. Chrome 89.0):
-
-**Smartphone (please complete the following information):**
-- Device & model (e.g. iPhone 6):
-- OS & version (e.g. iOS 8.1):
-- Browser & version (e.g. stock browser 22):
-
-**Environment (please complete the following information):**
-- Host (e.g. https://design.penpot.app, local instance):
-
-*If self-hosted:*
-- OS Version (e.g. Ubuntu 16.04):
-- Docker / Docker-compose version (e.g. Docker version 18.03.0-ce, build 0520e24):
-- Image version (e.g. Alpine):
-
-Docker commands or docker-compose file (if possible and if proceed.x):
-```
-
-```
-
-Frontend Stack Trace:
-
-
-```
-
-```
-
-
-
-Backend Stack Trace:
-
-
-```
-
-```
-
-
-
-**Additional context:**
-
-Any other context about the problem.
diff --git a/.github/ISSUE_TEMPLATE/feature-request.yml b/.github/ISSUE_TEMPLATE/feature-request.yml
new file mode 100644
index 0000000000..a49d6a57c9
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature-request.yml
@@ -0,0 +1,37 @@
+description: Suggest an idea for this project.
+labels: ["needs triage", "enhancement"]
+name: "Feature request"
+title: "feature: "
+body:
+ - type: markdown
+ attributes:
+ value: |
+ ## Before you start
+
+ Please search our [existing issues](https://github.com/penpot/penpot/issues) and open [pull requests](https://github.com/penpot/penpot/pulls) to lessen the change of filing duplicate issues or feature requests. Thank you.
+
+ ---
+ - type: textarea
+ id: problem
+ attributes:
+ description: A clear and concise description of what the problem is. Ex. I'm always frustrated when (...)
+ label: Is your feature request related to a problem? Please describe.
+ validations:
+ required: true
+ - type: textarea
+ id: solution
+ attributes:
+ description: A clear and concise description of what you want to happen.
+ label: Describe the solution you'd like.
+ validations:
+ required: true
+ - type: textarea
+ id: alternatives
+ attributes:
+ label: Describe alternatives you've considered.
+ description: A clear and concise description of any alternative solutions or features you've considered.
+ - type: textarea
+ id: additional-context
+ attributes:
+ label: Additional context
+ description: Add any other context or screenshots about the feature request here.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
deleted file mode 100644
index f98a4e747e..0000000000
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ /dev/null
@@ -1,21 +0,0 @@
----
-
-name: Feature request
-about: Suggest an idea for this project
-title: ''
-labels: enhancement
-assignees: ''
-
----
-
-**Is your feature request related to a problem? Please describe.**
-A clear and concise description of what the problem is. Ex. I'm always frustrated when (...)
-
-**Describe the solution you'd like**
-A clear and concise description of what you want to happen.
-
-**Describe alternatives you've considered**
-A clear and concise description of any alternative solutions or features you've considered.
-
-**Additional context**
-Add any other context or screenshots about the feature request here.
diff --git a/.gitignore b/.gitignore
index b7f152cd6b..37d2807264 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,55 +1,59 @@
*-init.clj
*.jar
-*.penpot
*.orig
+*.penpot
.calva
.clj-kondo
.cpcache
-.lein-deps-sum
-.lein-failures
-.lein-plugins/
-.lein-repl-history
.lsp
.nrepl-port
.nyc_output
.rebel_readline_history
.repl
+.shadow-cljs
+/*.jpg
+/*.md
+/*.png
+/*.sql
+/*.txt
+/*.yml
+/*.zip
/.clj-kondo/.cache
/_dump
-/backend/-
+/backend/*.md
+/backend/*.sql
+/backend/*.txt
/backend/assets/
+/backend/builtin-templates
/backend/dist/
/backend/logs/
/backend/resources/public/assets
/backend/resources/public/media
/backend/target/
-/backend/builtin-templates
/bundle*
/cd.md
/clj-profiler/
-/common/.shadow-cljs
/common/coverage
/common/target
/deploy
/docker/images/bundle*
-/exporter/.shadow-cljs
/exporter/target
-/frontend/.shadow-cljs
-/frontend/package-lock.json
-/frontend/cypress/videos/*/
/frontend/cypress/fixtures/validuser.json
+/frontend/cypress/videos/*/
+/frontend/cypress/videos/*/
/frontend/dist/
/frontend/npm-debug.log
/frontend/out/
+/frontend/package-lock.json
/frontend/resources/fonts/experiments
/frontend/resources/public/*
/frontend/target/
-/frontend/cypress/videos/*/
-/media
+/other/
+/scripts/
/telemetry/
+/tmp/
/vendor/**/target
/vendor/svgclean/bundle*.js
/web
clj-profiler/
-figwheel_server.log
node_modules
diff --git a/CHANGES.md b/CHANGES.md
index e63cb260c5..2ec41e7deb 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,6 +1,82 @@
# CHANGELOG
+## 1.17.0
+
+### :sparkles: New features
+
+- Adds layout flex functionality for boards
+- Better overlays interactions on boards inside boards [Taiga #4386](https://tree.taiga.io/project/penpot/us/4386)
+- Show board miniature in manual overlay setting [Taiga #4475](https://tree.taiga.io/project/penpot/issue/4475)
+- Handoff visual improvements [Taiga #3124](https://tree.taiga.io/project/penpot/us/3124)
+- Dynamic alignment only in sight [Github 1971](https://github.com/penpot/penpot/issues/1971)
+- Add some accessibility to shortcut panel [Taiga #4713](https://tree.taiga.io/project/penpot/issue/4713)
+- Add shortcuts for text editing [Taiga #2052](https://tree.taiga.io/project/penpot/us/2052)
+- Second level boards treated as groups in terms of selection [Taiga #4269](https://tree.taiga.io/project/penpot/us/4269)
+- Performance improvements both for backend and frontend
+- Accessibility improvements for login area [Taiga #4353](https://tree.taiga.io/project/penpot/us/4353)
+- Outbound webhooks [Taiga #4577](https://tree.taiga.io/project/penpot/us/4577)
+- Add copy invitation link to the invitation options [Taiga #4213](https://tree.taiga.io/project/penpot/us/4213)
+- Dynamic alignment only in sight [Taiga #3537](https://tree.taiga.io/project/penpot/us/3537)
+- Improve naming of layers [Taiga #4036](https://tree.taiga.io/project/penpot/us/4036)
+- Add zoom lense [Taiga #4691](https://tree.taiga.io/project/penpot/us/4691)
+- Detect potential problems with custom font vertical metrics [Taiga #4697](https://tree.taiga.io/project/penpot/us/4697)
+
+### :bug: Bugs fixed
+
+- Add title to color bullets [Taiga #4218](https://tree.taiga.io/project/penpot/task/4218)
+- Fix color bullets in library color modal [Taiga #4186](https://tree.taiga.io/project/penpot/issue/4186)
+- Fix shortcut texts alignment [Taiga #4275](https://tree.taiga.io/project/penpot/issue/4275)
+- Fix some texts and a typo [Taiga #4215](https://tree.taiga.io/project/penpot/issue/4215)
+- Fix twitter support account link [Taiga #4279](https://tree.taiga.io/project/penpot/issue/4279)
+- Fix lang autodetect issue [Taiga #4277](https://tree.taiga.io/project/penpot/issue/4277)
+- Fix adding an extra page on import [Taiga #4543](https://tree.taiga.io/project/penpot/task/4543)
+- Fix unable to select text at assets inputs in firefox [Taiga #4572](https://tree.taiga.io/project/penpot/issue/4572)
+- Fix component sync when converting to path [Taiga #3642](https://tree.taiga.io/project/penpot/issue/3642)
+- Fix style for team invite in deutsch [Taiga #4614](https://tree.taiga.io/project/penpot/issue/4614)
+- Fix problem with text edition in Safari [Taiga #4046](https://tree.taiga.io/project/penpot/issue/4046)
+- Fix show outline with rounded corners on rects [Taiga #4053](https://tree.taiga.io/project/penpot/issue/4053)
+- Fix wrong interaction between comments and panning modes [Taiga #4297](https://tree.taiga.io/project/penpot/issue/4297)
+- Fix bad element positioning on interaction with fixed scroll [Github #2660](https://github.com/penpot/penpot/issues/2660)
+- Fix display type of component library not persistent [Taiga #4512](https://tree.taiga.io/project/penpot/issue/4512)
+- Fix problem when moving texts with keyboard [#2690](https://github.com/penpot/penpot/issues/2690)
+- Fix problem when drawing boxes won't detect mouse-up [Taiga #4618](https://tree.taiga.io/project/penpot/issue/4618)
+- Fix missing loading icon on shared libraries [Taiga #4148](https://tree.taiga.io/project/penpot/issue/4148)
+- Fix selection stroke missing in properties of multiple texts [Taiga #4048](https://tree.taiga.io/project/penpot/issue/4048)
+- Fix missing create component menu for frames [Github #2670](https://github.com/penpot/penpot/issues/2670)
+- Fix "currentColor" is not converted when importing SVG [Github 2276](https://github.com/penpot/penpot/issues/2276)
+- Fix incorrect color in properties of multiple bool shapes [Taiga #4355](https://tree.taiga.io/project/penpot/issue/4355)
+- Fix pressing the enter key gives you an internal error [Github 2675](https://github.com/penpot/penpot/issues/2675) [Github 2577](https://github.com/penpot/penpot/issues/2577)
+- Fix confirm group name with enter doesn't work in assets modal [Taiga #4506](https://tree.taiga.io/project/penpot/issue/4506)
+- Fix group/ungroup shapes inside a component [Taiga #4052](https://tree.taiga.io/project/penpot/issue/4052)
+- Fix wrong update of text in components [Taiga #4646](https://tree.taiga.io/project/penpot/issue/4646)
+- Fix problem with SVG imports with style [#2605](https://github.com/penpot/penpot/issues/2605)
+- Fix ghost shapes after sync groups in components [Taiga #4649](https://tree.taiga.io/project/penpot/issue/4649)
+- Fix layer orders messed up on move, group, reparent and undo [Github #2672](https://github.com/penpot/penpot/issues/2672)
+- Fix max height in library dialog [Github #2335](https://github.com/penpot/penpot/issues/2335)
+- Fix undo ungroup (shift+g) scrambles positions [Taiga #4674](https://tree.taiga.io/project/penpot/issue/4674)
+- Fix justified text is stretched [Github #2539](https://github.com/penpot/penpot/issues/2539)
+- Fix mousewheel on viewer inspector [Taiga #4221](https://tree.taiga.io/project/penpot/issue/4221)
+- Fix path edition activated on boards [Taiga #4105](https://tree.taiga.io/project/penpot/issue/4105)
+- Fix hidden layers inside groups become visible after the group visibility is changed[Taiga #4710](https://tree.taiga.io/project/penpot/issue/4710)
+- Fix format of HSLA color on viewer [Taiga #4393](https://tree.taiga.io/project/penpot/issue/4393)
+- Fix some typos [Taiga #4724](https://tree.taiga.io/project/penpot/issue/4724)
+- Fix ctrl+c for inspect code [Taiga #4739](https://tree.taiga.io/project/penpot/issue/4739)
+- Fix text in custom font is not at the expected position at export [Taiga #4394](https://tree.taiga.io/project/penpot/issue/4394)
+- Fix unneeded popup when updating local components [Taiga #4430](https://tree.taiga.io/project/penpot/issue/4430)
+- Fix multiuser - "Shadow" element is not updating immediately [Taiga #4709](https://tree.taiga.io/project/penpot/issue/4709)
+- Fix paths not flagged as modified when resized [Taiga #4742](https://tree.taiga.io/project/penpot/issue/4742)
+- Fix resend invitation doesn't reset the expiration date [Taiga #4741](https://tree.taiga.io/project/penpot/issue/4741)
+- Fix incorrect state after undo page creation [Taiga #4690](https://tree.taiga.io/project/penpot/issue/4690)
+- Fix copy paste texts with typography assets linked [Taiga #4750](https://tree.taiga.io/project/penpot/issue/4750)
+
+### :heart: Community contributions by (Thank you!)
+
+- To @iprithvitharun: let's make UX Writing contributions in Open Source a trend!
+
## 1.16.2-beta
+
+### :bug: Bugs fixed
+
- Fix strage cursor behaviour after clicking viewport with text pool [Github #2447](https://github.com/penpot/penpot/issues/2447)
## 1.16.1-beta
@@ -30,7 +106,7 @@
- Removed the support for v2 internal file data blob format. This
version has never been documented nor set as default value so
- technicaly this is not a breaking change because we are removing
+ technically this is not a breaking change because we are removing
a "private API".
### :sparkles: New features
@@ -70,11 +146,11 @@
- Fix grid not syncing immediately in multiuser [Taiga #4339](https://tree.taiga.io/project/penpot/issue/4339)
- Fix custom font upload fails silently for unsupported formats [Taiga #4279](https://tree.taiga.io/project/penpot/issue/4280)
-### :arrow_up: Deps updates
### :heart: Community contributions by (Thank you!)
- To @andrewzhurov for many code contributions on this release.
- UI improvements in Project section (by @Waishnav) [#2285](https://github.com/penpot/penpot/pull/2285)
+- Fix fronted comments (by @lol768) [#2368](https://github.com/penpot/penpot/pull/2368)
## 1.15.5-beta
@@ -166,7 +242,7 @@
- The `PENPOT_LDAP_ATTRS_PHOTO` finally removed, it was unused for many
versions.
- If you are using social login (google, github, gitlab or generic OIDC) you
- will need to ensure to add the following flags respectivelly to let them
+ will need to ensure to add the following flags respectively to let them
enabled: `enable-login-with-google`, `enable-login-with-github`,
`enable-login-with-gitlab` and `enable-login-with-oidc`. If not, they will
remain disabled after application start independently if you set the client-id
@@ -271,7 +347,7 @@
- Fix undo when drawing curves [Taiga #3523](https://tree.taiga.io/project/penpot/issue/3523)
- Fix issue with text edition and certain fonts (WorkSans, Raleway, ...) and foreign objects [Taiga #3521](https://tree.taiga.io/project/penpot/issue/3521)
- Fix thumbnail generation when concurrent edition [Taiga #3522](https://tree.taiga.io/project/penpot/issue/3522)
-- Fix environment imporot for exporter in Docker
+- Fix environment import for exporter in Docker
- Fix auto scroll layers in Firefox [Taiga #3531](https://tree.taiga.io/project/penpot/issue/3531)
- Fix base background not visible for imported SVG
@@ -355,7 +431,7 @@
- Fix mouse leave in handoff close overlay animation breaks [Taiga #3173](https://tree.taiga.io/project/penpot/issue/3173)
- Fix different behaviour during image drag [Taiga #2279](https://tree.taiga.io/project/penpot/issue/2279)
- Fix hidden file name on import [Taiga #3172](https://tree.taiga.io/project/penpot/issue/3172)
-- Fix unneccessary scrollbars at the color list [Taiga #3211](https://tree.taiga.io/project/penpot/issue/3211)
+- Fix unnecessary scrollbars at the color list [Taiga #3211](https://tree.taiga.io/project/penpot/issue/3211)
- "Show in exports" is showing in multiselections [Taiga #3194](https://tree.taiga.io/project/penpot/issue/3194)
- Edit file name navigates to the file workspace [Taiga #3183](https://tree.taiga.io/project/penpot/issue/3183)
- Fix scroll into view behind fixed element [Taiga #3170](https://tree.taiga.io/project/penpot/issue/3170)
@@ -364,7 +440,7 @@
- Fix duplicate multi selected elements [Taiga #3155](https://tree.taiga.io/project/penpot/issue/3155)
- Fix add fills to artboard modify children [Taiga #3151](https://tree.taiga.io/project/penpot/issue/3151)
- Avoid numeric inputs to allow big numbers [Taiga #2858](https://tree.taiga.io/project/penpot/issue/2858)
-- Fix component contex menu size [Taiga #2480](https://tree.taiga.io/project/penpot/issue/2480)
+- Fix component context menu size [Taiga #2480](https://tree.taiga.io/project/penpot/issue/2480)
- Add shadow to artboard make it lose the fill [Taiga #3139](https://tree.taiga.io/project/penpot/issue/3139)
- Avoid numeric inputs to change its value without focusing them [Taiga #3140](https://tree.taiga.io/project/penpot/issue/3140)
- Fix comments modal when changing pages [Taiga #2597](https://tree.taiga.io/project/penpot/issue/2508)
@@ -493,7 +569,7 @@
- Fix issue on handling empty content on boolean shapes
- Fix race condition issue on component renaming
-- Handle EOF errors on writting streamed response
+- Handle EOF errors on writing streamed response
- Handle EOF errors on websocket send/ping methods
- Disable parallel upload of file media on import (causes too much
contention on the rlimit subsistem that does not works as expected
@@ -605,7 +681,7 @@
## 1.10.4-beta
-### :sparkles: Enhacements
+### :sparkles: Enhancements
- Allow parametrice file snapshoting interval
@@ -617,7 +693,7 @@
## 1.10.3-beta
-### :sparkles: Enhacements
+### :sparkles: Enhancements
- Make all logging asynchronous, this avoid some overhead on jetty threads at cost of logging latency.
- Increase default session time to 15 days.
@@ -953,7 +1029,7 @@
- Add better auth module logging.
- Add missing `email` scope to OIDC backend.
-- Add missing cause prop on error loging.
+- Add missing cause prop on error logging.
- Fix empty font-family handling on custom fonts page.
- Fix incorrect unicode code points handling on draft-to-penpot conversion.
- Fix some problems with paths.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index d28328cca7..5093f9021e 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -99,7 +99,7 @@ Each commit should have:
- An entry on the CHANGES.md file if applicable, referencing the
github or taiga issue/user-story using the these same rules.
-Examples of good commit messags:
+Examples of good commit messages:
- :bug: Fix unexpected error on launching modal
- :bug: Set proper error message on generic error
diff --git a/THANKYOU.md b/THANKYOU.md
index 118a498b1f..3e5effefa5 100644
--- a/THANKYOU.md
+++ b/THANKYOU.md
@@ -85,4 +85,13 @@ We want to thank to the amazing people that help us! Thank you! You're the best!
* [Yaron](https://hosted.weblate.org/user/Yaron)
* [yrd](https://hosted.weblate.org/user/yrd)
* [YukiYuigishi](https://hosted.weblate.org/user/YukiYuigishi)
-* [zcraber](https://hosted.weblate.org/user/zcraber)
\ No newline at end of file
+* [zcraber](https://hosted.weblate.org/user/zcraber)
+
+## Libraries & templates
+* systxema
+* plumilla
+* victor crespo
+* xtech
+* candidexmedia
+* merih güz
+* klarr agency
diff --git a/backend/deps.edn b/backend/deps.edn
index b18dfd124a..688f4ececf 100644
--- a/backend/deps.edn
+++ b/backend/deps.edn
@@ -1,12 +1,12 @@
{:deps
{penpot/common {:local/root "../common"}
org.clojure/clojure {:mvn/version "1.11.1"}
- org.clojure/core.async {:mvn/version "1.5.648"}
+ org.clojure/core.async {:mvn/version "1.6.673"}
;; Logging
- org.zeromq/jeromq {:mvn/version "0.5.2"}
+ org.zeromq/jeromq {:mvn/version "0.5.3"}
- com.github.luben/zstd-jni {:mvn/version "1.5.2-4"}
+ com.github.luben/zstd-jni {:mvn/version "1.5.2-5"}
org.clojure/data.fressian {:mvn/version "1.0.0"}
io.prometheus/simpleclient {:mvn/version "0.16.0"}
@@ -16,21 +16,20 @@
:exclusions [org.eclipse.jetty/jetty-server
org.eclipse.jetty/jetty-servlet]}
-
io.prometheus/simpleclient_httpserver {:mvn/version "0.16.0"}
- io.lettuce/lettuce-core {:mvn/version "6.2.0.RELEASE"}
+ io.lettuce/lettuce-core {:mvn/version "6.2.2.RELEASE"}
java-http-clj/java-http-clj {:mvn/version "0.4.3"}
funcool/yetti
- {:git/tag "v9.9"
- :git/sha "f0a455d"
+ {:git/tag "v9.12"
+ :git/sha "51646d8"
:git/url "https://github.com/funcool/yetti.git"
:exclusions [org.slf4j/slf4j-api]}
- com.github.seancorfield/next.jdbc {:mvn/version "1.3.828"}
+ com.github.seancorfield/next.jdbc {:mvn/version "1.3.847"}
metosin/reitit-core {:mvn/version "0.5.18"}
- org.postgresql/postgresql {:mvn/version "42.5.0"}
+ org.postgresql/postgresql {:mvn/version "42.5.1"}
com.zaxxer/HikariCP {:mvn/version "5.0.1"}
io.whitfin/siphash {:mvn/version "2.0.0"}
@@ -38,7 +37,9 @@
buddy/buddy-hashers {:mvn/version "1.8.158"}
buddy/buddy-sign {:mvn/version "3.4.333"}
- org.jsoup/jsoup {:mvn/version "1.15.1"}
+ com.github.ben-manes.caffeine/caffeine {:mvn/version "3.1.2"}
+
+ org.jsoup/jsoup {:mvn/version "1.15.3"}
org.im4java/im4java
{:git/tag "1.4.0-penpot-2"
:git/sha "e2b3e16"
@@ -50,11 +51,12 @@
integrant/integrant {:mvn/version "0.8.0"}
dawran6/emoji {:mvn/version "0.1.5"}
- markdown-clj/markdown-clj {:mvn/version "1.11.3"}
+ markdown-clj/markdown-clj {:mvn/version "1.11.4"}
;; Pretty Print specs
pretty-spec/pretty-spec {:mvn/version "0.1.4"}
- software.amazon.awssdk/s3 {:mvn/version "2.17.278"}}
+ software.amazon.awssdk/s3 {:mvn/version "2.19.8"}
+ }
:paths ["src" "resources" "target/classes"]
:aliases
@@ -62,15 +64,16 @@
{:extra-deps
{com.bhauman/rebel-readline {:mvn/version "RELEASE"}
org.clojure/tools.namespace {:mvn/version "RELEASE"}
- org.clojure/test.check {:mvn/version "RELEASE"}
clojure-humanize/clojure-humanize {:mvn/version "0.2.2"}
org.clojure/data.csv {:mvn/version "RELEASE"}
com.clojure-goes-fast/clj-async-profiler {:mvn/version "RELEASE"}
mockery/mockery {:mvn/version "RELEASE"}}
:extra-paths ["test" "dev"]}
+
:build
- {:extra-deps {io.github.clojure/tools.build {:git/tag "v0.8.3" :git/sha "0d20256"}}
+ {:extra-deps
+ {io.github.clojure/tools.build {:git/tag "v0.9.0" :git/sha "8c93e0c"}}
:ns-default build}
:test
diff --git a/backend/dev/user.clj b/backend/dev/user.clj
index 591ddac704..c7d590235c 100644
--- a/backend/dev/user.clj
+++ b/backend/dev/user.clj
@@ -12,9 +12,12 @@
[app.common.logging :as l]
[app.common.perf :as perf]
[app.common.pprint :as pp]
+ [app.common.spec :as us]
[app.common.transit :as t]
+ [app.common.uuid :as uuid]
[app.config :as cfg]
[app.main :as main]
+ [app.srepl.helpers]
[app.srepl.main :as srepl]
[app.util.blob :as blob]
[app.util.fressian :as fres]
@@ -26,10 +29,13 @@
[clojure.pprint :refer [pprint print-table]]
[clojure.repl :refer :all]
[clojure.spec.alpha :as s]
- [clojure.spec.gen.alpha :as sgen]
+ [clojure.stacktrace :as trace]
[clojure.test :as test]
+ [clojure.test.check.generators :as gen]
[clojure.tools.namespace.repl :as repl]
[clojure.walk :refer [macroexpand-all]]
+ [criterium.core :as crit]
+ [cuerdas.core :as str]
[datoteka.core]
[integrant.core :as ig]))
@@ -42,24 +48,24 @@
(defmacro run-quick-bench
[& exprs]
- `(with-progress-reporting (quick-bench (do ~@exprs) :verbose)))
+ `(crit/with-progress-reporting (crit/quick-bench (do ~@exprs) :verbose)))
(defmacro run-quick-bench'
[& exprs]
- `(quick-bench (do ~@exprs)))
+ `(crit/quick-bench (do ~@exprs)))
(defmacro run-bench
[& exprs]
- `(with-progress-reporting (bench (do ~@exprs) :verbose)))
+ `(crit/with-progress-reporting (crit/bench (do ~@exprs) :verbose)))
(defmacro run-bench'
[& exprs]
- `(bench (do ~@exprs)))
+ `(crit/bench (do ~@exprs)))
;; --- Development Stuff
(defn- run-tests
- ([] (run-tests #"^app.*-test$"))
+ ([] (run-tests #"^backend-tests.*-test$"))
([o]
(repl/refresh)
(cond
@@ -74,19 +80,22 @@
(defn- start
[]
- (alter-var-root #'system (fn [sys]
- (when sys (ig/halt! sys))
- (-> (merge main/system-config main/worker-config)
- (ig/prep)
- (ig/init))))
- :started)
+ (try
+ (alter-var-root #'system (fn [sys]
+ (when sys (ig/halt! sys))
+ (-> (merge main/system-config main/worker-config)
+ (ig/prep)
+ (ig/init))))
+ :started
+ (catch Throwable cause
+ (ex/print-throwable cause))))
(defn- stop
[]
(alter-var-root #'system (fn [sys]
(when sys (ig/halt! sys))
nil))
- :stoped)
+ :stopped)
(defn restart
[]
@@ -100,12 +109,20 @@
(defn compression-bench
[data]
- (let [humanize (fn [v] (hum/filesize v :binary true :format " %.4f "))]
+ (let [humanize (fn [v] (hum/filesize v :binary true :format " %.4f "))
+ v1 (time (humanize (alength (blob/encode data {:version 1}))))
+ v3 (time (humanize (alength (blob/encode data {:version 3}))))
+ v4 (time (humanize (alength (blob/encode data {:version 4}))))
+ v5 (time (humanize (alength (blob/encode data {:version 5}))))
+ v6 (time (humanize (alength (blob/encode data {:version 6}))))
+ ]
(print-table
- [{:v1 (humanize (alength (blob/encode data {:version 1})))
- :v2 (humanize (alength (blob/encode data {:version 2})))
- :v3 (humanize (alength (blob/encode data {:version 3})))
- :v4 (humanize (alength (blob/encode data {:version 4})))
+ [{
+ :v1 v1
+ :v3 v3
+ :v4 v4
+ :v5 v5
+ :v6 v6
}])))
(defonce debug-tap
diff --git a/backend/resources/app/templates/api-doc-entry.tmpl b/backend/resources/app/templates/api-doc-entry.tmpl
index 97ce8a5077..43af67c244 100644
--- a/backend/resources/app/templates/api-doc-entry.tmpl
+++ b/backend/resources/app/templates/api-doc-entry.tmpl
@@ -6,14 +6,21 @@
{% if item.deprecated %}
- Deprecated:
- since v{{item.deprecated}},
+ DEPRECATED
+
+ {% endif %}
+
+ {% if item.auth %}
+
+ AUTH
+
+ {% endif %}
+
+ {% if item.webhook %}
+
+ WEBHOOK
{% endif %}
-
- Auth:
- {% if item.auth %}YES{% else %}NO{% endif %}
-
diff --git a/backend/resources/app/templates/debug.tmpl b/backend/resources/app/templates/debug.tmpl
index e23e7b5470..15824e6269 100644
--- a/backend/resources/app/templates/debug.tmpl
+++ b/backend/resources/app/templates/debug.tmpl
@@ -77,7 +77,7 @@ Debug Main Page
Import penpot file in binary
format. If overwrite is checked, all files will
- be overwriten using the same ids found in the file instead of
+ be overwritten using the same ids found in the file instead of
generating a new ones.