From 0548fdb43dda9f62d3f41bfc433b9484ecb3c56e Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 19 Oct 2022 23:22:25 +0200 Subject: [PATCH 1/6] :tada: Backport v5 blob format (lz4 framed, less gc) --- backend/src/app/util/blob.clj | 46 ++++++++++++++++++++++++++++------- 1 file changed, 37 insertions(+), 9 deletions(-) diff --git a/backend/src/app/util/blob.clj b/backend/src/app/util/blob.clj index bd24ca3d2..d74fb4dae 100644 --- a/backend/src/app/util/blob.clj +++ b/backend/src/app/util/blob.clj @@ -12,14 +12,18 @@ [app.config :as cf] [app.util.fressian :as fres]) (:import + com.github.luben.zstd.Zstd java.io.ByteArrayInputStream java.io.ByteArrayOutputStream java.io.DataInputStream java.io.DataOutputStream - com.github.luben.zstd.Zstd + java.io.InputStream + java.io.OutputStream + net.jpountz.lz4.LZ4Compressor net.jpountz.lz4.LZ4Factory net.jpountz.lz4.LZ4FastDecompressor - net.jpountz.lz4.LZ4Compressor)) + net.jpountz.lz4.LZ4FrameInputStream + net.jpountz.lz4.LZ4FrameOutputStream)) (set! *warn-on-reflection* true) @@ -28,9 +32,11 @@ (declare decode-v1) (declare decode-v3) (declare decode-v4) +(declare decode-v5) (declare encode-v1) (declare encode-v3) (declare encode-v4) +(declare encode-v5) (defn encode ([data] (encode data nil)) @@ -40,6 +46,7 @@ 1 (encode-v1 data) 3 (encode-v3 data) 4 (encode-v4 data) + 5 (encode-v5 data) (throw (ex-info "unsupported version" {:version version})))))) (defn decode @@ -53,6 +60,7 @@ 1 (decode-v1 data ulen) 3 (decode-v3 data ulen) 4 (decode-v4 data ulen) + 5 (decode-v5 data) (throw (ex-info "unsupported version" {:version version})))))) ;; --- IMPL @@ -108,15 +116,17 @@ dlen (alength ^bytes data) mlen (Zstd/compressBound dlen) cdata (byte-array mlen) - clen (Zstd/compressByteArray ^bytes cdata 0 mlen + cdlen (alength ^bytes cdata) + cmlen (Zstd/compressByteArray ^bytes cdata 0 mlen ^bytes data 0 dlen 0)] - (with-open [^ByteArrayOutputStream baos (ByteArrayOutputStream. (+ (alength cdata) 2 4)) - ^DataOutputStream dos (DataOutputStream. baos)] - (.writeShort dos (short 4)) ;; version number - (.writeInt dos (int dlen)) - (.write dos ^bytes cdata (int 0) clen) - (.toByteArray baos)))) + + (with-open [^ByteArrayOutputStream output (ByteArrayOutputStream. (+ cdlen 2 4))] + (with-open [^DataOutputStream output (DataOutputStream. output)] + (.writeShort output (short 4)) ;; version number + (.writeInt output (int dlen)) + (.write output ^bytes cdata (int 0) (int cmlen))) + (.toByteArray output)))) (defn- decode-v4 [^bytes cdata ^long ulen] @@ -124,3 +134,21 @@ (Zstd/decompressByteArray ^bytes udata 0 ulen ^bytes cdata 6 (- (alength cdata) 6)) (fres/decode udata))) + +(defn- encode-v5 + [data] + (with-open [^ByteArrayOutputStream output (ByteArrayOutputStream.)] + (with-open [^DataOutputStream output (DataOutputStream. output)] + (.writeShort output (short 5)) ;; version number + (.writeInt output (int -1)) + (with-open [^OutputStream output (LZ4FrameOutputStream. output)] + (-> (fres/writer output) + (fres/write! data)))) + (.toByteArray output))) + +(defn- decode-v5 + [^bytes cdata] + (with-open [^InputStream input (ByteArrayInputStream. cdata)] + (.skip input 6) + (with-open [^InputStream input (LZ4FrameInputStream. input)] + (-> input fres/reader fres/read!)))) From 2af28fef80917261ea620e4d78b5accae26c68b1 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Thu, 20 Oct 2022 00:06:50 +0200 Subject: [PATCH 2/6] :bug: Fix autodetect language issues --- CHANGES.md | 2 ++ frontend/src/app/util/i18n.cljs | 21 ++++++++++----------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 702ad177a..196fb3ecb 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -17,6 +17,8 @@ - Fix path nodes panel. "To curve" and "To corner" icons are active if node is already curved/cornered [Taiga #4371](https://tree.taiga.io/project/penpot/issue/4371) - Fix displaying comments settings are not applied via "Comments" menu drop-down on the top navbar on view mode [Taiga #4389](https://tree.taiga.io/project/penpot/issue/4389) - Fix bad behaviour on hovering and click nested artboards[Taiga #4018](https://tree.taiga.io/project/penpot/issue/4018) and [Taiga #4269](https://tree.taiga.io/project/penpot/us/4269) +- Fix lang autodetect issue [Taiga #4277](https://tree.taiga.io/project/penpot/issue/4277) + ## 1.16.0-beta diff --git a/frontend/src/app/util/i18n.cljs b/frontend/src/app/util/i18n.cljs index c031ee9ec..eaf898d1b 100644 --- a/frontend/src/app/util/i18n.cljs +++ b/frontend/src/app/util/i18n.cljs @@ -68,19 +68,22 @@ (defonce locale (l/atom (or (get @storage ::locale) (autodetect)))) -;; The translations `data` is a javascript object and should be treated -;; with `goog.object` namespace functions instead of a standart -;; clojure functions. This is for performance reasons because this -;; code is executed in the critical part (application bootstrap) and -;; used in many parts of the application. - (defn init! + "Initialize the i18n module with translations. + + The `data` is a javascript object for performance reasons. This code + is executed in the critical part (application bootstrap) and used in + many parts of the application." [data] (set! translations data)) (defn set-locale! [lname] - (if lname + (if (or (nil? lname) + (str/empty? lname)) + (let [lname (autodetect)] + (swap! storage dissoc ::locale) + (reset! locale lname)) (let [supported (into #{} (map :value supported-locales)) lname (loop [locales (seq (parse-locale lname))] (if-let [locale (first locales)] @@ -88,11 +91,7 @@ locale (recur (rest locales))) cfg/default-language))] - (swap! storage assoc ::locale lname) - (reset! locale lname)) - (let [lname (autodetect)] - (swap! storage dissoc ::locale) (reset! locale lname)))) (defn reset-locale From 2cd8b65a5ced7065c596f908a56252207264b83d Mon Sep 17 00:00:00 2001 From: Pablo Alba Date: Thu, 3 Nov 2022 07:37:02 +0100 Subject: [PATCH 3/6] :bug: Fix colorpicker does not close upon switching to Dashboard --- CHANGES.md | 4 ++-- frontend/src/app/main/ui/workspace/header.cljs | 11 ++++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 196fb3ecb..ef35fd381 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -16,9 +16,9 @@ - Fix join nodes icon is active when 2 already joined nodes are selected [Taiga #4370](https://tree.taiga.io/project/penpot/issue/4370) - Fix path nodes panel. "To curve" and "To corner" icons are active if node is already curved/cornered [Taiga #4371](https://tree.taiga.io/project/penpot/issue/4371) - Fix displaying comments settings are not applied via "Comments" menu drop-down on the top navbar on view mode [Taiga #4389](https://tree.taiga.io/project/penpot/issue/4389) -- Fix bad behaviour on hovering and click nested artboards[Taiga #4018](https://tree.taiga.io/project/penpot/issue/4018) and [Taiga #4269](https://tree.taiga.io/project/penpot/us/4269) +- Fix bad behaviour on hovering and click nested artboards [Taiga #4018](https://tree.taiga.io/project/penpot/issue/4018) and [Taiga #4269](https://tree.taiga.io/project/penpot/us/4269) - Fix lang autodetect issue [Taiga #4277](https://tree.taiga.io/project/penpot/issue/4277) - +- Fix colorpicker does not close upon switching to Dashboard [Taiga #4408](https://tree.taiga.io/project/penpot/issue/4408) ## 1.16.0-beta diff --git a/frontend/src/app/main/ui/workspace/header.cljs b/frontend/src/app/main/ui/workspace/header.cljs index 5c94db5a7..df3d1b0c6 100644 --- a/frontend/src/app/main/ui/workspace/header.cljs +++ b/frontend/src/app/main/ui/workspace/header.cljs @@ -13,6 +13,7 @@ [app.main.data.exports :as de] [app.main.data.modal :as modal] [app.main.data.workspace :as dw] + [app.main.data.workspace.colors :as dc] [app.main.data.workspace.libraries :as dwl] [app.main.data.workspace.shortcuts :as sc] [app.main.refs :as refs] @@ -434,10 +435,18 @@ zoom (mf/deref refs/selected-zoom) params {:page-id page-id :file-id (:id file) :section "interactions"} + close-modals + (mf/use-callback + (fn [] + (st/emit! (dc/stop-picker)) + (st/emit! (modal/hide!)))) + go-back (mf/use-callback (mf/deps project) - #(st/emit! (dw/go-to-dashboard project))) + (fn [] + (close-modals) + (st/emit! (dw/go-to-dashboard project)))) go-viewer (mf/use-callback From d5bb486de1766167ed94d21ac258ca20da0219ee Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Wed, 16 Nov 2022 07:31:50 +0100 Subject: [PATCH 4/6] :sparkles: Add extra info to add-asset-to-library event --- .../src/app/main/ui/workspace/sidebar/assets.cljs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/frontend/src/app/main/ui/workspace/sidebar/assets.cljs b/frontend/src/app/main/ui/workspace/sidebar/assets.cljs index f1b909d7f..8ddcd03c5 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/assets.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/assets.cljs @@ -899,7 +899,7 @@ :selected-graphics-paths selected-graphics-paths}]))])])) (mf/defc graphics-box - [{:keys [file-id local? objects listing-thumbs? open? open-groups selected-assets reverse-sort? + [{:keys [file-id project-id local? objects listing-thumbs? open? open-groups selected-assets reverse-sort? on-asset-click on-assets-delete on-clear-selection] :as props}] (let [input-ref (mf/use-ref nil) state (mf/use-state {:renaming nil @@ -919,6 +919,8 @@ groups (group-assets objects reverse-sort?) + team-id (mf/use-ctx ctx/current-team-id) + add-graphic (mf/use-fn (fn [] @@ -927,13 +929,16 @@ on-file-selected (mf/use-fn - (mf/deps file-id) + (mf/deps file-id project-id team-id) (fn [blobs] (let [params {:file-id file-id :blobs (seq blobs)}] (st/emit! (dwm/upload-media-asset params) (ptk/event ::ev/event {::ev/name "add-asset-to-library" - :asset-type "graphics"}))))) + :asset-type "graphics" + :file-id file-id + :project-id project-id + :team-id team-id}))))) on-delete (mf/use-fn @@ -2091,6 +2096,7 @@ (when show-graphics? [:& graphics-box {:file-id (:id file) + :project-id (:project-id file) :local? local? :objects media :listing-thumbs? listing-thumbs? From ff0b031c8bd58b40c7705b2afe8e03a276b5db05 Mon Sep 17 00:00:00 2001 From: Pablo Alba Date: Thu, 3 Nov 2022 07:37:02 +0100 Subject: [PATCH 5/6] :bug: Fix colorpicker does not close upon switching to Dashboard --- .../app/main/data/workspace/transforms.cljs | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/frontend/src/app/main/data/workspace/transforms.cljs b/frontend/src/app/main/data/workspace/transforms.cljs index 0842f1885..8f403ab2c 100644 --- a/frontend/src/app/main/data/workspace/transforms.cljs +++ b/frontend/src/app/main/data/workspace/transforms.cljs @@ -758,10 +758,34 @@ (keep lookup) (remove #(= (:frame-id %) frame-id))) + all-parents + (reduce (fn [res id] + (into res (cph/get-parent-ids objects id))) + (d/ordered-set) + ids) + + find-all-empty-parents + (fn recursive-find-empty-parents [empty-parents] + (let [all-ids (into empty-parents ids) + contains? (partial contains? all-ids) + xform (comp (map lookup) + (filter cph/group-shape?) + (remove #(->> (:shapes %) (remove contains?) seq)) + (map :id)) + parents (into #{} xform all-parents)] + (if (= empty-parents parents) + empty-parents + (recursive-find-empty-parents parents)))) + + empty-parents + ;; Any parent whose children are moved should be deleted + (into (d/ordered-set) (find-all-empty-parents #{})) + changes (-> (pcb/empty-changes it page-id) (pcb/with-objects objects) - (pcb/change-parent frame-id moving-shapes))] + (pcb/change-parent frame-id moving-shapes) + (pcb/remove-objects empty-parents))] (when-not (empty? changes) (rx/of (dch/commit-changes changes) From dbd8c12ac0bc00d6d4b0af8244bc3b6795c122b8 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Thu, 17 Nov 2022 12:14:40 +0100 Subject: [PATCH 6/6] :paperclip: Update changes and version files --- CHANGES.md | 2 ++ version.txt | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index ef35fd381..77605a861 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,7 @@ # CHANGELOG +## 1.16.2-beta + ## 1.16.1-beta ### :bug: Bugs fixed diff --git a/version.txt b/version.txt index 50696337d..00ff58a87 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.16.0-beta +1.16.1-beta