From e3cf70d3a84e986ca0366b77861ca43615ccee08 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Fri, 7 Nov 2025 13:16:21 +0100 Subject: [PATCH 1/6] :sparkles: Add URI to the report.txt (#7709) --- frontend/src/app/main/ui/static.cljs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/frontend/src/app/main/ui/static.cljs b/frontend/src/app/main/ui/static.cljs index 2f6da79171..adf9f0d5f9 100644 --- a/frontend/src/app/main/ui/static.cljs +++ b/frontend/src/app/main/ui/static.cljs @@ -11,6 +11,7 @@ [app.common.data :as d] [app.common.pprint :as pp] [app.common.uri :as u] + [app.config :as cf] [app.main.data.auth :refer [is-authenticated?]] [app.main.data.common :as dcm] [app.main.data.event :as ev] @@ -311,9 +312,10 @@ trace (:app.main.errors/trace data) instance (:app.main.errors/instance data)] (with-out-str - (println "Hint: " (or (:hint data) (ex-message instance) "--")) - (println "Prof ID:" (str (or profile-id "--"))) - (println "Team ID:" (str (or team-id "--"))) + (println "Hint: " (or (:hint data) (ex-message instance) "--")) + (println "Prof ID: " (str (or profile-id "--"))) + (println "Team ID: " (str (or team-id "--"))) + (println "URI: " cf/public-uri) (when-let [file-id (:file-id data)] (println "File ID:" (str file-id))) From 604f6ca024335b6bddba7aa741314055e12507cc Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Fri, 7 Nov 2025 13:16:39 +0100 Subject: [PATCH 2/6] :bug: Fix incorrect value coercing on legacy select component (#7710) on managing values with select --- CHANGES.md | 1 + frontend/src/app/main/ui/components/select.cljs | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 51a4f5f319..a9919a543e 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -77,6 +77,7 @@ - Fix problem when checking usage with removed teams [Taiga #12442](https://tree.taiga.io/project/penpot/issue/12442) - Fix focus mode persisting across page/file navigation [Taiga #12469](https://tree.taiga.io/project/penpot/issue/12469) - Fix shadow color validation [Github #7705](https://github.com/penpot/penpot/pull/7705) +- Fix exception on selection blend-mode using keyboard [Github #7710](https://github.com/penpot/penpot/pull/7710) ## 2.10.1 diff --git a/frontend/src/app/main/ui/components/select.cljs b/frontend/src/app/main/ui/components/select.cljs index 03e10ff299..d00267078d 100644 --- a/frontend/src/app/main/ui/components/select.cljs +++ b/frontend/src/app/main/ui/components/select.cljs @@ -89,14 +89,14 @@ (let [value (rotate-option-backward options index length)] (swap! state* assoc :current-value value) (when (fn? on-change) - (on-change (dm/str value)))) + (on-change value))) (or (kbd/right-arrow? e) (kbd/down-arrow? e)) (let [value (rotate-option-forward options index)] (swap! state* assoc :current-value value) (when (fn? on-change) - (on-change (dm/str value)))) + (on-change value))) (or (kbd/enter? e) (kbd/space? e)) From 7de95e108b2afb96a077b3703b43e533097ad795 Mon Sep 17 00:00:00 2001 From: Pablo Alba Date: Mon, 10 Nov 2025 11:28:00 +0100 Subject: [PATCH 3/6] :bug: Fix crash when using decimal values for X/Y or width/height (#7722) --- CHANGES.md | 1 + .../main/ui/workspace/sidebar/options/menus/measures.cljs | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index a9919a543e..09bf8935bf 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -78,6 +78,7 @@ - Fix focus mode persisting across page/file navigation [Taiga #12469](https://tree.taiga.io/project/penpot/issue/12469) - Fix shadow color validation [Github #7705](https://github.com/penpot/penpot/pull/7705) - Fix exception on selection blend-mode using keyboard [Github #7710](https://github.com/penpot/penpot/pull/7710) +- Fix crash when using decimal (floating-point) values for X/Y or width/height [Taiga #12543](https://tree.taiga.io/project/penpot/issue/12543) ## 2.10.1 diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/measures.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/menus/measures.cljs index 040bb3eb29..be32415efe 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/measures.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/measures.cljs @@ -303,7 +303,7 @@ (mf/use-fn (mf/deps ids) (fn [value attr] - (if (or (string? value) (int? value)) + (if (or (string? value) (number? value)) (do (st/emit! (udw/trigger-bounding-box-cloaking ids)) (binding [cts/*wasm-sync* true] @@ -334,7 +334,7 @@ (mf/use-fn (mf/deps ids) (fn [value attr] - (if (or (string? value) (int? value)) + (if (or (string? value) (number? value)) (do (st/emit! (udw/trigger-bounding-box-cloaking ids)) (binding [cts/*wasm-sync* true] @@ -359,7 +359,7 @@ (mf/use-fn (mf/deps ids) (fn [value] - (if (or (string? value) (int? value)) + (if (or (string? value) (number? value)) (do (st/emit! (udw/trigger-bounding-box-cloaking ids)) (binding [cts/*wasm-sync* true] From e45994e83695388eacdcbe33a94b27d66cd7b605 Mon Sep 17 00:00:00 2001 From: Eva Marco Date: Wed, 22 Oct 2025 12:20:58 +0200 Subject: [PATCH 4/6] :bug: Fix color row opacity (#7550) --- .../sidebar/options/rows/color_row.cljs | 26 ++++++++++--------- .../sidebar/options/rows/color_row.scss | 1 + 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs index 42aad3e1ba..6548f8b361 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs @@ -157,11 +157,11 @@ color-name (dm/get-in src-colors [color-id :name]) has-multiple-colors (uc/multiple? color) - library-color? (and (or (:id color) (:ref-id color)) color-name (not has-multiple-colors)) - gradient-color? (and (not has-multiple-colors) + library-color? (and (or (:id color) (:ref-id color)) color-name (not ^boolean has-multiple-colors)) + gradient-color? (and (not ^boolean has-multiple-colors) (:gradient color) (dm/get-in color [:gradient :type])) - image-color? (and (not has-multiple-colors) + image-color? (and (not ^boolean has-multiple-colors) (:image color)) editing-text* (mf/use-state false) @@ -236,7 +236,7 @@ (mf/deps disable-gradient disable-opacity disable-image disable-picker on-change on-close on-open tokens) (fn [color pos tab] (let [color (cond - has-multiple-colors + ^boolean has-multiple-colors {:color default-color :opacity 1} @@ -355,6 +355,7 @@ [:> color-info-wrapper* {:class (stl/css-case :color-name-wrapper true :library-name-wrapper true) :handle-click-color handle-click-color + :opacity false :color color} [:* [:div {:class (stl/css :color-name) @@ -369,11 +370,11 @@ gradient-color? [:> color-info-wrapper* {:class (stl/css-case :color-name-wrapper true - :no-opacity disable-opacity + :no-opacity ^boolean disable-opacity :gradient-name-wrapper true) :handle-click-color handle-click-color :color color - :opacity true + :opacity (not ^boolean disable-opacity) :select-on-focus select-on-focus :on-focus on-focus' :on-blur on-blur' @@ -383,10 +384,10 @@ image-color? [:> color-info-wrapper* {:class (stl/css-case :color-name-wrapper true - :no-opacity disable-opacity) + :no-opacity ^boolean disable-opacity) :handle-click-color handle-click-color :color color - :opacity true + :opacity (not ^boolean disable-opacity) :select-on-focus select-on-focus :on-focus on-focus' :on-blur on-blur' @@ -396,19 +397,20 @@ :else [:> color-info-wrapper* {:class (stl/css-case :color-name-wrapper true - :no-opacity (or disable-opacity - has-multiple-colors) + :no-opacity (or ^boolean disable-opacity + ^boolean has-multiple-colors) :editing is-editing-text) :handle-click-color handle-click-color :color color - :opacity true + :opacity (not (or ^boolean disable-opacity + ^boolean has-multiple-colors)) :select-on-focus select-on-focus :on-focus on-focus' :on-blur on-blur' :on-opacity-change on-opacity-change} [:span {:class (stl/css :color-input-wrapper)} - [:> color-input* {:value (if has-multiple-colors + [:> color-input* {:value (if ^boolean has-multiple-colors "" color-without-hash) :placeholder (tr "settings.multiple") diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/rows/color_row.scss b/frontend/src/app/main/ui/workspace/sidebar/options/rows/color_row.scss index 6ecce7425c..bbdf66aee6 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/rows/color_row.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/options/rows/color_row.scss @@ -186,6 +186,7 @@ align-items: center; block-size: $sz-32; inline-size: px2rem(60); + padding-inline-start: var(--sp-xs); border-radius: 0 $br-8 $br-8 0; border: $b-1 solid var(--opacity-input-boder-color); background-color: var(--opacity-input-background-color); From 8158f2956fee4939c047c4c894c1b994f800cb91 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Tue, 11 Nov 2025 14:01:25 +0100 Subject: [PATCH 5/6] :rewind: Backport github release workflow from develop --- .github/workflows/release.yml | 67 ++++++++++++++++++++++------------- 1 file changed, 43 insertions(+), 24 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 206bbadbb0..bebd0c1d60 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -37,36 +37,43 @@ jobs: ref: ${{ steps.vars.outputs.gh_ref }} # --- Publicly release the docker images --- - - name: Login to private registry - uses: docker/login-action@v3 + - name: Configure ECR credentials + uses: aws-actions/configure-aws-credentials@v4 with: - registry: ${{ secrets.DOCKER_REGISTRY }} - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} + aws-access-key-id: ${{ secrets.DOCKER_USERNAME }} + aws-secret-access-key: ${{ secrets.DOCKER_PASSWORD }} + aws-region: ${{ secrets.AWS_REGION }} - - 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 }} + - name: Install Skopeo run: | - IMAGES=("frontend" "backend" "exporter") - EXTRA_TAGS=("main" "latest") + sudo apt-get update -y + sudo apt-get install -y skopeo + + - name: Copy images from AWS ECR to Docker Hub + env: + AWS_REGION: ${{ secrets.AWS_REGION }} + DOCKER_REGISTRY: ${{ secrets.DOCKER_REGISTRY }} + PUB_DOCKER_USERNAME: ${{ secrets.PUB_DOCKER_USERNAME }} + PUB_DOCKER_PASSWORD: ${{ secrets.PUB_DOCKER_PASSWORD }} + TAG: ${{ steps.vars.outputs.gh_ref }} + run: | + aws ecr get-login-password --region $AWS_REGION | \ + skopeo login --username AWS --password-stdin \ + $DOCKER_REGISTRY + + echo "$PUB_DOCKER_PASSWORD" | skopeo login --username "$PUB_DOCKER_USERNAME" --password-stdin docker.io + + IMAGES=("frontend" "backend" "exporter" "storybook") 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" + skopeo copy --all \ + docker://$DOCKER_REGISTRY/$image:$TAG \ + docker://docker.io/$PUB_DOCKER_USERNAME/$image:$TAG - for tag in "${EXTRA_TAGS[@]}"; do - docker tag "$REGISTRY/penpotapp/$image:$TAG" "penpotapp/$image:$tag" - docker push "penpotapp/$image:$tag" + for alias in main latest; do + skopeo copy --all \ + docker://$DOCKER_REGISTRY/$image:$TAG \ + docker://docker.io/$PUB_DOCKER_USERNAME/$image:$alias done done @@ -93,3 +100,15 @@ jobs: tag_name: ${{ steps.vars.outputs.gh_ref }} name: ${{ steps.vars.outputs.gh_ref }} body: ${{ steps.extract_release_notes.outputs.release_notes }} + + - name: Notify Mattermost + if: failure() + uses: mattermost/action-mattermost-notify@master + with: + MATTERMOST_WEBHOOK_URL: ${{ secrets.MATTERMOST_WEBHOOK }} + MATTERMOST_CHANNEL: bot-alerts-cicd + TEXT: | + ❌ 🚀 *[PENPOT] Error releasing penpot.* + 📄 Triggered from ref: `${{ steps.vars.outputs.gh_ref }}` + 🔗 Run: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} + @infra From 96d9724516cc324f8442c4fe1cb7f64e9cbc403b Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Tue, 11 Nov 2025 14:04:04 +0100 Subject: [PATCH 6/6] :paperclip: Update changelog --- CHANGES.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 09bf8935bf..bf041c7ece 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,6 +1,6 @@ # CHANGELOG -## 2.11.0 (Unreleased) +## 2.11.0 ### :boom: Breaking changes & Deprecations @@ -28,10 +28,6 @@ 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. -### :rocket: Epics and highlights - -### :heart: Community contributions (Thank you!) - ### :sparkles: New features & Enhancements - New composite token: Typography [Taiga #10200](https://tree.taiga.io/project/penpot/us/10200)