From 8ddc7220f7966a0baa4f959c1a58988b7f7d3e19 Mon Sep 17 00:00:00 2001 From: "alonso.torres" Date: Fri, 19 May 2023 10:59:22 +0200 Subject: [PATCH 01/19] :bug: Fix problem with file-builder --- common/src/app/common/file_builder.cljc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/src/app/common/file_builder.cljc b/common/src/app/common/file_builder.cljc index e2d61fa43..63ecb5802 100644 --- a/common/src/app/common/file_builder.cljc +++ b/common/src/app/common/file_builder.cljc @@ -241,7 +241,7 @@ (update :parent-stack conjv (:id obj))))) (defn close-artboard [file] - (let [parent-id (-> file :parent-id peek) + (let [parent-id (-> file :parent-stack peek) parent (lookup-shape file parent-id) current-frame-id (or (:frame-id parent) (when (nil? (:current-component-id file)) From 7ee685ca1828318d4ed48f2b34ba1af0eca5e45e Mon Sep 17 00:00:00 2001 From: "alonso.torres" Date: Fri, 19 May 2023 10:57:10 +0200 Subject: [PATCH 02/19] :bug: Fix problems with position absolute and code generation --- .../common/geom/shapes/flex_layout/lines.cljc | 4 ++- frontend/src/app/main/ui/formats.cljs | 17 +++++++----- .../inspect/attributes/layout_flex.cljs | 10 +++---- .../src/app/main/ui/viewer/inspect/code.cljs | 4 ++- frontend/src/app/util/code_gen.cljs | 27 ++++++++++--------- 5 files changed, 35 insertions(+), 27 deletions(-) diff --git a/common/src/app/common/geom/shapes/flex_layout/lines.cljc b/common/src/app/common/geom/shapes/flex_layout/lines.cljc index 3692e9fb4..1aa12f6e9 100644 --- a/common/src/app/common/geom/shapes/flex_layout/lines.cljc +++ b/common/src/app/common/geom/shapes/flex_layout/lines.cljc @@ -162,7 +162,6 @@ (defn add-lines-positions [parent layout-bounds layout-lines] - (let [row? (ctl/row? parent) col? (ctl/col? parent) auto-width? (ctl/auto-width? parent) @@ -410,6 +409,9 @@ reverse? (ctl/reverse? shape) children (cond->> children (not reverse?) reverse) + ;; Don't take into account absolute children + children (->> children (remove (comp ctl/layout-absolute? second))) + ;; Creates the layout lines information layout-lines (->> (init-layout-lines shape children layout-bounds) diff --git a/frontend/src/app/main/ui/formats.cljs b/frontend/src/app/main/ui/formats.cljs index c4867a9b5..76fac5eda 100644 --- a/frontend/src/app/main/ui/formats.cljs +++ b/frontend/src/app/main/ui/formats.cljs @@ -46,12 +46,16 @@ (defn format-padding-margin-shorthand [values] ;; Values come in [p1 p2 p3 p4] - (let [[p1 p2 p3 p4] values] + (let [[p1 p2 p3 p4] values + p1 (format-number p1) + p2 (format-number p2) + p3 (format-number p3) + p4 (format-number p4)] (cond - (apply = values) + (= p1 p2 p3 p4) {:p1 p1} - (= 4 (count (set values))) + (= 4 (count (set [p1 p2 p3 p4]))) {:p1 p1 :p2 p2 :p3 p3 :p4 p4} (and (= p1 p3) (= p2 p4)) @@ -59,7 +63,6 @@ (and (not= p1 p3) (= p2 p4)) {:p1 p1 :p2 p2 :p3 p3} - :else {:p1 p1 :p2 p2 :p3 p3 :p4 p4}))) @@ -71,7 +74,7 @@ (= sizing :fill) "100%" (= sizing :auto) "auto" (number? value) (format-pixels value) - :else value))) + :else value))) (defn format-padding [padding-values type] @@ -92,5 +95,5 @@ (let [row-gap (:row-gap gap-values) column-gap (:column-gap gap-values)] (if (= row-gap column-gap) - (str/fmt "%spx" row-gap) - (str/fmt "%spx %spx" row-gap column-gap)))) \ No newline at end of file + (str/fmt "%spx" (format-number row-gap)) + (str/fmt "%spx %spx" (format-number row-gap) (format-number column-gap))))) diff --git a/frontend/src/app/main/ui/viewer/inspect/attributes/layout_flex.cljs b/frontend/src/app/main/ui/viewer/inspect/attributes/layout_flex.cljs index 92ae1521e..4e4430f3c 100644 --- a/frontend/src/app/main/ui/viewer/inspect/attributes/layout_flex.cljs +++ b/frontend/src/app/main/ui/viewer/inspect/attributes/layout_flex.cljs @@ -107,13 +107,13 @@ [:& copy-button {:data (copy-data shape :layout-align-content)}]]) [:div.attributes-unit-row - [:div.attributes-label "Gap"] - (if (= (:row-gap (:layout-gap shape)) (:column-gap (:layout-gap shape))) + [:div.attributes-label "Gaps"] + (if (= (:row-gap (:layout-gap shape)) (:column-gap (:layout-gap shape))) [:div.attributes-value - [:span (str/capital (d/name (:row-gap (:layout-gap shape)))) "px"]] + [:span (-> shape :layout-gap :row-gap fm/format-pixels)]] [:div.attributes-value - [:span.items (:row-gap (:layout-gap shape)) "px"] - [:span (:column-gap (:layout-gap shape)) "px"]]) + [:span.items (-> shape :layout-gap :row-gap fm/format-pixels)] + [:span (-> shape :layout-gap :column-gap fm/format-pixels)]]) [:& copy-button {:data (copy-data shape :layout-gap)}]] [:div.attributes-unit-row diff --git a/frontend/src/app/main/ui/viewer/inspect/code.cljs b/frontend/src/app/main/ui/viewer/inspect/code.cljs index dff59ed74..2d97af2ed 100644 --- a/frontend/src/app/main/ui/viewer/inspect/code.cljs +++ b/frontend/src/app/main/ui/viewer/inspect/code.cljs @@ -72,7 +72,9 @@ page-id (:page-id (:query-params route)) flex-items (get-flex-elements page-id shapes from) objects (get-objects from) - shapes (map #(assoc % :flex-items flex-items) shapes) + shapes (->> shapes + (map #(assoc % :parent (get objects (:parent-id %)))) + (map #(assoc % :flex-items flex-items))) style-code (-> (cg/generate-style-code @style-type shapes) (format-code "css")) diff --git a/frontend/src/app/util/code_gen.cljs b/frontend/src/app/util/code_gen.cljs index acbd5ebfc..321119509 100644 --- a/frontend/src/app/util/code_gen.cljs +++ b/frontend/src/app/util/code_gen.cljs @@ -10,6 +10,7 @@ [app.common.data.macros :as dm] [app.common.pages.helpers :as cph] [app.common.text :as txt] + [app.common.types.shape.layout :as ctl] [app.main.ui.formats :as fmt] [app.util.color :as uc] [cuerdas.core :as str])) @@ -21,12 +22,6 @@ (if (= style :inner-shadow) "inset " "") (str/fmt "%spx %spx %spx %spx %s" offset-x offset-y blur spread css-color)))) -(defn format-gap - [{row-gap :row-gap column-gap :column-gap}] - (if (= row-gap column-gap) - (str/fmt "%spx" row-gap) - (str/fmt "%spx %spx" row-gap column-gap))) - (defn fill-color->background [fill] (uc/color->background {:color (:fill-color fill) @@ -58,10 +53,15 @@ (str/format "%spx %s %s" width style (uc/color->background color))))) (defn format-position [_ shape] - (cond - (cph/frame-shape? shape) "relative" - (empty? (:flex-items shape)) "absolute" - :else "static")) + (let [relative? (cph/frame-shape? shape) + absolute? (or (empty? (:flex-items shape)) + (and (ctl/any-layout? (:parent shape)) (ctl/layout-absolute? shape)))] + (cond + absolute? "absolute" + relative? "relative" + + ;; static is default value in css + :else nil))) (defn get-size [type values] @@ -80,7 +80,8 @@ {:position {:props [:type] :to-prop {:type "position"} :format {:type format-position}} - :layout {:props (if (empty? (:flex-items shape)) + :layout {:props (if (or (empty? (:flex-items shape)) + (ctl/layout-absolute? shape)) [:width :height :x :y :radius :rx :r1] [:width :height :radius :rx :r1]) :to-prop {:x "left" @@ -89,7 +90,7 @@ :rx "border-radius" :r1 "border-radius"} :format {:rotation #(str/fmt "rotate(%sdeg)" %) - :r1 #(apply str/fmt "%spx, %spx, %spx, %spx" %) + :r1 #(apply str/fmt "%spx %spx %spx %spx" %) :width #(get-size :width %) :height #(get-size :height %)} :multi {:r1 [:r1 :r2 :r3 :r4]}} @@ -124,7 +125,7 @@ :layout-align-items d/name :layout-justify-content d/name :layout-wrap-type d/name - :layout-gap format-gap + :layout-gap fmt/format-gap :layout-padding fmt/format-padding}}}) (def style-text From e8b87b0db1092bb4935c2a7e4b3db1443753c595 Mon Sep 17 00:00:00 2001 From: Pablo Alba Date: Wed, 17 May 2023 13:31:02 +0200 Subject: [PATCH 03/19] :bug: Fix zooming while color picker breaks UI --- CHANGES.md | 6 ++++++ frontend/src/app/main/ui/workspace/viewport/actions.cljs | 5 +++-- .../src/app/main/ui/workspace/viewport/pixel_overlay.cljs | 3 ++- version.txt | 2 +- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index b6f20465a..57c749035 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,11 @@ # CHANGELOG +## 1.18.4 + +### :bug: Bugs fixed + +- Fix zooming while color picker breaks UI [GH #3214](https://github.com/penpot/penpot/issues/3214) + ## 1.18.3 ### :bug: Bugs fixed diff --git a/frontend/src/app/main/ui/workspace/viewport/actions.cljs b/frontend/src/app/main/ui/workspace/viewport/actions.cljs index eef5890df..821ab50c6 100644 --- a/frontend/src/app/main/ui/workspace/viewport/actions.cljs +++ b/frontend/src/app/main/ui/workspace/viewport/actions.cljs @@ -361,9 +361,10 @@ (fn [event] (let [event (.getBrowserEvent ^js event) target (dom/get-target event) - mod? (kbd/mod? event)] + mod? (kbd/mod? event) + picking-color? (= "pixel-overlay" (.-id target))] - (when (uwvv/inside-viewport? target) + (when (or (uwvv/inside-viewport? target) picking-color?) (dom/prevent-default event) (dom/stop-propagation event) (let [raw-pt (dom/get-client-position event) diff --git a/frontend/src/app/main/ui/workspace/viewport/pixel_overlay.cljs b/frontend/src/app/main/ui/workspace/viewport/pixel_overlay.cljs index ceab081f3..9e5d95369 100644 --- a/frontend/src/app/main/ui/workspace/viewport/pixel_overlay.cljs +++ b/frontend/src/app/main/ui/workspace/viewport/pixel_overlay.cljs @@ -183,7 +183,8 @@ [:* [:div.pixel-overlay - {:tab-index 0 + {:id "pixel-overlay" + :tab-index 0 :style {:cursor cur/picker} :on-pointer-down handle-pointer-down-picker :on-pointer-up handle-pointer-up-picker diff --git a/version.txt b/version.txt index b9fb27ab4..a67b05e87 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.18.3 +1.18.4 From 35e3ac584117467758ddb97f49c68774335797d1 Mon Sep 17 00:00:00 2001 From: "alonso.torres" Date: Fri, 19 May 2023 11:38:56 +0200 Subject: [PATCH 04/19] :bug: Fix problem with layout not reflowing on shape deletion --- CHANGES.md | 1 + frontend/src/app/main/data/workspace/shapes.cljs | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index 57c749035..a976e1b8c 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -5,6 +5,7 @@ ### :bug: Bugs fixed - Fix zooming while color picker breaks UI [GH #3214](https://github.com/penpot/penpot/issues/3214) +- Fix problem with layout not reflowing on shape deletion [Taiga #5289](https://tree.taiga.io/project/penpot/issue/5289) ## 1.18.3 diff --git a/frontend/src/app/main/data/workspace/shapes.cljs b/frontend/src/app/main/data/workspace/shapes.cljs index 17fd1bed8..a806d5125 100644 --- a/frontend/src/app/main/data/workspace/shapes.cljs +++ b/frontend/src/app/main/data/workspace/shapes.cljs @@ -323,8 +323,8 @@ (rx/of (dwu/start-undo-transaction undo-id) (dc/detach-comment-thread ids) - (ptk/data-event :layout/update all-parents) (dch/commit-changes changes) + (ptk/data-event :layout/update all-parents) (dwu/commit-undo-transaction undo-id)))) (defn create-and-add-shape From fbfff07decffef9f1ac452b2ce55bf6dbc7bb303 Mon Sep 17 00:00:00 2001 From: Eva Date: Mon, 22 May 2023 09:27:18 +0200 Subject: [PATCH 05/19] :bug: Fix background property changing it for background-color --- CHANGES.md | 1 + frontend/src/app/util/code_gen.cljs | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index a976e1b8c..be830a0e6 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,6 +11,7 @@ ### :bug: Bugs fixed +- Fix background-color property on inspect code [Taiga #5300](https://tree.taiga.io/project/penpot/issue/5300) - Fix problem with rulers not placing correctly [Taiga #5093](https://tree.taiga.io/project/penpot/issue/5093) - Fix page context menu [Taiga #5145](https://tree.taiga.io/project/penpot/issue/5145) - Fix project file count [Taiga #5148](https://tree.taiga.io/project/penpot/issue/5148) diff --git a/frontend/src/app/util/code_gen.cljs b/frontend/src/app/util/code_gen.cljs index 321119509..f3cf5eea4 100644 --- a/frontend/src/app/util/code_gen.cljs +++ b/frontend/src/app/util/code_gen.cljs @@ -95,7 +95,7 @@ :height #(get-size :height %)} :multi {:r1 [:r1 :r2 :r3 :r4]}} :fill {:props [:fills] - :to-prop {:fills (if (> (count (:fills shape)) 1) "background-image" "background")} + :to-prop {:fills (if (> (count (:fills shape)) 1) "background-image" "background-color")} :format {:fills format-fill-color}} :stroke {:props [:strokes] :to-prop {:strokes "border"} From defec189e2607dc8595cbfc26913e849d58e1d65 Mon Sep 17 00:00:00 2001 From: Eva Date: Mon, 22 May 2023 12:39:35 +0200 Subject: [PATCH 06/19] :bug: Fix extra long names on typography assets --- CHANGES.md | 3 ++- .../resources/styles/main/partials/sidebar-assets.scss | 8 ++++++++ .../styles/main/partials/sidebar-element-options.scss | 3 +++ frontend/resources/styles/main/partials/text-palette.scss | 4 ++++ frontend/src/app/main/ui/workspace/sidebar/assets.cljs | 3 ++- .../ui/workspace/sidebar/options/menus/typography.cljs | 4 ++-- frontend/src/app/main/ui/workspace/textpalette.cljs | 3 ++- 7 files changed, 23 insertions(+), 5 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index be830a0e6..a3d6cbbd9 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,12 +6,13 @@ - Fix zooming while color picker breaks UI [GH #3214](https://github.com/penpot/penpot/issues/3214) - Fix problem with layout not reflowing on shape deletion [Taiga #5289](https://tree.taiga.io/project/penpot/issue/5289) +- Fix extra long typography names on assets and palette [Taiga #5199](https://tree.taiga.io/project/penpot/issue/5199) +- Fix background-color property on inspect code [Taiga #5300](https://tree.taiga.io/project/penpot/issue/5300) ## 1.18.3 ### :bug: Bugs fixed -- Fix background-color property on inspect code [Taiga #5300](https://tree.taiga.io/project/penpot/issue/5300) - Fix problem with rulers not placing correctly [Taiga #5093](https://tree.taiga.io/project/penpot/issue/5093) - Fix page context menu [Taiga #5145](https://tree.taiga.io/project/penpot/issue/5145) - Fix project file count [Taiga #5148](https://tree.taiga.io/project/penpot/issue/5148) diff --git a/frontend/resources/styles/main/partials/sidebar-assets.scss b/frontend/resources/styles/main/partials/sidebar-assets.scss index 4671381f1..0744f3970 100644 --- a/frontend/resources/styles/main/partials/sidebar-assets.scss +++ b/frontend/resources/styles/main/partials/sidebar-assets.scss @@ -434,6 +434,14 @@ cursor: pointer; position: relative; + .name-block { + color: $color-gray-20; + width: calc(100% - 24px - #{$size-2}); + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + & span { margin-left: $size-1; color: $color-gray-30; diff --git a/frontend/resources/styles/main/partials/sidebar-element-options.scss b/frontend/resources/styles/main/partials/sidebar-element-options.scss index ef3608c28..5481d70ad 100644 --- a/frontend/resources/styles/main/partials/sidebar-element-options.scss +++ b/frontend/resources/styles/main/partials/sidebar-element-options.scss @@ -1095,7 +1095,10 @@ flex-grow: 1; font-size: $fs11; margin-top: 4px; + max-width: calc(var(--width, 256px) - 100px); + overflow: hidden; white-space: nowrap; + text-overflow: ellipsis; } .element-set-actions-button svg { diff --git a/frontend/resources/styles/main/partials/text-palette.scss b/frontend/resources/styles/main/partials/text-palette.scss index 4bb667f3d..677b98145 100644 --- a/frontend/resources/styles/main/partials/text-palette.scss +++ b/frontend/resources/styles/main/partials/text-palette.scss @@ -9,6 +9,10 @@ & .typography-name { color: $color-white; + max-width: 160px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } & .typography-font, diff --git a/frontend/src/app/main/ui/workspace/sidebar/assets.cljs b/frontend/src/app/main/ui/workspace/sidebar/assets.cljs index 6009b1613..09c031a6c 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/assets.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/assets.cljs @@ -1280,7 +1280,8 @@ :auto-focus true :default-value (cph/merge-path-item (:path color) (:name color))}] - [:div.name-block {:on-double-click rename-color-clicked} + [:div.name-block {:title (:name color) + :on-double-click rename-color-clicked} (:name color) (when-not (= (:name color) default-name) [:span default-name])]) diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/typography.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/menus/typography.cljs index 4d51e1480..600c95d19 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/typography.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/typography.cljs @@ -499,7 +499,7 @@ :font-weight (:font-weight typography) :font-style (:font-style typography)}} (tr "workspace.assets.typography.sample")] - [:div.typography-name (:name typography)]] + [:div.typography-name {:title (:name typography)}(:name typography)]] [:div.element-set-actions (when on-detach [:div.element-set-actions-button @@ -517,7 +517,7 @@ (if (not editable?) [:div.element-set-content.typography-read-only-data [:div.row-flex.typography-name - [:span (:name typography)]] + [:span {:title (:name typography)} (:name typography)]] [:div.row-flex [:span.label (tr "workspace.assets.typography.font-id")] diff --git a/frontend/src/app/main/ui/workspace/textpalette.cljs b/frontend/src/app/main/ui/workspace/textpalette.cljs index fac5ce536..fa39bcd01 100644 --- a/frontend/src/app/main/ui/workspace/textpalette.cljs +++ b/frontend/src/app/main/ui/workspace/textpalette.cljs @@ -42,7 +42,8 @@ :attrs attrs})) selected-ids))))] - [:div.typography-item {:on-click handle-click} + [:div.typography-item {:title (:name typography) + :on-click handle-click} [:div.typography-name {:style {:font-family (:font-family typography) :font-weight (:font-weight typography) From f3f708ee9dc513a48e31cc0a2f0b46a7ff5e46b7 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Thu, 11 May 2023 06:29:48 +0200 Subject: [PATCH 07/19] :bug: Fix svg import with null fill-opacity --- frontend/src/app/main/data/workspace/svg_upload.cljs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/app/main/data/workspace/svg_upload.cljs b/frontend/src/app/main/data/workspace/svg_upload.cljs index 0a9b3c5d0..c78fa1a94 100644 --- a/frontend/src/app/main/data/workspace/svg_upload.cljs +++ b/frontend/src/app/main/data/workspace/svg_upload.cljs @@ -100,13 +100,13 @@ (-> (update :svg-attrs dissoc :fill-opacity) (update-in [:svg-attrs :style] dissoc :fill-opacity) (assoc-in [:fills 0 :fill-opacity] (-> (get-in shape [:svg-attrs :fill-opacity]) - (d/parse-double)))) + (d/parse-double 1)))) (get-in shape [:svg-attrs :style :fill-opacity]) (-> (update-in [:svg-attrs :style] dissoc :fill-opacity) (update :svg-attrs dissoc :fill-opacity) (assoc-in [:fills 0 :fill-opacity] (-> (get-in shape [:svg-attrs :style :fill-opacity]) - (d/parse-double))))))) + (d/parse-double 1))))))) (defn setup-stroke [shape] (let [stroke-linecap (-> (or (get-in shape [:svg-attrs :stroke-linecap]) From 00d625ee3392c450fcb5c161e6c532a003be76d1 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Thu, 11 May 2023 10:02:46 +0200 Subject: [PATCH 08/19] :bug: Avoid nil values for position-data --- frontend/src/app/util/text_svg_position.cljs | 47 ++++++++++---------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/frontend/src/app/util/text_svg_position.cljs b/frontend/src/app/util/text_svg_position.cljs index 45cdfe529..69f3fe02e 100644 --- a/frontend/src/app/util/text_svg_position.cljs +++ b/frontend/src/app/util/text_svg_position.cljs @@ -90,27 +90,26 @@ [shape-id] (when (some? shape-id) (p/let [text-data (calc-text-node-positions shape-id)] - (when (d/not-empty? text-data) - (->> text-data - (mapv (fn [{:keys [node position text direction]}] - (let [{:keys [x y width height]} position - styles (js/getComputedStyle ^js node) - get (fn [prop] - (let [value (.getPropertyValue styles prop)] - (when (and value (not= value "")) - value)))] - (d/without-nils - {:x x - :y (+ y height) - :width width - :height height - :direction direction - :font-family (str (get "font-family")) - :font-size (str (get "font-size")) - :font-weight (str (get "font-weight")) - :text-transform (str (get "text-transform")) - :text-decoration (str (get "text-decoration")) - :letter-spacing (str (get "letter-spacing")) - :font-style (str (get "font-style")) - :fills (transit/decode-str (get "--fills")) - :text text}))))))))) + (->> text-data + (mapv (fn [{:keys [node position text direction]}] + (let [{:keys [x y width height]} position + styles (js/getComputedStyle ^js node) + get (fn [prop] + (let [value (.getPropertyValue styles prop)] + (when (and value (not= value "")) + value)))] + (d/without-nils + {:x x + :y (+ y height) + :width width + :height height + :direction direction + :font-family (str (get "font-family")) + :font-size (str (get "font-size")) + :font-weight (str (get "font-weight")) + :text-transform (str (get "text-transform")) + :text-decoration (str (get "text-decoration")) + :letter-spacing (str (get "letter-spacing")) + :font-style (str (get "font-style")) + :fills (transit/decode-str (get "--fills")) + :text text})))))))) From cb5ae99e1d16a00c675f4e0b8cd6825fa55b5b75 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Fri, 12 May 2023 10:01:45 +0200 Subject: [PATCH 09/19] :bug: Fix svg import making it more resilient --- .../app/main/data/workspace/svg_upload.cljs | 40 +++++++++++++------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/frontend/src/app/main/data/workspace/svg_upload.cljs b/frontend/src/app/main/data/workspace/svg_upload.cljs index c78fa1a94..2478eda46 100644 --- a/frontend/src/app/main/data/workspace/svg_upload.cljs +++ b/frontend/src/app/main/data/workspace/svg_upload.cljs @@ -8,6 +8,7 @@ (:require [app.common.colors :as clr] [app.common.data :as d] + [app.common.exceptions :as ex] [app.common.geom.matrix :as gmt] [app.common.geom.point :as gpt] [app.common.geom.shapes :as gsh] @@ -30,6 +31,7 @@ [app.util.svg :as usvg] [app.util.webapi :as wapi] [beicon.core :as rx] + [clojure.spec.alpha :as s] [cuerdas.core :as str] [potok.core :as ptk])) @@ -38,11 +40,12 @@ (defonce default-image {:x 0 :y 0 :width 1 :height 1 :rx 0 :ry 0}) (defn- assert-valid-num [attr num] - (us/verify! - :expr (and (d/num? num) + (when-not (and (d/num? num) (<= num max-safe-int) (>= num min-safe-int)) - :hint (str/ffmt "%1 attribute has invalid value: %2" (d/name attr) num)) + (ex/raise :type :assertion + :code :expr-validation + :hint (str/ffmt "%1 attribute has invalid value: %2" (d/name attr) num))) ;; If the number is between 0-1 we round to 1 (same in negative form (cond @@ -52,11 +55,24 @@ (defn- assert-valid-pos-num [attr num] - (us/verify! - :expr (pos? num) - :hint (str/ffmt "%1 attribute should be positive" (d/name attr))) + (when-not (pos? num) + (ex/raise :type :assertion + :code :expr-validation + :hint (str/ffmt "%1 attribute should be positive" (d/name attr)))) num) +(defn- assert-valid-blend-mode + [mode] + (let [clean-value (-> mode + str/trim + str/lower + keyword)] + (when-not (s/valid? ::cts/blend-mode clean-value) + (ex/raise :type :assertion + :code :expr-validation + :hint (str/ffmt "%1 is not a valid blend mode" clean-value))) + clean-value)) + (defn- svg-dimensions [data] (let [width (get-in data [:attrs :width] 100) height (get-in data [:attrs :height] 100) @@ -133,12 +149,12 @@ (get-in shape [:svg-attrs :stroke-opacity]) (-> (update :svg-attrs dissoc :stroke-opacity) (assoc-in [:strokes 0 :stroke-opacity] (-> (get-in shape [:svg-attrs :stroke-opacity]) - (d/parse-double)))) + (d/parse-double 1)))) (get-in shape [:svg-attrs :style :stroke-opacity]) (-> (update-in [:svg-attrs :style] dissoc :stroke-opacity) (assoc-in [:strokes 0 :stroke-opacity] (-> (get-in shape [:svg-attrs :style :stroke-opacity]) - (d/parse-double)))) + (d/parse-double 1)))) (get-in shape [:svg-attrs :stroke-width]) (-> (update :svg-attrs dissoc :stroke-width) @@ -165,21 +181,21 @@ (get-in shape [:svg-attrs :opacity]) (-> (update :svg-attrs dissoc :opacity) (assoc :opacity (-> (get-in shape [:svg-attrs :opacity]) - (d/parse-double)))) + (d/parse-double 1)))) (get-in shape [:svg-attrs :style :opacity]) (-> (update-in [:svg-attrs :style] dissoc :opacity) (assoc :opacity (-> (get-in shape [:svg-attrs :style :opacity]) - (d/parse-double)))) + (d/parse-double 1)))) (get-in shape [:svg-attrs :mix-blend-mode]) (-> (update :svg-attrs dissoc :mix-blend-mode) - (assoc :blend-mode (-> (get-in shape [:svg-attrs :mix-blend-mode]) keyword))) + (assoc :blend-mode (-> (get-in shape [:svg-attrs :mix-blend-mode]) assert-valid-blend-mode))) (get-in shape [:svg-attrs :style :mix-blend-mode]) (-> (update-in [:svg-attrs :style] dissoc :mix-blend-mode) - (assoc :blend-mode (-> (get-in shape [:svg-attrs :style :mix-blend-mode]) keyword))))) + (assoc :blend-mode (-> (get-in shape [:svg-attrs :style :mix-blend-mode]) assert-valid-blend-mode))))) (defn create-raw-svg [name frame-id svg-data {:keys [tag attrs] :as data}] (let [{:keys [x y width height offset-x offset-y]} svg-data] From 6f59c80d86f7dd15097bbd63eb528adf2bd8222a Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Wed, 31 May 2023 09:48:35 +0200 Subject: [PATCH 10/19] :bug: Fix create color assets opacity specs --- common/src/app/common/types/color.cljc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/src/app/common/types/color.cljc b/common/src/app/common/types/color.cljc index 2032cd047..59b312241 100644 --- a/common/src/app/common/types/color.cljc +++ b/common/src/app/common/types/color.cljc @@ -28,7 +28,7 @@ (s/def ::color-gradient/width ::us/safe-number) (s/def ::color-gradient-stop/color ::us/rgb-color-str) -(s/def ::color-gradient-stop/opacity ::us/safe-number) +(s/def ::color-gradient-stop/opacity (s/nilable ::us/safe-number)) (s/def ::color-gradient-stop/offset ::us/safe-number) (s/def ::color-gradient/stop From ffdd4d1ee9c9944d034132c080dd99e5c71639e8 Mon Sep 17 00:00:00 2001 From: "alonso.torres" Date: Wed, 31 May 2023 10:04:42 +0200 Subject: [PATCH 11/19] :bug: Fix problem with nil child --- common/src/app/common/geom/shapes/modifiers.cljc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/src/app/common/geom/shapes/modifiers.cljc b/common/src/app/common/geom/shapes/modifiers.cljc index 17879b765..840136e40 100644 --- a/common/src/app/common/geom/shapes/modifiers.cljc +++ b/common/src/app/common/geom/shapes/modifiers.cljc @@ -179,7 +179,7 @@ [layout-line modif-tree]))] (let [children (->> children - (map (d/getf objects)) + (keep (d/getf objects)) (remove :hidden) (remove gco/invalid-geometry?) (map apply-modifiers)) From 3b8c3647faf220460057d3e15418e45470c22b5c Mon Sep 17 00:00:00 2001 From: "alonso.torres" Date: Fri, 2 Jun 2023 12:26:33 +0200 Subject: [PATCH 12/19] :bug: Fix problem with undefined gaps --- common/src/app/common/types/shape/layout.cljc | 5 ++-- .../app/main/data/workspace/shape_layout.cljs | 12 ++++++--- frontend/src/app/main/ui/measurements.cljs | 5 ++-- .../options/menus/layout_container.cljs | 25 +++++++++++-------- .../src/app/main/ui/workspace/viewport.cljs | 4 +-- 5 files changed, 29 insertions(+), 22 deletions(-) diff --git a/common/src/app/common/types/shape/layout.cljc b/common/src/app/common/types/shape/layout.cljc index 6ae3ca0ed..f873a111e 100644 --- a/common/src/app/common/types/shape/layout.cljc +++ b/common/src/app/common/types/shape/layout.cljc @@ -8,6 +8,7 @@ (:require [app.common.data :as d] [app.common.data.macros :as dm] + [app.common.math :as mth] [app.common.spec :as us] [app.common.uuid :as uuid] [clojure.spec.alpha :as s])) @@ -262,8 +263,8 @@ (defn gaps [{:keys [layout-gap]}] - (let [layout-gap-row (or (-> layout-gap :row-gap) 0) - layout-gap-col (or (-> layout-gap :column-gap) 0)] + (let [layout-gap-row (or (-> layout-gap :row-gap (mth/finite 0)) 0) + layout-gap-col (or (-> layout-gap :column-gap (mth/finite 0)) 0)] [layout-gap-row layout-gap-col])) (defn child-min-width diff --git a/frontend/src/app/main/data/workspace/shape_layout.cljs b/frontend/src/app/main/data/workspace/shape_layout.cljs index fe798b11f..e235137a8 100644 --- a/frontend/src/app/main/data/workspace/shape_layout.cljs +++ b/frontend/src/app/main/data/workspace/shape_layout.cljs @@ -126,8 +126,10 @@ all-width (->> selrects (map :width) (reduce +)) - column-gap (if (or (= direction :row) (= direction :row-reverse)) - (/ (- (- max-x min-x) all-width) (dec (count shapes))) + column-gap (if (and (> (count shapes) 1) + (or (= direction :row) (= direction :row-reverse))) + (/ (- (- max-x min-x) all-width) + (dec (count shapes))) 0) min-y (->> selrects @@ -139,8 +141,10 @@ all-height (->> selrects (map :height) (reduce +)) - row-gap (if (or (= direction :column) (= direction :column-reverse)) - (/ (- (- max-y min-y) all-height) (dec (count shapes))) + row-gap (if (and (> (count shapes) 1) + (or (= direction :column) (= direction :column-reverse))) + (/ (- (- max-y min-y) all-height) + (dec (count shapes))) 0) layout-gap {:row-gap (max row-gap 0) :column-gap (max column-gap 0)} diff --git a/frontend/src/app/main/ui/measurements.cljs b/frontend/src/app/main/ui/measurements.cljs index 26fe1bb46..d2da470a7 100644 --- a/frontend/src/app/main/ui/measurements.cljs +++ b/frontend/src/app/main/ui/measurements.cljs @@ -290,7 +290,6 @@ [:text {:x (+ x (/ width 2)) :y (+ y (/ height 2)) :text-anchor "middle" - :text-align "center" :dominant-baseline "central" :style {:fill distance-text-color :font-size font-size}} @@ -352,8 +351,8 @@ [:rect.padding-rect {:x (:x rect-data) :y (:y rect-data) - :width (:width rect-data) - :height (:height rect-data) + :width (max 0 (:width rect-data)) + :height (max 0 (:height rect-data)) :on-pointer-enter on-pointer-enter :on-pointer-leave on-pointer-leave :on-pointer-down on-pointer-down diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs index ac624f7b4..715f34cef 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs @@ -8,6 +8,7 @@ (:require [app.common.data :as d] [app.common.data.macros :as dm] + [app.common.math :as mth] [app.main.data.workspace :as udw] [app.main.data.workspace.shape-layout :as dwsl] [app.main.refs :as refs] @@ -337,7 +338,7 @@ i/auto-gap] [:> numeric-input {:no-validate true :placeholder "--" - :on-focus (fn [event] + :on-focus (fn [event] (select-gap :column-gap) (reset! gap-selected? :column-gap) (dom/select-target event)) @@ -535,9 +536,10 @@ set-gap (fn [gap-multiple? type val] - (if gap-multiple? - (st/emit! (dwsl/update-layout ids {:layout-gap {:row-gap val :column-gap val}})) - (st/emit! (dwsl/update-layout ids {:layout-gap {type val}})))) + (let [val (mth/finite val 0)] + (if gap-multiple? + (st/emit! (dwsl/update-layout ids {:layout-gap {:row-gap val :column-gap val}})) + (st/emit! (dwsl/update-layout ids {:layout-gap {type val}}))))) ;; Padding @@ -547,15 +549,16 @@ on-padding-change (fn [type prop val] - (cond - (and (= type :simple) (= prop :p1)) - (st/emit! (dwsl/update-layout ids {:layout-padding {:p1 val :p3 val}})) + (let [val (mth/finite val 0)] + (cond + (and (= type :simple) (= prop :p1)) + (st/emit! (dwsl/update-layout ids {:layout-padding {:p1 val :p3 val}})) - (and (= type :simple) (= prop :p2)) - (st/emit! (dwsl/update-layout ids {:layout-padding {:p2 val :p4 val}})) + (and (= type :simple) (= prop :p2)) + (st/emit! (dwsl/update-layout ids {:layout-padding {:p2 val :p4 val}})) - :else - (st/emit! (dwsl/update-layout ids {:layout-padding {prop val}})))) + :else + (st/emit! (dwsl/update-layout ids {:layout-padding {prop val}}))))) ;; Grid-direction diff --git a/frontend/src/app/main/ui/workspace/viewport.cljs b/frontend/src/app/main/ui/workspace/viewport.cljs index f96c44b68..a95204707 100644 --- a/frontend/src/app/main/ui/workspace/viewport.cljs +++ b/frontend/src/app/main/ui/workspace/viewport.cljs @@ -543,8 +543,8 @@ [:clipPath {:id "clip-handlers"} [:rect {:x (+ (:x vbox) rule-area-size) :y (+ (:y vbox) rule-area-size) - :width (- (:width vbox) (* rule-area-size 2)) - :height (- (:height vbox) (* rule-area-size 2))}]])] + :width (max 0 (- (:width vbox) (* rule-area-size 2))) + :height (max 0 (- (:height vbox) (* rule-area-size 2)))}]])] [:& selection/selection-handlers {:selected selected From bc64fdb1bcf6488b5aa2dae5a2a2ae49f4f944af Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Fri, 9 Jun 2023 09:28:27 +0200 Subject: [PATCH 13/19] :bug: Fix add flow option in contextual menu for frames --- frontend/src/app/main/ui/workspace/context_menu.cljs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/app/main/ui/workspace/context_menu.cljs b/frontend/src/app/main/ui/workspace/context_menu.cljs index bcd897060..2b7184c17 100644 --- a/frontend/src/app/main/ui/workspace/context_menu.cljs +++ b/frontend/src/app/main/ui/workspace/context_menu.cljs @@ -349,7 +349,7 @@ (mf/defc context-menu-prototype [{:keys [shapes]}] (let [options (mf/deref refs/workspace-page-options) - options-mode (mf/deref refs/options-mode) + options-mode (mf/deref refs/options-mode-global) do-add-flow #(st/emit! (dwi/add-flow-selected-frame)) do-remove-flow #(st/emit! (dwi/remove-flow (:id %))) flows (:flows options) From 8a9a3cbf3753f47eac324f7f7a86e362d47c2717 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Tue, 13 Jun 2023 11:51:03 +0200 Subject: [PATCH 14/19] :sparkles: Improve invitations validation --- CHANGES.md | 2 ++ backend/src/app/rpc/commands/auth.clj | 16 +++++++++------- version.txt | 2 +- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index a3d6cbbd9..990a8b2c9 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,7 @@ # CHANGELOG +## 1.18.5 + ## 1.18.4 ### :bug: Bugs fixed diff --git a/backend/src/app/rpc/commands/auth.clj b/backend/src/app/rpc/commands/auth.clj index aaeb4835b..a2ff13bc3 100644 --- a/backend/src/app/rpc/commands/auth.clj +++ b/backend/src/app/rpc/commands/auth.clj @@ -169,14 +169,16 @@ [{:keys [::db/pool] :as cfg} params] (when-not (contains? cf/flags :registration) - (if-not (contains? params :invitation-token) + (when-not (contains? params :invitation-token) (ex/raise :type :restriction - :code :registration-disabled) - (let [invitation (tokens/verify (::main/props cfg) {:token (:invitation-token params) :iss :team-invitation})] - (when-not (= (:email params) (:member-email invitation)) - (ex/raise :type :restriction - :code :email-does-not-match-invitation - :hint "email should match the invitation"))))) + :code :registration-disabled))) + + (when (contains? params :invitation-token) + (let [invitation (tokens/verify (::main/props cfg) {:token (:invitation-token params) :iss :team-invitation})] + (when-not (= (:email params) (:member-email invitation)) + (ex/raise :type :restriction + :code :email-does-not-match-invitation + :hint "email should match the invitation")))) (when-let [domains (cf/get :registration-domain-whitelist)] (when-not (email-domain-in-whitelist? domains (:email params)) diff --git a/version.txt b/version.txt index a67b05e87..8e8b0a933 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.18.4 +1.18.5 From 24715a85e59915331f8fde5149dafe67b0f370ca Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Tue, 13 Jun 2023 09:57:05 +0200 Subject: [PATCH 15/19] :sparkles: Deleted fonts auto match --- frontend/src/app/main/data/workspace.cljs | 2 + .../data/workspace/fix_deleted_fonts.cljs | 129 ++++++++++++++++++ frontend/translations/en.po | 2 +- frontend/translations/es.po | 2 +- 4 files changed, 133 insertions(+), 2 deletions(-) create mode 100644 frontend/src/app/main/data/workspace/fix_deleted_fonts.cljs diff --git a/frontend/src/app/main/data/workspace.cljs b/frontend/src/app/main/data/workspace.cljs index 792288feb..4ce4dc2ee 100644 --- a/frontend/src/app/main/data/workspace.cljs +++ b/frontend/src/app/main/data/workspace.cljs @@ -44,6 +44,7 @@ [app.main.data.workspace.drawing.common :as dwdc] [app.main.data.workspace.edition :as dwe] [app.main.data.workspace.fix-bool-contents :as fbc] + [app.main.data.workspace.fix-deleted-fonts :as fdf] [app.main.data.workspace.groups :as dwg] [app.main.data.workspace.guides :as dwgu] [app.main.data.workspace.highlight :as dwh] @@ -131,6 +132,7 @@ components-v2 (features/active-feature? state :components-v2)] (rx/merge (rx/of (fbc/fix-bool-contents)) + (rx/of (fdf/fix-deleted-fonts)) (if (and has-graphics? components-v2) (rx/of (remove-graphics (:id file) (:name file))) (rx/empty))))))) diff --git a/frontend/src/app/main/data/workspace/fix_deleted_fonts.cljs b/frontend/src/app/main/data/workspace/fix_deleted_fonts.cljs new file mode 100644 index 000000000..05b4a13da --- /dev/null +++ b/frontend/src/app/main/data/workspace/fix_deleted_fonts.cljs @@ -0,0 +1,129 @@ +;; 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.main.data.workspace.fix-deleted-fonts + (:require + [app.common.data :as d] + [app.common.pages.helpers :as cph] + [app.common.text :as txt] + [app.main.data.workspace.changes :as dch] + [app.main.data.workspace.state-helpers :as wsh] + [app.main.fonts :as fonts] + [beicon.core :as rx] + [potok.core :as ptk])) + +;; This event will update the file so the texts with non existing custom fonts try to be fixed. +;; This can happen when: +;; - Exporting/importing files to different teams or penpot instances +;; - Moving files from one team to another in the same instance +;; - Custom fonts are explicitly deleted in the team area + +(defn has-invalid-font-family + [node] + (let [fonts (deref fonts/fontsdb)] + (and + (some? (:font-family node)) + (nil? (get fonts (:font-id node)))))) + +(defn calculate-alternative-font-id + [value] + (let [fonts (deref fonts/fontsdb)] + (->> (vals fonts) + (filter #(= (:family %) value)) + (first) + :id))) + +(defn should-fix-deleted-font-shape? + [shape] + (let [text-nodes (txt/node-seq txt/is-text-node? (:content shape))] + (and (cph/text-shape? shape) (some has-invalid-font-family text-nodes)))) + +(defn should-fix-deleted-font-component? + [component] + (->> (:objects component) + (vals) + (d/seek should-fix-deleted-font-shape?))) + +(defn should-fix-deleted-font-typography? + [typography] + (let [fonts (deref fonts/fontsdb)] + (nil? (get fonts (:font-id typography))))) + +(defn fix-deleted-font + [node] + (let [alternative-font-id (calculate-alternative-font-id (:font-family node))] + (cond-> node + (some? alternative-font-id) (assoc :font-id alternative-font-id)))) + +(defn fix-deleted-font-shape + [shape] + (let [transform (partial txt/transform-nodes has-invalid-font-family fix-deleted-font)] + (update shape :content transform))) + +(defn fix-deleted-font-component + [component] + (update component + :objects + (fn [objects] + (d/mapm #(fix-deleted-font-shape %2) objects)))) + +(defn fix-deleted-font-typography + [typography] + (let [alternative-font-id (calculate-alternative-font-id (:font-family typography))] + (cond-> typography + (some? alternative-font-id) (assoc :font-id alternative-font-id)))) + +(defn fix-deleted-fonts + [] + (ptk/reify ::fix-deleted-fonts + ptk/WatchEvent + (watch [it state _] + (let [objects (wsh/lookup-page-objects state) + + ids (into #{} + (comp (filter should-fix-deleted-font-shape?) (map :id)) + (vals objects)) + + components (->> (wsh/lookup-local-components state) + (vals) + (filter should-fix-deleted-font-component?)) + + component-changes + (into [] + (map (fn [component] + {:type :mod-component + :id (:id component) + :objects (-> (fix-deleted-font-component component) :objects)})) + components) + + typographies (->> (get-in state [:workspace-data :typographies]) + (vals) + (filter should-fix-deleted-font-typography?)) + + typography-changes + (into [] + (map (fn [typography] + {:type :mod-typography + :typography (fix-deleted-font-typography typography)})) + typographies)] + + (rx/concat + (rx/of (dch/update-shapes ids #(fix-deleted-font-shape %) {:reg-objects? false + :save-undo? false + :ignore-tree true})) + (if (empty? component-changes) + (rx/empty) + (rx/of (dch/commit-changes {:origin it + :redo-changes component-changes + :undo-changes [] + :save-undo? false}))) + + (if (empty? typography-changes) + (rx/empty) + (rx/of (dch/commit-changes {:origin it + :redo-changes typography-changes + :undo-changes [] + :save-undo? false})))))))) diff --git a/frontend/translations/en.po b/frontend/translations/en.po index 3b81dae37..7376e687f 100644 --- a/frontend/translations/en.po +++ b/frontend/translations/en.po @@ -387,7 +387,7 @@ msgid "dashboard.export.title" msgstr "Export files" msgid "dashboard.fonts.deleted-placeholder" -msgstr "Font deleted" +msgstr "Missing font" #: src/app/main/ui/dashboard/fonts.cljs msgid "dashboard.fonts.dismiss-all" diff --git a/frontend/translations/es.po b/frontend/translations/es.po index a694a16f3..f201c633d 100644 --- a/frontend/translations/es.po +++ b/frontend/translations/es.po @@ -393,7 +393,7 @@ msgid "dashboard.export.title" msgstr "Exportar ficheros" msgid "dashboard.fonts.deleted-placeholder" -msgstr "Fuente eliminada" +msgstr "Fuente no encontrada" #: src/app/main/ui/dashboard/fonts.cljs msgid "dashboard.fonts.dismiss-all" From 73d42c03d5c6b2c90f91c98a533267c8845e74af Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Mon, 19 Jun 2023 07:38:05 +0200 Subject: [PATCH 16/19] :sparkles: Allow override the default nginx resolver using the PENPOT_INTERNAL_RESOLVER environment variable --- CHANGES.md | 8 ++++++++ docker/images/files/nginx-entrypoint.sh | 3 ++- docker/images/files/nginx.conf | 2 +- manage.sh | 6 +++--- version.txt | 2 +- 5 files changed, 15 insertions(+), 6 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 990a8b2c9..8aec40f77 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,12 @@ # CHANGELOG +## 1.18.6 (Unreleased) + +### :sparkles: Enhancements + +- Add the ability to overwrite internal resolver with `PENPOT_INTERNAL_RESOLVER` environment + variable [GH #3310](https://github.com/penpot/penpot/issues/3310) + ## 1.18.5 ## 1.18.4 @@ -40,6 +47,7 @@ ## 1.18.0 ### :sparkles: New features + - Adds more accessibility improvements in dashboard [Taiga #4577](https://tree.taiga.io/project/penpot/us/4577) - Adds paddings and gaps prediction on layout creation [Taiga #4838](https://tree.taiga.io/project/penpot/task/4838) - Add visual feedback when proportionally scaling text elements with **K** [Taiga #3415](https://tree.taiga.io/project/penpot/us/3415) diff --git a/docker/images/files/nginx-entrypoint.sh b/docker/images/files/nginx-entrypoint.sh index 00d8fddc9..c34245230 100644 --- a/docker/images/files/nginx-entrypoint.sh +++ b/docker/images/files/nginx-entrypoint.sh @@ -21,7 +21,8 @@ update_flags /var/www/app/js/config.js export PENPOT_BACKEND_URI=${PENPOT_BACKEND_URI:-http://penpot-backend:6060}; export PENPOT_EXPORTER_URI=${PENPOT_EXPORTER_URI:-http://penpot-exporter:6061}; +export PENPOT_INTERNAL_RESOLVER=${PENPOT_INTERNAL_RESOLVER:-127.0.0.11}; -envsubst "\$PENPOT_BACKEND_URI,\$PENPOT_EXPORTER_URI" < /etc/nginx/nginx.conf.template > /etc/nginx/nginx.conf +envsubst "\$PENPOT_BACKEND_URI,\$PENPOT_EXPORTER_URI,\$PENPOT_INTERNAL_RESOLVER" < /etc/nginx/nginx.conf.template > /etc/nginx/nginx.conf exec "$@"; diff --git a/docker/images/files/nginx.conf b/docker/images/files/nginx.conf index 34b01a2ef..35b06e731 100644 --- a/docker/images/files/nginx.conf +++ b/docker/images/files/nginx.conf @@ -38,7 +38,7 @@ http { gzip_types text/plain text/css text/javascript application/javascript application/json application/transit+json; - resolver 127.0.0.11; + resolver $PENPOT_INTERNAL_RESOLVER; map $http_upgrade $connection_upgrade { default upgrade; diff --git a/manage.sh b/manage.sh index 79d1e568f..d724fef53 100755 --- a/manage.sh +++ b/manage.sh @@ -181,9 +181,9 @@ function build-docker-images { pushd ./docker/images; - docker build -t penpotapp/frontend:$CURRENT_BRANCH -f Dockerfile.frontend .; - docker build -t penpotapp/backend:$CURRENT_BRANCH -f Dockerfile.backend .; - docker build -t penpotapp/exporter:$CURRENT_BRANCH -f Dockerfile.exporter .; + docker build -t penpotapp/frontend:$CURRENT_BRANCH -t penpotapp/frontend:latest -f Dockerfile.frontend .; + docker build -t penpotapp/backend:$CURRENT_BRANCH -t penpotapp/backend:latest -f Dockerfile.backend .; + docker build -t penpotapp/exporter:$CURRENT_BRANCH -t penpotapp/exporter:latest -f Dockerfile.exporter .; popd; } diff --git a/version.txt b/version.txt index 8e8b0a933..04a8bc26d 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.18.5 +1.18.6 From ecedf46c2a7de1fa965e35126eaf1b0260257a82 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Mon, 19 Jun 2023 10:27:43 +0200 Subject: [PATCH 17/19] :paperclip: Add missing changelog entries for the 1.18.5 --- CHANGES.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 8aec40f77..bfad13cef 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -9,6 +9,13 @@ ## 1.18.5 +### :bug: Bugs fixed + +- Fix add flow option in contextual menu for frames +- Fix issues related with invitations +- Fix problem with undefined gaps +- Add deleted fonts auto match mechanism + ## 1.18.4 ### :bug: Bugs fixed From d2bfd98a050c00c2b74c0d795764f46311d7ca82 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Tue, 20 Jun 2023 13:28:31 +0200 Subject: [PATCH 18/19] :bug: Fix right click options over layer or shape --- frontend/src/app/main/data/workspace.cljs | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/frontend/src/app/main/data/workspace.cljs b/frontend/src/app/main/data/workspace.cljs index 4ce4dc2ee..200b29695 100644 --- a/frontend/src/app/main/data/workspace.cljs +++ b/frontend/src/app/main/data/workspace.cljs @@ -1258,17 +1258,18 @@ not-group-like? (and (= (count selected) 1) (not (contains? #{:group :bool} (:type head)))) no-bool-shapes? (->> all-selected (some (comp #{:frame :text} :type)))] - - (rx/concat - (when (and (some? shape) (not (contains? selected (:id shape)))) - (rx/of (dws/select-shape (:id shape)))) - (rx/of (show-context-menu - (-> params - (assoc - :kind :shape - :disable-booleans? (or no-bool-shapes? not-group-like?) - :disable-flatten? no-bool-shapes? - :selected (conj selected (:id shape))))))))))) + + (if (and (some? shape) (not (contains? selected (:id shape)))) + (rx/concat + (rx/of (dws/select-shape (:id shape))) + (rx/of (show-shape-context-menu params))) + (rx/of (show-context-menu + (-> params + (assoc + :kind :shape + :disable-booleans? (or no-bool-shapes? not-group-like?) + :disable-flatten? no-bool-shapes? + :selected (conj selected (:id shape))))))))))) (defn show-page-item-context-menu [{:keys [position page] :as params}] From 9a45ce80a67aa16587c02c430a6c8f5019f5dcde Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Wed, 21 Jun 2023 07:36:42 +0200 Subject: [PATCH 19/19] :bug: Fix comments navigation --- CHANGES.md | 4 ++++ frontend/src/app/main/ui/workspace/comments.cljs | 1 + 2 files changed, 5 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index bfad13cef..21f6f99fa 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -2,6 +2,10 @@ ## 1.18.6 (Unreleased) +### :bug: Bugs fixed + +- Fix comments navigation from workspace [Taiga #5504](https://tree.taiga.io/project/penpot/issue/5504) + ### :sparkles: Enhancements - Add the ability to overwrite internal resolver with `PENPOT_INTERNAL_RESOLVER` environment diff --git a/frontend/src/app/main/ui/workspace/comments.cljs b/frontend/src/app/main/ui/workspace/comments.cljs index 3ff73b80d..02ac964b0 100644 --- a/frontend/src/app/main/ui/workspace/comments.cljs +++ b/frontend/src/app/main/ui/workspace/comments.cljs @@ -77,6 +77,7 @@ on-thread-click (mf/use-callback + (mf/deps page-id) (fn [thread] (when (not= page-id (:page-id thread)) (st/emit! (dw/go-to-page (:page-id thread))))