mirror of
https://github.com/penpot/penpot.git
synced 2026-04-25 11:18:36 +00:00
* ✨ Add read-only preview mode for saved versions (#7622) * 🔧 Address review feedback on version preview (#7622) * 🐛 Fix version preview for WASM renderer (#7622) * 🐛 Fix stylelint color-named and color-function-notation in preview banner (#7622) * 🐛 Fix invalid-arity call to initialize-workspace in exit-preview (#7622) * 🐛 Fix unclosed defn paren in exit-preview (#7622) * ♻️ Refactor version preview/restore flow Separate enter-preview and enter-restore flows with dedicated dialogs instead of a persistent banner. Removes preview-banner component in favor of inline actions dialog. Uses backup/restore pattern for exit-preview instead of full workspace reinitialization. Adds analytics events for preview/restore actions. Signed-off-by: Andrey Antukh <niwi@niwi.nz> * ⚡ Extract on-name-input-focus as namespace-level private function The callback had no dependencies on component-local state or props, making it a pure function that can be hoisted to a defn-. This avoids recreating the same callback identity on every render of version-entry*. * ⚡ Extract extract-id-from-event helper to deduplicate snapshot callbacks Three callbacks in snapshot-entry* shared the same DOM extraction logic (get current target, read data-id, parse UUID). Extracted into a private defn- to remove the duplication and simplify each callback. * ⚡ Extract pure state-update callbacks from versions-toolbox* to namespace level Eight callbacks that only emit fixed Potok events with no meaningful deps were hoisted out of the component as defn- functions: - on-create-version - on-edit-version - on-cancel-version-edition - on-rename-version - on-delete-version - on-pin-version - on-lock-version - on-unlock-version These no longer need mf/use-fn wrappers since namespace-level functions have stable identity across renders, avoiding unnecessary callback recreation on each render cycle. * ✨ Rename filter parameter to filter-value in on-change-filter to avoid core shadowing The parameter name 'filter' shadowed clojure.core/filter within the function scope. Renamed to 'filter-value' for clarity and to prevent potential bugs if core/filter were needed in future changes. * 🔧 Fix linter warnings and errors across version-related namespaces frontend/src/app/main/ui/workspace.cljs: - Remove unused requires: app.common.data, app.main.data.notifications, app.main.data.workspace.versions frontend/src/app/main/data/workspace/versions.cljs: - Remove unused require: app.common.uuid - Fix duplicate reify type: enter-restore used ::restore-version (same as the private restore-version fn), renamed to ::enter-restore - Remove unused bindings: state in enter-restore, team-id in exit-preview and restore-version-from-plugin --------- Signed-off-by: Andrey Antukh <niwi@niwi.nz> Signed-off-by: wdeveloper16 <wdeveloer16@protonmail.com> Co-authored-by: wdeveloper16 <wdeveloer16@protonmail.com> Co-authored-by: Andrey Antukh <niwi@niwi.nz>