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 %} -