Merge remote-tracking branch 'origin/staging' into develop

This commit is contained in:
Andrey Antukh 2025-07-08 11:04:29 +02:00
commit e554b9fcb7
7 changed files with 25 additions and 62 deletions

View File

@ -21,7 +21,7 @@
- Fix display error message on register form [Taiga #11444](https://tree.taiga.io/project/penpot/issue/11444) - Fix display error message on register form [Taiga #11444](https://tree.taiga.io/project/penpot/issue/11444)
- Fix toggle focus mode did not restore viewport and selection upon exit [GitHub #6280](https://github.com/penpot/penpot/issues/6820) - Fix toggle focus mode did not restore viewport and selection upon exit [GitHub #6280](https://github.com/penpot/penpot/issues/6820)
## 2.8.0 (Next / Unreleased) ## 2.8.0
### :rocket: Epics and highlights ### :rocket: Epics and highlights

View File

@ -139,7 +139,8 @@
'~:status', CASE COALESCE(p.props->'~:subscription'->>'~:type', 'professional') '~:status', CASE COALESCE(p.props->'~:subscription'->>'~:type', 'professional')
WHEN 'professional' THEN 'active' WHEN 'professional' THEN 'active'
ELSE COALESCE(p.props->'~:subscription'->>'~:status', 'incomplete') ELSE COALESCE(p.props->'~:subscription'->>'~:status', 'incomplete')
END END,
'~:seats', p.props->'~:quantity'
) AS subscription ) AS subscription
FROM team_profile_rel AS tp FROM team_profile_rel AS tp
JOIN team AS t ON (t.id = tp.team_id) JOIN team AS t ON (t.id = tp.team_id)

View File

