From cacaf2bf95ea94ae8b92097659c26edf197b1776 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Fri, 23 Jun 2023 14:40:13 +0200 Subject: [PATCH 1/4] :arrow_up: Update devenv dockerfile --- docker/devenv/Dockerfile | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/docker/devenv/Dockerfile b/docker/devenv/Dockerfile index 0e7d547258..a57957549a 100644 --- a/docker/devenv/Dockerfile +++ b/docker/devenv/Dockerfile @@ -3,10 +3,10 @@ LABEL maintainer="Andrey Antukh " ARG DEBIAN_FRONTEND=noninteractive -ENV NODE_VERSION=v18.15.0 \ - CLOJURE_VERSION=1.11.1.1257 \ - CLJKONDO_VERSION=2023.03.17 \ - BABASHKA_VERSION=1.3.176 \ +ENV NODE_VERSION=v18.16.1 \ + CLOJURE_VERSION=1.11.1.1347 \ + CLJKONDO_VERSION=2023.05.26 \ + BABASHKA_VERSION=1.3.181 \ LANG=en_US.UTF-8 \ LC_ALL=en_US.UTF-8 @@ -104,16 +104,12 @@ RUN set -eux; \ ARCH="$(dpkg --print-architecture)"; \ case "${ARCH}" in \ aarch64|arm64) \ - ESUM='1c4be9aa173cb0deb0d215643d9509c8900e5497290b29eee4bee335fa57984f'; \ - BINARY_URL='https://github.com/adoptium/temurin19-binaries/releases/download/jdk-19.0.2%2B7/OpenJDK19U-jdk_aarch64_linux_hotspot_19.0.2_7.tar.gz'; \ - ;; \ - armhf|armv7l) \ - ESUM='6a51cb3868b5a3b81848a0d276267230ff3f8639f20ba9ae9ef1d386440bf1fd'; \ - BINARY_URL='https://github.com/adoptium/temurin19-binaries/releases/download/jdk-19.0.2%2B7/OpenJDK19U-jdk_arm_linux_hotspot_19.0.2_7.tar.gz'; \ + ESUM='b16c0271899de1f0e277dc0398bfff11b54511765f104fa938929ac484dc926d'; \ + BINARY_URL='https://github.com/adoptium/temurin20-binaries/releases/download/jdk-20.0.1%2B9/OpenJDK20U-jdk_aarch64_linux_hotspot_20.0.1_9.tar.gz'; \ ;; \ amd64|x86_64) \ - ESUM='3a3ba7a3f8c3a5999e2c91ea1dca843435a0d1c43737bd2f6822b2f02fc52165'; \ - BINARY_URL='https://github.com/adoptium/temurin19-binaries/releases/download/jdk-19.0.2%2B7/OpenJDK19U-jdk_x64_linux_hotspot_19.0.2_7.tar.gz'; \ + ESUM='43ad054f135a7894dc87ad5d10ad45d8e82846186515892acdbc17c2c5cd27e4'; \ + BINARY_URL='https://github.com/adoptium/temurin20-binaries/releases/download/jdk-20.0.1%2B9/OpenJDK20U-jdk_x64_linux_hotspot_20.0.1_9.tar.gz'; \ ;; \ *) \ echo "Unsupported arch: ${ARCH}"; \ From 840801ea15d9ecf7cac43e7db499350ef4246836 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Fri, 23 Jun 2023 16:24:20 +0200 Subject: [PATCH 2/4] :bug: Don't update modified_at field on applying components migration --- backend/src/app/rpc/commands/files.clj | 3 --- 1 file changed, 3 deletions(-) diff --git a/backend/src/app/rpc/commands/files.clj b/backend/src/app/rpc/commands/files.clj index 2bcf8ddf00..bc34c69b71 100644 --- a/backend/src/app/rpc/commands/files.clj +++ b/backend/src/app/rpc/commands/files.clj @@ -273,16 +273,13 @@ (binding [pmap/*tracked* (atom {})] (let [data (ctf/migrate-to-components-v2 data) features (conj features "components/v2") - modified-at (dt/now) features' (db/create-array conn "text" features)] (db/update! conn :file {:data (blob/encode data) - :modified-at modified-at :features features'} {:id id}) (persist-pointers! conn id) (-> file - (assoc :modified-at modified-at) (assoc :features features) (assoc :data data)))) file)] From 7746649eb8b17d8b472551fbd52a2d496bb7b79c Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Fri, 23 Jun 2023 16:27:36 +0200 Subject: [PATCH 3/4] :bug: Fix minor issues with fonts caching --- frontend/src/app/main/fonts.cljs | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/frontend/src/app/main/fonts.cljs b/frontend/src/app/main/fonts.cljs index 0094c6be41..3bd444d32a 100644 --- a/frontend/src/app/main/fonts.cljs +++ b/frontend/src/app/main/fonts.cljs @@ -126,19 +126,23 @@ (assoc :path "/internal/gfonts/css") (assoc :query query))))) -(defn- fetch-and-process-gfont-css - [url] +(defn- process-gfont-css + [css] (let [base (dm/str (assoc cf/public-uri :path "/internal/gfonts/font"))] - (->> (http/send! {:method :get :uri url :mode :cors :response-type :text}) - (rx/map :body) - (rx/map #(str/replace % "https://fonts.gstatic.com/s" base))))) + (str/replace css "https://fonts.gstatic.com/s" base))) + +(defn- fetch-gfont-css + [url] + (->> (http/send! {:method :get :uri url :mode :cors :response-type :text}) + (rx/map :body))) (defmethod load-font :google [{:keys [id ::on-loaded] :as font}] (when (exists? js/window) (log/info :hint "load-font" :font-id id :backend "google") (let [url (generate-gfonts-url font)] - (->> (fetch-and-process-gfont-css url) + (->> (fetch-gfont-css url) + (rx/map process-gfont-css) (rx/tap #(on-loaded id)) (rx/subs (partial add-font-css! id))) nil))) @@ -257,7 +261,6 @@ "Given a font and the variant-id, retrieves the fontface CSS" [{:keys [font-id font-variant-id] :or {font-variant-id "regular"}}] - (let [{:keys [backend family] :as font} (get @fontsdb font-id)] (cond (nil? font) @@ -265,10 +268,9 @@ (= :google backend) (let [variant (get-variant font font-variant-id)] - (-> (generate-gfonts-url - {:family family - :variants [variant]}) - (http/fetch-text))) + (->> (rx/of (generate-gfonts-url {:family family :variants [variant]})) + (rx/mapcat fetch-gfont-css) + (rx/map process-gfont-css))) (= :custom backend) (let [variant (get-variant font font-variant-id) From 7977d75e3d3f066c3d1d48c081d506e69df321bb Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Fri, 23 Jun 2023 16:28:11 +0200 Subject: [PATCH 4/4] :sparkles: Reduce the dashboard thumbnail size --- frontend/src/app/main/thumbnail_renderer.cljs | 4 ++-- frontend/src/app/main/ui/dashboard/grid.cljs | 4 +++- frontend/src/app/thumbnail_renderer.cljs | 13 +++++++------ frontend/src/app/util/webapi.cljs | 10 ++++++---- 4 files changed, 18 insertions(+), 13 deletions(-) diff --git a/frontend/src/app/main/thumbnail_renderer.cljs b/frontend/src/app/main/thumbnail_renderer.cljs index 54c668af77..7680d4f536 100644 --- a/frontend/src/app/main/thumbnail_renderer.cljs +++ b/frontend/src/app/main/thumbnail_renderer.cljs @@ -62,9 +62,9 @@ (defn render "Renders a thumbnail." - [{:keys [data styles] :as params}] + [{:keys [data styles width] :as params}] (let [id (dm/str (uuid/next)) - payload #js {:data data :styles styles} + payload #js {:data data :styles styles :width width} message #js {:id id :scope "penpot/thumbnail-renderer" :payload payload}] diff --git a/frontend/src/app/main/ui/dashboard/grid.cljs b/frontend/src/app/main/ui/dashboard/grid.cljs index 27fc812ada..4da4f7255c 100644 --- a/frontend/src/app/main/ui/dashboard/grid.cljs +++ b/frontend/src/app/main/ui/dashboard/grid.cljs @@ -62,7 +62,9 @@ (rx/mapcat (fn [{:keys [fonts] :as result}] (->> (fonts/render-font-styles fonts) (rx/map (fn [styles] - (assoc result :styles styles)))))) + (assoc result + :styles styles + :width 250)))))) (rx/mapcat thr/render) (rx/mapcat (partial persist-thumbnail file-id revn))))) diff --git a/frontend/src/app/thumbnail_renderer.cljs b/frontend/src/app/thumbnail_renderer.cljs index aa6dab25aa..3b09fcca39 100644 --- a/frontend/src/app/thumbnail_renderer.cljs +++ b/frontend/src/app/thumbnail_renderer.cljs @@ -40,7 +40,6 @@ (obj/set! image "onload" #(do (rx/push! subs image) (rx/end! subs))) - (obj/set! image "crossOrigin" "anonymous") (obj/set! image "onerror" #(rx/error! subs %)) (obj/set! image "onabort" #(rx/error! subs (ex/error :type :internal @@ -157,10 +156,10 @@ (defn- svg-prepare "Prepares an SVG for rendering (resolves images to Data URIs and adds intrinsic size)." - [data styles] + [data styles width] (let [svg (svg-parse data)] (->> (svg-resolve-all! svg styles) - (rx/map #(svg-set-intrinsic-size! % 300)) + (rx/map #(svg-set-intrinsic-size! % width)) (rx/map svg-stringify)))) (defn- bitmap->blob @@ -182,13 +181,15 @@ "Renders a thumbnail using it's SVG and returns an ArrayBuffer of the image." [payload] (let [data (unchecked-get payload "data") - styles (unchecked-get payload "styles")] - (->> (svg-prepare data styles) + styles (unchecked-get payload "styles") + width (d/nilv (unchecked-get payload "width") 300)] + (->> (svg-prepare data styles width) (rx/map #(wapi/create-blob % "image/svg+xml")) (rx/map wapi/create-uri) (rx/mapcat (fn [uri] (->> (create-image uri) - (rx/mapcat wapi/create-image-bitmap) + (rx/mapcat #(wapi/create-image-bitmap % #js {:resizeWidth width + :resizeQuality "medium"})) (rx/tap #(wapi/revoke-uri uri))))) (rx/mapcat bitmap->blob)))) diff --git a/frontend/src/app/util/webapi.cljs b/frontend/src/app/util/webapi.cljs index 96ca465bcf..183573c130 100644 --- a/frontend/src/app/util/webapi.cljs +++ b/frontend/src/app/util/webapi.cljs @@ -126,13 +126,15 @@ [clipboard-data] (when clipboard-data (let [file-list (-> (.-files ^js clipboard-data))] - (->> (range (.-length file-list)) - (map #(.item file-list %)) + (->> (range (.-length ^js file-list)) + (map #(.item ^js file-list %)) (filter #(str/starts-with? (.-type %) "image/")))))) (defn create-image-bitmap - [image] - (js/createImageBitmap image)) + ([image] + (js/createImageBitmap image)) + ([image options] + (js/createImageBitmap image options))) (defn request-fullscreen [el]