diff --git a/CHANGES.md b/CHANGES.md index 028b7b55fe..1673428253 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -114,6 +114,7 @@ example. It's still usable as before, we just removed the example. - Fix unpublish library modal not scrolling a long file list [Taiga #12285](https://tree.taiga.io/project/penpot/issue/12285) - Fix incorrect interaction betwen hower and scroll on assets sidebar [Taiga #12389](https://tree.taiga.io/project/penpot/issue/12389) - Fix switch variants with paths [Taiga #12841](https://tree.taiga.io/project/penpot/issue/12841) +- Fix referencing typography tokens on font-family tokens [Taiga #12492](https://tree.taiga.io/project/penpot/issue/12492) ## 2.11.1 diff --git a/backend/resources/app/onboarding.edn b/backend/resources/app/onboarding.edn index 9efda9bb9f..78d5ddf4c1 100644 --- a/backend/resources/app/onboarding.edn +++ b/backend/resources/app/onboarding.edn @@ -3,7 +3,7 @@ :file-uri "https://github.com/penpot/penpot-files/raw/refs/heads/main/Tokens%20starter%20kit.penpot"} {:id "penpot-design-system" :name "Penpot Design System | Pencil" - :file-uri "https://github.com/penpot/penpot-files/raw/refs/heads/main/penpot-app.penpot"} + :file-uri "https://github.com/penpot/penpot-files/raw/refs/heads/main/Pencil-Penpot-Design-System.penpot"} {:id "wireframing-kit" :name "Wireframe library" :file-uri "https://github.com/penpot/penpot-files/raw/refs/heads/main/Wireframing%20kit%20v1.1.penpot"} diff --git a/exporter/package.json b/exporter/package.json index 7422f99a04..455f8df300 100644 --- a/exporter/package.json +++ b/exporter/package.json @@ -21,6 +21,7 @@ "raw-body": "^3.0.1", "source-map-support": "^0.5.21", "svgo": "penpot/svgo#v3.1", + "undici": "^7.16.0", "xml-js": "^1.6.11", "xregexp": "^5.1.2" }, diff --git a/exporter/scripts/wait-and-start.sh b/exporter/scripts/wait-and-start.sh index c3848228dc..f9638eb06d 100755 --- a/exporter/scripts/wait-and-start.sh +++ b/exporter/scripts/wait-and-start.sh @@ -7,5 +7,4 @@ bb -i '(babashka.wait/wait-for-port "localhost" 9630)'; bb -i '(babashka.wait/wait-for-path "target/app.js")'; sleep 2; -export NODE_TLS_REJECT_UNAUTHORIZED=0 exec node target/app.js diff --git a/exporter/src/app/handlers/export_shapes.cljs b/exporter/src/app/handlers/export_shapes.cljs index 82f1d78855..29a92df61e 100644 --- a/exporter/src/app/handlers/export_shapes.cljs +++ b/exporter/src/app/handlers/export_shapes.cljs @@ -107,12 +107,12 @@ :on-progress on-progress) append (fn [{:keys [filename path] :as resource}] - (rsc/add-to-zip! zip path (str/replace filename sanitize-file-regex "_"))) + (rsc/add-to-zip zip path (str/replace filename sanitize-file-regex "_"))) proc (->> exports (map (fn [export] (rd/render export append))) (p/all) - (p/fnly (fn [_] (.finalize zip))) + (p/mcat (fn [_] (rsc/close-zip zip))) (p/fmap (constantly resource)) (p/mcat (partial rsc/upload-resource auth-token)) (p/fmap (fn [resource] diff --git a/exporter/src/app/handlers/resources.cljs b/exporter/src/app/handlers/resources.cljs index 32c968c0fb..8b0a55ba35 100644 --- a/exporter/src/app/handlers/resources.cljs +++ b/exporter/src/app/handlers/resources.cljs @@ -11,6 +11,7 @@ ["node:fs" :as fs] ["node:fs/promises" :as fsp] ["node:path" :as path] + ["undici" :as http] [app.common.exceptions :as ex] [app.common.transit :as t] [app.common.uri :as u] @@ -53,30 +54,40 @@ (.pipe zip out) zip)) -(defn add-to-zip! +(defn add-to-zip [zip path name] (.file ^js zip path #js {:name name})) -(defn close-zip! +(defn close-zip [zip] - (.finalize ^js zip)) + (p/create (fn [resolve] + (.on ^js zip "close" resolve) + (.finalize ^js zip)))) (defn upload-resource [auth-token resource] (->> (fsp/readFile (:path resource)) (p/fmap (fn [buffer] + (js/console.log buffer) (new js/Blob #js [buffer] #js {:type (:mtype resource)}))) (p/mcat (fn [blob] - (let [fdata (new js/FormData) - uri (-> (cf/get :public-uri) - (u/ensure-path-slash) - (u/join "api/management/methods/upload-tempfile") - (str))] + (let [fdata (new http/FormData) + agent (new http/Agent #js {:connect #js {:rejectUnauthorized false}}) + headers #js {"X-Shared-Key" cf/management-key + "Authorization" (str "Bearer " auth-token)} + + request #js {:headers headers + :method "POST" + :body fdata + :dispatcher agent} + uri (-> (cf/get :public-uri) + (u/ensure-path-slash) + (u/join "api/management/methods/upload-tempfile") + (str))] + (.append fdata "content" blob (:filename resource)) - (js/fetch uri #js {:headers #js {"X-Shared-Key" cf/management-key - "Authorization" (str "Bearer " auth-token)} - :method "POST" - :body fdata})))) + (http/fetch uri request)))) + (p/mcat (fn [response] (if (not= (.-status response) 200) (ex/raise :type :internal diff --git a/exporter/src/app/util/shell.cljs b/exporter/src/app/util/shell.cljs index 717ca21073..d52b458501 100644 --- a/exporter/src/app/util/shell.cljs +++ b/exporter/src/app/util/shell.cljs @@ -75,7 +75,8 @@ [path] (->> (.stat fs/promises path) (p/fmap (fn [data] - {:created-at (inst-ms (.-ctime ^js data)) + {:path path + :created-at (inst-ms (.-ctime ^js data)) :size (.-size data)})) (p/merr (fn [_cause] (p/resolved nil))))) diff --git a/exporter/yarn.lock b/exporter/yarn.lock index 7d487e04a7..67c96e0b64 100644 --- a/exporter/yarn.lock +++ b/exporter/yarn.lock @@ -582,6 +582,7 @@ __metadata: raw-body: "npm:^3.0.1" source-map-support: "npm:^0.5.21" svgo: "penpot/svgo#v3.1" + undici: "npm:^7.16.0" ws: "npm:^8.18.3" xml-js: "npm:^1.6.11" xregexp: "npm:^5.1.2" @@ -1513,6 +1514,13 @@ __metadata: languageName: node linkType: hard +"undici@npm:^7.16.0": + version: 7.16.0 + resolution: "undici@npm:7.16.0" + checksum: 10c0/efd867792e9f233facf9efa0a087e2d9c3e4415c0b234061b9b40307ca4fa01d945fee4d43c7b564e1b80e0d519bcc682f9f6e0de13c717146c00a80e2f1fb0f + languageName: node + linkType: hard + "unique-filename@npm:^4.0.0": version: 4.0.0 resolution: "unique-filename@npm:4.0.0" 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 6e74d9708f..13c5ebaaba 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 @@ -68,7 +68,7 @@ (mf/defc color-token-row* {::mf/private true} - [{:keys [active-tokens color-token color on-swatch-click-token detach-token open-modal-from-token]}] + [{:keys [active-tokens applied-token-name color on-swatch-click-token detach-token open-modal-from-token]}] (let [;; `active-tokens` may be provided as a `delay` (lazy computation). ;; In that case we must deref it (`@active-tokens`) to force evaluation ;; and obtain the actual value. If it’s already realized (not a delay), @@ -77,21 +77,22 @@ @active-tokens active-tokens) - color-tokens (:color active-tokens) + active-color-tokens (:color active-tokens) - token (some #(when (= (:name %) color-token) %) color-tokens) + token (some #(when (= (:name %) applied-token-name) %) active-color-tokens) on-detach-token (mf/use-fn - (mf/deps detach-token token color-token) + (mf/deps detach-token token applied-token-name) (fn [] - (let [token (or token color-token)] + (let [token (or token applied-token-name)] (detach-token token)))) has-errors (some? (:errors token)) token-name (:name token) resolved (:resolved-value token) - not-active (and (some? active-tokens) (nil? token)) + not-active (and (empty? active-tokens) + (nil? token)) id (dm/str (:id token) "-name") swatch-tooltip-content (cond not-active @@ -109,7 +110,7 @@ #(mf/html [:div [:span (dm/str (tr "workspace.tokens.token-name") ": ")] - [:span {:class (stl/css :token-name-tooltip)} color-token]]))] + [:span {:class (stl/css :token-name-tooltip)} applied-token-name]]))] [:div {:class (stl/css :color-info)} [:div {:class (stl/css-case :token-color-wrapper true @@ -128,7 +129,7 @@ :class (stl/css :token-tooltip)} [:div {:class (stl/css :token-name) :aria-labelledby id} - (or token-name color-token)]] + (or token-name applied-token-name)]] [:div {:class (stl/css :token-actions)} [:> icon-button* {:variant "action" @@ -146,7 +147,11 @@ on-change on-reorder on-detach on-open on-close on-remove origin on-detach-token disable-drag on-focus on-blur select-only select-on-focus on-token-change applied-token]}] - (let [token-color (contains? cfg/flags :token-color) + (let [;; TODO: Remove this workaround fixing `get-attrs*` fn on sidebar/options/shapes/multiple.cljs + applied-token (if (= :multiple applied-token) + nil + applied-token) + token-color (contains? cfg/flags :token-color) libraries (mf/deref refs/files) color-without-hash (mf/use-memo @@ -177,7 +182,6 @@ (-> (deref active-tokens*) (select-keys (get tk/tokens-by-input origin)) (not-empty))))) - on-focus' (mf/use-fn (mf/deps on-focus) @@ -352,7 +356,7 @@ (cond (and token-color applied-token) [:> color-token-row* {:active-tokens tokens - :color-token applied-token + :applied-token-name applied-token :color (dissoc color :ref-id :ref-file) :on-swatch-click-token on-swatch-click-token :detach-token detach-token diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs index 1e3207d80e..4f9e167363 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs @@ -63,7 +63,8 @@ :data {:index index}) [nil nil]) - stroke-color-token (:stroke-color applied-tokens) + stroke-color-token + (:stroke-color applied-tokens) on-color-change-refactor (mf/use-fn