@ -1020,8 +1020,8 @@
[data _] [data _]
(let [update-colors (let [update-colors
(fn [colors] (fn [colors]
(into {} (filter #(-> % val types.color/valid-color?) colors)))] (into {} (filter #(-> % val types.color/valid-library-color?) colors)))]
(update data :colors update-colors))) (d/update-when data :colors update-colors)))
(defmethod migrate-data "legacy-52" (defmethod migrate-data "legacy-52"
[data _] [data _]
@ -1035,7 +1035,6 @@
(update data :pages-index d/update-vals update-page))) (update data :pages-index d/update-vals update-page)))
(defmethod migrate-data "legacy-53" (defmethod migrate-data "legacy-53"
[data _] [data _]
(migrate-data data "legacy-26")) (migrate-data data "legacy-26"))
@ -1518,6 +1517,17 @@
(d/update-when data :colors d/update-vals clear-color))) (d/update-when data :colors d/update-vals clear-color)))
(defmethod migrate-data "0009-clean-library-colors"
[data _]
(d/update-when data :colors
(fn [colors]
(reduce-kv (fn [colors id color]
(if (types.color/valid-library-color? color)
colors
(dissoc colors id)))
colors
colors))))
(defmethod migrate-data "0009-add-partial-text-touched-flags" (defmethod migrate-data "0009-add-partial-text-touched-flags"
[data _] [data _]
(letfn [(update-object [page object] (letfn [(update-object [page object]
@ -1607,4 +1617,5 @@
"0006-fix-old-texts-fills" "0006-fix-old-texts-fills"
"0007-clear-invalid-strokes-and-fills-v2" "0007-clear-invalid-strokes-and-fills-v2"
"0008-fix-library-colors-v4" "0008-fix-library-colors-v4"
"0009-clean-library-colors"
"0009-add-partial-text-touched-flags"])) "0009-add-partial-text-touched-flags"]))

View File

@ -117,6 +117,7 @@
[:ref-id {:optional true} ::sm/uuid] [:ref-id {:optional true} ::sm/uuid]
[:ref-file {:optional true} ::sm/uuid]]) [:ref-file {:optional true} ::sm/uuid]])
;; This schema represent an "applied color"
(def schema:color (def schema:color
[:and [:and
[:merge {:title "Color"} [:merge {:title "Color"}

View File

@ -20,7 +20,8 @@
[app.common.schema.generators :as sg] [app.common.schema.generators :as sg]
[app.common.svg.path :as svg.path] [app.common.svg.path :as svg.path]
[app.common.transit :as t] [app.common.transit :as t]
[app.common.types.path :as-alias path]) [app.common.types.path :as-alias path]
[cuerdas.core :as str])
(:import (:import
#?(:cljs [goog.string StringBuffer] #?(:cljs [goog.string StringBuffer]
:clj [java.nio ByteBuffer ByteOrder]))) :clj [java.nio ByteBuffer ByteOrder])))
@ -530,7 +531,9 @@
:decode/json (fn [s] :decode/json (fn [s]
(cond (cond
(string? s) (string? s)
(from-string s) (if (str/empty? s)
(from-plain [])
(from-string s))
(vector? s) (vector? s)
(let [decode-fn (deref decoder)] (let [decode-fn (deref decoder)]

View File

@ -15,7 +15,6 @@
[app.main.ui.inspect.attributes.blur :refer [blur-panel]] [app.main.ui.inspect.attributes.blur :refer [blur-panel]]
[app.main.ui.inspect.attributes.fill :refer [fill-panel]] [app.main.ui.inspect.attributes.fill :refer [fill-panel]]
[app.main.ui.inspect.attributes.geometry :refer [geometry-panel]] [app.main.ui.inspect.attributes.geometry :refer [geometry-panel]]
[app.main.ui.inspect.attributes.image :refer [image-panel]]
[app.main.ui.inspect.attributes.layout :refer [layout-panel]] [app.main.ui.inspect.attributes.layout :refer [layout-panel]]
[app.main.ui.inspect.attributes.layout-element :refer [layout-element-panel]] [app.main.ui.inspect.attributes.layout-element :refer [layout-element-panel]]
[app.main.ui.inspect.attributes.shadow :refer [shadow-panel]] [app.main.ui.inspect.attributes.shadow :refer [shadow-panel]]
@ -69,7 +68,6 @@
:stroke stroke-panel :stroke stroke-panel
:shadow shadow-panel :shadow shadow-panel
:blur blur-panel :blur blur-panel
:image image-panel
:text text-panel :text text-panel
:svg svg-panel :svg svg-panel
:variant variant-panel*) :variant variant-panel*)

View File

@ -1,51 +0,0 @@
;; 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.ui.inspect.attributes.image
(:require-macros [app.main.style :as stl])
(:require
[app.common.files.helpers :as cfh]
[app.common.media :as cm]
[app.config :as cf]
[app.main.ui.components.copy-button :refer [copy-button*]]
[app.util.code-gen.style-css :as css]
[app.util.i18n :refer [tr]]
[cuerdas.core :as str]
[rumext.v2 :as mf]))
(defn has-image? [shape]
(= (:type shape) :image))
(mf/defc image-panel
[{:keys [objects shapes]}]
(for [shape (filter cfh/image-shape? shapes)]
[:div {:class (stl/css :attributes-block)
:key (str "image-" (:id shape))}
[:div {:class (stl/css :image-wrapper)}
[:img {:src (cf/resolve-file-media (-> shape :metadata))}]]
[:div {:class (stl/css :image-row)}
[:div {:class (stl/css :global/attr-label)}
(tr "inspect.attributes.image.width")]
[:div {:class (stl/css :global/attr-value)}
[:> copy-button* {:data (css/get-css-property objects (:metadata shape) :width)}
[:div {:class (stl/css :button-children)} (css/get-css-value objects (:metadata shape) :width)]]]]
[:div {:class (stl/css :image-row)}
[:div {:class (stl/css :global/attr-label)}
(tr "inspect.attributes.image.height")]
[:div {:class (stl/css :global/attr-value)}
[:> copy-button* {:data (css/get-css-property objects (:metadata shape) :height)}
[:div {:class (stl/css :button-children)} (css/get-css-value objects (:metadata shape) :height)]]]]
(let [mtype (-> shape :metadata :mtype)
name (:name shape)
extension (cm/mtype->extension mtype)]
[:a {:class (stl/css :download-button)
:target "_blank"
:download (cond-> name extension (str/concat extension))
:href (cf/resolve-file-media (-> shape :metadata))}
(tr "inspect.attributes.image.download")])]))