From e4d18161176cd0beb13072821730b8967cd9def6 Mon Sep 17 00:00:00 2001
From: Andrey Antukh
Date: Mon, 7 Sep 2026 19:30:05 +0000
Subject: [PATCH 1/7] :arrow_up: Update pnpm to 12.3.4 across all workspaces
Run `corepack use pnpm@next-12` (resolved to 12.3.4) on every directory
with a package.json: the repo root, the 11 module workspaces, and all
submodules. Every packageManager field now carries the same pinned
version and hash; the root and backend move off 11.20.0.
Fix the composable-test-suite workspace config (esbuild allowBuilds
placeholder left by pnpm 12) so its install passes, and add the missing
packageManager fields to frontend/packages/ui and mcp/packages/plugin,
since corepack only updates existing fields.
Document the canonical update procedure in
.serena/memories/workflow/updating-pnpm.md.
AI-assisted-by: omen-alpha
---
.serena/memories/critical-info.md | 3 +
.serena/memories/workflow/updating-pnpm.md | 59 ++
backend/package.json | 2 +-
backend/pnpm-lock.yaml | 101 +++
common/package.json | 2 +-
common/pnpm-lock.yaml | 74 +-
docs/package.json | 2 +-
docs/pnpm-lock.yaml | 74 +-
exporter/package.json | 2 +-
exporter/pnpm-lock.yaml | 74 +-
frontend/package.json | 2 +-
frontend/packages/draft-js/package.json | 2 +-
frontend/packages/mousetrap/package.json | 2 +-
frontend/packages/tokenscript/package.json | 2 +-
frontend/packages/ui/package.json | 1 +
frontend/pnpm-lock.yaml | 74 +-
frontend/text-editor/package.json | 2 +-
library/package.json | 2 +-
library/pnpm-lock.yaml | 74 +-
mcp/package.json | 2 +-
mcp/packages/common/package.json | 2 +-
mcp/packages/plugin/package.json | 1 +
mcp/packages/server/package.json | 2 +-
mcp/pnpm-lock.yaml | 74 +-
media-processor/package.json | 2 +-
media-processor/pnpm-lock.yaml | 74 +-
package.json | 2 +-
.../apps/colors-to-tokens-plugin/package.json | 2 +-
.../apps/composable-test-suite/package.json | 2 +-
.../apps/composable-test-suite/pnpm-lock.yaml | 699 ++++++++++--------
.../composable-test-suite/pnpm-workspace.yaml | 4 +-
plugins/apps/contrast-plugin/package.json | 2 +-
.../apps/create-palette-plugin/package.json | 2 +-
plugins/apps/e2e/package.json | 2 +-
plugins/apps/example-styles/package.json | 2 +-
plugins/apps/icons-plugin/package.json | 2 +-
plugins/apps/lorem-ipsum-plugin/package.json | 2 +-
.../apps/plugin-api-test-suite/package.json | 2 +-
plugins/apps/poc-state-plugin/package.json | 2 +-
plugins/apps/poc-tokens-plugin/package.json | 2 +-
.../apps/rename-layers-plugin/package.json | 2 +-
plugins/apps/table-plugin/package.json | 2 +-
plugins/libs/plugin-types/package.json | 2 +-
plugins/libs/plugins-runtime/package.json | 2 +-
plugins/libs/plugins-styles/package.json | 2 +-
plugins/package.json | 2 +-
plugins/pnpm-lock.yaml | 74 +-
pnpm-lock.yaml | 101 +++
render-wasm/package.json | 2 +-
render-wasm/pnpm-lock.yaml | 74 +-
50 files changed, 1034 insertions(+), 667 deletions(-)
create mode 100644 .serena/memories/workflow/updating-pnpm.md
diff --git a/.serena/memories/critical-info.md b/.serena/memories/critical-info.md
index 9033a9e74a..f157ed47d6 100644
--- a/.serena/memories/critical-info.md
+++ b/.serena/memories/critical-info.md
@@ -14,6 +14,9 @@ You are working on the GitHub project `penpot/penpot`, a monorepo.
- Before `git commit` → `mem:workflow/creating-commits` (subject format, body, `AI-assisted-by: model-name` trailer)
- Before `gh issue create` → `mem:workflow/creating-issues` (title derivation, body template, labels, Issue Type)
- Before `gh pr create` / `gh pr edit` → `mem:workflow/creating-prs` (title format, body structure, "Note:" line)
+- Before a repo-wide pnpm version update → `mem:workflow/updating-pnpm` (12
+ workspace layout, `corepack use` sweep order, the stamp-missing-field and
+ ignored-builds gotchas, verification steps)
- **Never `git push`, force-push, or modify `git origin`** (or any other remote). The user pushes from their own shell; if a push is required, say so and wait. Never amend a commit that the user has already pushed unless explicitly asked.
- **Never edit `CHANGES.md` by hand.** The changelog is generated from GitHub milestones during the release process; update it only via the `update-changelog` skill flow or on explicit user request.
- You have access to the GitHub CLI `gh` or corresponding MCP tools.
diff --git a/.serena/memories/workflow/updating-pnpm.md b/.serena/memories/workflow/updating-pnpm.md
new file mode 100644
index 0000000000..013a4be3eb
--- /dev/null
+++ b/.serena/memories/workflow/updating-pnpm.md
@@ -0,0 +1,59 @@
+# Updating pnpm Across All Workspaces
+
+Canonical procedure. Run it from the repo root with the log redirected to a
+file (never pipe tool output through filters).
+
+## Layout facts
+
+- The repo has 12 pnpm workspaces, each with its own `pnpm-workspace.yaml`
+ and `pnpm-lock.yaml`: the repo root plus `backend`, `common`, `docs`,
+ `exporter`, `frontend`, `library`, `mcp`, `media-processor`, `plugins`,
+ `render-wasm`, and `plugins/apps/composable-test-suite`.
+- Every `package.json` (about 35 of them) must carry a `packageManager` field
+ with the identical `pnpm@+sha512.` value. Do not let them drift.
+- CI pins no pnpm version; workflows rely on corepack reading
+ `packageManager`. Fixing the fields fixes CI.
+
+## Procedure
+
+1. Resolve the target tag first and note the version. Example:
+ `npm view pnpm dist-tags --json` for `next-12` (latest 12.x). The tag
+ moves over time; always re-check.
+2. List every directory with a `package.json`, excluding `node_modules`
+ (`fd -H -t f package.json -E node_modules`). This list is the work set;
+ do not maintain a hand-written list.
+3. Run `corepack use pnpm@` in workspace roots first, then members.
+ `corepack use` stamps `packageManager` in the nearest package.json and
+ runs an install. Member runs repeat the workspace install; after the root
+ run they are quick no-ops.
+4. If a run fails, fix the cause (see gotchas) and re-run that directory.
+
+## Gotchas
+
+- `corepack use` only updates an existing `packageManager` field. If a
+ package.json lacks the field, corepack walks up to the nearest ancestor
+ that has one and stamps that file instead; the member stays unstamped.
+ After the sweep, assert every package.json carries the field. For a
+ missing one, insert the identical `pnpm@+sha512.` string,
+ then re-run `corepack use pnpm@` in that directory.
+- A workspace may fail with `ERR_PNPM_IGNORED_BUILDS`, and pnpm then writes
+ a placeholder scaffold into its `pnpm-workspace.yaml`:
+ `allowBuilds: esbuild: set this to true or false` plus
+ `ignoredBuiltDependencies`. Repo convention is `allowBuilds: esbuild: true`.
+ Replace the placeholder and drop the `ignoredBuiltDependencies` entry,
+ then re-run.
+- `plugins/apps/composable-test-suite` is both a member of the `plugins`
+ workspace and its own workspace root: pnpm picks the nearest
+ `pnpm-workspace.yaml` walking up, so commands run inside it use its own
+ workspace config and lockfile.
+- Expect metadata-only lockfile diffs when only the pnpm version moves:
+ the pnpm self-reference entries, plus a new `packageManagerDependencies`
+ section in lockfiles last written by older pnpm. Large diffs mean
+ re-resolution; inspect them before accepting.
+
+## Verification
+
+- Every `packageManager` field is byte-identical (same version and hash).
+- `pnpm --version` in each of the 12 workspaces prints the target version.
+- `pnpm install --frozen-lockfile` succeeds in each of the 12 workspaces.
+- `git diff` on lockfiles matches the expectations above.
diff --git a/backend/package.json b/backend/package.json
index c6baf43f73..f29469a28e 100644
--- a/backend/package.json
+++ b/backend/package.json
@@ -4,7 +4,7 @@
"license": "MPL-2.0",
"author": "Kaleidos INC Sucursal en España SL",
"private": true,
- "packageManager": "pnpm@11.20.0+sha512.9a6f330a95b66446ea088faf1521405a8a01f07fde7124cc9958dfed52d4bb436737e65b08f85f37b46fcba375092558ac51262b816844b22f63406ed166bfee",
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457",
"repository": {
"type": "git",
"url": "https://github.com/penpot/penpot"
diff --git a/backend/pnpm-lock.yaml b/backend/pnpm-lock.yaml
index a0b16465e9..dfe9e50563 100644
--- a/backend/pnpm-lock.yaml
+++ b/backend/pnpm-lock.yaml
@@ -1,3 +1,104 @@
+---
+lockfileVersion: '9.0'
+
+importers:
+
+ .:
+ configDependencies: {}
+ packageManagerDependencies:
+ pnpm:
+ specifier: 12.3.4
+ version: 12.3.4
+
+packages:
+
+ '@pnpm/exe.darwin-arm64@12.3.4':
+ resolution: {integrity: sha512-PAyUol8T1+/+ViOiXAt51ECA+QnfXCqz6foL4bW+LsoX0NcVd5XVEM2mRQu+LV4oc7uRz9zf9U0P+XFfuQeDAw==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@pnpm/exe.darwin-x64@12.3.4':
+ resolution: {integrity: sha512-fxP9JCk0Cdye+ePuj+GJJLMUMTqHGWRdb1dtv4How876uQ2ehxvenpgiYAir/ceO9PsYUZkFTtyZdx+rRu5QOA==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@pnpm/exe.linux-arm64-musl@12.3.4':
+ resolution: {integrity: sha512-FBOt0/7ye6O6q4AllVV5QMviB6qE6fqkeczV/+MDWQsmo+QJrlfsh6X7CpH/tClVpBZEyIbjpUoT8bNhCYBxEg==}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@pnpm/exe.linux-arm64@12.3.4':
+ resolution: {integrity: sha512-t71AVA7LRqiKTyZ5xMYaZc2n5DfdpMbfokZuiIOXHBOM03ECnF0t4iYwaBDqJgVjlKYUOwaF/bRQajGNA4cJ4w==}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@pnpm/exe.linux-x64-musl@12.3.4':
+ resolution: {integrity: sha512-RPmk7Jb/aYaFvL2iyDN/AtMY+hUEsue732WmXpcuQ9tBpMnGyA5py7Z3+e+qmQaJ0zY/4ni9jJiyPBQHujmv6w==}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@pnpm/exe.linux-x64@12.3.4':
+ resolution: {integrity: sha512-2ZqOlSPkfwX1h5cR+FPiWf8+F+2hZT/3TvhUK5sigHqwaQCIiq8R7CGxhndKs63JtcLi2a1Qpo+wX/EoyfjyJQ==}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@pnpm/exe.win32-arm64@12.3.4':
+ resolution: {integrity: sha512-ANyrHqyqco6SXBysUTRF74itDyyraea7IbFsKFdNXTjcFnfycTDx37EwuhdpPYFNSIh2JhUG4fByclsRfiHX7w==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@pnpm/exe.win32-x64@12.3.4':
+ resolution: {integrity: sha512-WH/KqBPY/hq2Tb7SgQltEZytimcjgKRaCRL/aM9CI0c67iKc5TVmHUhIiL3Ux9FB4bWn36i6XewUcScQI+zG8w==}
+ cpu: [x64]
+ os: [win32]
+
+ pnpm@12.3.4:
+ resolution: {integrity: sha512-lhqkH7B32joEpEHZ+OFevAyW2o73ELLrZ7+e58sGEOq9SPH9hfUc/+c4RnhfoPh8VqOocqHYk/hEZ0G1zORUVw==}
+ engines: {node: '>=18.*'}
+ hasBin: true
+
+snapshots:
+
+ '@pnpm/exe.darwin-arm64@12.3.4':
+ optional: true
+
+ '@pnpm/exe.darwin-x64@12.3.4':
+ optional: true
+
+ '@pnpm/exe.linux-arm64-musl@12.3.4':
+ optional: true
+
+ '@pnpm/exe.linux-arm64@12.3.4':
+ optional: true
+
+ '@pnpm/exe.linux-x64-musl@12.3.4':
+ optional: true
+
+ '@pnpm/exe.linux-x64@12.3.4':
+ optional: true
+
+ '@pnpm/exe.win32-arm64@12.3.4':
+ optional: true
+
+ '@pnpm/exe.win32-x64@12.3.4':
+ optional: true
+
+ pnpm@12.3.4:
+ optionalDependencies:
+ '@pnpm/exe.darwin-arm64': 12.3.4
+ '@pnpm/exe.darwin-x64': 12.3.4
+ '@pnpm/exe.linux-arm64': 12.3.4
+ '@pnpm/exe.linux-arm64-musl': 12.3.4
+ '@pnpm/exe.linux-x64': 12.3.4
+ '@pnpm/exe.linux-x64-musl': 12.3.4
+ '@pnpm/exe.win32-arm64': 12.3.4
+ '@pnpm/exe.win32-x64': 12.3.4
+
+---
lockfileVersion: '9.0'
settings:
diff --git a/common/package.json b/common/package.json
index acc9432642..4269da7ba6 100644
--- a/common/package.json
+++ b/common/package.json
@@ -4,7 +4,7 @@
"license": "MPL-2.0",
"author": "Kaleidos INC Sucursal en España SL",
"private": true,
- "packageManager": "pnpm@12.0.0+sha512.9e2e3dc3911995868dc94b8175c217c27e95408fa03b4a22749778f2b34f773b77cdd3b39ede8171b22fcd53be6a35342e9fac9948a68ef58df6488ce89a7e67",
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457",
"type": "module",
"repository": {
"type": "git",
diff --git a/common/pnpm-lock.yaml b/common/pnpm-lock.yaml
index 77f173a685..ef70c46056 100644
--- a/common/pnpm-lock.yaml
+++ b/common/pnpm-lock.yaml
@@ -7,96 +7,96 @@ importers:
configDependencies: {}
packageManagerDependencies:
pnpm:
- specifier: 12.0.0
- version: 12.0.0
+ specifier: 12.3.4
+ version: 12.3.4
packages:
- '@pnpm/exe.darwin-arm64@12.0.0':
- resolution: {integrity: sha512-sqeoPfVMIfQhbwzDrKraXY2ynyuWClFqzvfImzAS/yczEru1m5SGvQ9kgFPDvQzJZ9AetedgJeDZC6qYvH8/tQ==}
+ '@pnpm/exe.darwin-arm64@12.3.4':
+ resolution: {integrity: sha512-PAyUol8T1+/+ViOiXAt51ECA+QnfXCqz6foL4bW+LsoX0NcVd5XVEM2mRQu+LV4oc7uRz9zf9U0P+XFfuQeDAw==}
cpu: [arm64]
os: [darwin]
- '@pnpm/exe.darwin-x64@12.0.0':
- resolution: {integrity: sha512-Quc3J6c9cGTy+LDgz1cLVgCNOU9IERuyAlDoEj0DCilKqvo50Jx1GV8k74iwn4J9fFSKkm8JrwNvtTDj3uWnUA==}
+ '@pnpm/exe.darwin-x64@12.3.4':
+ resolution: {integrity: sha512-fxP9JCk0Cdye+ePuj+GJJLMUMTqHGWRdb1dtv4How876uQ2ehxvenpgiYAir/ceO9PsYUZkFTtyZdx+rRu5QOA==}
cpu: [x64]
os: [darwin]
- '@pnpm/exe.linux-arm64-musl@12.0.0':
- resolution: {integrity: sha512-EVWd3OTmgsMFhXx69b5JxIzoabG9Ma7m4OeTaf0ZKBzMnfYi8u21NDQo92ToMrdYL5dYDDCHsyYIjXzk+d0HhA==}
+ '@pnpm/exe.linux-arm64-musl@12.3.4':
+ resolution: {integrity: sha512-FBOt0/7ye6O6q4AllVV5QMviB6qE6fqkeczV/+MDWQsmo+QJrlfsh6X7CpH/tClVpBZEyIbjpUoT8bNhCYBxEg==}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@pnpm/exe.linux-arm64@12.0.0':
- resolution: {integrity: sha512-cXHHW8M4rAPsYNkKZO9WVcpLLK55i9EaIsZPfIqUuY2eopd5LqnFyBge54HCh1GC0yCX8ySn0hYIi+4OyAEoDg==}
+ '@pnpm/exe.linux-arm64@12.3.4':
+ resolution: {integrity: sha512-t71AVA7LRqiKTyZ5xMYaZc2n5DfdpMbfokZuiIOXHBOM03ECnF0t4iYwaBDqJgVjlKYUOwaF/bRQajGNA4cJ4w==}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@pnpm/exe.linux-x64-musl@12.0.0':
- resolution: {integrity: sha512-UcXwMdFjly0mpddkGigHKTxe27IMv2fUK4IWW/MHmJ3yMguxXmkwNlEI4aE+G1HO2TLo20uNEUWD4ymLe/DaCQ==}
+ '@pnpm/exe.linux-x64-musl@12.3.4':
+ resolution: {integrity: sha512-RPmk7Jb/aYaFvL2iyDN/AtMY+hUEsue732WmXpcuQ9tBpMnGyA5py7Z3+e+qmQaJ0zY/4ni9jJiyPBQHujmv6w==}
cpu: [x64]
os: [linux]
libc: [musl]
- '@pnpm/exe.linux-x64@12.0.0':
- resolution: {integrity: sha512-6Rsl+zEWMOmus7v7/9J3OE8EMvHyNAfxYmDfmhQG4J0985OuT3G3Ho9NSGHjkBn4aU4bgklWifRhe1HX8dUSyw==}
+ '@pnpm/exe.linux-x64@12.3.4':
+ resolution: {integrity: sha512-2ZqOlSPkfwX1h5cR+FPiWf8+F+2hZT/3TvhUK5sigHqwaQCIiq8R7CGxhndKs63JtcLi2a1Qpo+wX/EoyfjyJQ==}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@pnpm/exe.win32-arm64@12.0.0':
- resolution: {integrity: sha512-O5F76A4oVFrpDGdFxEszRIThOSBfjHdH5c006gR+7UTCfiXrukr1XfqPungUI1DXcSR5gb9jBsPQqQZOAoOOxw==}
+ '@pnpm/exe.win32-arm64@12.3.4':
+ resolution: {integrity: sha512-ANyrHqyqco6SXBysUTRF74itDyyraea7IbFsKFdNXTjcFnfycTDx37EwuhdpPYFNSIh2JhUG4fByclsRfiHX7w==}
cpu: [arm64]
os: [win32]
- '@pnpm/exe.win32-x64@12.0.0':
- resolution: {integrity: sha512-5dKFajIEWJ1ai+KHXFJvskY6vchbunmLwSUV2ywbLymcmJjfY5XJVpgzPCyIoVCMVG0zHorr66+hM8h8b3aRfQ==}
+ '@pnpm/exe.win32-x64@12.3.4':
+ resolution: {integrity: sha512-WH/KqBPY/hq2Tb7SgQltEZytimcjgKRaCRL/aM9CI0c67iKc5TVmHUhIiL3Ux9FB4bWn36i6XewUcScQI+zG8w==}
cpu: [x64]
os: [win32]
- pnpm@12.0.0:
- resolution: {integrity: sha512-ni49w5EZlYaNyUuBdcIXwn6VQI+gO0oidJd48rNPdzt3zdOznt6BcbIvzVO+ajU0Lp+smUimjvWN9kiM6Jp+Zw==}
+ pnpm@12.3.4:
+ resolution: {integrity: sha512-lhqkH7B32joEpEHZ+OFevAyW2o73ELLrZ7+e58sGEOq9SPH9hfUc/+c4RnhfoPh8VqOocqHYk/hEZ0G1zORUVw==}
engines: {node: '>=18.*'}
hasBin: true
snapshots:
- '@pnpm/exe.darwin-arm64@12.0.0':
+ '@pnpm/exe.darwin-arm64@12.3.4':
optional: true
- '@pnpm/exe.darwin-x64@12.0.0':
+ '@pnpm/exe.darwin-x64@12.3.4':
optional: true
- '@pnpm/exe.linux-arm64-musl@12.0.0':
+ '@pnpm/exe.linux-arm64-musl@12.3.4':
optional: true
- '@pnpm/exe.linux-arm64@12.0.0':
+ '@pnpm/exe.linux-arm64@12.3.4':
optional: true
- '@pnpm/exe.linux-x64-musl@12.0.0':
+ '@pnpm/exe.linux-x64-musl@12.3.4':
optional: true
- '@pnpm/exe.linux-x64@12.0.0':
+ '@pnpm/exe.linux-x64@12.3.4':
optional: true
- '@pnpm/exe.win32-arm64@12.0.0':
+ '@pnpm/exe.win32-arm64@12.3.4':
optional: true
- '@pnpm/exe.win32-x64@12.0.0':
+ '@pnpm/exe.win32-x64@12.3.4':
optional: true
- pnpm@12.0.0:
+ pnpm@12.3.4:
optionalDependencies:
- '@pnpm/exe.darwin-arm64': 12.0.0
- '@pnpm/exe.darwin-x64': 12.0.0
- '@pnpm/exe.linux-arm64': 12.0.0
- '@pnpm/exe.linux-arm64-musl': 12.0.0
- '@pnpm/exe.linux-x64': 12.0.0
- '@pnpm/exe.linux-x64-musl': 12.0.0
- '@pnpm/exe.win32-arm64': 12.0.0
- '@pnpm/exe.win32-x64': 12.0.0
+ '@pnpm/exe.darwin-arm64': 12.3.4
+ '@pnpm/exe.darwin-x64': 12.3.4
+ '@pnpm/exe.linux-arm64': 12.3.4
+ '@pnpm/exe.linux-arm64-musl': 12.3.4
+ '@pnpm/exe.linux-x64': 12.3.4
+ '@pnpm/exe.linux-x64-musl': 12.3.4
+ '@pnpm/exe.win32-arm64': 12.3.4
+ '@pnpm/exe.win32-x64': 12.3.4
---
lockfileVersion: '9.0'
diff --git a/docs/package.json b/docs/package.json
index 7d498ee015..208cd18089 100644
--- a/docs/package.json
+++ b/docs/package.json
@@ -39,5 +39,5 @@
"markdown-it-anchor": "^9.2.1",
"markdown-it-plantuml": "^1.4.1"
},
- "packageManager": "pnpm@12.0.0+sha512.9e2e3dc3911995868dc94b8175c217c27e95408fa03b4a22749778f2b34f773b77cdd3b39ede8171b22fcd53be6a35342e9fac9948a68ef58df6488ce89a7e67"
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457"
}
diff --git a/docs/pnpm-lock.yaml b/docs/pnpm-lock.yaml
index 5938203566..3527b910e8 100644
--- a/docs/pnpm-lock.yaml
+++ b/docs/pnpm-lock.yaml
@@ -7,96 +7,96 @@ importers:
configDependencies: {}
packageManagerDependencies:
pnpm:
- specifier: 12.0.0
- version: 12.0.0
+ specifier: 12.3.4
+ version: 12.3.4
packages:
- '@pnpm/exe.darwin-arm64@12.0.0':
- resolution: {integrity: sha512-sqeoPfVMIfQhbwzDrKraXY2ynyuWClFqzvfImzAS/yczEru1m5SGvQ9kgFPDvQzJZ9AetedgJeDZC6qYvH8/tQ==}
+ '@pnpm/exe.darwin-arm64@12.3.4':
+ resolution: {integrity: sha512-PAyUol8T1+/+ViOiXAt51ECA+QnfXCqz6foL4bW+LsoX0NcVd5XVEM2mRQu+LV4oc7uRz9zf9U0P+XFfuQeDAw==}
cpu: [arm64]
os: [darwin]
- '@pnpm/exe.darwin-x64@12.0.0':
- resolution: {integrity: sha512-Quc3J6c9cGTy+LDgz1cLVgCNOU9IERuyAlDoEj0DCilKqvo50Jx1GV8k74iwn4J9fFSKkm8JrwNvtTDj3uWnUA==}
+ '@pnpm/exe.darwin-x64@12.3.4':
+ resolution: {integrity: sha512-fxP9JCk0Cdye+ePuj+GJJLMUMTqHGWRdb1dtv4How876uQ2ehxvenpgiYAir/ceO9PsYUZkFTtyZdx+rRu5QOA==}
cpu: [x64]
os: [darwin]
- '@pnpm/exe.linux-arm64-musl@12.0.0':
- resolution: {integrity: sha512-EVWd3OTmgsMFhXx69b5JxIzoabG9Ma7m4OeTaf0ZKBzMnfYi8u21NDQo92ToMrdYL5dYDDCHsyYIjXzk+d0HhA==}
+ '@pnpm/exe.linux-arm64-musl@12.3.4':
+ resolution: {integrity: sha512-FBOt0/7ye6O6q4AllVV5QMviB6qE6fqkeczV/+MDWQsmo+QJrlfsh6X7CpH/tClVpBZEyIbjpUoT8bNhCYBxEg==}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@pnpm/exe.linux-arm64@12.0.0':
- resolution: {integrity: sha512-cXHHW8M4rAPsYNkKZO9WVcpLLK55i9EaIsZPfIqUuY2eopd5LqnFyBge54HCh1GC0yCX8ySn0hYIi+4OyAEoDg==}
+ '@pnpm/exe.linux-arm64@12.3.4':
+ resolution: {integrity: sha512-t71AVA7LRqiKTyZ5xMYaZc2n5DfdpMbfokZuiIOXHBOM03ECnF0t4iYwaBDqJgVjlKYUOwaF/bRQajGNA4cJ4w==}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@pnpm/exe.linux-x64-musl@12.0.0':
- resolution: {integrity: sha512-UcXwMdFjly0mpddkGigHKTxe27IMv2fUK4IWW/MHmJ3yMguxXmkwNlEI4aE+G1HO2TLo20uNEUWD4ymLe/DaCQ==}
+ '@pnpm/exe.linux-x64-musl@12.3.4':
+ resolution: {integrity: sha512-RPmk7Jb/aYaFvL2iyDN/AtMY+hUEsue732WmXpcuQ9tBpMnGyA5py7Z3+e+qmQaJ0zY/4ni9jJiyPBQHujmv6w==}
cpu: [x64]
os: [linux]
libc: [musl]
- '@pnpm/exe.linux-x64@12.0.0':
- resolution: {integrity: sha512-6Rsl+zEWMOmus7v7/9J3OE8EMvHyNAfxYmDfmhQG4J0985OuT3G3Ho9NSGHjkBn4aU4bgklWifRhe1HX8dUSyw==}
+ '@pnpm/exe.linux-x64@12.3.4':
+ resolution: {integrity: sha512-2ZqOlSPkfwX1h5cR+FPiWf8+F+2hZT/3TvhUK5sigHqwaQCIiq8R7CGxhndKs63JtcLi2a1Qpo+wX/EoyfjyJQ==}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@pnpm/exe.win32-arm64@12.0.0':
- resolution: {integrity: sha512-O5F76A4oVFrpDGdFxEszRIThOSBfjHdH5c006gR+7UTCfiXrukr1XfqPungUI1DXcSR5gb9jBsPQqQZOAoOOxw==}
+ '@pnpm/exe.win32-arm64@12.3.4':
+ resolution: {integrity: sha512-ANyrHqyqco6SXBysUTRF74itDyyraea7IbFsKFdNXTjcFnfycTDx37EwuhdpPYFNSIh2JhUG4fByclsRfiHX7w==}
cpu: [arm64]
os: [win32]
- '@pnpm/exe.win32-x64@12.0.0':
- resolution: {integrity: sha512-5dKFajIEWJ1ai+KHXFJvskY6vchbunmLwSUV2ywbLymcmJjfY5XJVpgzPCyIoVCMVG0zHorr66+hM8h8b3aRfQ==}
+ '@pnpm/exe.win32-x64@12.3.4':
+ resolution: {integrity: sha512-WH/KqBPY/hq2Tb7SgQltEZytimcjgKRaCRL/aM9CI0c67iKc5TVmHUhIiL3Ux9FB4bWn36i6XewUcScQI+zG8w==}
cpu: [x64]
os: [win32]
- pnpm@12.0.0:
- resolution: {integrity: sha512-ni49w5EZlYaNyUuBdcIXwn6VQI+gO0oidJd48rNPdzt3zdOznt6BcbIvzVO+ajU0Lp+smUimjvWN9kiM6Jp+Zw==}
+ pnpm@12.3.4:
+ resolution: {integrity: sha512-lhqkH7B32joEpEHZ+OFevAyW2o73ELLrZ7+e58sGEOq9SPH9hfUc/+c4RnhfoPh8VqOocqHYk/hEZ0G1zORUVw==}
engines: {node: '>=18.*'}
hasBin: true
snapshots:
- '@pnpm/exe.darwin-arm64@12.0.0':
+ '@pnpm/exe.darwin-arm64@12.3.4':
optional: true
- '@pnpm/exe.darwin-x64@12.0.0':
+ '@pnpm/exe.darwin-x64@12.3.4':
optional: true
- '@pnpm/exe.linux-arm64-musl@12.0.0':
+ '@pnpm/exe.linux-arm64-musl@12.3.4':
optional: true
- '@pnpm/exe.linux-arm64@12.0.0':
+ '@pnpm/exe.linux-arm64@12.3.4':
optional: true
- '@pnpm/exe.linux-x64-musl@12.0.0':
+ '@pnpm/exe.linux-x64-musl@12.3.4':
optional: true
- '@pnpm/exe.linux-x64@12.0.0':
+ '@pnpm/exe.linux-x64@12.3.4':
optional: true
- '@pnpm/exe.win32-arm64@12.0.0':
+ '@pnpm/exe.win32-arm64@12.3.4':
optional: true
- '@pnpm/exe.win32-x64@12.0.0':
+ '@pnpm/exe.win32-x64@12.3.4':
optional: true
- pnpm@12.0.0:
+ pnpm@12.3.4:
optionalDependencies:
- '@pnpm/exe.darwin-arm64': 12.0.0
- '@pnpm/exe.darwin-x64': 12.0.0
- '@pnpm/exe.linux-arm64': 12.0.0
- '@pnpm/exe.linux-arm64-musl': 12.0.0
- '@pnpm/exe.linux-x64': 12.0.0
- '@pnpm/exe.linux-x64-musl': 12.0.0
- '@pnpm/exe.win32-arm64': 12.0.0
- '@pnpm/exe.win32-x64': 12.0.0
+ '@pnpm/exe.darwin-arm64': 12.3.4
+ '@pnpm/exe.darwin-x64': 12.3.4
+ '@pnpm/exe.linux-arm64': 12.3.4
+ '@pnpm/exe.linux-arm64-musl': 12.3.4
+ '@pnpm/exe.linux-x64': 12.3.4
+ '@pnpm/exe.linux-x64-musl': 12.3.4
+ '@pnpm/exe.win32-arm64': 12.3.4
+ '@pnpm/exe.win32-x64': 12.3.4
---
lockfileVersion: '9.0'
diff --git a/exporter/package.json b/exporter/package.json
index 1937c23c0c..47429d2541 100644
--- a/exporter/package.json
+++ b/exporter/package.json
@@ -4,7 +4,7 @@
"license": "MPL-2.0",
"author": "Kaleidos INC Sucursal en España SL",
"private": true,
- "packageManager": "pnpm@12.0.0+sha512.9e2e3dc3911995868dc94b8175c217c27e95408fa03b4a22749778f2b34f773b77cdd3b39ede8171b22fcd53be6a35342e9fac9948a68ef58df6488ce89a7e67",
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457",
"repository": {
"type": "git",
"url": "https://github.com/penpot/penpot"
diff --git a/exporter/pnpm-lock.yaml b/exporter/pnpm-lock.yaml
index 02f1974302..660f44b821 100644
--- a/exporter/pnpm-lock.yaml
+++ b/exporter/pnpm-lock.yaml
@@ -7,96 +7,96 @@ importers:
configDependencies: {}
packageManagerDependencies:
pnpm:
- specifier: 12.0.0
- version: 12.0.0
+ specifier: 12.3.4
+ version: 12.3.4
packages:
- '@pnpm/exe.darwin-arm64@12.0.0':
- resolution: {integrity: sha512-sqeoPfVMIfQhbwzDrKraXY2ynyuWClFqzvfImzAS/yczEru1m5SGvQ9kgFPDvQzJZ9AetedgJeDZC6qYvH8/tQ==}
+ '@pnpm/exe.darwin-arm64@12.3.4':
+ resolution: {integrity: sha512-PAyUol8T1+/+ViOiXAt51ECA+QnfXCqz6foL4bW+LsoX0NcVd5XVEM2mRQu+LV4oc7uRz9zf9U0P+XFfuQeDAw==}
cpu: [arm64]
os: [darwin]
- '@pnpm/exe.darwin-x64@12.0.0':
- resolution: {integrity: sha512-Quc3J6c9cGTy+LDgz1cLVgCNOU9IERuyAlDoEj0DCilKqvo50Jx1GV8k74iwn4J9fFSKkm8JrwNvtTDj3uWnUA==}
+ '@pnpm/exe.darwin-x64@12.3.4':
+ resolution: {integrity: sha512-fxP9JCk0Cdye+ePuj+GJJLMUMTqHGWRdb1dtv4How876uQ2ehxvenpgiYAir/ceO9PsYUZkFTtyZdx+rRu5QOA==}
cpu: [x64]
os: [darwin]
- '@pnpm/exe.linux-arm64-musl@12.0.0':
- resolution: {integrity: sha512-EVWd3OTmgsMFhXx69b5JxIzoabG9Ma7m4OeTaf0ZKBzMnfYi8u21NDQo92ToMrdYL5dYDDCHsyYIjXzk+d0HhA==}
+ '@pnpm/exe.linux-arm64-musl@12.3.4':
+ resolution: {integrity: sha512-FBOt0/7ye6O6q4AllVV5QMviB6qE6fqkeczV/+MDWQsmo+QJrlfsh6X7CpH/tClVpBZEyIbjpUoT8bNhCYBxEg==}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@pnpm/exe.linux-arm64@12.0.0':
- resolution: {integrity: sha512-cXHHW8M4rAPsYNkKZO9WVcpLLK55i9EaIsZPfIqUuY2eopd5LqnFyBge54HCh1GC0yCX8ySn0hYIi+4OyAEoDg==}
+ '@pnpm/exe.linux-arm64@12.3.4':
+ resolution: {integrity: sha512-t71AVA7LRqiKTyZ5xMYaZc2n5DfdpMbfokZuiIOXHBOM03ECnF0t4iYwaBDqJgVjlKYUOwaF/bRQajGNA4cJ4w==}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@pnpm/exe.linux-x64-musl@12.0.0':
- resolution: {integrity: sha512-UcXwMdFjly0mpddkGigHKTxe27IMv2fUK4IWW/MHmJ3yMguxXmkwNlEI4aE+G1HO2TLo20uNEUWD4ymLe/DaCQ==}
+ '@pnpm/exe.linux-x64-musl@12.3.4':
+ resolution: {integrity: sha512-RPmk7Jb/aYaFvL2iyDN/AtMY+hUEsue732WmXpcuQ9tBpMnGyA5py7Z3+e+qmQaJ0zY/4ni9jJiyPBQHujmv6w==}
cpu: [x64]
os: [linux]
libc: [musl]
- '@pnpm/exe.linux-x64@12.0.0':
- resolution: {integrity: sha512-6Rsl+zEWMOmus7v7/9J3OE8EMvHyNAfxYmDfmhQG4J0985OuT3G3Ho9NSGHjkBn4aU4bgklWifRhe1HX8dUSyw==}
+ '@pnpm/exe.linux-x64@12.3.4':
+ resolution: {integrity: sha512-2ZqOlSPkfwX1h5cR+FPiWf8+F+2hZT/3TvhUK5sigHqwaQCIiq8R7CGxhndKs63JtcLi2a1Qpo+wX/EoyfjyJQ==}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@pnpm/exe.win32-arm64@12.0.0':
- resolution: {integrity: sha512-O5F76A4oVFrpDGdFxEszRIThOSBfjHdH5c006gR+7UTCfiXrukr1XfqPungUI1DXcSR5gb9jBsPQqQZOAoOOxw==}
+ '@pnpm/exe.win32-arm64@12.3.4':
+ resolution: {integrity: sha512-ANyrHqyqco6SXBysUTRF74itDyyraea7IbFsKFdNXTjcFnfycTDx37EwuhdpPYFNSIh2JhUG4fByclsRfiHX7w==}
cpu: [arm64]
os: [win32]
- '@pnpm/exe.win32-x64@12.0.0':
- resolution: {integrity: sha512-5dKFajIEWJ1ai+KHXFJvskY6vchbunmLwSUV2ywbLymcmJjfY5XJVpgzPCyIoVCMVG0zHorr66+hM8h8b3aRfQ==}
+ '@pnpm/exe.win32-x64@12.3.4':
+ resolution: {integrity: sha512-WH/KqBPY/hq2Tb7SgQltEZytimcjgKRaCRL/aM9CI0c67iKc5TVmHUhIiL3Ux9FB4bWn36i6XewUcScQI+zG8w==}
cpu: [x64]
os: [win32]
- pnpm@12.0.0:
- resolution: {integrity: sha512-ni49w5EZlYaNyUuBdcIXwn6VQI+gO0oidJd48rNPdzt3zdOznt6BcbIvzVO+ajU0Lp+smUimjvWN9kiM6Jp+Zw==}
+ pnpm@12.3.4:
+ resolution: {integrity: sha512-lhqkH7B32joEpEHZ+OFevAyW2o73ELLrZ7+e58sGEOq9SPH9hfUc/+c4RnhfoPh8VqOocqHYk/hEZ0G1zORUVw==}
engines: {node: '>=18.*'}
hasBin: true
snapshots:
- '@pnpm/exe.darwin-arm64@12.0.0':
+ '@pnpm/exe.darwin-arm64@12.3.4':
optional: true
- '@pnpm/exe.darwin-x64@12.0.0':
+ '@pnpm/exe.darwin-x64@12.3.4':
optional: true
- '@pnpm/exe.linux-arm64-musl@12.0.0':
+ '@pnpm/exe.linux-arm64-musl@12.3.4':
optional: true
- '@pnpm/exe.linux-arm64@12.0.0':
+ '@pnpm/exe.linux-arm64@12.3.4':
optional: true
- '@pnpm/exe.linux-x64-musl@12.0.0':
+ '@pnpm/exe.linux-x64-musl@12.3.4':
optional: true
- '@pnpm/exe.linux-x64@12.0.0':
+ '@pnpm/exe.linux-x64@12.3.4':
optional: true
- '@pnpm/exe.win32-arm64@12.0.0':
+ '@pnpm/exe.win32-arm64@12.3.4':
optional: true
- '@pnpm/exe.win32-x64@12.0.0':
+ '@pnpm/exe.win32-x64@12.3.4':
optional: true
- pnpm@12.0.0:
+ pnpm@12.3.4:
optionalDependencies:
- '@pnpm/exe.darwin-arm64': 12.0.0
- '@pnpm/exe.darwin-x64': 12.0.0
- '@pnpm/exe.linux-arm64': 12.0.0
- '@pnpm/exe.linux-arm64-musl': 12.0.0
- '@pnpm/exe.linux-x64': 12.0.0
- '@pnpm/exe.linux-x64-musl': 12.0.0
- '@pnpm/exe.win32-arm64': 12.0.0
- '@pnpm/exe.win32-x64': 12.0.0
+ '@pnpm/exe.darwin-arm64': 12.3.4
+ '@pnpm/exe.darwin-x64': 12.3.4
+ '@pnpm/exe.linux-arm64': 12.3.4
+ '@pnpm/exe.linux-arm64-musl': 12.3.4
+ '@pnpm/exe.linux-x64': 12.3.4
+ '@pnpm/exe.linux-x64-musl': 12.3.4
+ '@pnpm/exe.win32-arm64': 12.3.4
+ '@pnpm/exe.win32-x64': 12.3.4
---
lockfileVersion: '9.0'
diff --git a/frontend/package.json b/frontend/package.json
index daffb1739f..705f080055 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -4,7 +4,7 @@
"license": "MPL-2.0",
"author": "Kaleidos INC Sucursal en España SL",
"private": true,
- "packageManager": "pnpm@12.0.0+sha512.9e2e3dc3911995868dc94b8175c217c27e95408fa03b4a22749778f2b34f773b77cdd3b39ede8171b22fcd53be6a35342e9fac9948a68ef58df6488ce89a7e67",
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457",
"browserslist": [
"defaults"
],
diff --git a/frontend/packages/draft-js/package.json b/frontend/packages/draft-js/package.json
index 682dfeb8d0..e9f6c0ffd7 100644
--- a/frontend/packages/draft-js/package.json
+++ b/frontend/packages/draft-js/package.json
@@ -4,7 +4,7 @@
"description": "Penpot Draft-JS Wrapper",
"main": "index.js",
"type": "module",
- "packageManager": "pnpm@12.0.0+sha512.9e2e3dc3911995868dc94b8175c217c27e95408fa03b4a22749778f2b34f773b77cdd3b39ede8171b22fcd53be6a35342e9fac9948a68ef58df6488ce89a7e67",
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457",
"author": "Andrey Antukh",
"license": "MPL-2.0",
"dependencies": {
diff --git a/frontend/packages/mousetrap/package.json b/frontend/packages/mousetrap/package.json
index ece42204ef..509d95b0ed 100644
--- a/frontend/packages/mousetrap/package.json
+++ b/frontend/packages/mousetrap/package.json
@@ -4,7 +4,7 @@
"description": "Simple library for handling keyboard shortcuts",
"main": "index.js",
"type": "module",
- "packageManager": "pnpm@12.0.0+sha512.9e2e3dc3911995868dc94b8175c217c27e95408fa03b4a22749778f2b34f773b77cdd3b39ede8171b22fcd53be6a35342e9fac9948a68ef58df6488ce89a7e67",
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457",
"author": "Craig Campbell",
"license": "Apache-2.0 WITH LLVM-exception"
}
diff --git a/frontend/packages/tokenscript/package.json b/frontend/packages/tokenscript/package.json
index 4689f02e86..cc8330b50e 100644
--- a/frontend/packages/tokenscript/package.json
+++ b/frontend/packages/tokenscript/package.json
@@ -4,7 +4,7 @@
"description": "",
"main": "index.js",
"type": "module",
- "packageManager": "pnpm@12.0.0+sha512.9e2e3dc3911995868dc94b8175c217c27e95408fa03b4a22749778f2b34f773b77cdd3b39ede8171b22fcd53be6a35342e9fac9948a68ef58df6488ce89a7e67",
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457",
"author": "Andrey Antukh",
"license": "MPL-2.0",
"dependencies": {
diff --git a/frontend/packages/ui/package.json b/frontend/packages/ui/package.json
index 131a0e6d85..bd2351e197 100644
--- a/frontend/packages/ui/package.json
+++ b/frontend/packages/ui/package.json
@@ -3,6 +3,7 @@
"version": "0.0.1",
"types": "./dist/index.d.ts",
"type": "module",
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457",
"exports": {
".": {
"import": "./dist/index.js"
diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml
index 01866c4118..64aa97b44e 100644
--- a/frontend/pnpm-lock.yaml
+++ b/frontend/pnpm-lock.yaml
@@ -7,96 +7,96 @@ importers:
configDependencies: {}
packageManagerDependencies:
pnpm:
- specifier: 12.0.0
- version: 12.0.0
+ specifier: 12.3.4
+ version: 12.3.4
packages:
- '@pnpm/exe.darwin-arm64@12.0.0':
- resolution: {integrity: sha512-sqeoPfVMIfQhbwzDrKraXY2ynyuWClFqzvfImzAS/yczEru1m5SGvQ9kgFPDvQzJZ9AetedgJeDZC6qYvH8/tQ==}
+ '@pnpm/exe.darwin-arm64@12.3.4':
+ resolution: {integrity: sha512-PAyUol8T1+/+ViOiXAt51ECA+QnfXCqz6foL4bW+LsoX0NcVd5XVEM2mRQu+LV4oc7uRz9zf9U0P+XFfuQeDAw==}
cpu: [arm64]
os: [darwin]
- '@pnpm/exe.darwin-x64@12.0.0':
- resolution: {integrity: sha512-Quc3J6c9cGTy+LDgz1cLVgCNOU9IERuyAlDoEj0DCilKqvo50Jx1GV8k74iwn4J9fFSKkm8JrwNvtTDj3uWnUA==}
+ '@pnpm/exe.darwin-x64@12.3.4':
+ resolution: {integrity: sha512-fxP9JCk0Cdye+ePuj+GJJLMUMTqHGWRdb1dtv4How876uQ2ehxvenpgiYAir/ceO9PsYUZkFTtyZdx+rRu5QOA==}
cpu: [x64]
os: [darwin]
- '@pnpm/exe.linux-arm64-musl@12.0.0':
- resolution: {integrity: sha512-EVWd3OTmgsMFhXx69b5JxIzoabG9Ma7m4OeTaf0ZKBzMnfYi8u21NDQo92ToMrdYL5dYDDCHsyYIjXzk+d0HhA==}
+ '@pnpm/exe.linux-arm64-musl@12.3.4':
+ resolution: {integrity: sha512-FBOt0/7ye6O6q4AllVV5QMviB6qE6fqkeczV/+MDWQsmo+QJrlfsh6X7CpH/tClVpBZEyIbjpUoT8bNhCYBxEg==}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@pnpm/exe.linux-arm64@12.0.0':
- resolution: {integrity: sha512-cXHHW8M4rAPsYNkKZO9WVcpLLK55i9EaIsZPfIqUuY2eopd5LqnFyBge54HCh1GC0yCX8ySn0hYIi+4OyAEoDg==}
+ '@pnpm/exe.linux-arm64@12.3.4':
+ resolution: {integrity: sha512-t71AVA7LRqiKTyZ5xMYaZc2n5DfdpMbfokZuiIOXHBOM03ECnF0t4iYwaBDqJgVjlKYUOwaF/bRQajGNA4cJ4w==}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@pnpm/exe.linux-x64-musl@12.0.0':
- resolution: {integrity: sha512-UcXwMdFjly0mpddkGigHKTxe27IMv2fUK4IWW/MHmJ3yMguxXmkwNlEI4aE+G1HO2TLo20uNEUWD4ymLe/DaCQ==}
+ '@pnpm/exe.linux-x64-musl@12.3.4':
+ resolution: {integrity: sha512-RPmk7Jb/aYaFvL2iyDN/AtMY+hUEsue732WmXpcuQ9tBpMnGyA5py7Z3+e+qmQaJ0zY/4ni9jJiyPBQHujmv6w==}
cpu: [x64]
os: [linux]
libc: [musl]
- '@pnpm/exe.linux-x64@12.0.0':
- resolution: {integrity: sha512-6Rsl+zEWMOmus7v7/9J3OE8EMvHyNAfxYmDfmhQG4J0985OuT3G3Ho9NSGHjkBn4aU4bgklWifRhe1HX8dUSyw==}
+ '@pnpm/exe.linux-x64@12.3.4':
+ resolution: {integrity: sha512-2ZqOlSPkfwX1h5cR+FPiWf8+F+2hZT/3TvhUK5sigHqwaQCIiq8R7CGxhndKs63JtcLi2a1Qpo+wX/EoyfjyJQ==}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@pnpm/exe.win32-arm64@12.0.0':
- resolution: {integrity: sha512-O5F76A4oVFrpDGdFxEszRIThOSBfjHdH5c006gR+7UTCfiXrukr1XfqPungUI1DXcSR5gb9jBsPQqQZOAoOOxw==}
+ '@pnpm/exe.win32-arm64@12.3.4':
+ resolution: {integrity: sha512-ANyrHqyqco6SXBysUTRF74itDyyraea7IbFsKFdNXTjcFnfycTDx37EwuhdpPYFNSIh2JhUG4fByclsRfiHX7w==}
cpu: [arm64]
os: [win32]
- '@pnpm/exe.win32-x64@12.0.0':
- resolution: {integrity: sha512-5dKFajIEWJ1ai+KHXFJvskY6vchbunmLwSUV2ywbLymcmJjfY5XJVpgzPCyIoVCMVG0zHorr66+hM8h8b3aRfQ==}
+ '@pnpm/exe.win32-x64@12.3.4':
+ resolution: {integrity: sha512-WH/KqBPY/hq2Tb7SgQltEZytimcjgKRaCRL/aM9CI0c67iKc5TVmHUhIiL3Ux9FB4bWn36i6XewUcScQI+zG8w==}
cpu: [x64]
os: [win32]
- pnpm@12.0.0:
- resolution: {integrity: sha512-ni49w5EZlYaNyUuBdcIXwn6VQI+gO0oidJd48rNPdzt3zdOznt6BcbIvzVO+ajU0Lp+smUimjvWN9kiM6Jp+Zw==}
+ pnpm@12.3.4:
+ resolution: {integrity: sha512-lhqkH7B32joEpEHZ+OFevAyW2o73ELLrZ7+e58sGEOq9SPH9hfUc/+c4RnhfoPh8VqOocqHYk/hEZ0G1zORUVw==}
engines: {node: '>=18.*'}
hasBin: true
snapshots:
- '@pnpm/exe.darwin-arm64@12.0.0':
+ '@pnpm/exe.darwin-arm64@12.3.4':
optional: true
- '@pnpm/exe.darwin-x64@12.0.0':
+ '@pnpm/exe.darwin-x64@12.3.4':
optional: true
- '@pnpm/exe.linux-arm64-musl@12.0.0':
+ '@pnpm/exe.linux-arm64-musl@12.3.4':
optional: true
- '@pnpm/exe.linux-arm64@12.0.0':
+ '@pnpm/exe.linux-arm64@12.3.4':
optional: true
- '@pnpm/exe.linux-x64-musl@12.0.0':
+ '@pnpm/exe.linux-x64-musl@12.3.4':
optional: true
- '@pnpm/exe.linux-x64@12.0.0':
+ '@pnpm/exe.linux-x64@12.3.4':
optional: true
- '@pnpm/exe.win32-arm64@12.0.0':
+ '@pnpm/exe.win32-arm64@12.3.4':
optional: true
- '@pnpm/exe.win32-x64@12.0.0':
+ '@pnpm/exe.win32-x64@12.3.4':
optional: true
- pnpm@12.0.0:
+ pnpm@12.3.4:
optionalDependencies:
- '@pnpm/exe.darwin-arm64': 12.0.0
- '@pnpm/exe.darwin-x64': 12.0.0
- '@pnpm/exe.linux-arm64': 12.0.0
- '@pnpm/exe.linux-arm64-musl': 12.0.0
- '@pnpm/exe.linux-x64': 12.0.0
- '@pnpm/exe.linux-x64-musl': 12.0.0
- '@pnpm/exe.win32-arm64': 12.0.0
- '@pnpm/exe.win32-x64': 12.0.0
+ '@pnpm/exe.darwin-arm64': 12.3.4
+ '@pnpm/exe.darwin-x64': 12.3.4
+ '@pnpm/exe.linux-arm64': 12.3.4
+ '@pnpm/exe.linux-arm64-musl': 12.3.4
+ '@pnpm/exe.linux-x64': 12.3.4
+ '@pnpm/exe.linux-x64-musl': 12.3.4
+ '@pnpm/exe.win32-arm64': 12.3.4
+ '@pnpm/exe.win32-x64': 12.3.4
---
lockfileVersion: '9.0'
diff --git a/frontend/text-editor/package.json b/frontend/text-editor/package.json
index af4dd7fde3..42c442f5f0 100644
--- a/frontend/text-editor/package.json
+++ b/frontend/text-editor/package.json
@@ -28,5 +28,5 @@
"vite": "^8.2.0",
"vitest": "^4.1.10"
},
- "packageManager": "pnpm@12.0.0+sha512.9e2e3dc3911995868dc94b8175c217c27e95408fa03b4a22749778f2b34f773b77cdd3b39ede8171b22fcd53be6a35342e9fac9948a68ef58df6488ce89a7e67"
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457"
}
diff --git a/library/package.json b/library/package.json
index f22f9aea27..aff0eb2082 100644
--- a/library/package.json
+++ b/library/package.json
@@ -3,7 +3,7 @@
"version": "1.2.0-RC1",
"license": "MPL-2.0",
"author": "Kaleidos INC Sucursal en España SL",
- "packageManager": "pnpm@12.0.0+sha512.9e2e3dc3911995868dc94b8175c217c27e95408fa03b4a22749778f2b34f773b77cdd3b39ede8171b22fcd53be6a35342e9fac9948a68ef58df6488ce89a7e67",
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457",
"type": "module",
"repository": {
"type": "git",
diff --git a/library/pnpm-lock.yaml b/library/pnpm-lock.yaml
index 6fa97dcff3..9f4a4d81a3 100644
--- a/library/pnpm-lock.yaml
+++ b/library/pnpm-lock.yaml
@@ -7,96 +7,96 @@ importers:
configDependencies: {}
packageManagerDependencies:
pnpm:
- specifier: 12.0.0
- version: 12.0.0
+ specifier: 12.3.4
+ version: 12.3.4
packages:
- '@pnpm/exe.darwin-arm64@12.0.0':
- resolution: {integrity: sha512-sqeoPfVMIfQhbwzDrKraXY2ynyuWClFqzvfImzAS/yczEru1m5SGvQ9kgFPDvQzJZ9AetedgJeDZC6qYvH8/tQ==}
+ '@pnpm/exe.darwin-arm64@12.3.4':
+ resolution: {integrity: sha512-PAyUol8T1+/+ViOiXAt51ECA+QnfXCqz6foL4bW+LsoX0NcVd5XVEM2mRQu+LV4oc7uRz9zf9U0P+XFfuQeDAw==}
cpu: [arm64]
os: [darwin]
- '@pnpm/exe.darwin-x64@12.0.0':
- resolution: {integrity: sha512-Quc3J6c9cGTy+LDgz1cLVgCNOU9IERuyAlDoEj0DCilKqvo50Jx1GV8k74iwn4J9fFSKkm8JrwNvtTDj3uWnUA==}
+ '@pnpm/exe.darwin-x64@12.3.4':
+ resolution: {integrity: sha512-fxP9JCk0Cdye+ePuj+GJJLMUMTqHGWRdb1dtv4How876uQ2ehxvenpgiYAir/ceO9PsYUZkFTtyZdx+rRu5QOA==}
cpu: [x64]
os: [darwin]
- '@pnpm/exe.linux-arm64-musl@12.0.0':
- resolution: {integrity: sha512-EVWd3OTmgsMFhXx69b5JxIzoabG9Ma7m4OeTaf0ZKBzMnfYi8u21NDQo92ToMrdYL5dYDDCHsyYIjXzk+d0HhA==}
+ '@pnpm/exe.linux-arm64-musl@12.3.4':
+ resolution: {integrity: sha512-FBOt0/7ye6O6q4AllVV5QMviB6qE6fqkeczV/+MDWQsmo+QJrlfsh6X7CpH/tClVpBZEyIbjpUoT8bNhCYBxEg==}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@pnpm/exe.linux-arm64@12.0.0':
- resolution: {integrity: sha512-cXHHW8M4rAPsYNkKZO9WVcpLLK55i9EaIsZPfIqUuY2eopd5LqnFyBge54HCh1GC0yCX8ySn0hYIi+4OyAEoDg==}
+ '@pnpm/exe.linux-arm64@12.3.4':
+ resolution: {integrity: sha512-t71AVA7LRqiKTyZ5xMYaZc2n5DfdpMbfokZuiIOXHBOM03ECnF0t4iYwaBDqJgVjlKYUOwaF/bRQajGNA4cJ4w==}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@pnpm/exe.linux-x64-musl@12.0.0':
- resolution: {integrity: sha512-UcXwMdFjly0mpddkGigHKTxe27IMv2fUK4IWW/MHmJ3yMguxXmkwNlEI4aE+G1HO2TLo20uNEUWD4ymLe/DaCQ==}
+ '@pnpm/exe.linux-x64-musl@12.3.4':
+ resolution: {integrity: sha512-RPmk7Jb/aYaFvL2iyDN/AtMY+hUEsue732WmXpcuQ9tBpMnGyA5py7Z3+e+qmQaJ0zY/4ni9jJiyPBQHujmv6w==}
cpu: [x64]
os: [linux]
libc: [musl]
- '@pnpm/exe.linux-x64@12.0.0':
- resolution: {integrity: sha512-6Rsl+zEWMOmus7v7/9J3OE8EMvHyNAfxYmDfmhQG4J0985OuT3G3Ho9NSGHjkBn4aU4bgklWifRhe1HX8dUSyw==}
+ '@pnpm/exe.linux-x64@12.3.4':
+ resolution: {integrity: sha512-2ZqOlSPkfwX1h5cR+FPiWf8+F+2hZT/3TvhUK5sigHqwaQCIiq8R7CGxhndKs63JtcLi2a1Qpo+wX/EoyfjyJQ==}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@pnpm/exe.win32-arm64@12.0.0':
- resolution: {integrity: sha512-O5F76A4oVFrpDGdFxEszRIThOSBfjHdH5c006gR+7UTCfiXrukr1XfqPungUI1DXcSR5gb9jBsPQqQZOAoOOxw==}
+ '@pnpm/exe.win32-arm64@12.3.4':
+ resolution: {integrity: sha512-ANyrHqyqco6SXBysUTRF74itDyyraea7IbFsKFdNXTjcFnfycTDx37EwuhdpPYFNSIh2JhUG4fByclsRfiHX7w==}
cpu: [arm64]
os: [win32]
- '@pnpm/exe.win32-x64@12.0.0':
- resolution: {integrity: sha512-5dKFajIEWJ1ai+KHXFJvskY6vchbunmLwSUV2ywbLymcmJjfY5XJVpgzPCyIoVCMVG0zHorr66+hM8h8b3aRfQ==}
+ '@pnpm/exe.win32-x64@12.3.4':
+ resolution: {integrity: sha512-WH/KqBPY/hq2Tb7SgQltEZytimcjgKRaCRL/aM9CI0c67iKc5TVmHUhIiL3Ux9FB4bWn36i6XewUcScQI+zG8w==}
cpu: [x64]
os: [win32]
- pnpm@12.0.0:
- resolution: {integrity: sha512-ni49w5EZlYaNyUuBdcIXwn6VQI+gO0oidJd48rNPdzt3zdOznt6BcbIvzVO+ajU0Lp+smUimjvWN9kiM6Jp+Zw==}
+ pnpm@12.3.4:
+ resolution: {integrity: sha512-lhqkH7B32joEpEHZ+OFevAyW2o73ELLrZ7+e58sGEOq9SPH9hfUc/+c4RnhfoPh8VqOocqHYk/hEZ0G1zORUVw==}
engines: {node: '>=18.*'}
hasBin: true
snapshots:
- '@pnpm/exe.darwin-arm64@12.0.0':
+ '@pnpm/exe.darwin-arm64@12.3.4':
optional: true
- '@pnpm/exe.darwin-x64@12.0.0':
+ '@pnpm/exe.darwin-x64@12.3.4':
optional: true
- '@pnpm/exe.linux-arm64-musl@12.0.0':
+ '@pnpm/exe.linux-arm64-musl@12.3.4':
optional: true
- '@pnpm/exe.linux-arm64@12.0.0':
+ '@pnpm/exe.linux-arm64@12.3.4':
optional: true
- '@pnpm/exe.linux-x64-musl@12.0.0':
+ '@pnpm/exe.linux-x64-musl@12.3.4':
optional: true
- '@pnpm/exe.linux-x64@12.0.0':
+ '@pnpm/exe.linux-x64@12.3.4':
optional: true
- '@pnpm/exe.win32-arm64@12.0.0':
+ '@pnpm/exe.win32-arm64@12.3.4':
optional: true
- '@pnpm/exe.win32-x64@12.0.0':
+ '@pnpm/exe.win32-x64@12.3.4':
optional: true
- pnpm@12.0.0:
+ pnpm@12.3.4:
optionalDependencies:
- '@pnpm/exe.darwin-arm64': 12.0.0
- '@pnpm/exe.darwin-x64': 12.0.0
- '@pnpm/exe.linux-arm64': 12.0.0
- '@pnpm/exe.linux-arm64-musl': 12.0.0
- '@pnpm/exe.linux-x64': 12.0.0
- '@pnpm/exe.linux-x64-musl': 12.0.0
- '@pnpm/exe.win32-arm64': 12.0.0
- '@pnpm/exe.win32-x64': 12.0.0
+ '@pnpm/exe.darwin-arm64': 12.3.4
+ '@pnpm/exe.darwin-x64': 12.3.4
+ '@pnpm/exe.linux-arm64': 12.3.4
+ '@pnpm/exe.linux-arm64-musl': 12.3.4
+ '@pnpm/exe.linux-x64': 12.3.4
+ '@pnpm/exe.linux-x64-musl': 12.3.4
+ '@pnpm/exe.win32-arm64': 12.3.4
+ '@pnpm/exe.win32-x64': 12.3.4
---
lockfileVersion: '9.0'
diff --git a/mcp/package.json b/mcp/package.json
index 2b0046f3b0..abd1b8c8be 100644
--- a/mcp/package.json
+++ b/mcp/package.json
@@ -23,7 +23,7 @@
"type": "git",
"url": "https://github.com/penpot/penpot.git"
},
- "packageManager": "pnpm@12.0.0+sha512.9e2e3dc3911995868dc94b8175c217c27e95408fa03b4a22749778f2b34f773b77cdd3b39ede8171b22fcd53be6a35342e9fac9948a68ef58df6488ce89a7e67",
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457",
"devDependencies": {
"concurrently": "^10.0.5",
"prettier": "^3.9.6"
diff --git a/mcp/packages/common/package.json b/mcp/packages/common/package.json
index 4c82e9796a..fae32707ef 100644
--- a/mcp/packages/common/package.json
+++ b/mcp/packages/common/package.json
@@ -4,7 +4,7 @@
"description": "Shared type definitions and interfaces for Penpot MCP",
"main": "dist/index.js",
"types": "dist/index.d.ts",
- "packageManager": "pnpm@12.0.0+sha512.9e2e3dc3911995868dc94b8175c217c27e95408fa03b4a22749778f2b34f773b77cdd3b39ede8171b22fcd53be6a35342e9fac9948a68ef58df6488ce89a7e67",
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457",
"scripts": {
"build": "tsc --build --clean && tsc --build",
"watch": "tsc --watch",
diff --git a/mcp/packages/plugin/package.json b/mcp/packages/plugin/package.json
index 5377e1bba7..534fef6226 100644
--- a/mcp/packages/plugin/package.json
+++ b/mcp/packages/plugin/package.json
@@ -3,6 +3,7 @@
"private": true,
"version": "1.0.0",
"type": "module",
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457",
"scripts": {
"start": "vite build --watch --config vite.config.ts",
"start:multi-user": "pnpm run start",
diff --git a/mcp/packages/server/package.json b/mcp/packages/server/package.json
index e675c2e7c8..4711b793a5 100644
--- a/mcp/packages/server/package.json
+++ b/mcp/packages/server/package.json
@@ -24,7 +24,7 @@
],
"author": "",
"license": "MIT",
- "packageManager": "pnpm@12.0.0+sha512.9e2e3dc3911995868dc94b8175c217c27e95408fa03b4a22749778f2b34f773b77cdd3b39ede8171b22fcd53be6a35342e9fac9948a68ef58df6488ce89a7e67",
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457",
"dependencies": {
"@modelcontextprotocol/sdk": "^1.29.0",
"class-transformer": "^0.5.1",
diff --git a/mcp/pnpm-lock.yaml b/mcp/pnpm-lock.yaml
index 706069eee7..6b15ed28ab 100644
--- a/mcp/pnpm-lock.yaml
+++ b/mcp/pnpm-lock.yaml
@@ -7,96 +7,96 @@ importers:
configDependencies: {}
packageManagerDependencies:
pnpm:
- specifier: 12.0.0
- version: 12.0.0
+ specifier: 12.3.4
+ version: 12.3.4
packages:
- '@pnpm/exe.darwin-arm64@12.0.0':
- resolution: {integrity: sha512-sqeoPfVMIfQhbwzDrKraXY2ynyuWClFqzvfImzAS/yczEru1m5SGvQ9kgFPDvQzJZ9AetedgJeDZC6qYvH8/tQ==}
+ '@pnpm/exe.darwin-arm64@12.3.4':
+ resolution: {integrity: sha512-PAyUol8T1+/+ViOiXAt51ECA+QnfXCqz6foL4bW+LsoX0NcVd5XVEM2mRQu+LV4oc7uRz9zf9U0P+XFfuQeDAw==}
cpu: [arm64]
os: [darwin]
- '@pnpm/exe.darwin-x64@12.0.0':
- resolution: {integrity: sha512-Quc3J6c9cGTy+LDgz1cLVgCNOU9IERuyAlDoEj0DCilKqvo50Jx1GV8k74iwn4J9fFSKkm8JrwNvtTDj3uWnUA==}
+ '@pnpm/exe.darwin-x64@12.3.4':
+ resolution: {integrity: sha512-fxP9JCk0Cdye+ePuj+GJJLMUMTqHGWRdb1dtv4How876uQ2ehxvenpgiYAir/ceO9PsYUZkFTtyZdx+rRu5QOA==}
cpu: [x64]
os: [darwin]
- '@pnpm/exe.linux-arm64-musl@12.0.0':
- resolution: {integrity: sha512-EVWd3OTmgsMFhXx69b5JxIzoabG9Ma7m4OeTaf0ZKBzMnfYi8u21NDQo92ToMrdYL5dYDDCHsyYIjXzk+d0HhA==}
+ '@pnpm/exe.linux-arm64-musl@12.3.4':
+ resolution: {integrity: sha512-FBOt0/7ye6O6q4AllVV5QMviB6qE6fqkeczV/+MDWQsmo+QJrlfsh6X7CpH/tClVpBZEyIbjpUoT8bNhCYBxEg==}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@pnpm/exe.linux-arm64@12.0.0':
- resolution: {integrity: sha512-cXHHW8M4rAPsYNkKZO9WVcpLLK55i9EaIsZPfIqUuY2eopd5LqnFyBge54HCh1GC0yCX8ySn0hYIi+4OyAEoDg==}
+ '@pnpm/exe.linux-arm64@12.3.4':
+ resolution: {integrity: sha512-t71AVA7LRqiKTyZ5xMYaZc2n5DfdpMbfokZuiIOXHBOM03ECnF0t4iYwaBDqJgVjlKYUOwaF/bRQajGNA4cJ4w==}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@pnpm/exe.linux-x64-musl@12.0.0':
- resolution: {integrity: sha512-UcXwMdFjly0mpddkGigHKTxe27IMv2fUK4IWW/MHmJ3yMguxXmkwNlEI4aE+G1HO2TLo20uNEUWD4ymLe/DaCQ==}
+ '@pnpm/exe.linux-x64-musl@12.3.4':
+ resolution: {integrity: sha512-RPmk7Jb/aYaFvL2iyDN/AtMY+hUEsue732WmXpcuQ9tBpMnGyA5py7Z3+e+qmQaJ0zY/4ni9jJiyPBQHujmv6w==}
cpu: [x64]
os: [linux]
libc: [musl]
- '@pnpm/exe.linux-x64@12.0.0':
- resolution: {integrity: sha512-6Rsl+zEWMOmus7v7/9J3OE8EMvHyNAfxYmDfmhQG4J0985OuT3G3Ho9NSGHjkBn4aU4bgklWifRhe1HX8dUSyw==}
+ '@pnpm/exe.linux-x64@12.3.4':
+ resolution: {integrity: sha512-2ZqOlSPkfwX1h5cR+FPiWf8+F+2hZT/3TvhUK5sigHqwaQCIiq8R7CGxhndKs63JtcLi2a1Qpo+wX/EoyfjyJQ==}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@pnpm/exe.win32-arm64@12.0.0':
- resolution: {integrity: sha512-O5F76A4oVFrpDGdFxEszRIThOSBfjHdH5c006gR+7UTCfiXrukr1XfqPungUI1DXcSR5gb9jBsPQqQZOAoOOxw==}
+ '@pnpm/exe.win32-arm64@12.3.4':
+ resolution: {integrity: sha512-ANyrHqyqco6SXBysUTRF74itDyyraea7IbFsKFdNXTjcFnfycTDx37EwuhdpPYFNSIh2JhUG4fByclsRfiHX7w==}
cpu: [arm64]
os: [win32]
- '@pnpm/exe.win32-x64@12.0.0':
- resolution: {integrity: sha512-5dKFajIEWJ1ai+KHXFJvskY6vchbunmLwSUV2ywbLymcmJjfY5XJVpgzPCyIoVCMVG0zHorr66+hM8h8b3aRfQ==}
+ '@pnpm/exe.win32-x64@12.3.4':
+ resolution: {integrity: sha512-WH/KqBPY/hq2Tb7SgQltEZytimcjgKRaCRL/aM9CI0c67iKc5TVmHUhIiL3Ux9FB4bWn36i6XewUcScQI+zG8w==}
cpu: [x64]
os: [win32]
- pnpm@12.0.0:
- resolution: {integrity: sha512-ni49w5EZlYaNyUuBdcIXwn6VQI+gO0oidJd48rNPdzt3zdOznt6BcbIvzVO+ajU0Lp+smUimjvWN9kiM6Jp+Zw==}
+ pnpm@12.3.4:
+ resolution: {integrity: sha512-lhqkH7B32joEpEHZ+OFevAyW2o73ELLrZ7+e58sGEOq9SPH9hfUc/+c4RnhfoPh8VqOocqHYk/hEZ0G1zORUVw==}
engines: {node: '>=18.*'}
hasBin: true
snapshots:
- '@pnpm/exe.darwin-arm64@12.0.0':
+ '@pnpm/exe.darwin-arm64@12.3.4':
optional: true
- '@pnpm/exe.darwin-x64@12.0.0':
+ '@pnpm/exe.darwin-x64@12.3.4':
optional: true
- '@pnpm/exe.linux-arm64-musl@12.0.0':
+ '@pnpm/exe.linux-arm64-musl@12.3.4':
optional: true
- '@pnpm/exe.linux-arm64@12.0.0':
+ '@pnpm/exe.linux-arm64@12.3.4':
optional: true
- '@pnpm/exe.linux-x64-musl@12.0.0':
+ '@pnpm/exe.linux-x64-musl@12.3.4':
optional: true
- '@pnpm/exe.linux-x64@12.0.0':
+ '@pnpm/exe.linux-x64@12.3.4':
optional: true
- '@pnpm/exe.win32-arm64@12.0.0':
+ '@pnpm/exe.win32-arm64@12.3.4':
optional: true
- '@pnpm/exe.win32-x64@12.0.0':
+ '@pnpm/exe.win32-x64@12.3.4':
optional: true
- pnpm@12.0.0:
+ pnpm@12.3.4:
optionalDependencies:
- '@pnpm/exe.darwin-arm64': 12.0.0
- '@pnpm/exe.darwin-x64': 12.0.0
- '@pnpm/exe.linux-arm64': 12.0.0
- '@pnpm/exe.linux-arm64-musl': 12.0.0
- '@pnpm/exe.linux-x64': 12.0.0
- '@pnpm/exe.linux-x64-musl': 12.0.0
- '@pnpm/exe.win32-arm64': 12.0.0
- '@pnpm/exe.win32-x64': 12.0.0
+ '@pnpm/exe.darwin-arm64': 12.3.4
+ '@pnpm/exe.darwin-x64': 12.3.4
+ '@pnpm/exe.linux-arm64': 12.3.4
+ '@pnpm/exe.linux-arm64-musl': 12.3.4
+ '@pnpm/exe.linux-x64': 12.3.4
+ '@pnpm/exe.linux-x64-musl': 12.3.4
+ '@pnpm/exe.win32-arm64': 12.3.4
+ '@pnpm/exe.win32-x64': 12.3.4
---
lockfileVersion: '9.0'
diff --git a/media-processor/package.json b/media-processor/package.json
index 0bb5711cf7..ea012c5246 100644
--- a/media-processor/package.json
+++ b/media-processor/package.json
@@ -14,7 +14,7 @@
"fmt:check": "prettier --check src/ test/",
"clean": "rm -rf dist/"
},
- "packageManager": "pnpm@12.0.0+sha512.9e2e3dc3911995868dc94b8175c217c27e95408fa03b4a22749778f2b34f773b77cdd3b39ede8171b22fcd53be6a35342e9fac9948a68ef58df6488ce89a7e67",
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457",
"dependencies": {
"express": "^5.2.1",
"multer": "^2.2.0",
diff --git a/media-processor/pnpm-lock.yaml b/media-processor/pnpm-lock.yaml
index 51eef68766..a35ada5f76 100644
--- a/media-processor/pnpm-lock.yaml
+++ b/media-processor/pnpm-lock.yaml
@@ -7,96 +7,96 @@ importers:
configDependencies: {}
packageManagerDependencies:
pnpm:
- specifier: 12.0.0
- version: 12.0.0
+ specifier: 12.3.4
+ version: 12.3.4
packages:
- '@pnpm/exe.darwin-arm64@12.0.0':
- resolution: {integrity: sha512-sqeoPfVMIfQhbwzDrKraXY2ynyuWClFqzvfImzAS/yczEru1m5SGvQ9kgFPDvQzJZ9AetedgJeDZC6qYvH8/tQ==}
+ '@pnpm/exe.darwin-arm64@12.3.4':
+ resolution: {integrity: sha512-PAyUol8T1+/+ViOiXAt51ECA+QnfXCqz6foL4bW+LsoX0NcVd5XVEM2mRQu+LV4oc7uRz9zf9U0P+XFfuQeDAw==}
cpu: [arm64]
os: [darwin]
- '@pnpm/exe.darwin-x64@12.0.0':
- resolution: {integrity: sha512-Quc3J6c9cGTy+LDgz1cLVgCNOU9IERuyAlDoEj0DCilKqvo50Jx1GV8k74iwn4J9fFSKkm8JrwNvtTDj3uWnUA==}
+ '@pnpm/exe.darwin-x64@12.3.4':
+ resolution: {integrity: sha512-fxP9JCk0Cdye+ePuj+GJJLMUMTqHGWRdb1dtv4How876uQ2ehxvenpgiYAir/ceO9PsYUZkFTtyZdx+rRu5QOA==}
cpu: [x64]
os: [darwin]
- '@pnpm/exe.linux-arm64-musl@12.0.0':
- resolution: {integrity: sha512-EVWd3OTmgsMFhXx69b5JxIzoabG9Ma7m4OeTaf0ZKBzMnfYi8u21NDQo92ToMrdYL5dYDDCHsyYIjXzk+d0HhA==}
+ '@pnpm/exe.linux-arm64-musl@12.3.4':
+ resolution: {integrity: sha512-FBOt0/7ye6O6q4AllVV5QMviB6qE6fqkeczV/+MDWQsmo+QJrlfsh6X7CpH/tClVpBZEyIbjpUoT8bNhCYBxEg==}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@pnpm/exe.linux-arm64@12.0.0':
- resolution: {integrity: sha512-cXHHW8M4rAPsYNkKZO9WVcpLLK55i9EaIsZPfIqUuY2eopd5LqnFyBge54HCh1GC0yCX8ySn0hYIi+4OyAEoDg==}
+ '@pnpm/exe.linux-arm64@12.3.4':
+ resolution: {integrity: sha512-t71AVA7LRqiKTyZ5xMYaZc2n5DfdpMbfokZuiIOXHBOM03ECnF0t4iYwaBDqJgVjlKYUOwaF/bRQajGNA4cJ4w==}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@pnpm/exe.linux-x64-musl@12.0.0':
- resolution: {integrity: sha512-UcXwMdFjly0mpddkGigHKTxe27IMv2fUK4IWW/MHmJ3yMguxXmkwNlEI4aE+G1HO2TLo20uNEUWD4ymLe/DaCQ==}
+ '@pnpm/exe.linux-x64-musl@12.3.4':
+ resolution: {integrity: sha512-RPmk7Jb/aYaFvL2iyDN/AtMY+hUEsue732WmXpcuQ9tBpMnGyA5py7Z3+e+qmQaJ0zY/4ni9jJiyPBQHujmv6w==}
cpu: [x64]
os: [linux]
libc: [musl]
- '@pnpm/exe.linux-x64@12.0.0':
- resolution: {integrity: sha512-6Rsl+zEWMOmus7v7/9J3OE8EMvHyNAfxYmDfmhQG4J0985OuT3G3Ho9NSGHjkBn4aU4bgklWifRhe1HX8dUSyw==}
+ '@pnpm/exe.linux-x64@12.3.4':
+ resolution: {integrity: sha512-2ZqOlSPkfwX1h5cR+FPiWf8+F+2hZT/3TvhUK5sigHqwaQCIiq8R7CGxhndKs63JtcLi2a1Qpo+wX/EoyfjyJQ==}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@pnpm/exe.win32-arm64@12.0.0':
- resolution: {integrity: sha512-O5F76A4oVFrpDGdFxEszRIThOSBfjHdH5c006gR+7UTCfiXrukr1XfqPungUI1DXcSR5gb9jBsPQqQZOAoOOxw==}
+ '@pnpm/exe.win32-arm64@12.3.4':
+ resolution: {integrity: sha512-ANyrHqyqco6SXBysUTRF74itDyyraea7IbFsKFdNXTjcFnfycTDx37EwuhdpPYFNSIh2JhUG4fByclsRfiHX7w==}
cpu: [arm64]
os: [win32]
- '@pnpm/exe.win32-x64@12.0.0':
- resolution: {integrity: sha512-5dKFajIEWJ1ai+KHXFJvskY6vchbunmLwSUV2ywbLymcmJjfY5XJVpgzPCyIoVCMVG0zHorr66+hM8h8b3aRfQ==}
+ '@pnpm/exe.win32-x64@12.3.4':
+ resolution: {integrity: sha512-WH/KqBPY/hq2Tb7SgQltEZytimcjgKRaCRL/aM9CI0c67iKc5TVmHUhIiL3Ux9FB4bWn36i6XewUcScQI+zG8w==}
cpu: [x64]
os: [win32]
- pnpm@12.0.0:
- resolution: {integrity: sha512-ni49w5EZlYaNyUuBdcIXwn6VQI+gO0oidJd48rNPdzt3zdOznt6BcbIvzVO+ajU0Lp+smUimjvWN9kiM6Jp+Zw==}
+ pnpm@12.3.4:
+ resolution: {integrity: sha512-lhqkH7B32joEpEHZ+OFevAyW2o73ELLrZ7+e58sGEOq9SPH9hfUc/+c4RnhfoPh8VqOocqHYk/hEZ0G1zORUVw==}
engines: {node: '>=18.*'}
hasBin: true
snapshots:
- '@pnpm/exe.darwin-arm64@12.0.0':
+ '@pnpm/exe.darwin-arm64@12.3.4':
optional: true
- '@pnpm/exe.darwin-x64@12.0.0':
+ '@pnpm/exe.darwin-x64@12.3.4':
optional: true
- '@pnpm/exe.linux-arm64-musl@12.0.0':
+ '@pnpm/exe.linux-arm64-musl@12.3.4':
optional: true
- '@pnpm/exe.linux-arm64@12.0.0':
+ '@pnpm/exe.linux-arm64@12.3.4':
optional: true
- '@pnpm/exe.linux-x64-musl@12.0.0':
+ '@pnpm/exe.linux-x64-musl@12.3.4':
optional: true
- '@pnpm/exe.linux-x64@12.0.0':
+ '@pnpm/exe.linux-x64@12.3.4':
optional: true
- '@pnpm/exe.win32-arm64@12.0.0':
+ '@pnpm/exe.win32-arm64@12.3.4':
optional: true
- '@pnpm/exe.win32-x64@12.0.0':
+ '@pnpm/exe.win32-x64@12.3.4':
optional: true
- pnpm@12.0.0:
+ pnpm@12.3.4:
optionalDependencies:
- '@pnpm/exe.darwin-arm64': 12.0.0
- '@pnpm/exe.darwin-x64': 12.0.0
- '@pnpm/exe.linux-arm64': 12.0.0
- '@pnpm/exe.linux-arm64-musl': 12.0.0
- '@pnpm/exe.linux-x64': 12.0.0
- '@pnpm/exe.linux-x64-musl': 12.0.0
- '@pnpm/exe.win32-arm64': 12.0.0
- '@pnpm/exe.win32-x64': 12.0.0
+ '@pnpm/exe.darwin-arm64': 12.3.4
+ '@pnpm/exe.darwin-x64': 12.3.4
+ '@pnpm/exe.linux-arm64': 12.3.4
+ '@pnpm/exe.linux-arm64-musl': 12.3.4
+ '@pnpm/exe.linux-x64': 12.3.4
+ '@pnpm/exe.linux-x64-musl': 12.3.4
+ '@pnpm/exe.win32-arm64': 12.3.4
+ '@pnpm/exe.win32-x64': 12.3.4
---
lockfileVersion: '9.0'
diff --git a/package.json b/package.json
index 695a8f2e20..965f175b3d 100644
--- a/package.json
+++ b/package.json
@@ -4,7 +4,7 @@
"license": "MPL-2.0",
"author": "Kaleidos INC Sucursal en España SL",
"private": true,
- "packageManager": "pnpm@11.20.0+sha512.9a6f330a95b66446ea088faf1521405a8a01f07fde7124cc9958dfed52d4bb436737e65b08f85f37b46fcba375092558ac51262b816844b22f63406ed166bfee",
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457",
"repository": {
"type": "git",
"url": "https://github.com/penpot/penpot"
diff --git a/plugins/apps/colors-to-tokens-plugin/package.json b/plugins/apps/colors-to-tokens-plugin/package.json
index 8d6aff2904..2bec61bf8b 100644
--- a/plugins/apps/colors-to-tokens-plugin/package.json
+++ b/plugins/apps/colors-to-tokens-plugin/package.json
@@ -13,5 +13,5 @@
"lint": "eslint .",
"test": "vitest"
},
- "packageManager": "pnpm@12.0.0+sha512.9e2e3dc3911995868dc94b8175c217c27e95408fa03b4a22749778f2b34f773b77cdd3b39ede8171b22fcd53be6a35342e9fac9948a68ef58df6488ce89a7e67"
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457"
}
diff --git a/plugins/apps/composable-test-suite/package.json b/plugins/apps/composable-test-suite/package.json
index 60697f5367..949296d0b4 100644
--- a/plugins/apps/composable-test-suite/package.json
+++ b/plugins/apps/composable-test-suite/package.json
@@ -26,5 +26,5 @@
"vite": "^8.2.2",
"vite-live-preview": "^0.4.0"
},
- "packageManager": "pnpm@12.0.0+sha512.9e2e3dc3911995868dc94b8175c217c27e95408fa03b4a22749778f2b34f773b77cdd3b39ede8171b22fcd53be6a35342e9fac9948a68ef58df6488ce89a7e67"
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457"
}
diff --git a/plugins/apps/composable-test-suite/pnpm-lock.yaml b/plugins/apps/composable-test-suite/pnpm-lock.yaml
index 93ed3672c1..1dffd301c7 100644
--- a/plugins/apps/composable-test-suite/pnpm-lock.yaml
+++ b/plugins/apps/composable-test-suite/pnpm-lock.yaml
@@ -1,3 +1,104 @@
+---
+lockfileVersion: '9.0'
+
+importers:
+
+ .:
+ configDependencies: {}
+ packageManagerDependencies:
+ pnpm:
+ specifier: 12.3.4
+ version: 12.3.4
+
+packages:
+
+ '@pnpm/exe.darwin-arm64@12.3.4':
+ resolution: {integrity: sha512-PAyUol8T1+/+ViOiXAt51ECA+QnfXCqz6foL4bW+LsoX0NcVd5XVEM2mRQu+LV4oc7uRz9zf9U0P+XFfuQeDAw==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@pnpm/exe.darwin-x64@12.3.4':
+ resolution: {integrity: sha512-fxP9JCk0Cdye+ePuj+GJJLMUMTqHGWRdb1dtv4How876uQ2ehxvenpgiYAir/ceO9PsYUZkFTtyZdx+rRu5QOA==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@pnpm/exe.linux-arm64-musl@12.3.4':
+ resolution: {integrity: sha512-FBOt0/7ye6O6q4AllVV5QMviB6qE6fqkeczV/+MDWQsmo+QJrlfsh6X7CpH/tClVpBZEyIbjpUoT8bNhCYBxEg==}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@pnpm/exe.linux-arm64@12.3.4':
+ resolution: {integrity: sha512-t71AVA7LRqiKTyZ5xMYaZc2n5DfdpMbfokZuiIOXHBOM03ECnF0t4iYwaBDqJgVjlKYUOwaF/bRQajGNA4cJ4w==}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@pnpm/exe.linux-x64-musl@12.3.4':
+ resolution: {integrity: sha512-RPmk7Jb/aYaFvL2iyDN/AtMY+hUEsue732WmXpcuQ9tBpMnGyA5py7Z3+e+qmQaJ0zY/4ni9jJiyPBQHujmv6w==}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@pnpm/exe.linux-x64@12.3.4':
+ resolution: {integrity: sha512-2ZqOlSPkfwX1h5cR+FPiWf8+F+2hZT/3TvhUK5sigHqwaQCIiq8R7CGxhndKs63JtcLi2a1Qpo+wX/EoyfjyJQ==}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@pnpm/exe.win32-arm64@12.3.4':
+ resolution: {integrity: sha512-ANyrHqyqco6SXBysUTRF74itDyyraea7IbFsKFdNXTjcFnfycTDx37EwuhdpPYFNSIh2JhUG4fByclsRfiHX7w==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@pnpm/exe.win32-x64@12.3.4':
+ resolution: {integrity: sha512-WH/KqBPY/hq2Tb7SgQltEZytimcjgKRaCRL/aM9CI0c67iKc5TVmHUhIiL3Ux9FB4bWn36i6XewUcScQI+zG8w==}
+ cpu: [x64]
+ os: [win32]
+
+ pnpm@12.3.4:
+ resolution: {integrity: sha512-lhqkH7B32joEpEHZ+OFevAyW2o73ELLrZ7+e58sGEOq9SPH9hfUc/+c4RnhfoPh8VqOocqHYk/hEZ0G1zORUVw==}
+ engines: {node: '>=18.*'}
+ hasBin: true
+
+snapshots:
+
+ '@pnpm/exe.darwin-arm64@12.3.4':
+ optional: true
+
+ '@pnpm/exe.darwin-x64@12.3.4':
+ optional: true
+
+ '@pnpm/exe.linux-arm64-musl@12.3.4':
+ optional: true
+
+ '@pnpm/exe.linux-arm64@12.3.4':
+ optional: true
+
+ '@pnpm/exe.linux-x64-musl@12.3.4':
+ optional: true
+
+ '@pnpm/exe.linux-x64@12.3.4':
+ optional: true
+
+ '@pnpm/exe.win32-arm64@12.3.4':
+ optional: true
+
+ '@pnpm/exe.win32-x64@12.3.4':
+ optional: true
+
+ pnpm@12.3.4:
+ optionalDependencies:
+ '@pnpm/exe.darwin-arm64': 12.3.4
+ '@pnpm/exe.darwin-x64': 12.3.4
+ '@pnpm/exe.linux-arm64': 12.3.4
+ '@pnpm/exe.linux-arm64-musl': 12.3.4
+ '@pnpm/exe.linux-x64': 12.3.4
+ '@pnpm/exe.linux-x64-musl': 12.3.4
+ '@pnpm/exe.win32-arm64': 12.3.4
+ '@pnpm/exe.win32-x64': 12.3.4
+
+---
lockfileVersion: '9.0'
settings:
@@ -9,35 +110,30 @@ importers:
.:
dependencies:
'@penpot/plugin-styles':
- specifier: 1.4.1
- version: 1.4.1
+ specifier: 1.4.2
+ version: 1.4.2
'@penpot/plugin-types':
- specifier: 1.4.1
- version: 1.4.1
+ specifier: 1.4.2
+ version: 1.4.2
devDependencies:
playwright:
- specifier: ^1.61.1
- version: 1.61.1
+ specifier: ^1.62.1
+ version: 1.63.0
prettier:
- specifier: ^3.6.2
- version: 3.9.4
+ specifier: ^3.9.6
+ version: 3.9.6
typescript:
- specifier: ^5.8.3
+ specifier: ^5.9.3
version: 5.9.3
vite:
- specifier: ^7.0.8
- version: 7.3.6(@types/node@26.0.1)
+ specifier: ^8.2.2
+ version: 8.2.2(@types/node@26.0.1)(esbuild@0.28.1)
vite-live-preview:
- specifier: ^0.3.2
- version: 0.3.2(vite@7.3.6(@types/node@26.0.1))
+ specifier: ^0.4.0
+ version: 0.4.0(vite@8.2.2(@types/node@26.0.1)(esbuild@0.28.1))
packages:
- '@commander-js/extra-typings@12.1.0':
- resolution: {integrity: sha512-wf/lwQvWAA0goIghcb91dQYpkLBcyhOhQNqG/VgWhnKzgt+UOMvra7EX/2fv70arm5RW+PUHoQHHDa6/p77Eqg==}
- peerDependencies:
- commander: ~12.1.0
-
'@esbuild/aix-ppc64@0.28.1':
resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==}
engines: {node: '>=18'}
@@ -194,161 +290,119 @@ packages:
cpu: [x64]
os: [win32]
- '@penpot/plugin-styles@1.4.1':
- resolution: {integrity: sha512-6TuJqKQsq1Xmhn2A02R+kCOzIzIdqgFg5z6ncLH2PlAflKIX6aYsGiOF7yFx4RYgCegRVMFPnVis6/hwO+YGQg==}
+ '@oxc-project/types@0.148.0':
+ resolution: {integrity: sha512-Nm4s/jB+4FpFsPhWGEC4h7rzksesmtnMXomo6rCMcg/b8zLQuOziRgkCS1fxDCXOlJB/6Q8oABOZ/OP6RIPj9A==}
- '@penpot/plugin-types@1.4.1':
- resolution: {integrity: sha512-pHE2B3GI8M5JR03S/NdBoN+z6e1R1IEh3vpFbLG9LN0EZpQE6nEbmCo5jWAWI73Jqlg6CHG/RWVJNmWECnkDTA==}
+ '@penpot/plugin-styles@1.4.2':
+ resolution: {integrity: sha512-/Rn6xy80W+mxAi6j5/SOiNY8P0qHMB1WW+j+nyZajecFSnVGPzSWOiMcIDH+Jtsz7Xpmd5AICpgVM0xjechQig==}
- '@rollup/rollup-android-arm-eabi@4.62.2':
- resolution: {integrity: sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg==}
+ '@penpot/plugin-types@1.4.2':
+ resolution: {integrity: sha512-O8wU6RSYE8bIVU7g8cSTYi32ppxs3R13dq7X3Nn9tmDaJjBOKOBpVLuoRPIp3fJC65fv8/7om0sdrtFoL5v19g==}
+
+ '@rolldown/binding-android-arm-eabi@1.2.7':
+ resolution: {integrity: sha512-EypzgnYCwyVY4NDHKzGmNJT5b+XaQEBniHxsMdeIQLB/tcCzZnhqrzHpZFbX9iaxx+5RiB8caATBtfvZP7zVxQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [android]
- '@rollup/rollup-android-arm64@4.62.2':
- resolution: {integrity: sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw==}
+ '@rolldown/binding-android-arm64@1.2.7':
+ resolution: {integrity: sha512-l17HE9EweWaqJZhuUuNBN/FzM62xw+DECVnJyvMsxn8vJFAGLy5QfLDoYAcronkAN8VxKZHezDpulHDPx95vFw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [android]
- '@rollup/rollup-darwin-arm64@4.62.2':
- resolution: {integrity: sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A==}
+ '@rolldown/binding-darwin-arm64@1.2.7':
+ resolution: {integrity: sha512-8ED8ELFvHXc6OCETIn4gXObPiaR6bckM/ipXtbzlPVDRMBfEGjCKgO90F9YtfdpDatVx/ZQw7aZ1vUMf/+T3Mw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [darwin]
- '@rollup/rollup-darwin-x64@4.62.2':
- resolution: {integrity: sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA==}
+ '@rolldown/binding-darwin-x64@1.2.7':
+ resolution: {integrity: sha512-/WPripjtiAIZ2tWY7ddijORT0Ujg87wxWW/qcoFVCKAWVDPhtY0xr7Dj0M3GyNGz60jGwTElhro/mkF9dT7dDQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [darwin]
- '@rollup/rollup-freebsd-arm64@4.62.2':
- resolution: {integrity: sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw==}
- cpu: [arm64]
- os: [freebsd]
-
- '@rollup/rollup-freebsd-x64@4.62.2':
- resolution: {integrity: sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg==}
+ '@rolldown/binding-freebsd-x64@1.2.7':
+ resolution: {integrity: sha512-14DI4NcqpvbICxSnGLx3PmtDaWqRP/KGSGb6C+JLLVPeZRl6dKdHba3pGsqT3vpdTqhEYIPG0MMQ8c0xYqoJxA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [freebsd]
- '@rollup/rollup-linux-arm-gnueabihf@4.62.2':
- resolution: {integrity: sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg==}
+ '@rolldown/binding-linux-arm-gnueabihf@1.2.7':
+ resolution: {integrity: sha512-bxrWIRvHWQvbJwi+VIie/kDJmQxcNE6xxWwZdqF/ExVAigtHkv54WTLQPb+QsZdnFy18fg7JPfWGL0RH6vwIlQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
- libc: [glibc]
- '@rollup/rollup-linux-arm-musleabihf@4.62.2':
- resolution: {integrity: sha512-JqgflS8wEB+UXV/vS1RpRbifGBeN4D5lz8D8oOFbFZw4vedvdOgCFAjfBmIMdW3yL10XpQQ0Ambepw6MXrhOnA==}
- cpu: [arm]
- os: [linux]
- libc: [musl]
-
- '@rollup/rollup-linux-arm64-gnu@4.62.2':
- resolution: {integrity: sha512-wnFJkogWvN4jm/hQRF2UBaeUmk20j5+DmHvoyWii2b8HJDyvz1MF2OU/6ynXt2KR63rbZLWkFpoytpdc/yBuSA==}
+ '@rolldown/binding-linux-arm64-gnu@1.2.7':
+ resolution: {integrity: sha512-toOY2BChBZyuxU7OYX6Tn389di4IzAqPTycVcci0O7FSfBqzRB3RZn+K5Is6ANf4tmgRd/K1yZTsNTXbkXsnLg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-arm64-musl@4.62.2':
- resolution: {integrity: sha512-HVu2bp0zhvJ8xHEV9+UUs7S90VadmBSY3LcIMvozbPo4AuMGDWlz3ymHLHZPX4hR67TKTt8Qp5PJ5RBg/i+RMQ==}
+ '@rolldown/binding-linux-arm64-musl@1.2.7':
+ resolution: {integrity: sha512-lAIXTH/aiLRLxsTgQvfhjo4K1ydWIp00+V0voOr9beb/9ZmkUFrSIb03dXNFRgMNvkE6oGsF10ioQ6UsI+vS5Q==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@rollup/rollup-linux-loong64-gnu@4.62.2':
- resolution: {integrity: sha512-mQqqAV8QaoSgr9I2fKDLY2BAVvmKjWoGiu/cSYQonsLvtqwEn1E4QYfnCOcp5zoEqNhsDYin1s6jx/VJmrxlZg==}
- cpu: [loong64]
- os: [linux]
- libc: [glibc]
-
- '@rollup/rollup-linux-loong64-musl@4.62.2':
- resolution: {integrity: sha512-IxKLoxCQ2IWi6bT2akyDUBGsOImDKB+sPp4EsTmwFQ/fMwpCKm8uLSSgP/Kx/QYUgKis6SEZ5/Nlhup0DIA0PQ==}
- cpu: [loong64]
- os: [linux]
- libc: [musl]
-
- '@rollup/rollup-linux-ppc64-gnu@4.62.2':
- resolution: {integrity: sha512-Mk5ha2RQSgyFfmYYLkBpPnUk8D8FriBxesO1u9O75X0mHgXL1UQcH5Itl2lurWL2tj0RxV9b9tJgipac0hRY9A==}
+ '@rolldown/binding-linux-ppc64-gnu@1.2.7':
+ resolution: {integrity: sha512-kdnwS28Pkenp/mZMRwjXXXwxQ7pIsm+bF919LUK93BOyhcLsrVKdP2p9fxpiPNPAbNuch8ypQt0pm2P2LYCAGg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ppc64]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-ppc64-musl@4.62.2':
- resolution: {integrity: sha512-CjvEnqJL/0/TQ3TXX3OPIJ/kmBellrWd4heXUmHeJlTnmwjKpSJzoehLaL6Xk0ZnMHBu9dZuFADNOrtjF4v+2w==}
- cpu: [ppc64]
- os: [linux]
- libc: [musl]
-
- '@rollup/rollup-linux-riscv64-gnu@4.62.2':
- resolution: {integrity: sha512-1SiZbzwdkaDURsew/tSOrooKiYy7EQGT6m8ufavAi9NEyQb/6VuIxFXAL1fqa4iZe3g4NbNk4P7J32z2tw5Mgg==}
- cpu: [riscv64]
- os: [linux]
- libc: [glibc]
-
- '@rollup/rollup-linux-riscv64-musl@4.62.2':
- resolution: {integrity: sha512-nQts12zJ3NQRoE6uYljOH89v7szzLDvG2JD/vsX+vGXU8w/At1GowTZ5/7qeFQ8m7L55rpR8Okugnuo5bgjy2Q==}
- cpu: [riscv64]
- os: [linux]
- libc: [musl]
-
- '@rollup/rollup-linux-s390x-gnu@4.62.2':
- resolution: {integrity: sha512-E9/ll019jhPIJgpzfZoIkBGhcz+kKNgVWYRY0zr9srBdPPFVpvOKW8VaJKUbeK+eZXyQF9ltME+Kk6affeaPgg==}
+ '@rolldown/binding-linux-s390x-gnu@1.2.7':
+ resolution: {integrity: sha512-516OdsyLdr5E65paF3yBF55t8mfm9+gmtCsK3xI7XKXIT7EfRlHhxL8K/NR6Hu8BWSgF5+1w74lTL0+nxcc8Qw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [s390x]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-x64-gnu@4.62.2':
- resolution: {integrity: sha512-5BqxR/pshjey51iliyzTD5Xi3EN0aLmQ2lZ3lvefVV9c82BvrLo2/6OT55iifpWBufs6kdwWbuOKS841DrmK9A==}
+ '@rolldown/binding-linux-x64-gnu@1.2.7':
+ resolution: {integrity: sha512-r8/z8n7GFaYRln3xmP1Cxy0HH/HLM0uBUPkEuSVEfKGDA89M0FsZRZJRSwe/tJjRx+fpH/gjorfhB8tmEbSFLA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-x64-musl@4.62.2':
- resolution: {integrity: sha512-uNN83XxQrRAh/w0/pmAfibcwyb6YWt4gP+dpnQKPVJshAloQ785ii8CT8ZCIxkGg9opVsvAlGhFitSm6D1Jjpg==}
+ '@rolldown/binding-linux-x64-musl@1.2.7':
+ resolution: {integrity: sha512-pAsE8iiDxUg1xBqdhrTfg45AVDVpirjz00sblEYClGNNcMnDb+e8beQgqIAw6LvauX/APvgxUnwrgun/YYGBhw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [musl]
- '@rollup/rollup-openbsd-x64@4.62.2':
- resolution: {integrity: sha512-srjEIxSH3LRnJN6THczDHWQplqEMFiAJrTab0msUryh9kwNpkICf3Ea6q6MN/2cZwRFUNx5w+h6Hpi4QuHS6Zg==}
- cpu: [x64]
- os: [openbsd]
-
- '@rollup/rollup-openharmony-arm64@4.62.2':
- resolution: {integrity: sha512-8hOJnxgbyObnCm5AlRA3A931xX19xq80RjVTKgJOvEKWqJruP/Uf12IbAOaDjjEXYRewwHLfmF0YRIdK3OwKWA==}
+ '@rolldown/binding-openharmony-arm64@1.2.7':
+ resolution: {integrity: sha512-lTcIYmmnQQA8Or/2DatS6oSqcdLHvendjS+zLu+FwgToynWMRSmQdpM65fTANJgIS4mjbMOo5KT2lnT9SAb96w==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [openharmony]
- '@rollup/rollup-win32-arm64-msvc@4.62.2':
- resolution: {integrity: sha512-mmF4AY1i0hG/bLWUctUq59gtmgaSIRa3cu/A3JFRp/sCNEme2bgDEiDS22P9FbnJB8NJNF4jPJiSP5RHQpUTDg==}
+ '@rolldown/binding-win32-arm64-msvc@1.2.7':
+ resolution: {integrity: sha512-e3Gu3WxbNk/UqQhxqU7YIYO+9ZBvWNz3U+h/qRFosscMFzdRPbXYSaSWgSnklv2fz1TgzBTcti2z35c/7irsHw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [win32]
- '@rollup/rollup-win32-ia32-msvc@4.62.2':
- resolution: {integrity: sha512-DZgkknc6jhHrk46V25vbAM0zZkyP0nSDkJB8/dRkLTxv470dOmWDqGoEJl/9A0dFfS7yE3REOwNDxpHwSLSt0Q==}
- cpu: [ia32]
- os: [win32]
-
- '@rollup/rollup-win32-x64-gnu@4.62.2':
- resolution: {integrity: sha512-T6xr6ucWSFto+VGajA8YH26LdpHRuP4YLHEKAtCWvJDOlnmWcDZVCI2Jmjr+IFHDlt2zRaTAKE4tfjTaWLgJBg==}
+ '@rolldown/binding-win32-x64-msvc@1.2.7':
+ resolution: {integrity: sha512-W/jg5qoRSqjsEv0+dZi4e687mcHqmVuU0P4fK6qS/xjetW2Gmc1W8j//z5nAeNcC8Ttm0hV46IjcYeuVwYhuiw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.62.2':
- resolution: {integrity: sha512-BfzEnDJOt9T8M989/lA37EcJgat01wLRnoi5dQf3QzOH7jzpqTAzdDbVfRljVr5r+jzKqpbHeyOfAaXxAd0PAA==}
- cpu: [x64]
- os: [win32]
+ '@rolldown/pluginutils@1.0.1':
+ resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==}
- '@types/ansi-html@0.0.0':
- resolution: {integrity: sha512-PEBpUlteD0VW02udY7UjjgjxHwVXmkdanhmRIMkzatGmORJGjzqKylrXVxz1G5xRTEECMxIkwTHpPmZ9Jb7ANQ==}
+ '@seahax/deep-copy@0.1.0':
+ resolution: {integrity: sha512-Ux88qw9ypPbqszDGwj0JvP8FP017MV3ck7jnkit+0i3mecTkqhYiCUqy3exbxhGFBu07zrUS6yPRUWVct1eSMQ==}
- '@types/debug@4.1.13':
- resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==}
-
- '@types/estree@1.0.9':
- resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==}
-
- '@types/ms@2.1.0':
- resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
+ '@seahax/semaphore@0.5.1':
+ resolution: {integrity: sha512-q6SXYYbE6X+LDcq2h2yCgE+pCWJumNP3XCZkztdG4S4tiig9akMZGp8TsfU/EIRcHWPdnQ3BA8/NAvdDYdF/NQ==}
'@types/node@26.0.1':
resolution: {integrity: sha512-fc3KiUoBt6kie0N9bIW3E47vZsuaMf0PM2AaUpLCLT0s/LvX1nxAim6Fc049cNxODPpGm6qRAuUOB86SkRuPQw==}
@@ -356,27 +410,13 @@ packages:
'@types/ws@8.18.1':
resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==}
- ansi-html@0.0.9:
- resolution: {integrity: sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg==}
- engines: {'0': node >= 0.8.0}
- hasBin: true
+ ansi-regex@6.3.0:
+ resolution: {integrity: sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ==}
+ engines: {node: '>=12'}
- chalk@5.6.2:
- resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==}
- engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
-
- commander@12.1.0:
- resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==}
- engines: {node: '>=18'}
-
- debug@4.4.3:
- resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
- engines: {node: '>=6.0'}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
+ detect-libc@2.1.2:
+ resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
+ engines: {node: '>=8'}
esbuild@0.28.1:
resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==}
@@ -396,28 +436,90 @@ packages:
picomatch:
optional: true
- fsevents@2.3.2:
- resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
- os: [darwin]
-
fsevents@2.3.3:
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
- ms@2.1.3:
- resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+ lightningcss-android-arm64@1.33.0:
+ resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [android]
- nanoid@3.3.15:
- resolution: {integrity: sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==}
+ lightningcss-darwin-arm64@1.33.0:
+ resolution: {integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [darwin]
+
+ lightningcss-darwin-x64@1.33.0:
+ resolution: {integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [darwin]
+
+ lightningcss-freebsd-x64@1.33.0:
+ resolution: {integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [freebsd]
+
+ lightningcss-linux-arm-gnueabihf@1.33.0:
+ resolution: {integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm]
+ os: [linux]
+
+ lightningcss-linux-arm64-gnu@1.33.0:
+ resolution: {integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ lightningcss-linux-arm64-musl@1.33.0:
+ resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ lightningcss-linux-x64-gnu@1.33.0:
+ resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ lightningcss-linux-x64-musl@1.33.0:
+ resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ lightningcss-win32-arm64-msvc@1.33.0:
+ resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [win32]
+
+ lightningcss-win32-x64-msvc@1.33.0:
+ resolution: {integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [win32]
+
+ lightningcss@1.33.0:
+ resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==}
+ engines: {node: '>= 12.0.0'}
+
+ nanoid@3.3.18:
+ resolution: {integrity: sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
- p-defer@4.0.1:
- resolution: {integrity: sha512-Mr5KC5efvAK5VUptYEIopP1bakB85k2IWXaRC0rsh1uwn1L6M0LVml8OIQ4Gudg4oyZakf7FmeRLkMMtZW1i5A==}
- engines: {node: '>=12'}
-
picocolors@1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
@@ -425,34 +527,42 @@ packages:
resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==}
engines: {node: '>=12'}
- playwright-core@1.61.1:
- resolution: {integrity: sha512-h7Qlt6m4REp25qvIdvbDtVmD4LqVXfpRxhORv9L0jzETM05p4fuPJ3dKyuSXQxDSbXnmS79HAgi9589lGSpLkg==}
- engines: {node: '>=18'}
+ picomatch@4.0.7:
+ resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==}
+ engines: {node: '>=12'}
+
+ playwright-core@1.63.0:
+ resolution: {integrity: sha512-rYCsBF/M5HjUch52bbtVONEFjv6Xu8sm8h72dNlR5bzIE1fvC/bxgspzkjSfU+MweEMmPM8KJebG6nnyxo5mCg==}
+ engines: {node: '>=20'}
hasBin: true
- playwright@1.61.1:
- resolution: {integrity: sha512-DWnY5o3YbLWK4GovuAVwpqL+1VwGNdUGrRr++8j8PtQQzvAVZUIMjKQ90fY689sEJZJBbZVw1rXaOKSTitkzPQ==}
- engines: {node: '>=18'}
+ playwright@1.63.0:
+ resolution: {integrity: sha512-+7ziBLidS4NaNCdt57SUDT+wYmmd5fmiQejUic/kb+YsYSCPyOOE9sebzMjNmQrsnNpDJqd4WHvV/8lfKfUDUg==}
+ engines: {node: '>=20'}
hasBin: true
- postcss@8.5.16:
- resolution: {integrity: sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==}
+ postcss@8.5.28:
+ resolution: {integrity: sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==}
engines: {node: ^10 || ^12 || >=14}
- prettier@3.9.4:
- resolution: {integrity: sha512-yWG/o/4oJfo036EKAfK6ACAoDOfHeRHx4tuxkfBZiauURiaSmYwlpOr5LQqKtIkRD2z1PLteme2WoxEnj4tHTg==}
+ prettier@3.9.6:
+ resolution: {integrity: sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==}
engines: {node: '>=14'}
hasBin: true
- rollup@4.62.2:
- resolution: {integrity: sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA==}
- engines: {node: '>=18.0.0', npm: '>=8.0.0'}
+ rolldown@1.2.7:
+ resolution: {integrity: sha512-g0EtLvBjTUB7jhyV0S/TCup3v/XSVl45vUIGbOGU4QPiyjTenCe4mKuFvW9fEgYmS2Fo42AUssRmNuMziXdrig==}
+ engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
source-map-js@1.2.1:
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
engines: {node: '>=0.10.0'}
+ strip-ansi@7.2.0:
+ resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==}
+ engines: {node: '>=12'}
+
tinyglobby@0.2.17:
resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==}
engines: {node: '>=12.0.0'}
@@ -465,21 +575,21 @@ packages:
undici-types@8.3.0:
resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==}
- vite-live-preview@0.3.2:
- resolution: {integrity: sha512-NrmGaAc85qvkx/+6FluiTo9rLnoY+/NOYnuUvcW5Yb5tSJzUxuloXYrCSS1dtxQB9YKUbpQ95JCb0GRuF//JEQ==}
- hasBin: true
+ vite-live-preview@0.4.0:
+ resolution: {integrity: sha512-Qz8kr0kixXwnQl+zLPZX66OjajN4jnVnDwhNToJsO6TTboUtBo8pEmRuc0iBmkwW9lXR8mOeMu+QtxFkXBcHYg==}
peerDependencies:
- vite: '>=5.2.13'
+ vite: '>=5.4.0'
- vite@7.3.6:
- resolution: {integrity: sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg==}
+ vite@8.2.2:
+ resolution: {integrity: sha512-cFKLV/PRgAUlIRm5WjMjJ86jrftzpqcgH+Us+DS8mI3CDNiH30Whrz8uHL3+MOLPAgqbMBAqWdAHAphOAM+z/Q==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
peerDependencies:
'@types/node': ^20.19.0 || >=22.12.0
+ '@vitejs/devtools': ^0.4.0 || ^0.5.0
+ esbuild: ^0.27.0 || ^0.28.0
jiti: '>=1.21.0'
less: ^4.0.0
- lightningcss: ^1.21.0
sass: ^1.70.0
sass-embedded: ^1.70.0
stylus: '>=0.54.8'
@@ -490,12 +600,14 @@ packages:
peerDependenciesMeta:
'@types/node':
optional: true
+ '@vitejs/devtools':
+ optional: true
+ esbuild:
+ optional: true
jiti:
optional: true
less:
optional: true
- lightningcss:
- optional: true
sass:
optional: true
sass-embedded:
@@ -525,10 +637,6 @@ packages:
snapshots:
- '@commander-js/extra-typings@12.1.0(commander@12.1.0)':
- dependencies:
- commander: 12.1.0
-
'@esbuild/aix-ppc64@0.28.1':
optional: true
@@ -607,94 +715,62 @@ snapshots:
'@esbuild/win32-x64@0.28.1':
optional: true
- '@penpot/plugin-styles@1.4.1': {}
+ '@oxc-project/types@0.148.0': {}
- '@penpot/plugin-types@1.4.1': {}
+ '@penpot/plugin-styles@1.4.2': {}
- '@rollup/rollup-android-arm-eabi@4.62.2':
+ '@penpot/plugin-types@1.4.2': {}
+
+ '@rolldown/binding-android-arm-eabi@1.2.7':
optional: true
- '@rollup/rollup-android-arm64@4.62.2':
+ '@rolldown/binding-android-arm64@1.2.7':
optional: true
- '@rollup/rollup-darwin-arm64@4.62.2':
+ '@rolldown/binding-darwin-arm64@1.2.7':
optional: true
- '@rollup/rollup-darwin-x64@4.62.2':
+ '@rolldown/binding-darwin-x64@1.2.7':
optional: true
- '@rollup/rollup-freebsd-arm64@4.62.2':
+ '@rolldown/binding-freebsd-x64@1.2.7':
optional: true
- '@rollup/rollup-freebsd-x64@4.62.2':
+ '@rolldown/binding-linux-arm-gnueabihf@1.2.7':
optional: true
- '@rollup/rollup-linux-arm-gnueabihf@4.62.2':
+ '@rolldown/binding-linux-arm64-gnu@1.2.7':
optional: true
- '@rollup/rollup-linux-arm-musleabihf@4.62.2':
+ '@rolldown/binding-linux-arm64-musl@1.2.7':
optional: true
- '@rollup/rollup-linux-arm64-gnu@4.62.2':
+ '@rolldown/binding-linux-ppc64-gnu@1.2.7':
optional: true
- '@rollup/rollup-linux-arm64-musl@4.62.2':
+ '@rolldown/binding-linux-s390x-gnu@1.2.7':
optional: true
- '@rollup/rollup-linux-loong64-gnu@4.62.2':
+ '@rolldown/binding-linux-x64-gnu@1.2.7':
optional: true
- '@rollup/rollup-linux-loong64-musl@4.62.2':
+ '@rolldown/binding-linux-x64-musl@1.2.7':
optional: true
- '@rollup/rollup-linux-ppc64-gnu@4.62.2':
+ '@rolldown/binding-openharmony-arm64@1.2.7':
optional: true
- '@rollup/rollup-linux-ppc64-musl@4.62.2':
+ '@rolldown/binding-win32-arm64-msvc@1.2.7':
optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.62.2':
+ '@rolldown/binding-win32-x64-msvc@1.2.7':
optional: true
- '@rollup/rollup-linux-riscv64-musl@4.62.2':
- optional: true
+ '@rolldown/pluginutils@1.0.1': {}
- '@rollup/rollup-linux-s390x-gnu@4.62.2':
- optional: true
+ '@seahax/deep-copy@0.1.0': {}
- '@rollup/rollup-linux-x64-gnu@4.62.2':
- optional: true
-
- '@rollup/rollup-linux-x64-musl@4.62.2':
- optional: true
-
- '@rollup/rollup-openbsd-x64@4.62.2':
- optional: true
-
- '@rollup/rollup-openharmony-arm64@4.62.2':
- optional: true
-
- '@rollup/rollup-win32-arm64-msvc@4.62.2':
- optional: true
-
- '@rollup/rollup-win32-ia32-msvc@4.62.2':
- optional: true
-
- '@rollup/rollup-win32-x64-gnu@4.62.2':
- optional: true
-
- '@rollup/rollup-win32-x64-msvc@4.62.2':
- optional: true
-
- '@types/ansi-html@0.0.0': {}
-
- '@types/debug@4.1.13':
- dependencies:
- '@types/ms': 2.1.0
-
- '@types/estree@1.0.9': {}
-
- '@types/ms@2.1.0': {}
+ '@seahax/semaphore@0.5.1': {}
'@types/node@26.0.1':
dependencies:
@@ -704,15 +780,9 @@ snapshots:
dependencies:
'@types/node': 26.0.1
- ansi-html@0.0.9: {}
+ ansi-regex@6.3.0: {}
- chalk@5.6.2: {}
-
- commander@12.1.0: {}
-
- debug@4.4.3:
- dependencies:
- ms: 2.1.3
+ detect-libc@2.1.2: {}
esbuild@0.28.1:
optionalDependencies:
@@ -742,6 +812,7 @@ snapshots:
'@esbuild/win32-arm64': 0.28.1
'@esbuild/win32-ia32': 0.28.1
'@esbuild/win32-x64': 0.28.1
+ optional: true
escape-goat@4.0.0: {}
@@ -749,71 +820,107 @@ snapshots:
optionalDependencies:
picomatch: 4.0.4
- fsevents@2.3.2:
- optional: true
-
fsevents@2.3.3:
optional: true
- ms@2.1.3: {}
+ lightningcss-android-arm64@1.33.0:
+ optional: true
- nanoid@3.3.15: {}
+ lightningcss-darwin-arm64@1.33.0:
+ optional: true
- p-defer@4.0.1: {}
+ lightningcss-darwin-x64@1.33.0:
+ optional: true
+
+ lightningcss-freebsd-x64@1.33.0:
+ optional: true
+
+ lightningcss-linux-arm-gnueabihf@1.33.0:
+ optional: true
+
+ lightningcss-linux-arm64-gnu@1.33.0:
+ optional: true
+
+ lightningcss-linux-arm64-musl@1.33.0:
+ optional: true
+
+ lightningcss-linux-x64-gnu@1.33.0:
+ optional: true
+
+ lightningcss-linux-x64-musl@1.33.0:
+ optional: true
+
+ lightningcss-win32-arm64-msvc@1.33.0:
+ optional: true
+
+ lightningcss-win32-x64-msvc@1.33.0:
+ optional: true
+
+ lightningcss@1.33.0:
+ dependencies:
+ detect-libc: 2.1.2
+ optionalDependencies:
+ lightningcss-android-arm64: 1.33.0
+ lightningcss-darwin-arm64: 1.33.0
+ lightningcss-darwin-x64: 1.33.0
+ lightningcss-freebsd-x64: 1.33.0
+ lightningcss-linux-arm-gnueabihf: 1.33.0
+ lightningcss-linux-arm64-gnu: 1.33.0
+ lightningcss-linux-arm64-musl: 1.33.0
+ lightningcss-linux-x64-gnu: 1.33.0
+ lightningcss-linux-x64-musl: 1.33.0
+ lightningcss-win32-arm64-msvc: 1.33.0
+ lightningcss-win32-x64-msvc: 1.33.0
+
+ nanoid@3.3.18: {}
picocolors@1.1.1: {}
picomatch@4.0.4: {}
- playwright-core@1.61.1: {}
+ picomatch@4.0.7: {}
- playwright@1.61.1:
- dependencies:
- playwright-core: 1.61.1
- optionalDependencies:
- fsevents: 2.3.2
+ playwright-core@1.63.0: {}
- postcss@8.5.16:
+ playwright@1.63.0:
dependencies:
- nanoid: 3.3.15
+ playwright-core: 1.63.0
+
+ postcss@8.5.28:
+ dependencies:
+ nanoid: 3.3.18
picocolors: 1.1.1
source-map-js: 1.2.1
- prettier@3.9.4: {}
+ prettier@3.9.6: {}
- rollup@4.62.2:
+ rolldown@1.2.7:
dependencies:
- '@types/estree': 1.0.9
+ '@oxc-project/types': 0.148.0
+ '@rolldown/pluginutils': 1.0.1
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.62.2
- '@rollup/rollup-android-arm64': 4.62.2
- '@rollup/rollup-darwin-arm64': 4.62.2
- '@rollup/rollup-darwin-x64': 4.62.2
- '@rollup/rollup-freebsd-arm64': 4.62.2
- '@rollup/rollup-freebsd-x64': 4.62.2
- '@rollup/rollup-linux-arm-gnueabihf': 4.62.2
- '@rollup/rollup-linux-arm-musleabihf': 4.62.2
- '@rollup/rollup-linux-arm64-gnu': 4.62.2
- '@rollup/rollup-linux-arm64-musl': 4.62.2
- '@rollup/rollup-linux-loong64-gnu': 4.62.2
- '@rollup/rollup-linux-loong64-musl': 4.62.2
- '@rollup/rollup-linux-ppc64-gnu': 4.62.2
- '@rollup/rollup-linux-ppc64-musl': 4.62.2
- '@rollup/rollup-linux-riscv64-gnu': 4.62.2
- '@rollup/rollup-linux-riscv64-musl': 4.62.2
- '@rollup/rollup-linux-s390x-gnu': 4.62.2
- '@rollup/rollup-linux-x64-gnu': 4.62.2
- '@rollup/rollup-linux-x64-musl': 4.62.2
- '@rollup/rollup-openbsd-x64': 4.62.2
- '@rollup/rollup-openharmony-arm64': 4.62.2
- '@rollup/rollup-win32-arm64-msvc': 4.62.2
- '@rollup/rollup-win32-ia32-msvc': 4.62.2
- '@rollup/rollup-win32-x64-gnu': 4.62.2
- '@rollup/rollup-win32-x64-msvc': 4.62.2
- fsevents: 2.3.3
+ '@rolldown/binding-android-arm-eabi': 1.2.7
+ '@rolldown/binding-android-arm64': 1.2.7
+ '@rolldown/binding-darwin-arm64': 1.2.7
+ '@rolldown/binding-darwin-x64': 1.2.7
+ '@rolldown/binding-freebsd-x64': 1.2.7
+ '@rolldown/binding-linux-arm-gnueabihf': 1.2.7
+ '@rolldown/binding-linux-arm64-gnu': 1.2.7
+ '@rolldown/binding-linux-arm64-musl': 1.2.7
+ '@rolldown/binding-linux-ppc64-gnu': 1.2.7
+ '@rolldown/binding-linux-s390x-gnu': 1.2.7
+ '@rolldown/binding-linux-x64-gnu': 1.2.7
+ '@rolldown/binding-linux-x64-musl': 1.2.7
+ '@rolldown/binding-openharmony-arm64': 1.2.7
+ '@rolldown/binding-win32-arm64-msvc': 1.2.7
+ '@rolldown/binding-win32-x64-msvc': 1.2.7
source-map-js@1.2.1: {}
+ strip-ansi@7.2.0:
+ dependencies:
+ ansi-regex: 6.3.0
+
tinyglobby@0.2.17:
dependencies:
fdir: 6.5.0(picomatch@4.0.4)
@@ -823,35 +930,29 @@ snapshots:
undici-types@8.3.0: {}
- vite-live-preview@0.3.2(vite@7.3.6(@types/node@26.0.1)):
+ vite-live-preview@0.4.0(vite@8.2.2(@types/node@26.0.1)(esbuild@0.28.1)):
dependencies:
- '@commander-js/extra-typings': 12.1.0(commander@12.1.0)
- '@types/ansi-html': 0.0.0
- '@types/debug': 4.1.13
+ '@seahax/deep-copy': 0.1.0
+ '@seahax/semaphore': 0.5.1
'@types/ws': 8.18.1
- ansi-html: 0.0.9
- chalk: 5.6.2
- commander: 12.1.0
- debug: 4.4.3
escape-goat: 4.0.0
- p-defer: 4.0.1
- vite: 7.3.6(@types/node@26.0.1)
+ strip-ansi: 7.2.0
+ vite: 8.2.2(@types/node@26.0.1)(esbuild@0.28.1)
ws: 8.21.0
transitivePeerDependencies:
- bufferutil
- - supports-color
- utf-8-validate
- vite@7.3.6(@types/node@26.0.1):
+ vite@8.2.2(@types/node@26.0.1)(esbuild@0.28.1):
dependencies:
- esbuild: 0.28.1
- fdir: 6.5.0(picomatch@4.0.4)
- picomatch: 4.0.4
- postcss: 8.5.16
- rollup: 4.62.2
+ lightningcss: 1.33.0
+ picomatch: 4.0.7
+ postcss: 8.5.28
+ rolldown: 1.2.7
tinyglobby: 0.2.17
optionalDependencies:
'@types/node': 26.0.1
+ esbuild: 0.28.1
fsevents: 2.3.3
ws@8.21.0: {}
diff --git a/plugins/apps/composable-test-suite/pnpm-workspace.yaml b/plugins/apps/composable-test-suite/pnpm-workspace.yaml
index c5739b7433..5ed0b5af0d 100644
--- a/plugins/apps/composable-test-suite/pnpm-workspace.yaml
+++ b/plugins/apps/composable-test-suite/pnpm-workspace.yaml
@@ -1,2 +1,2 @@
-ignoredBuiltDependencies:
- - esbuild
+allowBuilds:
+ esbuild: true
diff --git a/plugins/apps/contrast-plugin/package.json b/plugins/apps/contrast-plugin/package.json
index 5e6772cc8e..6036de7b96 100644
--- a/plugins/apps/contrast-plugin/package.json
+++ b/plugins/apps/contrast-plugin/package.json
@@ -13,5 +13,5 @@
"lint": "eslint .",
"test": "vitest"
},
- "packageManager": "pnpm@12.0.0+sha512.9e2e3dc3911995868dc94b8175c217c27e95408fa03b4a22749778f2b34f773b77cdd3b39ede8171b22fcd53be6a35342e9fac9948a68ef58df6488ce89a7e67"
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457"
}
diff --git a/plugins/apps/create-palette-plugin/package.json b/plugins/apps/create-palette-plugin/package.json
index 9507e644df..ee5d641bf9 100644
--- a/plugins/apps/create-palette-plugin/package.json
+++ b/plugins/apps/create-palette-plugin/package.json
@@ -12,5 +12,5 @@
"lint": "eslint .",
"test": "vitest"
},
- "packageManager": "pnpm@12.0.0+sha512.9e2e3dc3911995868dc94b8175c217c27e95408fa03b4a22749778f2b34f773b77cdd3b39ede8171b22fcd53be6a35342e9fac9948a68ef58df6488ce89a7e67"
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457"
}
diff --git a/plugins/apps/e2e/package.json b/plugins/apps/e2e/package.json
index 008fd417ff..866566cfa8 100644
--- a/plugins/apps/e2e/package.json
+++ b/plugins/apps/e2e/package.json
@@ -7,5 +7,5 @@
"test": "vitest",
"lint": "eslint ."
},
- "packageManager": "pnpm@12.0.0+sha512.9e2e3dc3911995868dc94b8175c217c27e95408fa03b4a22749778f2b34f773b77cdd3b39ede8171b22fcd53be6a35342e9fac9948a68ef58df6488ce89a7e67"
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457"
}
diff --git a/plugins/apps/example-styles/package.json b/plugins/apps/example-styles/package.json
index 59850da654..3e919d958b 100644
--- a/plugins/apps/example-styles/package.json
+++ b/plugins/apps/example-styles/package.json
@@ -11,5 +11,5 @@
"serve": "vite preview",
"lint": "eslint ."
},
- "packageManager": "pnpm@12.0.0+sha512.9e2e3dc3911995868dc94b8175c217c27e95408fa03b4a22749778f2b34f773b77cdd3b39ede8171b22fcd53be6a35342e9fac9948a68ef58df6488ce89a7e67"
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457"
}
diff --git a/plugins/apps/icons-plugin/package.json b/plugins/apps/icons-plugin/package.json
index 5df19f2d44..749eebfdff 100644
--- a/plugins/apps/icons-plugin/package.json
+++ b/plugins/apps/icons-plugin/package.json
@@ -13,5 +13,5 @@
"lint": "eslint .",
"test": "vitest"
},
- "packageManager": "pnpm@12.0.0+sha512.9e2e3dc3911995868dc94b8175c217c27e95408fa03b4a22749778f2b34f773b77cdd3b39ede8171b22fcd53be6a35342e9fac9948a68ef58df6488ce89a7e67"
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457"
}
diff --git a/plugins/apps/lorem-ipsum-plugin/package.json b/plugins/apps/lorem-ipsum-plugin/package.json
index f747085348..fffd54a5d3 100644
--- a/plugins/apps/lorem-ipsum-plugin/package.json
+++ b/plugins/apps/lorem-ipsum-plugin/package.json
@@ -13,5 +13,5 @@
"lint": "eslint .",
"test": "vitest"
},
- "packageManager": "pnpm@12.0.0+sha512.9e2e3dc3911995868dc94b8175c217c27e95408fa03b4a22749778f2b34f773b77cdd3b39ede8171b22fcd53be6a35342e9fac9948a68ef58df6488ce89a7e67"
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457"
}
diff --git a/plugins/apps/plugin-api-test-suite/package.json b/plugins/apps/plugin-api-test-suite/package.json
index e88b6354fe..3d2fa7ec9b 100644
--- a/plugins/apps/plugin-api-test-suite/package.json
+++ b/plugins/apps/plugin-api-test-suite/package.json
@@ -19,5 +19,5 @@
"devDependencies": {
"playwright": "^1.62.1"
},
- "packageManager": "pnpm@12.0.0+sha512.9e2e3dc3911995868dc94b8175c217c27e95408fa03b4a22749778f2b34f773b77cdd3b39ede8171b22fcd53be6a35342e9fac9948a68ef58df6488ce89a7e67"
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457"
}
diff --git a/plugins/apps/poc-state-plugin/package.json b/plugins/apps/poc-state-plugin/package.json
index c2db3b3009..7a79003310 100644
--- a/plugins/apps/poc-state-plugin/package.json
+++ b/plugins/apps/poc-state-plugin/package.json
@@ -13,5 +13,5 @@
"lint": "eslint .",
"test": "vitest"
},
- "packageManager": "pnpm@12.0.0+sha512.9e2e3dc3911995868dc94b8175c217c27e95408fa03b4a22749778f2b34f773b77cdd3b39ede8171b22fcd53be6a35342e9fac9948a68ef58df6488ce89a7e67"
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457"
}
diff --git a/plugins/apps/poc-tokens-plugin/package.json b/plugins/apps/poc-tokens-plugin/package.json
index e675d5c538..852e7f1764 100644
--- a/plugins/apps/poc-tokens-plugin/package.json
+++ b/plugins/apps/poc-tokens-plugin/package.json
@@ -13,5 +13,5 @@
"lint": "eslint .",
"test": "exit 0"
},
- "packageManager": "pnpm@12.0.0+sha512.9e2e3dc3911995868dc94b8175c217c27e95408fa03b4a22749778f2b34f773b77cdd3b39ede8171b22fcd53be6a35342e9fac9948a68ef58df6488ce89a7e67"
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457"
}
diff --git a/plugins/apps/rename-layers-plugin/package.json b/plugins/apps/rename-layers-plugin/package.json
index ca57c4ff7c..87279ccc4b 100644
--- a/plugins/apps/rename-layers-plugin/package.json
+++ b/plugins/apps/rename-layers-plugin/package.json
@@ -13,5 +13,5 @@
"lint": "eslint .",
"test": "vitest"
},
- "packageManager": "pnpm@12.0.0+sha512.9e2e3dc3911995868dc94b8175c217c27e95408fa03b4a22749778f2b34f773b77cdd3b39ede8171b22fcd53be6a35342e9fac9948a68ef58df6488ce89a7e67"
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457"
}
diff --git a/plugins/apps/table-plugin/package.json b/plugins/apps/table-plugin/package.json
index ccdb6df697..20bfb2245f 100644
--- a/plugins/apps/table-plugin/package.json
+++ b/plugins/apps/table-plugin/package.json
@@ -13,5 +13,5 @@
"lint": "eslint .",
"test": "vitest"
},
- "packageManager": "pnpm@12.0.0+sha512.9e2e3dc3911995868dc94b8175c217c27e95408fa03b4a22749778f2b34f773b77cdd3b39ede8171b22fcd53be6a35342e9fac9948a68ef58df6488ce89a7e67"
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457"
}
diff --git a/plugins/libs/plugin-types/package.json b/plugins/libs/plugin-types/package.json
index 15935921fe..c63c7069ed 100644
--- a/plugins/libs/plugin-types/package.json
+++ b/plugins/libs/plugin-types/package.json
@@ -7,5 +7,5 @@
"build": "node ../../tools/scripts/build-types.mjs",
"lint": "tsc -p . --noEmit"
},
- "packageManager": "pnpm@12.0.0+sha512.9e2e3dc3911995868dc94b8175c217c27e95408fa03b4a22749778f2b34f773b77cdd3b39ede8171b22fcd53be6a35342e9fac9948a68ef58df6488ce89a7e67"
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457"
}
diff --git a/plugins/libs/plugins-runtime/package.json b/plugins/libs/plugins-runtime/package.json
index fa31aac91a..4dc44175bb 100644
--- a/plugins/libs/plugins-runtime/package.json
+++ b/plugins/libs/plugins-runtime/package.json
@@ -16,5 +16,5 @@
"lint": "eslint .",
"test": "vitest"
},
- "packageManager": "pnpm@12.0.0+sha512.9e2e3dc3911995868dc94b8175c217c27e95408fa03b4a22749778f2b34f773b77cdd3b39ede8171b22fcd53be6a35342e9fac9948a68ef58df6488ce89a7e67"
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457"
}
diff --git a/plugins/libs/plugins-styles/package.json b/plugins/libs/plugins-styles/package.json
index 31e7d851b3..62f2b3c21b 100644
--- a/plugins/libs/plugins-styles/package.json
+++ b/plugins/libs/plugins-styles/package.json
@@ -6,5 +6,5 @@
"build": "node ../../tools/scripts/build-css.mjs",
"lint": "echo 0"
},
- "packageManager": "pnpm@12.0.0+sha512.9e2e3dc3911995868dc94b8175c217c27e95408fa03b4a22749778f2b34f773b77cdd3b39ede8171b22fcd53be6a35342e9fac9948a68ef58df6488ce89a7e67"
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457"
}
diff --git a/plugins/package.json b/plugins/package.json
index b7ab60fbd0..25fa71a7fb 100644
--- a/plugins/package.json
+++ b/plugins/package.json
@@ -3,7 +3,7 @@
"version": "0.6.0",
"type": "module",
"license": "MIT",
- "packageManager": "pnpm@12.0.0+sha512.9e2e3dc3911995868dc94b8175c217c27e95408fa03b4a22749778f2b34f773b77cdd3b39ede8171b22fcd53be6a35342e9fac9948a68ef58df6488ce89a7e67",
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457",
"scripts": {
"start": "pnpm run start:app:runtime",
"start:app:runtime": "concurrently --kill-others --names build,server \"pnpm --filter @penpot/plugins-runtime run build:watch\" \"pnpm --filter @penpot/plugins-runtime run preview\"",
diff --git a/plugins/pnpm-lock.yaml b/plugins/pnpm-lock.yaml
index d1d02b8eeb..70b95a2f81 100644
--- a/plugins/pnpm-lock.yaml
+++ b/plugins/pnpm-lock.yaml
@@ -7,96 +7,96 @@ importers:
configDependencies: {}
packageManagerDependencies:
pnpm:
- specifier: 12.0.0
- version: 12.0.0
+ specifier: 12.3.4
+ version: 12.3.4
packages:
- '@pnpm/exe.darwin-arm64@12.0.0':
- resolution: {integrity: sha512-sqeoPfVMIfQhbwzDrKraXY2ynyuWClFqzvfImzAS/yczEru1m5SGvQ9kgFPDvQzJZ9AetedgJeDZC6qYvH8/tQ==}
+ '@pnpm/exe.darwin-arm64@12.3.4':
+ resolution: {integrity: sha512-PAyUol8T1+/+ViOiXAt51ECA+QnfXCqz6foL4bW+LsoX0NcVd5XVEM2mRQu+LV4oc7uRz9zf9U0P+XFfuQeDAw==}
cpu: [arm64]
os: [darwin]
- '@pnpm/exe.darwin-x64@12.0.0':
- resolution: {integrity: sha512-Quc3J6c9cGTy+LDgz1cLVgCNOU9IERuyAlDoEj0DCilKqvo50Jx1GV8k74iwn4J9fFSKkm8JrwNvtTDj3uWnUA==}
+ '@pnpm/exe.darwin-x64@12.3.4':
+ resolution: {integrity: sha512-fxP9JCk0Cdye+ePuj+GJJLMUMTqHGWRdb1dtv4How876uQ2ehxvenpgiYAir/ceO9PsYUZkFTtyZdx+rRu5QOA==}
cpu: [x64]
os: [darwin]
- '@pnpm/exe.linux-arm64-musl@12.0.0':
- resolution: {integrity: sha512-EVWd3OTmgsMFhXx69b5JxIzoabG9Ma7m4OeTaf0ZKBzMnfYi8u21NDQo92ToMrdYL5dYDDCHsyYIjXzk+d0HhA==}
+ '@pnpm/exe.linux-arm64-musl@12.3.4':
+ resolution: {integrity: sha512-FBOt0/7ye6O6q4AllVV5QMviB6qE6fqkeczV/+MDWQsmo+QJrlfsh6X7CpH/tClVpBZEyIbjpUoT8bNhCYBxEg==}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@pnpm/exe.linux-arm64@12.0.0':
- resolution: {integrity: sha512-cXHHW8M4rAPsYNkKZO9WVcpLLK55i9EaIsZPfIqUuY2eopd5LqnFyBge54HCh1GC0yCX8ySn0hYIi+4OyAEoDg==}
+ '@pnpm/exe.linux-arm64@12.3.4':
+ resolution: {integrity: sha512-t71AVA7LRqiKTyZ5xMYaZc2n5DfdpMbfokZuiIOXHBOM03ECnF0t4iYwaBDqJgVjlKYUOwaF/bRQajGNA4cJ4w==}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@pnpm/exe.linux-x64-musl@12.0.0':
- resolution: {integrity: sha512-UcXwMdFjly0mpddkGigHKTxe27IMv2fUK4IWW/MHmJ3yMguxXmkwNlEI4aE+G1HO2TLo20uNEUWD4ymLe/DaCQ==}
+ '@pnpm/exe.linux-x64-musl@12.3.4':
+ resolution: {integrity: sha512-RPmk7Jb/aYaFvL2iyDN/AtMY+hUEsue732WmXpcuQ9tBpMnGyA5py7Z3+e+qmQaJ0zY/4ni9jJiyPBQHujmv6w==}
cpu: [x64]
os: [linux]
libc: [musl]
- '@pnpm/exe.linux-x64@12.0.0':
- resolution: {integrity: sha512-6Rsl+zEWMOmus7v7/9J3OE8EMvHyNAfxYmDfmhQG4J0985OuT3G3Ho9NSGHjkBn4aU4bgklWifRhe1HX8dUSyw==}
+ '@pnpm/exe.linux-x64@12.3.4':
+ resolution: {integrity: sha512-2ZqOlSPkfwX1h5cR+FPiWf8+F+2hZT/3TvhUK5sigHqwaQCIiq8R7CGxhndKs63JtcLi2a1Qpo+wX/EoyfjyJQ==}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@pnpm/exe.win32-arm64@12.0.0':
- resolution: {integrity: sha512-O5F76A4oVFrpDGdFxEszRIThOSBfjHdH5c006gR+7UTCfiXrukr1XfqPungUI1DXcSR5gb9jBsPQqQZOAoOOxw==}
+ '@pnpm/exe.win32-arm64@12.3.4':
+ resolution: {integrity: sha512-ANyrHqyqco6SXBysUTRF74itDyyraea7IbFsKFdNXTjcFnfycTDx37EwuhdpPYFNSIh2JhUG4fByclsRfiHX7w==}
cpu: [arm64]
os: [win32]
- '@pnpm/exe.win32-x64@12.0.0':
- resolution: {integrity: sha512-5dKFajIEWJ1ai+KHXFJvskY6vchbunmLwSUV2ywbLymcmJjfY5XJVpgzPCyIoVCMVG0zHorr66+hM8h8b3aRfQ==}
+ '@pnpm/exe.win32-x64@12.3.4':
+ resolution: {integrity: sha512-WH/KqBPY/hq2Tb7SgQltEZytimcjgKRaCRL/aM9CI0c67iKc5TVmHUhIiL3Ux9FB4bWn36i6XewUcScQI+zG8w==}
cpu: [x64]
os: [win32]
- pnpm@12.0.0:
- resolution: {integrity: sha512-ni49w5EZlYaNyUuBdcIXwn6VQI+gO0oidJd48rNPdzt3zdOznt6BcbIvzVO+ajU0Lp+smUimjvWN9kiM6Jp+Zw==}
+ pnpm@12.3.4:
+ resolution: {integrity: sha512-lhqkH7B32joEpEHZ+OFevAyW2o73ELLrZ7+e58sGEOq9SPH9hfUc/+c4RnhfoPh8VqOocqHYk/hEZ0G1zORUVw==}
engines: {node: '>=18.*'}
hasBin: true
snapshots:
- '@pnpm/exe.darwin-arm64@12.0.0':
+ '@pnpm/exe.darwin-arm64@12.3.4':
optional: true
- '@pnpm/exe.darwin-x64@12.0.0':
+ '@pnpm/exe.darwin-x64@12.3.4':
optional: true
- '@pnpm/exe.linux-arm64-musl@12.0.0':
+ '@pnpm/exe.linux-arm64-musl@12.3.4':
optional: true
- '@pnpm/exe.linux-arm64@12.0.0':
+ '@pnpm/exe.linux-arm64@12.3.4':
optional: true
- '@pnpm/exe.linux-x64-musl@12.0.0':
+ '@pnpm/exe.linux-x64-musl@12.3.4':
optional: true
- '@pnpm/exe.linux-x64@12.0.0':
+ '@pnpm/exe.linux-x64@12.3.4':
optional: true
- '@pnpm/exe.win32-arm64@12.0.0':
+ '@pnpm/exe.win32-arm64@12.3.4':
optional: true
- '@pnpm/exe.win32-x64@12.0.0':
+ '@pnpm/exe.win32-x64@12.3.4':
optional: true
- pnpm@12.0.0:
+ pnpm@12.3.4:
optionalDependencies:
- '@pnpm/exe.darwin-arm64': 12.0.0
- '@pnpm/exe.darwin-x64': 12.0.0
- '@pnpm/exe.linux-arm64': 12.0.0
- '@pnpm/exe.linux-arm64-musl': 12.0.0
- '@pnpm/exe.linux-x64': 12.0.0
- '@pnpm/exe.linux-x64-musl': 12.0.0
- '@pnpm/exe.win32-arm64': 12.0.0
- '@pnpm/exe.win32-x64': 12.0.0
+ '@pnpm/exe.darwin-arm64': 12.3.4
+ '@pnpm/exe.darwin-x64': 12.3.4
+ '@pnpm/exe.linux-arm64': 12.3.4
+ '@pnpm/exe.linux-arm64-musl': 12.3.4
+ '@pnpm/exe.linux-x64': 12.3.4
+ '@pnpm/exe.linux-x64-musl': 12.3.4
+ '@pnpm/exe.win32-arm64': 12.3.4
+ '@pnpm/exe.win32-x64': 12.3.4
---
lockfileVersion: '9.0'
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 008bd049b7..c35d255221 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1,3 +1,104 @@
+---
+lockfileVersion: '9.0'
+
+importers:
+
+ .:
+ configDependencies: {}
+ packageManagerDependencies:
+ pnpm:
+ specifier: 12.3.4
+ version: 12.3.4
+
+packages:
+
+ '@pnpm/exe.darwin-arm64@12.3.4':
+ resolution: {integrity: sha512-PAyUol8T1+/+ViOiXAt51ECA+QnfXCqz6foL4bW+LsoX0NcVd5XVEM2mRQu+LV4oc7uRz9zf9U0P+XFfuQeDAw==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@pnpm/exe.darwin-x64@12.3.4':
+ resolution: {integrity: sha512-fxP9JCk0Cdye+ePuj+GJJLMUMTqHGWRdb1dtv4How876uQ2ehxvenpgiYAir/ceO9PsYUZkFTtyZdx+rRu5QOA==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@pnpm/exe.linux-arm64-musl@12.3.4':
+ resolution: {integrity: sha512-FBOt0/7ye6O6q4AllVV5QMviB6qE6fqkeczV/+MDWQsmo+QJrlfsh6X7CpH/tClVpBZEyIbjpUoT8bNhCYBxEg==}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@pnpm/exe.linux-arm64@12.3.4':
+ resolution: {integrity: sha512-t71AVA7LRqiKTyZ5xMYaZc2n5DfdpMbfokZuiIOXHBOM03ECnF0t4iYwaBDqJgVjlKYUOwaF/bRQajGNA4cJ4w==}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@pnpm/exe.linux-x64-musl@12.3.4':
+ resolution: {integrity: sha512-RPmk7Jb/aYaFvL2iyDN/AtMY+hUEsue732WmXpcuQ9tBpMnGyA5py7Z3+e+qmQaJ0zY/4ni9jJiyPBQHujmv6w==}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@pnpm/exe.linux-x64@12.3.4':
+ resolution: {integrity: sha512-2ZqOlSPkfwX1h5cR+FPiWf8+F+2hZT/3TvhUK5sigHqwaQCIiq8R7CGxhndKs63JtcLi2a1Qpo+wX/EoyfjyJQ==}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@pnpm/exe.win32-arm64@12.3.4':
+ resolution: {integrity: sha512-ANyrHqyqco6SXBysUTRF74itDyyraea7IbFsKFdNXTjcFnfycTDx37EwuhdpPYFNSIh2JhUG4fByclsRfiHX7w==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@pnpm/exe.win32-x64@12.3.4':
+ resolution: {integrity: sha512-WH/KqBPY/hq2Tb7SgQltEZytimcjgKRaCRL/aM9CI0c67iKc5TVmHUhIiL3Ux9FB4bWn36i6XewUcScQI+zG8w==}
+ cpu: [x64]
+ os: [win32]
+
+ pnpm@12.3.4:
+ resolution: {integrity: sha512-lhqkH7B32joEpEHZ+OFevAyW2o73ELLrZ7+e58sGEOq9SPH9hfUc/+c4RnhfoPh8VqOocqHYk/hEZ0G1zORUVw==}
+ engines: {node: '>=18.*'}
+ hasBin: true
+
+snapshots:
+
+ '@pnpm/exe.darwin-arm64@12.3.4':
+ optional: true
+
+ '@pnpm/exe.darwin-x64@12.3.4':
+ optional: true
+
+ '@pnpm/exe.linux-arm64-musl@12.3.4':
+ optional: true
+
+ '@pnpm/exe.linux-arm64@12.3.4':
+ optional: true
+
+ '@pnpm/exe.linux-x64-musl@12.3.4':
+ optional: true
+
+ '@pnpm/exe.linux-x64@12.3.4':
+ optional: true
+
+ '@pnpm/exe.win32-arm64@12.3.4':
+ optional: true
+
+ '@pnpm/exe.win32-x64@12.3.4':
+ optional: true
+
+ pnpm@12.3.4:
+ optionalDependencies:
+ '@pnpm/exe.darwin-arm64': 12.3.4
+ '@pnpm/exe.darwin-x64': 12.3.4
+ '@pnpm/exe.linux-arm64': 12.3.4
+ '@pnpm/exe.linux-arm64-musl': 12.3.4
+ '@pnpm/exe.linux-x64': 12.3.4
+ '@pnpm/exe.linux-x64-musl': 12.3.4
+ '@pnpm/exe.win32-arm64': 12.3.4
+ '@pnpm/exe.win32-x64': 12.3.4
+
+---
lockfileVersion: '9.0'
settings:
diff --git a/render-wasm/package.json b/render-wasm/package.json
index cdbe651e3d..3f8b581f51 100644
--- a/render-wasm/package.json
+++ b/render-wasm/package.json
@@ -4,7 +4,7 @@
"license": "MPL-2.0",
"author": "Kaleidos INC Sucursal en España SL",
"private": true,
- "packageManager": "pnpm@12.0.0+sha512.9e2e3dc3911995868dc94b8175c217c27e95408fa03b4a22749778f2b34f773b77cdd3b39ede8171b22fcd53be6a35342e9fac9948a68ef58df6488ce89a7e67",
+ "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457",
"repository": {
"type": "git",
"url": "https://github.com/penpot/penpot"
diff --git a/render-wasm/pnpm-lock.yaml b/render-wasm/pnpm-lock.yaml
index c06712b52e..58127cd45a 100644
--- a/render-wasm/pnpm-lock.yaml
+++ b/render-wasm/pnpm-lock.yaml
@@ -7,96 +7,96 @@ importers:
configDependencies: {}
packageManagerDependencies:
pnpm:
- specifier: 12.0.0
- version: 12.0.0
+ specifier: 12.3.4
+ version: 12.3.4
packages:
- '@pnpm/exe.darwin-arm64@12.0.0':
- resolution: {integrity: sha512-sqeoPfVMIfQhbwzDrKraXY2ynyuWClFqzvfImzAS/yczEru1m5SGvQ9kgFPDvQzJZ9AetedgJeDZC6qYvH8/tQ==}
+ '@pnpm/exe.darwin-arm64@12.3.4':
+ resolution: {integrity: sha512-PAyUol8T1+/+ViOiXAt51ECA+QnfXCqz6foL4bW+LsoX0NcVd5XVEM2mRQu+LV4oc7uRz9zf9U0P+XFfuQeDAw==}
cpu: [arm64]
os: [darwin]
- '@pnpm/exe.darwin-x64@12.0.0':
- resolution: {integrity: sha512-Quc3J6c9cGTy+LDgz1cLVgCNOU9IERuyAlDoEj0DCilKqvo50Jx1GV8k74iwn4J9fFSKkm8JrwNvtTDj3uWnUA==}
+ '@pnpm/exe.darwin-x64@12.3.4':
+ resolution: {integrity: sha512-fxP9JCk0Cdye+ePuj+GJJLMUMTqHGWRdb1dtv4How876uQ2ehxvenpgiYAir/ceO9PsYUZkFTtyZdx+rRu5QOA==}
cpu: [x64]
os: [darwin]
- '@pnpm/exe.linux-arm64-musl@12.0.0':
- resolution: {integrity: sha512-EVWd3OTmgsMFhXx69b5JxIzoabG9Ma7m4OeTaf0ZKBzMnfYi8u21NDQo92ToMrdYL5dYDDCHsyYIjXzk+d0HhA==}
+ '@pnpm/exe.linux-arm64-musl@12.3.4':
+ resolution: {integrity: sha512-FBOt0/7ye6O6q4AllVV5QMviB6qE6fqkeczV/+MDWQsmo+QJrlfsh6X7CpH/tClVpBZEyIbjpUoT8bNhCYBxEg==}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@pnpm/exe.linux-arm64@12.0.0':
- resolution: {integrity: sha512-cXHHW8M4rAPsYNkKZO9WVcpLLK55i9EaIsZPfIqUuY2eopd5LqnFyBge54HCh1GC0yCX8ySn0hYIi+4OyAEoDg==}
+ '@pnpm/exe.linux-arm64@12.3.4':
+ resolution: {integrity: sha512-t71AVA7LRqiKTyZ5xMYaZc2n5DfdpMbfokZuiIOXHBOM03ECnF0t4iYwaBDqJgVjlKYUOwaF/bRQajGNA4cJ4w==}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@pnpm/exe.linux-x64-musl@12.0.0':
- resolution: {integrity: sha512-UcXwMdFjly0mpddkGigHKTxe27IMv2fUK4IWW/MHmJ3yMguxXmkwNlEI4aE+G1HO2TLo20uNEUWD4ymLe/DaCQ==}
+ '@pnpm/exe.linux-x64-musl@12.3.4':
+ resolution: {integrity: sha512-RPmk7Jb/aYaFvL2iyDN/AtMY+hUEsue732WmXpcuQ9tBpMnGyA5py7Z3+e+qmQaJ0zY/4ni9jJiyPBQHujmv6w==}
cpu: [x64]
os: [linux]
libc: [musl]
- '@pnpm/exe.linux-x64@12.0.0':
- resolution: {integrity: sha512-6Rsl+zEWMOmus7v7/9J3OE8EMvHyNAfxYmDfmhQG4J0985OuT3G3Ho9NSGHjkBn4aU4bgklWifRhe1HX8dUSyw==}
+ '@pnpm/exe.linux-x64@12.3.4':
+ resolution: {integrity: sha512-2ZqOlSPkfwX1h5cR+FPiWf8+F+2hZT/3TvhUK5sigHqwaQCIiq8R7CGxhndKs63JtcLi2a1Qpo+wX/EoyfjyJQ==}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@pnpm/exe.win32-arm64@12.0.0':
- resolution: {integrity: sha512-O5F76A4oVFrpDGdFxEszRIThOSBfjHdH5c006gR+7UTCfiXrukr1XfqPungUI1DXcSR5gb9jBsPQqQZOAoOOxw==}
+ '@pnpm/exe.win32-arm64@12.3.4':
+ resolution: {integrity: sha512-ANyrHqyqco6SXBysUTRF74itDyyraea7IbFsKFdNXTjcFnfycTDx37EwuhdpPYFNSIh2JhUG4fByclsRfiHX7w==}
cpu: [arm64]
os: [win32]
- '@pnpm/exe.win32-x64@12.0.0':
- resolution: {integrity: sha512-5dKFajIEWJ1ai+KHXFJvskY6vchbunmLwSUV2ywbLymcmJjfY5XJVpgzPCyIoVCMVG0zHorr66+hM8h8b3aRfQ==}
+ '@pnpm/exe.win32-x64@12.3.4':
+ resolution: {integrity: sha512-WH/KqBPY/hq2Tb7SgQltEZytimcjgKRaCRL/aM9CI0c67iKc5TVmHUhIiL3Ux9FB4bWn36i6XewUcScQI+zG8w==}
cpu: [x64]
os: [win32]
- pnpm@12.0.0:
- resolution: {integrity: sha512-ni49w5EZlYaNyUuBdcIXwn6VQI+gO0oidJd48rNPdzt3zdOznt6BcbIvzVO+ajU0Lp+smUimjvWN9kiM6Jp+Zw==}
+ pnpm@12.3.4:
+ resolution: {integrity: sha512-lhqkH7B32joEpEHZ+OFevAyW2o73ELLrZ7+e58sGEOq9SPH9hfUc/+c4RnhfoPh8VqOocqHYk/hEZ0G1zORUVw==}
engines: {node: '>=18.*'}
hasBin: true
snapshots:
- '@pnpm/exe.darwin-arm64@12.0.0':
+ '@pnpm/exe.darwin-arm64@12.3.4':
optional: true
- '@pnpm/exe.darwin-x64@12.0.0':
+ '@pnpm/exe.darwin-x64@12.3.4':
optional: true
- '@pnpm/exe.linux-arm64-musl@12.0.0':
+ '@pnpm/exe.linux-arm64-musl@12.3.4':
optional: true
- '@pnpm/exe.linux-arm64@12.0.0':
+ '@pnpm/exe.linux-arm64@12.3.4':
optional: true
- '@pnpm/exe.linux-x64-musl@12.0.0':
+ '@pnpm/exe.linux-x64-musl@12.3.4':
optional: true
- '@pnpm/exe.linux-x64@12.0.0':
+ '@pnpm/exe.linux-x64@12.3.4':
optional: true
- '@pnpm/exe.win32-arm64@12.0.0':
+ '@pnpm/exe.win32-arm64@12.3.4':
optional: true
- '@pnpm/exe.win32-x64@12.0.0':
+ '@pnpm/exe.win32-x64@12.3.4':
optional: true
- pnpm@12.0.0:
+ pnpm@12.3.4:
optionalDependencies:
- '@pnpm/exe.darwin-arm64': 12.0.0
- '@pnpm/exe.darwin-x64': 12.0.0
- '@pnpm/exe.linux-arm64': 12.0.0
- '@pnpm/exe.linux-arm64-musl': 12.0.0
- '@pnpm/exe.linux-x64': 12.0.0
- '@pnpm/exe.linux-x64-musl': 12.0.0
- '@pnpm/exe.win32-arm64': 12.0.0
- '@pnpm/exe.win32-x64': 12.0.0
+ '@pnpm/exe.darwin-arm64': 12.3.4
+ '@pnpm/exe.darwin-x64': 12.3.4
+ '@pnpm/exe.linux-arm64': 12.3.4
+ '@pnpm/exe.linux-arm64-musl': 12.3.4
+ '@pnpm/exe.linux-x64': 12.3.4
+ '@pnpm/exe.linux-x64-musl': 12.3.4
+ '@pnpm/exe.win32-arm64': 12.3.4
+ '@pnpm/exe.win32-x64': 12.3.4
---
lockfileVersion: '9.0'
From 05ea09f2ba9798b22908a17d651837cd6b7b835b Mon Sep 17 00:00:00 2001
From: Andrey Antukh
Date: Mon, 7 Sep 2026 20:42:50 +0000
Subject: [PATCH 2/7] :recycle: Make vite configs compatible with the native
config loader
Replace __dirname with import.meta.dirname in the plugins workspace
vite configs (root paths and the plugins-runtime tsconfigPath) and in
frontend/vite.config.js, dropping the fileURLToPath fallback.
Import vite.config.iife with the explicit .ts extension in the
plugin-api-test-suite headless/tests configs and allow it in
tsconfig.node.json (moduleResolution Bundler + noEmit), matching the
mcp/packages/plugin precedent.
Remove .storybook/vitest.setup.ts and its setupFiles entry;
@storybook/addon-vitest 10.3+ provisions preview annotations
automatically.
These clear the Vite `configLoader: 'native'` warnings ahead of that
loader becoming the default.
AI-assisted-by: omen-alpha
---
frontend/.storybook/vitest.setup.ts | 6 ------
frontend/vite.config.js | 11 +++--------
plugins/apps/colors-to-tokens-plugin/vite.config.ts | 2 +-
plugins/apps/contrast-plugin/vite.config.ts | 2 +-
plugins/apps/create-palette-plugin/vite.config.ts | 2 +-
plugins/apps/e2e/vite.config.ts | 2 +-
plugins/apps/example-styles/vite.config.ts | 2 +-
plugins/apps/lorem-ipsum-plugin/vite.config.ts | 2 +-
plugins/apps/plugin-api-test-suite/tsconfig.node.json | 1 +
.../plugin-api-test-suite/vite.config.headless.ts | 2 +-
.../apps/plugin-api-test-suite/vite.config.iife.ts | 2 +-
.../apps/plugin-api-test-suite/vite.config.tests.ts | 2 +-
plugins/apps/plugin-api-test-suite/vite.config.ts | 2 +-
plugins/apps/poc-tokens-plugin/vite.config.ts | 2 +-
plugins/libs/plugins-runtime/vite.config.ts | 4 ++--
15 files changed, 17 insertions(+), 27 deletions(-)
delete mode 100644 frontend/.storybook/vitest.setup.ts
diff --git a/frontend/.storybook/vitest.setup.ts b/frontend/.storybook/vitest.setup.ts
deleted file mode 100644
index f914b38bef..0000000000
--- a/frontend/.storybook/vitest.setup.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import { setProjectAnnotations } from '@storybook/react-vite';
-import * as projectAnnotations from './preview';
-
-// This is an important step to apply the right configuration when testing your stories.
-// More info at: https://storybook.js.org/docs/api/portable-stories/portable-stories-vitest#setprojectannotations
-setProjectAnnotations([projectAnnotations]);
\ No newline at end of file
diff --git a/frontend/vite.config.js b/frontend/vite.config.js
index 734fd8e946..95f89b8594 100644
--- a/frontend/vite.config.js
+++ b/frontend/vite.config.js
@@ -7,12 +7,8 @@ import { playwright } from '@vitest/browser-playwright'
// https://vitejs.dev/config/
import path from "node:path";
-import { fileURLToPath } from "node:url";
import { storybookTest } from "@storybook/addon-vitest/vitest-plugin";
-const dirname =
- typeof __dirname !== "undefined"
- ? __dirname
- : path.dirname(fileURLToPath(import.meta.url));
+const dirname = import.meta.dirname;
// More info at: https://storybook.js.org/docs/next/writing-tests/integrations/vitest-addon
export default defineConfig({
@@ -45,15 +41,14 @@ export default defineConfig({
{browser: "chromium"},
],
},
- setupFiles: [".storybook/vitest.setup.ts"],
},
},
],
},
resolve: {
alias: {
- "@target": resolve(__dirname, "./target/storybook"),
- "@public": resolve(__dirname, "./resources/public/js/"),
+ "@target": resolve(dirname, "./target/storybook"),
+ "@public": resolve(dirname, "./resources/public/js/"),
},
},
});
diff --git a/plugins/apps/colors-to-tokens-plugin/vite.config.ts b/plugins/apps/colors-to-tokens-plugin/vite.config.ts
index ce57d28043..4f9cb48c23 100644
--- a/plugins/apps/colors-to-tokens-plugin/vite.config.ts
+++ b/plugins/apps/colors-to-tokens-plugin/vite.config.ts
@@ -2,7 +2,7 @@
import { defineConfig } from 'vite';
export default defineConfig({
- root: __dirname,
+ root: import.meta.dirname,
test: {
watch: false,
globals: true,
diff --git a/plugins/apps/contrast-plugin/vite.config.ts b/plugins/apps/contrast-plugin/vite.config.ts
index 5b4538a2e6..afa64b0c84 100644
--- a/plugins/apps/contrast-plugin/vite.config.ts
+++ b/plugins/apps/contrast-plugin/vite.config.ts
@@ -2,7 +2,7 @@
import { defineConfig } from 'vite';
export default defineConfig({
- root: __dirname,
+ root: import.meta.dirname,
test: {
globals: true,
environment: 'jsdom',
diff --git a/plugins/apps/create-palette-plugin/vite.config.ts b/plugins/apps/create-palette-plugin/vite.config.ts
index f8b241a643..b82adfd3c6 100644
--- a/plugins/apps/create-palette-plugin/vite.config.ts
+++ b/plugins/apps/create-palette-plugin/vite.config.ts
@@ -1,7 +1,7 @@
///
import { defineConfig } from 'vite';
export default defineConfig({
- root: __dirname,
+ root: import.meta.dirname,
server: {
port: 4202,
host: '0.0.0.0',
diff --git a/plugins/apps/e2e/vite.config.ts b/plugins/apps/e2e/vite.config.ts
index ae60487c66..12a797acb0 100644
--- a/plugins/apps/e2e/vite.config.ts
+++ b/plugins/apps/e2e/vite.config.ts
@@ -2,7 +2,7 @@
import { defineConfig } from 'vite';
export default defineConfig({
- root: __dirname,
+ root: import.meta.dirname,
test: {
testTimeout: 20000,
watch: false,
diff --git a/plugins/apps/example-styles/vite.config.ts b/plugins/apps/example-styles/vite.config.ts
index 39a4e556da..43d5819170 100644
--- a/plugins/apps/example-styles/vite.config.ts
+++ b/plugins/apps/example-styles/vite.config.ts
@@ -1,7 +1,7 @@
///
import { defineConfig } from 'vite';
export default defineConfig({
- root: __dirname,
+ root: import.meta.dirname,
server: {
port: 4202,
host: '0.0.0.0',
diff --git a/plugins/apps/lorem-ipsum-plugin/vite.config.ts b/plugins/apps/lorem-ipsum-plugin/vite.config.ts
index 92c2628f69..a26b77cba6 100644
--- a/plugins/apps/lorem-ipsum-plugin/vite.config.ts
+++ b/plugins/apps/lorem-ipsum-plugin/vite.config.ts
@@ -2,7 +2,7 @@
import { defineConfig } from 'vite';
export default defineConfig({
- root: __dirname,
+ root: import.meta.dirname,
test: {
watch: false,
globals: true,
diff --git a/plugins/apps/plugin-api-test-suite/tsconfig.node.json b/plugins/apps/plugin-api-test-suite/tsconfig.node.json
index 15543271a6..0314a479cf 100644
--- a/plugins/apps/plugin-api-test-suite/tsconfig.node.json
+++ b/plugins/apps/plugin-api-test-suite/tsconfig.node.json
@@ -4,6 +4,7 @@
"outDir": "../../dist/out-tsc",
"module": "ESNext",
"moduleResolution": "Bundler",
+ "allowImportingTsExtensions": true,
"types": ["node"],
"noUnusedLocals": true,
"noUnusedParameters": true
diff --git a/plugins/apps/plugin-api-test-suite/vite.config.headless.ts b/plugins/apps/plugin-api-test-suite/vite.config.headless.ts
index c2fad314f5..706f1f43d5 100644
--- a/plugins/apps/plugin-api-test-suite/vite.config.headless.ts
+++ b/plugins/apps/plugin-api-test-suite/vite.config.headless.ts
@@ -1,4 +1,4 @@
-import { iifeConfig } from './vite.config.iife';
+import { iifeConfig } from './vite.config.iife.ts';
// Builds the CI test entry as a single self-executing (IIFE) bundle, evaluated
// inside the Penpot plugin sandbox via `globalThis.ɵloadPlugin({ code })` by the
diff --git a/plugins/apps/plugin-api-test-suite/vite.config.iife.ts b/plugins/apps/plugin-api-test-suite/vite.config.iife.ts
index b2ee8a2985..130db9dd37 100644
--- a/plugins/apps/plugin-api-test-suite/vite.config.iife.ts
+++ b/plugins/apps/plugin-api-test-suite/vite.config.iife.ts
@@ -12,7 +12,7 @@ import { defineConfig, type UserConfig } from 'vite';
*/
export function iifeConfig(name: string, entry: string): UserConfig {
return defineConfig({
- root: __dirname,
+ root: import.meta.dirname,
resolve: {
tsconfigPaths: true,
},
diff --git a/plugins/apps/plugin-api-test-suite/vite.config.tests.ts b/plugins/apps/plugin-api-test-suite/vite.config.tests.ts
index 39468d5209..dbf4d20114 100644
--- a/plugins/apps/plugin-api-test-suite/vite.config.tests.ts
+++ b/plugins/apps/plugin-api-test-suite/vite.config.tests.ts
@@ -1,4 +1,4 @@
-import { iifeConfig } from './vite.config.iife';
+import { iifeConfig } from './vite.config.iife.ts';
// Builds the test cases as a single self-executing (IIFE) bundle that publishes
// the discovered tests on `globalThis.__penpotReloadedTests`. The UI "Reload"
diff --git a/plugins/apps/plugin-api-test-suite/vite.config.ts b/plugins/apps/plugin-api-test-suite/vite.config.ts
index 25c811f49e..00e01630ff 100644
--- a/plugins/apps/plugin-api-test-suite/vite.config.ts
+++ b/plugins/apps/plugin-api-test-suite/vite.config.ts
@@ -2,7 +2,7 @@
import { defineConfig } from 'vite';
export default defineConfig({
- root: __dirname,
+ root: import.meta.dirname,
// Emit relative asset URLs in index.html so the built plugin works when served
// from a subdirectory (Penpot serves the bundled plugins under `/plugins/...`).
// Vite resolves `./` to `/` for the dev server, so `pnpm run dev` is unaffected.
diff --git a/plugins/apps/poc-tokens-plugin/vite.config.ts b/plugins/apps/poc-tokens-plugin/vite.config.ts
index 80619b371f..0f62223ab9 100644
--- a/plugins/apps/poc-tokens-plugin/vite.config.ts
+++ b/plugins/apps/poc-tokens-plugin/vite.config.ts
@@ -2,7 +2,7 @@
import { defineConfig } from 'vite';
export default defineConfig({
- root: __dirname,
+ root: import.meta.dirname,
test: {
watch: false,
globals: true,
diff --git a/plugins/libs/plugins-runtime/vite.config.ts b/plugins/libs/plugins-runtime/vite.config.ts
index 14f8d61d18..a054f46cb1 100644
--- a/plugins/libs/plugins-runtime/vite.config.ts
+++ b/plugins/libs/plugins-runtime/vite.config.ts
@@ -7,7 +7,7 @@ import * as path from 'path';
import checker from 'vite-plugin-checker';
export default defineConfig({
- root: __dirname,
+ root: import.meta.dirname,
cacheDir: '../node_modules/.vite/plugins-runtime',
resolve: {
@@ -17,7 +17,7 @@ export default defineConfig({
plugins: [
dts({
entryRoot: 'src',
- tsconfigPath: path.join(__dirname, 'tsconfig.lib.json'),
+ tsconfigPath: path.join(import.meta.dirname, 'tsconfig.lib.json'),
}),
checker({
typescript: {
From f68c266380b65baa1085b40372c6c09c34791c6c Mon Sep 17 00:00:00 2001
From: Andrey Antukh
Date: Mon, 7 Sep 2026 20:44:43 +0000
Subject: [PATCH 3/7] :recycle: Fold composable-test-suite into the plugins
workspace
Drop the nested pnpm-workspace.yaml and pnpm-lock.yaml from
plugins/apps/composable-test-suite. It stays a plain member of the
plugins workspace (apps/** glob); its dependencies already resolve
through plugins/pnpm-lock.yaml, so no lockfile change is needed.
Update the pnpm update procedure memory to the single-workspace-per-
module layout, keep the invariant that members carry no nested
pnpm-workspace.yaml, and drop the now-stale 12-workspace count from
critical-info.
AI-assisted-by: omen-alpha
---
.serena/memories/critical-info.md | 4 +-
.serena/memories/workflow/updating-pnpm.md | 22 +-
.../apps/composable-test-suite/pnpm-lock.yaml | 958 ------------------
.../composable-test-suite/pnpm-workspace.yaml | 2 -
4 files changed, 16 insertions(+), 970 deletions(-)
delete mode 100644 plugins/apps/composable-test-suite/pnpm-lock.yaml
delete mode 100644 plugins/apps/composable-test-suite/pnpm-workspace.yaml
diff --git a/.serena/memories/critical-info.md b/.serena/memories/critical-info.md
index f157ed47d6..f7b1754377 100644
--- a/.serena/memories/critical-info.md
+++ b/.serena/memories/critical-info.md
@@ -14,8 +14,8 @@ You are working on the GitHub project `penpot/penpot`, a monorepo.
- Before `git commit` → `mem:workflow/creating-commits` (subject format, body, `AI-assisted-by: model-name` trailer)
- Before `gh issue create` → `mem:workflow/creating-issues` (title derivation, body template, labels, Issue Type)
- Before `gh pr create` / `gh pr edit` → `mem:workflow/creating-prs` (title format, body structure, "Note:" line)
-- Before a repo-wide pnpm version update → `mem:workflow/updating-pnpm` (12
- workspace layout, `corepack use` sweep order, the stamp-missing-field and
+- Before a repo-wide pnpm version update → `mem:workflow/updating-pnpm` (workspace
+ layout, `corepack use` sweep order, the stamp-missing-field and
ignored-builds gotchas, verification steps)
- **Never `git push`, force-push, or modify `git origin`** (or any other remote). The user pushes from their own shell; if a push is required, say so and wait. Never amend a commit that the user has already pushed unless explicitly asked.
- **Never edit `CHANGES.md` by hand.** The changelog is generated from GitHub milestones during the release process; update it only via the `update-changelog` skill flow or on explicit user request.
diff --git a/.serena/memories/workflow/updating-pnpm.md b/.serena/memories/workflow/updating-pnpm.md
index 013a4be3eb..72f727a979 100644
--- a/.serena/memories/workflow/updating-pnpm.md
+++ b/.serena/memories/workflow/updating-pnpm.md
@@ -5,10 +5,15 @@ file (never pipe tool output through filters).
## Layout facts
-- The repo has 12 pnpm workspaces, each with its own `pnpm-workspace.yaml`
+- The repo has 11 pnpm workspaces, each with its own `pnpm-workspace.yaml`
and `pnpm-lock.yaml`: the repo root plus `backend`, `common`, `docs`,
`exporter`, `frontend`, `library`, `mcp`, `media-processor`, `plugins`,
- `render-wasm`, and `plugins/apps/composable-test-suite`.
+ and `render-wasm`.
+- Every package inside a module workspace (for example all `plugins/apps/*`
+ and `plugins/libs/*` packages) is a plain member of that module's
+ workspace. Members must not carry their own `pnpm-workspace.yaml` or
+ `pnpm-lock.yaml`; their dependencies resolve through the parent
+ workspace's lockfile.
- Every `package.json` (about 35 of them) must carry a `packageManager` field
with the identical `pnpm@+sha512.` value. Do not let them drift.
- CI pins no pnpm version; workflows rely on corepack reading
@@ -42,10 +47,11 @@ file (never pipe tool output through filters).
`ignoredBuiltDependencies`. Repo convention is `allowBuilds: esbuild: true`.
Replace the placeholder and drop the `ignoredBuiltDependencies` entry,
then re-run.
-- `plugins/apps/composable-test-suite` is both a member of the `plugins`
- workspace and its own workspace root: pnpm picks the nearest
- `pnpm-workspace.yaml` walking up, so commands run inside it use its own
- workspace config and lockfile.
+- `plugins/apps/composable-test-suite` once had its own
+ `pnpm-workspace.yaml` and acted as a nested workspace root. That state is
+ gone on purpose: pnpm picks the nearest `pnpm-workspace.yaml` walking up,
+ so a nested one silently forks install and lockfile behavior. Do not
+ reintroduce it.
- Expect metadata-only lockfile diffs when only the pnpm version moves:
the pnpm self-reference entries, plus a new `packageManagerDependencies`
section in lockfiles last written by older pnpm. Large diffs mean
@@ -54,6 +60,6 @@ file (never pipe tool output through filters).
## Verification
- Every `packageManager` field is byte-identical (same version and hash).
-- `pnpm --version` in each of the 12 workspaces prints the target version.
-- `pnpm install --frozen-lockfile` succeeds in each of the 12 workspaces.
+- `pnpm --version` in each workspace prints the target version.
+- `pnpm install --frozen-lockfile` succeeds in each of the 11 workspaces.
- `git diff` on lockfiles matches the expectations above.
diff --git a/plugins/apps/composable-test-suite/pnpm-lock.yaml b/plugins/apps/composable-test-suite/pnpm-lock.yaml
deleted file mode 100644
index 1dffd301c7..0000000000
--- a/plugins/apps/composable-test-suite/pnpm-lock.yaml
+++ /dev/null
@@ -1,958 +0,0 @@
----
-lockfileVersion: '9.0'
-
-importers:
-
- .:
- configDependencies: {}
- packageManagerDependencies:
- pnpm:
- specifier: 12.3.4
- version: 12.3.4
-
-packages:
-
- '@pnpm/exe.darwin-arm64@12.3.4':
- resolution: {integrity: sha512-PAyUol8T1+/+ViOiXAt51ECA+QnfXCqz6foL4bW+LsoX0NcVd5XVEM2mRQu+LV4oc7uRz9zf9U0P+XFfuQeDAw==}
- cpu: [arm64]
- os: [darwin]
-
- '@pnpm/exe.darwin-x64@12.3.4':
- resolution: {integrity: sha512-fxP9JCk0Cdye+ePuj+GJJLMUMTqHGWRdb1dtv4How876uQ2ehxvenpgiYAir/ceO9PsYUZkFTtyZdx+rRu5QOA==}
- cpu: [x64]
- os: [darwin]
-
- '@pnpm/exe.linux-arm64-musl@12.3.4':
- resolution: {integrity: sha512-FBOt0/7ye6O6q4AllVV5QMviB6qE6fqkeczV/+MDWQsmo+QJrlfsh6X7CpH/tClVpBZEyIbjpUoT8bNhCYBxEg==}
- cpu: [arm64]
- os: [linux]
- libc: [musl]
-
- '@pnpm/exe.linux-arm64@12.3.4':
- resolution: {integrity: sha512-t71AVA7LRqiKTyZ5xMYaZc2n5DfdpMbfokZuiIOXHBOM03ECnF0t4iYwaBDqJgVjlKYUOwaF/bRQajGNA4cJ4w==}
- cpu: [arm64]
- os: [linux]
- libc: [glibc]
-
- '@pnpm/exe.linux-x64-musl@12.3.4':
- resolution: {integrity: sha512-RPmk7Jb/aYaFvL2iyDN/AtMY+hUEsue732WmXpcuQ9tBpMnGyA5py7Z3+e+qmQaJ0zY/4ni9jJiyPBQHujmv6w==}
- cpu: [x64]
- os: [linux]
- libc: [musl]
-
- '@pnpm/exe.linux-x64@12.3.4':
- resolution: {integrity: sha512-2ZqOlSPkfwX1h5cR+FPiWf8+F+2hZT/3TvhUK5sigHqwaQCIiq8R7CGxhndKs63JtcLi2a1Qpo+wX/EoyfjyJQ==}
- cpu: [x64]
- os: [linux]
- libc: [glibc]
-
- '@pnpm/exe.win32-arm64@12.3.4':
- resolution: {integrity: sha512-ANyrHqyqco6SXBysUTRF74itDyyraea7IbFsKFdNXTjcFnfycTDx37EwuhdpPYFNSIh2JhUG4fByclsRfiHX7w==}
- cpu: [arm64]
- os: [win32]
-
- '@pnpm/exe.win32-x64@12.3.4':
- resolution: {integrity: sha512-WH/KqBPY/hq2Tb7SgQltEZytimcjgKRaCRL/aM9CI0c67iKc5TVmHUhIiL3Ux9FB4bWn36i6XewUcScQI+zG8w==}
- cpu: [x64]
- os: [win32]
-
- pnpm@12.3.4:
- resolution: {integrity: sha512-lhqkH7B32joEpEHZ+OFevAyW2o73ELLrZ7+e58sGEOq9SPH9hfUc/+c4RnhfoPh8VqOocqHYk/hEZ0G1zORUVw==}
- engines: {node: '>=18.*'}
- hasBin: true
-
-snapshots:
-
- '@pnpm/exe.darwin-arm64@12.3.4':
- optional: true
-
- '@pnpm/exe.darwin-x64@12.3.4':
- optional: true
-
- '@pnpm/exe.linux-arm64-musl@12.3.4':
- optional: true
-
- '@pnpm/exe.linux-arm64@12.3.4':
- optional: true
-
- '@pnpm/exe.linux-x64-musl@12.3.4':
- optional: true
-
- '@pnpm/exe.linux-x64@12.3.4':
- optional: true
-
- '@pnpm/exe.win32-arm64@12.3.4':
- optional: true
-
- '@pnpm/exe.win32-x64@12.3.4':
- optional: true
-
- pnpm@12.3.4:
- optionalDependencies:
- '@pnpm/exe.darwin-arm64': 12.3.4
- '@pnpm/exe.darwin-x64': 12.3.4
- '@pnpm/exe.linux-arm64': 12.3.4
- '@pnpm/exe.linux-arm64-musl': 12.3.4
- '@pnpm/exe.linux-x64': 12.3.4
- '@pnpm/exe.linux-x64-musl': 12.3.4
- '@pnpm/exe.win32-arm64': 12.3.4
- '@pnpm/exe.win32-x64': 12.3.4
-
----
-lockfileVersion: '9.0'
-
-settings:
- autoInstallPeers: true
- excludeLinksFromLockfile: false
-
-importers:
-
- .:
- dependencies:
- '@penpot/plugin-styles':
- specifier: 1.4.2
- version: 1.4.2
- '@penpot/plugin-types':
- specifier: 1.4.2
- version: 1.4.2
- devDependencies:
- playwright:
- specifier: ^1.62.1
- version: 1.63.0
- prettier:
- specifier: ^3.9.6
- version: 3.9.6
- typescript:
- specifier: ^5.9.3
- version: 5.9.3
- vite:
- specifier: ^8.2.2
- version: 8.2.2(@types/node@26.0.1)(esbuild@0.28.1)
- vite-live-preview:
- specifier: ^0.4.0
- version: 0.4.0(vite@8.2.2(@types/node@26.0.1)(esbuild@0.28.1))
-
-packages:
-
- '@esbuild/aix-ppc64@0.28.1':
- resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [aix]
-
- '@esbuild/android-arm64@0.28.1':
- resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [android]
-
- '@esbuild/android-arm@0.28.1':
- resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [android]
-
- '@esbuild/android-x64@0.28.1':
- resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [android]
-
- '@esbuild/darwin-arm64@0.28.1':
- resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [darwin]
-
- '@esbuild/darwin-x64@0.28.1':
- resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [darwin]
-
- '@esbuild/freebsd-arm64@0.28.1':
- resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [freebsd]
-
- '@esbuild/freebsd-x64@0.28.1':
- resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [freebsd]
-
- '@esbuild/linux-arm64@0.28.1':
- resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [linux]
-
- '@esbuild/linux-arm@0.28.1':
- resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [linux]
-
- '@esbuild/linux-ia32@0.28.1':
- resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [linux]
-
- '@esbuild/linux-loong64@0.28.1':
- resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==}
- engines: {node: '>=18'}
- cpu: [loong64]
- os: [linux]
-
- '@esbuild/linux-mips64el@0.28.1':
- resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==}
- engines: {node: '>=18'}
- cpu: [mips64el]
- os: [linux]
-
- '@esbuild/linux-ppc64@0.28.1':
- resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [linux]
-
- '@esbuild/linux-riscv64@0.28.1':
- resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==}
- engines: {node: '>=18'}
- cpu: [riscv64]
- os: [linux]
-
- '@esbuild/linux-s390x@0.28.1':
- resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==}
- engines: {node: '>=18'}
- cpu: [s390x]
- os: [linux]
-
- '@esbuild/linux-x64@0.28.1':
- resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [linux]
-
- '@esbuild/netbsd-arm64@0.28.1':
- resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [netbsd]
-
- '@esbuild/netbsd-x64@0.28.1':
- resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [netbsd]
-
- '@esbuild/openbsd-arm64@0.28.1':
- resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [openbsd]
-
- '@esbuild/openbsd-x64@0.28.1':
- resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [openbsd]
-
- '@esbuild/openharmony-arm64@0.28.1':
- resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [openharmony]
-
- '@esbuild/sunos-x64@0.28.1':
- resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [sunos]
-
- '@esbuild/win32-arm64@0.28.1':
- resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [win32]
-
- '@esbuild/win32-ia32@0.28.1':
- resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [win32]
-
- '@esbuild/win32-x64@0.28.1':
- resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [win32]
-
- '@oxc-project/types@0.148.0':
- resolution: {integrity: sha512-Nm4s/jB+4FpFsPhWGEC4h7rzksesmtnMXomo6rCMcg/b8zLQuOziRgkCS1fxDCXOlJB/6Q8oABOZ/OP6RIPj9A==}
-
- '@penpot/plugin-styles@1.4.2':
- resolution: {integrity: sha512-/Rn6xy80W+mxAi6j5/SOiNY8P0qHMB1WW+j+nyZajecFSnVGPzSWOiMcIDH+Jtsz7Xpmd5AICpgVM0xjechQig==}
-
- '@penpot/plugin-types@1.4.2':
- resolution: {integrity: sha512-O8wU6RSYE8bIVU7g8cSTYi32ppxs3R13dq7X3Nn9tmDaJjBOKOBpVLuoRPIp3fJC65fv8/7om0sdrtFoL5v19g==}
-
- '@rolldown/binding-android-arm-eabi@1.2.7':
- resolution: {integrity: sha512-EypzgnYCwyVY4NDHKzGmNJT5b+XaQEBniHxsMdeIQLB/tcCzZnhqrzHpZFbX9iaxx+5RiB8caATBtfvZP7zVxQ==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm]
- os: [android]
-
- '@rolldown/binding-android-arm64@1.2.7':
- resolution: {integrity: sha512-l17HE9EweWaqJZhuUuNBN/FzM62xw+DECVnJyvMsxn8vJFAGLy5QfLDoYAcronkAN8VxKZHezDpulHDPx95vFw==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [android]
-
- '@rolldown/binding-darwin-arm64@1.2.7':
- resolution: {integrity: sha512-8ED8ELFvHXc6OCETIn4gXObPiaR6bckM/ipXtbzlPVDRMBfEGjCKgO90F9YtfdpDatVx/ZQw7aZ1vUMf/+T3Mw==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [darwin]
-
- '@rolldown/binding-darwin-x64@1.2.7':
- resolution: {integrity: sha512-/WPripjtiAIZ2tWY7ddijORT0Ujg87wxWW/qcoFVCKAWVDPhtY0xr7Dj0M3GyNGz60jGwTElhro/mkF9dT7dDQ==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [darwin]
-
- '@rolldown/binding-freebsd-x64@1.2.7':
- resolution: {integrity: sha512-14DI4NcqpvbICxSnGLx3PmtDaWqRP/KGSGb6C+JLLVPeZRl6dKdHba3pGsqT3vpdTqhEYIPG0MMQ8c0xYqoJxA==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [freebsd]
-
- '@rolldown/binding-linux-arm-gnueabihf@1.2.7':
- resolution: {integrity: sha512-bxrWIRvHWQvbJwi+VIie/kDJmQxcNE6xxWwZdqF/ExVAigtHkv54WTLQPb+QsZdnFy18fg7JPfWGL0RH6vwIlQ==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm]
- os: [linux]
-
- '@rolldown/binding-linux-arm64-gnu@1.2.7':
- resolution: {integrity: sha512-toOY2BChBZyuxU7OYX6Tn389di4IzAqPTycVcci0O7FSfBqzRB3RZn+K5Is6ANf4tmgRd/K1yZTsNTXbkXsnLg==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [linux]
- libc: [glibc]
-
- '@rolldown/binding-linux-arm64-musl@1.2.7':
- resolution: {integrity: sha512-lAIXTH/aiLRLxsTgQvfhjo4K1ydWIp00+V0voOr9beb/9ZmkUFrSIb03dXNFRgMNvkE6oGsF10ioQ6UsI+vS5Q==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [linux]
- libc: [musl]
-
- '@rolldown/binding-linux-ppc64-gnu@1.2.7':
- resolution: {integrity: sha512-kdnwS28Pkenp/mZMRwjXXXwxQ7pIsm+bF919LUK93BOyhcLsrVKdP2p9fxpiPNPAbNuch8ypQt0pm2P2LYCAGg==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [ppc64]
- os: [linux]
- libc: [glibc]
-
- '@rolldown/binding-linux-s390x-gnu@1.2.7':
- resolution: {integrity: sha512-516OdsyLdr5E65paF3yBF55t8mfm9+gmtCsK3xI7XKXIT7EfRlHhxL8K/NR6Hu8BWSgF5+1w74lTL0+nxcc8Qw==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [s390x]
- os: [linux]
- libc: [glibc]
-
- '@rolldown/binding-linux-x64-gnu@1.2.7':
- resolution: {integrity: sha512-r8/z8n7GFaYRln3xmP1Cxy0HH/HLM0uBUPkEuSVEfKGDA89M0FsZRZJRSwe/tJjRx+fpH/gjorfhB8tmEbSFLA==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [linux]
- libc: [glibc]
-
- '@rolldown/binding-linux-x64-musl@1.2.7':
- resolution: {integrity: sha512-pAsE8iiDxUg1xBqdhrTfg45AVDVpirjz00sblEYClGNNcMnDb+e8beQgqIAw6LvauX/APvgxUnwrgun/YYGBhw==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [linux]
- libc: [musl]
-
- '@rolldown/binding-openharmony-arm64@1.2.7':
- resolution: {integrity: sha512-lTcIYmmnQQA8Or/2DatS6oSqcdLHvendjS+zLu+FwgToynWMRSmQdpM65fTANJgIS4mjbMOo5KT2lnT9SAb96w==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [openharmony]
-
- '@rolldown/binding-win32-arm64-msvc@1.2.7':
- resolution: {integrity: sha512-e3Gu3WxbNk/UqQhxqU7YIYO+9ZBvWNz3U+h/qRFosscMFzdRPbXYSaSWgSnklv2fz1TgzBTcti2z35c/7irsHw==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [win32]
-
- '@rolldown/binding-win32-x64-msvc@1.2.7':
- resolution: {integrity: sha512-W/jg5qoRSqjsEv0+dZi4e687mcHqmVuU0P4fK6qS/xjetW2Gmc1W8j//z5nAeNcC8Ttm0hV46IjcYeuVwYhuiw==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [win32]
-
- '@rolldown/pluginutils@1.0.1':
- resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==}
-
- '@seahax/deep-copy@0.1.0':
- resolution: {integrity: sha512-Ux88qw9ypPbqszDGwj0JvP8FP017MV3ck7jnkit+0i3mecTkqhYiCUqy3exbxhGFBu07zrUS6yPRUWVct1eSMQ==}
-
- '@seahax/semaphore@0.5.1':
- resolution: {integrity: sha512-q6SXYYbE6X+LDcq2h2yCgE+pCWJumNP3XCZkztdG4S4tiig9akMZGp8TsfU/EIRcHWPdnQ3BA8/NAvdDYdF/NQ==}
-
- '@types/node@26.0.1':
- resolution: {integrity: sha512-fc3KiUoBt6kie0N9bIW3E47vZsuaMf0PM2AaUpLCLT0s/LvX1nxAim6Fc049cNxODPpGm6qRAuUOB86SkRuPQw==}
-
- '@types/ws@8.18.1':
- resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==}
-
- ansi-regex@6.3.0:
- resolution: {integrity: sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ==}
- engines: {node: '>=12'}
-
- detect-libc@2.1.2:
- resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
- engines: {node: '>=8'}
-
- esbuild@0.28.1:
- resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==}
- engines: {node: '>=18'}
- hasBin: true
-
- escape-goat@4.0.0:
- resolution: {integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==}
- engines: {node: '>=12'}
-
- fdir@6.5.0:
- resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
- engines: {node: '>=12.0.0'}
- peerDependencies:
- picomatch: ^3 || ^4
- peerDependenciesMeta:
- picomatch:
- optional: true
-
- fsevents@2.3.3:
- resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
- os: [darwin]
-
- lightningcss-android-arm64@1.33.0:
- resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [android]
-
- lightningcss-darwin-arm64@1.33.0:
- resolution: {integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [darwin]
-
- lightningcss-darwin-x64@1.33.0:
- resolution: {integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [darwin]
-
- lightningcss-freebsd-x64@1.33.0:
- resolution: {integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [freebsd]
-
- lightningcss-linux-arm-gnueabihf@1.33.0:
- resolution: {integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm]
- os: [linux]
-
- lightningcss-linux-arm64-gnu@1.33.0:
- resolution: {integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [linux]
- libc: [glibc]
-
- lightningcss-linux-arm64-musl@1.33.0:
- resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [linux]
- libc: [musl]
-
- lightningcss-linux-x64-gnu@1.33.0:
- resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [linux]
- libc: [glibc]
-
- lightningcss-linux-x64-musl@1.33.0:
- resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [linux]
- libc: [musl]
-
- lightningcss-win32-arm64-msvc@1.33.0:
- resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [win32]
-
- lightningcss-win32-x64-msvc@1.33.0:
- resolution: {integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [win32]
-
- lightningcss@1.33.0:
- resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==}
- engines: {node: '>= 12.0.0'}
-
- nanoid@3.3.18:
- resolution: {integrity: sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
- hasBin: true
-
- picocolors@1.1.1:
- resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
-
- picomatch@4.0.4:
- resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==}
- engines: {node: '>=12'}
-
- picomatch@4.0.7:
- resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==}
- engines: {node: '>=12'}
-
- playwright-core@1.63.0:
- resolution: {integrity: sha512-rYCsBF/M5HjUch52bbtVONEFjv6Xu8sm8h72dNlR5bzIE1fvC/bxgspzkjSfU+MweEMmPM8KJebG6nnyxo5mCg==}
- engines: {node: '>=20'}
- hasBin: true
-
- playwright@1.63.0:
- resolution: {integrity: sha512-+7ziBLidS4NaNCdt57SUDT+wYmmd5fmiQejUic/kb+YsYSCPyOOE9sebzMjNmQrsnNpDJqd4WHvV/8lfKfUDUg==}
- engines: {node: '>=20'}
- hasBin: true
-
- postcss@8.5.28:
- resolution: {integrity: sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==}
- engines: {node: ^10 || ^12 || >=14}
-
- prettier@3.9.6:
- resolution: {integrity: sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==}
- engines: {node: '>=14'}
- hasBin: true
-
- rolldown@1.2.7:
- resolution: {integrity: sha512-g0EtLvBjTUB7jhyV0S/TCup3v/XSVl45vUIGbOGU4QPiyjTenCe4mKuFvW9fEgYmS2Fo42AUssRmNuMziXdrig==}
- engines: {node: ^20.19.0 || >=22.12.0}
- hasBin: true
-
- source-map-js@1.2.1:
- resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
- engines: {node: '>=0.10.0'}
-
- strip-ansi@7.2.0:
- resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==}
- engines: {node: '>=12'}
-
- tinyglobby@0.2.17:
- resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==}
- engines: {node: '>=12.0.0'}
-
- typescript@5.9.3:
- resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
- engines: {node: '>=14.17'}
- hasBin: true
-
- undici-types@8.3.0:
- resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==}
-
- vite-live-preview@0.4.0:
- resolution: {integrity: sha512-Qz8kr0kixXwnQl+zLPZX66OjajN4jnVnDwhNToJsO6TTboUtBo8pEmRuc0iBmkwW9lXR8mOeMu+QtxFkXBcHYg==}
- peerDependencies:
- vite: '>=5.4.0'
-
- vite@8.2.2:
- resolution: {integrity: sha512-cFKLV/PRgAUlIRm5WjMjJ86jrftzpqcgH+Us+DS8mI3CDNiH30Whrz8uHL3+MOLPAgqbMBAqWdAHAphOAM+z/Q==}
- engines: {node: ^20.19.0 || >=22.12.0}
- hasBin: true
- peerDependencies:
- '@types/node': ^20.19.0 || >=22.12.0
- '@vitejs/devtools': ^0.4.0 || ^0.5.0
- esbuild: ^0.27.0 || ^0.28.0
- jiti: '>=1.21.0'
- less: ^4.0.0
- sass: ^1.70.0
- sass-embedded: ^1.70.0
- stylus: '>=0.54.8'
- sugarss: ^5.0.0
- terser: ^5.16.0
- tsx: ^4.8.1
- yaml: ^2.4.2
- peerDependenciesMeta:
- '@types/node':
- optional: true
- '@vitejs/devtools':
- optional: true
- esbuild:
- optional: true
- jiti:
- optional: true
- less:
- optional: true
- sass:
- optional: true
- sass-embedded:
- optional: true
- stylus:
- optional: true
- sugarss:
- optional: true
- terser:
- optional: true
- tsx:
- optional: true
- yaml:
- optional: true
-
- ws@8.21.0:
- resolution: {integrity: sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==}
- engines: {node: '>=10.0.0'}
- peerDependencies:
- bufferutil: ^4.0.1
- utf-8-validate: '>=5.0.2'
- peerDependenciesMeta:
- bufferutil:
- optional: true
- utf-8-validate:
- optional: true
-
-snapshots:
-
- '@esbuild/aix-ppc64@0.28.1':
- optional: true
-
- '@esbuild/android-arm64@0.28.1':
- optional: true
-
- '@esbuild/android-arm@0.28.1':
- optional: true
-
- '@esbuild/android-x64@0.28.1':
- optional: true
-
- '@esbuild/darwin-arm64@0.28.1':
- optional: true
-
- '@esbuild/darwin-x64@0.28.1':
- optional: true
-
- '@esbuild/freebsd-arm64@0.28.1':
- optional: true
-
- '@esbuild/freebsd-x64@0.28.1':
- optional: true
-
- '@esbuild/linux-arm64@0.28.1':
- optional: true
-
- '@esbuild/linux-arm@0.28.1':
- optional: true
-
- '@esbuild/linux-ia32@0.28.1':
- optional: true
-
- '@esbuild/linux-loong64@0.28.1':
- optional: true
-
- '@esbuild/linux-mips64el@0.28.1':
- optional: true
-
- '@esbuild/linux-ppc64@0.28.1':
- optional: true
-
- '@esbuild/linux-riscv64@0.28.1':
- optional: true
-
- '@esbuild/linux-s390x@0.28.1':
- optional: true
-
- '@esbuild/linux-x64@0.28.1':
- optional: true
-
- '@esbuild/netbsd-arm64@0.28.1':
- optional: true
-
- '@esbuild/netbsd-x64@0.28.1':
- optional: true
-
- '@esbuild/openbsd-arm64@0.28.1':
- optional: true
-
- '@esbuild/openbsd-x64@0.28.1':
- optional: true
-
- '@esbuild/openharmony-arm64@0.28.1':
- optional: true
-
- '@esbuild/sunos-x64@0.28.1':
- optional: true
-
- '@esbuild/win32-arm64@0.28.1':
- optional: true
-
- '@esbuild/win32-ia32@0.28.1':
- optional: true
-
- '@esbuild/win32-x64@0.28.1':
- optional: true
-
- '@oxc-project/types@0.148.0': {}
-
- '@penpot/plugin-styles@1.4.2': {}
-
- '@penpot/plugin-types@1.4.2': {}
-
- '@rolldown/binding-android-arm-eabi@1.2.7':
- optional: true
-
- '@rolldown/binding-android-arm64@1.2.7':
- optional: true
-
- '@rolldown/binding-darwin-arm64@1.2.7':
- optional: true
-
- '@rolldown/binding-darwin-x64@1.2.7':
- optional: true
-
- '@rolldown/binding-freebsd-x64@1.2.7':
- optional: true
-
- '@rolldown/binding-linux-arm-gnueabihf@1.2.7':
- optional: true
-
- '@rolldown/binding-linux-arm64-gnu@1.2.7':
- optional: true
-
- '@rolldown/binding-linux-arm64-musl@1.2.7':
- optional: true
-
- '@rolldown/binding-linux-ppc64-gnu@1.2.7':
- optional: true
-
- '@rolldown/binding-linux-s390x-gnu@1.2.7':
- optional: true
-
- '@rolldown/binding-linux-x64-gnu@1.2.7':
- optional: true
-
- '@rolldown/binding-linux-x64-musl@1.2.7':
- optional: true
-
- '@rolldown/binding-openharmony-arm64@1.2.7':
- optional: true
-
- '@rolldown/binding-win32-arm64-msvc@1.2.7':
- optional: true
-
- '@rolldown/binding-win32-x64-msvc@1.2.7':
- optional: true
-
- '@rolldown/pluginutils@1.0.1': {}
-
- '@seahax/deep-copy@0.1.0': {}
-
- '@seahax/semaphore@0.5.1': {}
-
- '@types/node@26.0.1':
- dependencies:
- undici-types: 8.3.0
-
- '@types/ws@8.18.1':
- dependencies:
- '@types/node': 26.0.1
-
- ansi-regex@6.3.0: {}
-
- detect-libc@2.1.2: {}
-
- esbuild@0.28.1:
- optionalDependencies:
- '@esbuild/aix-ppc64': 0.28.1
- '@esbuild/android-arm': 0.28.1
- '@esbuild/android-arm64': 0.28.1
- '@esbuild/android-x64': 0.28.1
- '@esbuild/darwin-arm64': 0.28.1
- '@esbuild/darwin-x64': 0.28.1
- '@esbuild/freebsd-arm64': 0.28.1
- '@esbuild/freebsd-x64': 0.28.1
- '@esbuild/linux-arm': 0.28.1
- '@esbuild/linux-arm64': 0.28.1
- '@esbuild/linux-ia32': 0.28.1
- '@esbuild/linux-loong64': 0.28.1
- '@esbuild/linux-mips64el': 0.28.1
- '@esbuild/linux-ppc64': 0.28.1
- '@esbuild/linux-riscv64': 0.28.1
- '@esbuild/linux-s390x': 0.28.1
- '@esbuild/linux-x64': 0.28.1
- '@esbuild/netbsd-arm64': 0.28.1
- '@esbuild/netbsd-x64': 0.28.1
- '@esbuild/openbsd-arm64': 0.28.1
- '@esbuild/openbsd-x64': 0.28.1
- '@esbuild/openharmony-arm64': 0.28.1
- '@esbuild/sunos-x64': 0.28.1
- '@esbuild/win32-arm64': 0.28.1
- '@esbuild/win32-ia32': 0.28.1
- '@esbuild/win32-x64': 0.28.1
- optional: true
-
- escape-goat@4.0.0: {}
-
- fdir@6.5.0(picomatch@4.0.4):
- optionalDependencies:
- picomatch: 4.0.4
-
- fsevents@2.3.3:
- optional: true
-
- lightningcss-android-arm64@1.33.0:
- optional: true
-
- lightningcss-darwin-arm64@1.33.0:
- optional: true
-
- lightningcss-darwin-x64@1.33.0:
- optional: true
-
- lightningcss-freebsd-x64@1.33.0:
- optional: true
-
- lightningcss-linux-arm-gnueabihf@1.33.0:
- optional: true
-
- lightningcss-linux-arm64-gnu@1.33.0:
- optional: true
-
- lightningcss-linux-arm64-musl@1.33.0:
- optional: true
-
- lightningcss-linux-x64-gnu@1.33.0:
- optional: true
-
- lightningcss-linux-x64-musl@1.33.0:
- optional: true
-
- lightningcss-win32-arm64-msvc@1.33.0:
- optional: true
-
- lightningcss-win32-x64-msvc@1.33.0:
- optional: true
-
- lightningcss@1.33.0:
- dependencies:
- detect-libc: 2.1.2
- optionalDependencies:
- lightningcss-android-arm64: 1.33.0
- lightningcss-darwin-arm64: 1.33.0
- lightningcss-darwin-x64: 1.33.0
- lightningcss-freebsd-x64: 1.33.0
- lightningcss-linux-arm-gnueabihf: 1.33.0
- lightningcss-linux-arm64-gnu: 1.33.0
- lightningcss-linux-arm64-musl: 1.33.0
- lightningcss-linux-x64-gnu: 1.33.0
- lightningcss-linux-x64-musl: 1.33.0
- lightningcss-win32-arm64-msvc: 1.33.0
- lightningcss-win32-x64-msvc: 1.33.0
-
- nanoid@3.3.18: {}
-
- picocolors@1.1.1: {}
-
- picomatch@4.0.4: {}
-
- picomatch@4.0.7: {}
-
- playwright-core@1.63.0: {}
-
- playwright@1.63.0:
- dependencies:
- playwright-core: 1.63.0
-
- postcss@8.5.28:
- dependencies:
- nanoid: 3.3.18
- picocolors: 1.1.1
- source-map-js: 1.2.1
-
- prettier@3.9.6: {}
-
- rolldown@1.2.7:
- dependencies:
- '@oxc-project/types': 0.148.0
- '@rolldown/pluginutils': 1.0.1
- optionalDependencies:
- '@rolldown/binding-android-arm-eabi': 1.2.7
- '@rolldown/binding-android-arm64': 1.2.7
- '@rolldown/binding-darwin-arm64': 1.2.7
- '@rolldown/binding-darwin-x64': 1.2.7
- '@rolldown/binding-freebsd-x64': 1.2.7
- '@rolldown/binding-linux-arm-gnueabihf': 1.2.7
- '@rolldown/binding-linux-arm64-gnu': 1.2.7
- '@rolldown/binding-linux-arm64-musl': 1.2.7
- '@rolldown/binding-linux-ppc64-gnu': 1.2.7
- '@rolldown/binding-linux-s390x-gnu': 1.2.7
- '@rolldown/binding-linux-x64-gnu': 1.2.7
- '@rolldown/binding-linux-x64-musl': 1.2.7
- '@rolldown/binding-openharmony-arm64': 1.2.7
- '@rolldown/binding-win32-arm64-msvc': 1.2.7
- '@rolldown/binding-win32-x64-msvc': 1.2.7
-
- source-map-js@1.2.1: {}
-
- strip-ansi@7.2.0:
- dependencies:
- ansi-regex: 6.3.0
-
- tinyglobby@0.2.17:
- dependencies:
- fdir: 6.5.0(picomatch@4.0.4)
- picomatch: 4.0.4
-
- typescript@5.9.3: {}
-
- undici-types@8.3.0: {}
-
- vite-live-preview@0.4.0(vite@8.2.2(@types/node@26.0.1)(esbuild@0.28.1)):
- dependencies:
- '@seahax/deep-copy': 0.1.0
- '@seahax/semaphore': 0.5.1
- '@types/ws': 8.18.1
- escape-goat: 4.0.0
- strip-ansi: 7.2.0
- vite: 8.2.2(@types/node@26.0.1)(esbuild@0.28.1)
- ws: 8.21.0
- transitivePeerDependencies:
- - bufferutil
- - utf-8-validate
-
- vite@8.2.2(@types/node@26.0.1)(esbuild@0.28.1):
- dependencies:
- lightningcss: 1.33.0
- picomatch: 4.0.7
- postcss: 8.5.28
- rolldown: 1.2.7
- tinyglobby: 0.2.17
- optionalDependencies:
- '@types/node': 26.0.1
- esbuild: 0.28.1
- fsevents: 2.3.3
-
- ws@8.21.0: {}
diff --git a/plugins/apps/composable-test-suite/pnpm-workspace.yaml b/plugins/apps/composable-test-suite/pnpm-workspace.yaml
deleted file mode 100644
index 5ed0b5af0d..0000000000
--- a/plugins/apps/composable-test-suite/pnpm-workspace.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-allowBuilds:
- esbuild: true
From 5c474939ace68ff4e28c5b15aaa5131dd3c7fbcb Mon Sep 17 00:00:00 2001
From: Andrey Antukh
Date: Mon, 7 Sep 2026 21:04:44 +0000
Subject: [PATCH 4/7] :wrench: Pin all pnpm workspaces to one shared pnpm store
Set storeDir in every pnpm-workspace.yaml: `.pnpm-store` at the repo
root and `../.pnpm-store` in the ten module workspaces, so all of them
resolve to /.pnpm-store. pnpm resolves the value against the
workspace root, and nested workspaces do not inherit settings, which
had left the root workspace and the modules on two different stores.
Add scripts/clean-node-modules: removes every workspace node_modules
in one pass (ignores external/ and .opencode/), keeps the shared store
unless --store removes it too.
Verified: every workspace resolves the same store path; reinstalls
after a full clean reuse the cache with zero downloads;
frozen-lockfile installs pass in all 11 workspaces with no lockfile
changes; the frontend storybook suite stays green.
AI-assisted-by: omen-alpha
---
.serena/memories/critical-info.md | 4 +
.serena/memories/workflow/updating-pnpm.md | 24 ++++++
backend/pnpm-workspace.yaml | 2 +
common/pnpm-workspace.yaml | 2 +
docs/pnpm-workspace.yaml | 2 +
exporter/pnpm-workspace.yaml | 2 +
frontend/pnpm-workspace.yaml | 2 +
library/pnpm-workspace.yaml | 2 +
mcp/pnpm-workspace.yaml | 2 +
media-processor/pnpm-workspace.yaml | 2 +
plugins/pnpm-workspace.yaml | 2 +
pnpm-workspace.yaml | 2 +
render-wasm/pnpm-workspace.yaml | 2 +
scripts/clean-node-modules | 91 ++++++++++++++++++++++
14 files changed, 141 insertions(+)
create mode 100755 scripts/clean-node-modules
diff --git a/.serena/memories/critical-info.md b/.serena/memories/critical-info.md
index f7b1754377..0854fe28ee 100644
--- a/.serena/memories/critical-info.md
+++ b/.serena/memories/critical-info.md
@@ -74,6 +74,10 @@ module. You can read it from `mem:/core`
- `scripts/error-reports.mjs` — Query error reports via RPC API with token
authentication. Supports list/get operations with filtering and pagination.
See `mem:scripts/error-reports`.
+- `scripts/clean-node-modules` — Remove stale `node_modules` from all pnpm
+ workspaces (root, modules, member packages). Keeps the shared pnpm store
+ at `/.pnpm-store` unless `--store`; ignores `external/` and
+ `.opencode/`. Usage and reinstall steps: `mem:workflow/updating-pnpm`.
# Dependency graph
diff --git a/.serena/memories/workflow/updating-pnpm.md b/.serena/memories/workflow/updating-pnpm.md
index 72f727a979..9f4ba133df 100644
--- a/.serena/memories/workflow/updating-pnpm.md
+++ b/.serena/memories/workflow/updating-pnpm.md
@@ -14,6 +14,15 @@ file (never pipe tool output through filters).
workspace. Members must not carry their own `pnpm-workspace.yaml` or
`pnpm-lock.yaml`; their dependencies resolve through the parent
workspace's lockfile.
+- One shared pnpm store for the whole repo: `/.pnpm-store`. Every
+ workspace yaml sets it explicitly: `storeDir: .pnpm-store` at the root,
+ `storeDir: ../.pnpm-store` in each module. pnpm resolves the value
+ against the workspace root, so all workspaces land on the same store.
+ Do not remove these lines: nested workspaces do not inherit settings,
+ and without them each workspace may resolve a different store.
+- The store survives `node_modules` cleans. It is content-addressed and
+ integrity-verified, so it cannot go stale; staleness lives in
+ node_modules. Only `scripts/clean-node-modules --store` removes it.
- Every `package.json` (about 35 of them) must carry a `packageManager` field
with the identical `pnpm@+sha512.` value. Do not let them drift.
- CI pins no pnpm version; workflows rely on corepack reading
@@ -63,3 +72,18 @@ file (never pipe tool output through filters).
- `pnpm --version` in each workspace prints the target version.
- `pnpm install --frozen-lockfile` succeeds in each of the 11 workspaces.
- `git diff` on lockfiles matches the expectations above.
+
+## Cleaning stale node_modules
+
+- `scripts/clean-node-modules` removes every workspace `node_modules`: the
+ repo root, all module workspaces, and all member packages. Use it when
+ installs misbehave after dependency changes: clean, reinstall, done.
+- Flags: `-n/--dry-run` lists without deleting; `--store` also removes the
+ shared pnpm store at `/.pnpm-store` (the next install re-downloads
+ what it held). `external/` (vendored dependency trees with their own
+ lifecycles) and `.opencode/` are always ignored.
+- The script never touches the pnpm store by default, so the reinstall
+ after cleaning reuses cached packages (zero downloads).
+- After cleaning, run `pnpm install` in each workspace root to restore the
+ development environment; `frontend` postinstall also reinstalls and
+ builds `plugins-runtime`.
diff --git a/backend/pnpm-workspace.yaml b/backend/pnpm-workspace.yaml
index b3fbd9192b..3ebe73f82d 100644
--- a/backend/pnpm-workspace.yaml
+++ b/backend/pnpm-workspace.yaml
@@ -1,2 +1,4 @@
+storeDir: ../.pnpm-store
+
minimumReleaseAgeExclude:
- brace-expansion@5.0.8 || 5.0.9
diff --git a/common/pnpm-workspace.yaml b/common/pnpm-workspace.yaml
index a1c031fc33..7b3a5d3edf 100644
--- a/common/pnpm-workspace.yaml
+++ b/common/pnpm-workspace.yaml
@@ -1 +1,3 @@
+storeDir: ../.pnpm-store
+
minimumReleaseAge: 0
diff --git a/docs/pnpm-workspace.yaml b/docs/pnpm-workspace.yaml
index bd2aa47620..b9b659dcc5 100644
--- a/docs/pnpm-workspace.yaml
+++ b/docs/pnpm-workspace.yaml
@@ -1,3 +1,5 @@
+storeDir: ../.pnpm-store
+
minimumReleaseAgeExclude:
- undici@7.28.0 || 7.29.0
- js-yaml@3.15.0 || 4.3.0
diff --git a/exporter/pnpm-workspace.yaml b/exporter/pnpm-workspace.yaml
index ac94ff8d53..3a65caa2ac 100644
--- a/exporter/pnpm-workspace.yaml
+++ b/exporter/pnpm-workspace.yaml
@@ -1,3 +1,5 @@
+storeDir: ../.pnpm-store
+
allowBuilds:
core-js-pure: false
minimumReleaseAgeExclude:
diff --git a/frontend/pnpm-workspace.yaml b/frontend/pnpm-workspace.yaml
index 2c3a2c026f..c30ce8c1ea 100644
--- a/frontend/pnpm-workspace.yaml
+++ b/frontend/pnpm-workspace.yaml
@@ -1,3 +1,5 @@
+storeDir: ../.pnpm-store
+
packages:
- "packages/draft-js"
- "packages/mousetrap"
diff --git a/library/pnpm-workspace.yaml b/library/pnpm-workspace.yaml
index b5e864413d..528f811e1a 100644
--- a/library/pnpm-workspace.yaml
+++ b/library/pnpm-workspace.yaml
@@ -1,3 +1,5 @@
+storeDir: ../.pnpm-store
+
minimumReleaseAgeExclude:
- brace-expansion@5.0.8 || 5.0.9
patchedDependencies:
diff --git a/mcp/pnpm-workspace.yaml b/mcp/pnpm-workspace.yaml
index eb1c390c2f..13e111b1dc 100644
--- a/mcp/pnpm-workspace.yaml
+++ b/mcp/pnpm-workspace.yaml
@@ -1,3 +1,5 @@
+storeDir: ../.pnpm-store
+
allowBuilds:
esbuild: true
sharp: false
diff --git a/media-processor/pnpm-workspace.yaml b/media-processor/pnpm-workspace.yaml
index 5ed0b5af0d..f355f8d1a4 100644
--- a/media-processor/pnpm-workspace.yaml
+++ b/media-processor/pnpm-workspace.yaml
@@ -1,2 +1,4 @@
+storeDir: ../.pnpm-store
+
allowBuilds:
esbuild: true
diff --git a/plugins/pnpm-workspace.yaml b/plugins/pnpm-workspace.yaml
index a0099791fc..864c77bb38 100644
--- a/plugins/pnpm-workspace.yaml
+++ b/plugins/pnpm-workspace.yaml
@@ -1,3 +1,5 @@
+storeDir: ../.pnpm-store
+
packages:
- 'apps/**'
- 'libs/**'
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 7a28fcc29c..612f46bca4 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -1,3 +1,5 @@
+storeDir: .pnpm-store
+
allowBuilds:
esbuild: true
diff --git a/render-wasm/pnpm-workspace.yaml b/render-wasm/pnpm-workspace.yaml
index 09a02ca1c8..cad1aaed6b 100644
--- a/render-wasm/pnpm-workspace.yaml
+++ b/render-wasm/pnpm-workspace.yaml
@@ -1,3 +1,5 @@
+storeDir: ../.pnpm-store
+
allowBuilds:
esbuild: true
onlyBuiltDependencies:
diff --git a/scripts/clean-node-modules b/scripts/clean-node-modules
new file mode 100755
index 0000000000..8d17b5f213
--- /dev/null
+++ b/scripts/clean-node-modules
@@ -0,0 +1,91 @@
+#!/usr/bin/env bash
+# Remove node_modules directories across the monorepo's pnpm workspaces:
+# the repo root, all module workspaces, and all workspace member packages.
+#
+# Use it when node_modules are stale or corrupted and a clean reinstall is
+# cheaper than debugging. Reinstall afterwards with `pnpm install` in each
+# workspace root (root, backend, common, docs, exporter, frontend, library,
+# mcp, media-processor, plugins, render-wasm).
+#
+# external/ (vendored dependency trees) and .opencode/ are always ignored.
+# The pnpm content-addressable store lives at /.pnpm-store, outside
+# node_modules, and survives a default clean. `--store` removes it too;
+# the next install re-downloads what it held.
+
+set -euo pipefail
+
+usage() {
+ cat <<'EOF'
+Usage: scripts/clean-node-modules [options]
+
+Remove every node_modules directory in the pnpm workspaces: the repo root,
+all module workspaces, and all workspace member packages.
+
+Options:
+ -n, --dry-run Print what would be removed without deleting anything.
+ --store Also delete the shared pnpm store at /.pnpm-store.
+ The next install re-downloads everything it held.
+ -h, --help Show this help.
+
+external/ (vendored dependency trees) and .opencode/ are always ignored.
+EOF
+}
+
+ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
+DRY_RUN=0
+WITH_STORE=0
+
+while [[ $# -gt 0 ]]; do
+ case "$1" in
+ -n | --dry-run) DRY_RUN=1 ;;
+ --store) WITH_STORE=1 ;;
+ -h | --help) usage; exit 0 ;;
+ *) {
+ echo "error: unknown option: $1" >&2
+ usage >&2
+ exit 64
+ } ;;
+ esac
+ shift
+done
+
+cd "$ROOT"
+
+if [[ $WITH_STORE -eq 1 && -d .pnpm-store ]]; then
+ size="$(du -sh .pnpm-store | cut -f1)"
+ if [[ $DRY_RUN -eq 1 ]]; then
+ echo "would remove: ./.pnpm-store (pnpm store, $size)"
+ else
+ echo "removing pnpm store: $ROOT/.pnpm-store ($size); the next install re-downloads it"
+ rm -rf .pnpm-store
+ fi
+fi
+
+# -prune stops the descent, so only the top-most node_modules of each tree
+# matches; nested dependency copies inside it die with their parent.
+mapfile -t dirs < <(
+ find . \( -name .git -o -name external -o -name .opencode \) -type d -prune \
+ -o \( -name node_modules -type d -prune -print \)
+)
+
+if [[ ${#dirs[@]} -eq 0 ]]; then
+ echo "no node_modules directories found"
+ exit 0
+fi
+
+cleaned=0
+for dir in "${dirs[@]}"; do
+ if [[ $DRY_RUN -eq 1 ]]; then
+ echo "would remove: $dir"
+ else
+ rm -rf "$dir"
+ echo "removed: $dir"
+ fi
+ cleaned=$((cleaned + 1))
+done
+
+if [[ $DRY_RUN -eq 1 ]]; then
+ echo "$cleaned node_modules directories found"
+else
+ echo "$cleaned node_modules directories cleaned"
+fi
From 3b1290c6a2e3f264d572acc6e229e1caf86339b3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?andr=C3=A9s=20gonz=C3=A1lez?=
Date: Wed, 9 Sep 2026 09:36:48 +0200
Subject: [PATCH 5/7] :books: Update user guide for upcoming release features
(#11458)
Document stroke to path, toolbar flyouts, line and arrow tools,
font previews, page multi-select, and dashboard grid/list view.
Relates to #9145, #10403, #10580, #10691
---
docs/img/objects/line-arrow-tools.webp | Bin 0 -> 17448 bytes
.../account-teams/projects-files.njk | 4 ++++
docs/user-guide/designing/color-stroke.njk | 8 +++++++-
docs/user-guide/designing/layers.njk | 19 ++++++++++++++----
docs/user-guide/designing/text-typo.njk | 2 +-
.../user-guide/designing/workspace-basics.njk | 9 +++++++++
docs/user-guide/first-steps/shortcuts.njk | 9 +++++++--
docs/user-guide/first-steps/the-interface.njk | 6 +++---
8 files changed, 46 insertions(+), 11 deletions(-)
create mode 100644 docs/img/objects/line-arrow-tools.webp
diff --git a/docs/img/objects/line-arrow-tools.webp b/docs/img/objects/line-arrow-tools.webp
new file mode 100644
index 0000000000000000000000000000000000000000..4615e65cb844bba6aa0e5e98c3500d06129b96fa
GIT binary patch
literal 17448
zcmeI&_cvRA{0DFyy7bebrD|4{8b#4sL0YTBs=aB=8lknKB(zm6CDKw)xc
zI&8IyAdy6?c1DQ^BFWeHzxaO7aeun!yx-@Z*Ll3pdA;xZd9U3qbMtei0s_uv#&?|V
z=vtoIxmPd#t|9PWv}_6goA9f$SDNSd7VuJ1Uab)bjfTre5V09|Z{!|e8BYBiNo)oY
zw;=OaO4;H4JuyUWi&u**UM@A&LtyA0Q9IMLpX$lyCLFsFDyL+ps>P&7FBKgnHpAMv
zfenT0IB{%tTm@_h
znVJ?8Q|wUsR96136B$LQ=vTi*?D3Zd5n~XY%?J;7nNxDlhSte^{y`~BEBL8Ea=Rq<
zY9H*v;mixE=1zm$j6^rI@{hg37kWSvZ?5|X9XHkW*t;;F#OEdo>|VP9y8^ocy8^oc
zy8^ocy8^ocy8^ocy8^ocy8^ocy8^ocy8^ocy8^ocy8^ocy8{2$1s)$s>nidhpXtgO
zUv*7(GEF|3MTlmfZHw86({GupG=fgKgBdgod$^z2dvk^{m=|8$!>EiOpZYZ46pv5)#D3(+1pmYLmV}p~F
zo47B~>Nb0oa7Lz$Lc*D;+(-E-4gWf!EaGaBSA#{jt}p&zqrnum7yo>)b&1SWs}4O;
z1tq-v+REQe(r(bsG;rB5p0PPg-uTz{nL5O}BHy$5whappS6h7z(^Ng)2+@$gA=?qi
z4ksVfVYr7UTHRXt(_*8}a6?!ciIfVK=qTS2i0p#KeMwG%1zd>zJ@H-Rw7sn3r#v?)
zo9Ol4*Q(4ee6S&AX9&^kWHQ-{7q)H9RXkpYKp?KlV>=WNDA!cUXDZtsKCSfY&3t~N
zOh~f@VnDeiF?N}o$j7qIBdbb~mt})jW>w11oAnM~yQpXS_TQniW5&M85j8)R8|RBV
z6kof_N?oQUp1)uY5zRNd0joYCm?rE=bVk+`)?I@9TUSzo8pPYb?!5nW_~hApa(6)3xG0D7Mk=lv*+H@pWdnoxiK0f+5!sL$AWSyRvaxY9gOHk@K9K@5-j3x7y%$zkc-xVG=z#aL
z(Yn$z5-b^2IXUxZFz|jmDdU$J6As;O2NE?1=AkKHw~w5%cULz~jf+<>7dh+rsL)L>
zZ$Z&CS@elkNJP$p;6i{@^M%ycsrp(IJ7qobNxxHe_0=Eb{tu_$$$lNUqLDW6vbqiQ
zz<2$OVt03Umvlnp`|Zw&lzwC6HQUa3jj>JEze8gFey2<2-ycuO7&_!KEmb(?eC_0U
z)329*eA+MlLPX=_r->^+>noYx4(Kmt>+IRg~v8vZwYamF7Qsp%$MmARJ}O`F6h08Z}TOy
zWb-SSg}eiC9anM@`>R4?sw^^+S4(ncu8rLOLu>D&>5}3Nm}uqE^6v$N@&&OzTfvUI
z091ap#LM`!;R#bBe^V$MCm53bKMk==Dn#p{$dZ%qaTu1wu6$t@yFd5cTz~nCNSZ^{HrG@oF0ZZ
ze|dh+{>dxdA!F+4&S}@YTESrr>##Fm66m1&x1qX{z}W{n_Cl>Runlx(b#nTxn~!Da
zDd_j$&(q=$3#pMT2cM-AGNm*Uk{S4dc%NO?YzISGU?`G+A<5Np;ZqH4LO6NN6E3qA
z0)*oDqa+(u^65*2`eCBoQW(v*OoCA}EmmY#nkdeQSl0|rY-B@ac)W}R(jf2mqZnuT
znm*S-LqN*KF&O}tD3o_RFX5hWZV7@7i`sv#7$j2(=8n(^
zKK)f>L77E`mX$CQ<&)GQ;Dl9}oaf*|zVv9DtIpN>!pacSx@)C{R5{wO`mbHNhIJjf
zSWFy^%X~wlul782o}tpYAuk9|6cAEjhOC7Tvld{Z!j*CEZ}mhA9a5bBcmgwl9~Hn*
zF?(!}X(Y|s8)M~4bOu))R+>WW!2lFzF4*!0=j{V1e9!BfKO`_1zt(c=o>Q=Xk+YAPqsm%UP6
zysKq};YNie>SGxk7O;T2wCzof^p2UeIWq$1ZWi;~IJNV`Ni4^^cXMZcXAZ^YQVo@A
zZ3VmT0QCC<;T8(+XwMP^+3H5O+GNwIOx9R2mk}N%N)t4m3*C$%c?jtKQZ;MYsrs%i
zzWb7lpb1fIDf5y)Q{EhqH`QzNzAy9!lCG9*EXI3|1a?8aY6SFfSZEQTud53*o!Miq@BY$`
znl4x6I_3x7H0aUr2K+Lt8nY;U2pJgG_T>DT@OiGtMIXpv#U>Ndw^`O?H!SsrbZ(fPn#5Vcyva&fKLILj1e8F
z%~kZwGX=8JGhHzQoP@lORJ??LMs%t_5(7xyiI=E3`Bwg{D7qBTv?=@x;dBsanLnsa??doAhpo)XeYAemTM^wbt4
zq82&0-0Jpa;pO;8F#>*xo1w-!|9J!o
zF@d_(H+Ygg39JFv?x#;ArBY88f<&0|0l!`KKp{#@SGHJDOIKeC?3>chsb9pyckk;r
zmDe(IqxLwJ#+Ox;hhj?ZU3IE8QPo~gTGC=IZgcr;z)Hl$gwGTnYqEE6uD6fqq}Dsk
zY_nGfuhA6ZI2~`0q2Lf8ZmKM&Y4d5jE(se6DpMg~#?8Td@{d-CiRIl4j8;k&FgrL6^!&Ma*&uA_iGOo&xzDGtc3=klbruHxkxaO5D!tLfv+QG5F#Xora#LY^^7j+%{5y6{<=9HMF
z*$iCR_6xv2XzdODqIVGoK94TW#{f9bEiasM*Xunp(S?o@8iDMW@fkdbz_x3kZ49HC}ih)7nXG>PN3NMkw@#_@^Ym%<75&H4#8Ct
z+Y;&XI5}Xiq_klaqj9k-lJ6^|b9;;@izeob&&>G3@jf$a^rgw{ki&b;0GCl#i@)CX
z4nX|QhVH{&_ICmWgHD++)|P@IaxeS$jp`1Cfihbb!1%PCov#A`8ckM#jmky7`2uZIWRWPiCP
zcS_#0rjd;>ErX5gpF=kXQmm=g(TlOR=IFG_aJ8S-MFG7(+^&uM^!dbosiaTTRP8U1
zsCnwI7Jz(B_bdLkUSd%DpH;q?Q*TW)oZfi$)koM9gxI2Tc)rZOh{ikqb$gbr=i;{A
zZ4e&%?Ai6U@ZZfV7@|A3x3suKh`xV{H`K5|{IPM=!+xvB!m2*4n_PgSnpI
zK{QSxOdT18f4?kdR0Tz?6O3{P;<_NA#y4R9S-^g?GIeQX4oDQ+=2*R`HS
z*jYw<8|-Rs{L<$0vx(URx?!_CL#v^P?uB!!)n3g>(Co6@ycZ)~Ai%r7e3l~Vt_G`_
zStxdD`c_{FVs-y#UtyYDiOQ<%G0LNIW?e-N&8epUa6?(C-^rFYz$5&8F@dNrp|xmQ
z-)iq7cli-(jrWLbpt5ru>ha9S+mqJ|mymIbTnedMm-%ObSQv|41dPBzbI|!yd22m{
z8G?3dh}j{t*qpR?55lZLTZFF;KK0F~Mb1mo2B=Om4-qHFZV8|
zil>1@!LLc0NrbW)UU~n-GNWSR*QAH&y*7geP>41-*V~hx2Q>#jJTLb>0)nFVN00mR
ztFNJftPPXEBFgcEcsQ2c>0NkHW4K#>12;s(tkJSm=imYZR;J4^W}}VOWtue7D=h3AG4hVW0CXL
z$p(t;cferU#ySDj7G&h!zjUiTsRd_5A9>2sZR5iGibiwxM$RH<)Xa_cgq+N0S^e-F
zPqCjidt~RNHGQ2_?77o^c$r>PtV&!g|8Fji!eRAi$HV=PT_>=lD8fs0v#3vwsQlX~
zUXYKwqLSc8BR8c?_a@r23#eRu=c*&Ms&5YXLI^r7T@Nsy2Ro4eWsSUlkb?+q9RBcn
z{Ri5yPs69wQfW+l8Bnf;c@h+d@YQd`#HeOvd`f8p#4P_yQib{^48Lx+Yje}_JfF_6
zjuONm4QjLVYFY5(4f6}5#3hS%u0IocJhz_>8YvXDbF>6VuP4m%`v)&V!A2W24l)r^
zAv5UocF$z_Hnr(ZeE|yIkl~nblO8=kC|w6d=OA-!0aG3MqG1I)eTN%}lcHI3$o-U>
z$@7@o2%~1e$RDI);mn^LEAIx0siV-VQY11)|4K9%j6cv>j#O@?zQ)&&)hS58RPD>_
za|YUUwI@6=+W0`dd>AHVq|Zn6-{ya-&$180PKeRHfD&S6UO6+QnM(tWo?wf>wAtyu
zM_C&maJ($68pe%7HNlZ5U3%&|dPwCXH;XSUYv`)cY9?v9k@PWo
z?z^C$gxjF9!E$C)`ib%JLa(`AW2cgbA|efiY6aM~L5aXpPtID0n}!;dj9ag2KTFE#
z)9DiZGySHi?_wgD*TaW|0Sj63F7J~+$L5sOOhYs(LYS`ST!dz4a8UD|EhQSTX{hQs
z1vSuO@96>kVa?q>VPY;q8Jkv^96=R(;(@fk>`z7gPHC<*R7@QvR=d&BCyqu$o$=SP
z?4Nc>G1mYp6GjQ7+1Rw#Gg}YC5hB0Z*OwO8oGi6=-g1j`k{sTDt*$&p>2>|8n>OVt
zgcKjU)2ax|#9JKvdZa4mPA=KEDbSeY)0HPRuHGX*-x1aZ^M;%=4BnVTonFrtcP4MHOQDCnp46kY*p{xTu^JZYgS>UfV?Qwp3_aZe)TRv
zEqeb}6Opo^*l%WqVBN4Mcl0U=IBgII=e_yFi{8>u2p#wgl(Ue1zv=Y*_7X9n*8|6X
zJ&e9xUFw|r?@-L%=17;R$DHkrsuLvvPdaoGxzym4iI6EbaXtFT_1Q(^({_+&0oO}@
zIt$jqx&<5@S8NUIV+CF!M8EOYR(BqfCzzL}l>4%Jz%nKkmVfSgj!$@+e%z}BU+vi%
zKlRVOZcaHKqw%j4%^{{YUWr*q{v1b5W(A1nDYkdESX{sQ!6T>o_9*tGDB|?%lT#;b
z(~qbofxbTrtPP4JwVeBxeM1|Ot%}Ul$F=&CTCSNM?N}>~bp5zxJ&&&ExH7RXUp9M<
zC6WfMW-T?E>o~6Qr!Lty8HTxbB(cxToqrph#SHQ#{XH=3G$;2sI;+pN;*B=minr3Z
z1VPq*);ihU!i0?+N&CAqIL}`F=SmFCltU&}TGqdL7gC^TtHp2C0i~V04`}k(;=iLl
zzGzhP?7p9Bl7@|a
z=uy>3FzdQG@vw@)%SNEn@EmoxWS^|iWWxPQmx|$NaetMrBFNm+j8z%&6yb8EMG%7k
zcqZZm3o1U8Pr$1TP1^+4LVrK(U)lTP$+{<}UTKjASO%CxiROdq-Zk;1@V;My*Wfh!
zFL4`)g+p+^Wnc*7UFLKV)V$s%9_^GiSW^0G{kqWeB#Kd;&)o$Bx$#p!_v#82=@f4#
zWMGRK4D!a!3|LTjtqEPYP(HBHHD!ezNaY6EWp=EzO}IC^uS>CMPDHAd1P
z3g)2R{$cscKi1h+eAyK+tv-PZ;Lk8Sen=oQyc9rG7$W<1>8C+L+{u=h@HQ@Xm8M=2
zP#(9&h5Y-0OXO_g0O0T*{eVKOXjgQ+*}?=lmeb1LI;$H(e(yGqgYq^u8MwqPavO9!
zgogErV!4Sa?TuT1#H2AX>WMo=DO9u~Jb7E2eTkcti^nMq!0nx^LIQ-vcO)UkVH2ZK
z7b}pIA|RAEzV{1#AfPf~+5q^78zSh5rY`loBqN;@wnu4k5E)N8b=DIh7?jm`=1q8O
zG+Pg1D95NQ1zbZf?KS$}bQB!MSnKC3%&G0fx$R!>gzfo3RBpiruV9O($D&0sjt#ND
zLm`!PvW;{?apHzy%j>k(Y`YPp-1YDe|LFa~rPzE3FdSzXj^#?l0}n1p(q=gQTsF`M
z8a_oS&rCZKAJ%&AoMjC=yr^wwTH?Re@IRc$p{WGlO8*WWI*z}@WD_|U(ejCWSQWlz
zW1|?(z{PJd1`{`Rcs$8E`z)_JONrbyOai|?XYO)f&`+#JduP{ib}k$TjN|D%h}k@rubz3?^DC@sVh)ULNs6PO@M}f&}jd`DAvwIiQLrq
zJH7GiLlDM#VGDNI9}aih=G)s#;1fLUlq_}*6dZ_HEv4_+}%=(U8)h3N~8
z{6puqfVoyv@7oTF%V{Y8RV>4QJ0v5mSo=g{G#b`?(mA;R8{h1QMExh_viv^dVEaB}
zmmjoIZ2~L(Ra3L5to{uT!C#ZvNK9W}9V%=5=RRW?ebko}68OTsWy;0&it|7{nBx8K|T?R>Q#mfgpKeN70aTsQhwX
zT*bLa8m72^(qb&r$j@56bn-!AU*o$N;02RUj;|aCoO}+NjpbP7ddCC1+%h|Rl!8@A
zj^Y-@!GSap)bBd1jsC5yqU0M-JgA)`a%W_}Bd5I(BaXbv|74yQLq<}4!oCA;o)q@g
zv9NEyky^61?>hDJ{L&iI=N7$pUDILy+k*(My3OH#M8Twqn5cBmOOC%Z^aGc7a&e0H
z(}=aPk7YN?p5yJIA4@}W@#NPALHO*d+QUa7;HJS0
zpDmLa2lQ!ph{)caXxE(bYRkV$B+op61|R;Mm1{Ks!W^H|c$eiQ#!4U1=$4C_4CT<5K5ST4ZKi
z;F$p}{5&rL?UYW~&%FqCZt(x}!e+Fq^F4&^uloRL(FitaB_DDzJAO!x21BY~3aQq_
z$}vUTEJSx!gby2!0@q^`VnS4#T=oZo~MC&%OnHfh2^^tlBP}
z4p@r|o$r_KG&M*#|RIcnuNO7*)Gk0vCz8l@1GMdZ+o3VE7#i>UPKEC*NxN=wCgcW@p`FIF8P*4b$BLCx42+kdq36-
zkB24@)O2D1p#aM8OiuIHCVkb-JTK<#QEBuax4j65qPj+0;J?qC*m2ueA>7UL_x!cl
z?4y!4#!@-jBHf@7Hj>NDq9k+{9%tRMHOt!s2mx)*i{LSAs)VkWJJ1_IHma22O%iRw
zUQF{2%!Y@(co#ay2;(K_c!%xfE-2?+459KT*H?`Gtr>1_sD}NXmA)nSdrrD%u4f5Y
zq*~0NOzD=(fB6PGHJF9kVBU^-pyN2*Bd)LZfBoC*ZhgA~y8^ocy8^ocy8^ocy8^oc
Uy8{331UwkWS2wtcuMP_Q58d5*%>V!Z
literal 0
HcmV?d00001
diff --git a/docs/user-guide/account-teams/projects-files.njk b/docs/user-guide/account-teams/projects-files.njk
index 02f1afd38c..fa3029e7c9 100644
--- a/docs/user-guide/account-teams/projects-files.njk
+++ b/docs/user-guide/account-teams/projects-files.njk
@@ -56,6 +56,10 @@ desc: Learn how to organize your work in Penpot. Create, manage and organize pro
When creating a file, you'll be asked to give it a name. The file will open in the workspace where you can start designing immediately.
+Grid and list view
+In the dashboard header you can switch how files are shown: a thumbnail Grid view or a compact List view . The choice is kept in the browser and applies both to the team files view and inside a project.
+List view shows the file name, whether the file is a shared library, the last modification time, and the same options menu as the file cards.
+
Edit a file
To rename a file, right-click on the file card in the dashboard and select Rename , or click on the three-dot menu on the file card. Enter the new name and confirm the change. You can also access file settings and other options from the file's context menu.
diff --git a/docs/user-guide/designing/color-stroke.njk b/docs/user-guide/designing/color-stroke.njk
index 012b45b264..bd1cab3000 100644
--- a/docs/user-guide/designing/color-stroke.njk
+++ b/docs/user-guide/designing/color-stroke.njk
@@ -122,8 +122,14 @@ desc: Style your designs with Penpot's options! Learn about color fills, gradien
+Stroke to path
+A path is the underlying geometry: a sequence of points and segments (straight lines or Bezier curves). A stroke is the visible line drawn along that path, with properties such as width, color, opacity, dashes, caps, and joins.
+Stroke to path turns the visible outline of a stroke into a separate, editable path. You can then reshape or style that outline independently of the original path. The new shape is usually closed. That matters for SVG, boolean operations, and editing the outline as geometry.
+To convert a stroke, select a layer that has one, open the layer menu, and choose Stroke to path . Penpot creates a new path from each stroke (named with " (stroke)") and removes the strokes from the original layer.
+Stroke to path is currently available when WebGL rendering is enabled.
+
Stroke Caps
-Ever needed an arrow to point something? You can style the ends of any open paths selecting different styles for each end of an open path.
+Ever needed an arrow to point to something? You can style the ends of any open paths selecting different styles for each end of an open path. You can also start from the Arrow tool , which already applies a triangle cap.
diff --git a/docs/user-guide/designing/layers.njk b/docs/user-guide/designing/layers.njk
index 2c55a7a7ca..b46bc11f90 100644
--- a/docs/user-guide/designing/layers.njk
+++ b/docs/user-guide/designing/layers.njk
@@ -140,7 +140,7 @@ Penpot allows you to decide if the fill of an artboard will be shown in exports,
Rectangles and ellipses
Rectangle and ellipses are two basic “primitive” geometric shapes that are useful when starting
a design.
-The shortcut keys are E for ellipses and R for rectangles.
+The shortcut keys are E for ellipses and R for rectangles. Both tools live in the shapes flyout of the toolbar, together with line and arrow.
To find out more about how to edit and modify these shapes go to Layer basics .
@@ -151,13 +151,24 @@ a design.
Text
Text layers are how you add copy to your designs in Penpot. If you want to go deeper into fonts, typography and advanced text options, check the dedicated Text & Typography section.
+Lines and arrows
+Use the Line and Arrow tools to draw a two-point path in one drag. They live in the shapes flyout of the toolbar, together with rectangle and ellipse.
+
+ Line (L ): click and drag. Hold Shift/⇧ to snap the angle in 15 degree increments.
+ Arrow : the same gesture, with a triangle arrow cap on the end. Pick it from the shapes flyout. You can change or remove the cap from the stroke caps .
+
+The result is a regular path, so you can edit its nodes and stroke like any other path.
+
+
+
+
Curves (freehand)
The curve tool allows a path to be created directly in a freehand mode.
-Select the curve tool by clicking on the icon at the toolbar or pressing Shift/⇧ + c .
+Select the curve tool from the free-draw flyout in the toolbar or press Shift/⇧ + C .
The path created will contain a lot of points, but it is edited the same way as any other curve.
Paths (bezier)
-A path is composed of two or more nodes and the line segments between them, which may also be curved. To draw a new path you have to select the path tool by clicking on the icon at the toolbar or pressing P . Then you have two ways to create the path:
+A path is composed of two or more nodes and the line segments between them, which may also be curved. To draw a new path, select the path tool from the free-draw flyout in the toolbar or press P . Then you have two ways to create the path:
Click to create a new corner node.
Click and drag to create a curved node.
@@ -211,7 +222,7 @@ You can choose to edit individual nodes or create new ones. Press Esc
Layer actions
Create
-To create a layer you have to select the type of layer by clicking the selected tool (board, rectangle, ellipse, text, image, path or curve) at the toolbar. Then you usually have to click and drag your mouse on the viewport.
+To create a layer, pick a tool from the toolbar. Board, text, and image stay on the toolbar. Rectangle, ellipse, line, and arrow are in the shapes flyout. Path and curve are in the free-draw flyout. Then you usually click and drag on the viewport.
Hold Shift/⇧ while creating an ellipse or a rectangle to maintain equal width and height.
diff --git a/docs/user-guide/designing/text-typo.njk b/docs/user-guide/designing/text-typo.njk
index 585a11b7cb..3317821ff2 100644
--- a/docs/user-guide/designing/text-typo.njk
+++ b/docs/user-guide/designing/text-typo.njk
@@ -32,7 +32,7 @@ desc: Penpot's guide on custom fonts! Upload, manage, and use custom fonts in Pe
- Font family. Penpot includes by default the Google Fonts cataloge. You can also install your own fonts .
+ Font family. Penpot includes by default the Google Fonts cataloge. You can also install your own fonts . In the font selector, each family name is shown in its own typeface so you can compare fonts before applying one. The name is the preview. While a font loads, you may briefly see the interface font instead. The preview uses a default variant, not every weight or style of the family.
Font size.
Font type.
Line height (in pixels).
diff --git a/docs/user-guide/designing/workspace-basics.njk b/docs/user-guide/designing/workspace-basics.njk
index e87ff0d740..c0547d4cbc 100644
--- a/docs/user-guide/designing/workspace-basics.njk
+++ b/docs/user-guide/designing/workspace-basics.njk
@@ -43,6 +43,15 @@ desc: Master Penpot's workspace basics! Learn interface navigation, zoom tools,
+Select and delete several pages
+In the Pages panel you can select more than one page and delete them in a single action.
+
+ Click a page to open it. This selects only that page.
+ Shift/⇧ + click to select a range of pages. This does not change the page you are viewing.
+ Ctrl/⌘ + click to add or remove one page from the selection. This does not navigate.
+
+Right-click a selected page and choose Delete pages . Confirm to remove all selected pages in one step. A file always keeps at least one page. Page separators cannot be included in the selection.
+
Page separators
You can add visual dividers in the page list to group pages without extra structure. Create an empty page, then rename it to ---. The page appears as a horizontal line in the list.
A page only becomes a separator if its name is --- and the page has no content on the canvas. A page with content that is named --- stays a normal page. Separators cannot be opened or selected; you can reorder or delete them like other pages.
diff --git a/docs/user-guide/first-steps/shortcuts.njk b/docs/user-guide/first-steps/shortcuts.njk
index 76b323ec31..b06057a9b9 100644
--- a/docs/user-guide/first-steps/shortcuts.njk
+++ b/docs/user-guide/first-steps/shortcuts.njk
@@ -681,8 +681,8 @@ desc: Get quickstart tips, shortcuts, and tutorials for Penpot! Learn interface
Curve
- Ctrl C
- ⌘ C
+ Shift C
+ ⇧ C
Ellipse
@@ -694,6 +694,11 @@ desc: Get quickstart tips, shortcuts, and tutorials for Penpot! Learn interface
Shift K
⇧ K
+
+ Line
+ L
+ L
+
Path
P
diff --git a/docs/user-guide/first-steps/the-interface.njk b/docs/user-guide/first-steps/the-interface.njk
index 570087d6e8..c670c0f6c6 100644
--- a/docs/user-guide/first-steps/the-interface.njk
+++ b/docs/user-guide/first-steps/the-interface.njk
@@ -41,9 +41,9 @@ desc: Discover Penpot's free user guide! Learn the interface, workspace basics,
Viewport: An infinite canvas where you can design without limits.
- Toolbar: This is where you’ll find all the tools to quickly and easily create different types of layers: board, rectangle, ellipse, text, graphic, path, and free drawing. Learn more about layers.
+ Toolbar: Tools to create layers. Board, text, and image stay on the toolbar. Shapes (rectangle, ellipse, line, and arrow) and free-draw tools (path and curve) are grouped in flyouts. Open a flyout to pick a tool, or use its shortcut. Learn more about layers.
Main menu: From the main menu, you can customize your workspace. Manage the visibility of grids, rulers, and panels. Enable or disable snapping and dynamic alignment. Add or remove the file as a Shared Library. You’ll also find help resources here.
- Pages: A file can contain as many pages as you need. Each page has its own viewport (the almost infinite area where you design) and its own layers. You can create, delete, or reorder pages as needed.
+ Pages: A file can contain as many pages as you need. Each page has its own viewport (the almost infinite area where you design) and its own layers. You can create, delete, or reorder pages, and select several pages at once to delete them. More about pages.
Layers: Layers are the different objects you can place in the design viewport. More about Layers panel.
Rulers: Rulers provide coordinates to help you design. You can also drag guides from them.
Color palette: The color palette gives you quick access to a visible library of colors. Use the menu to easily switch between libraries. Learn more about the color palette. .
@@ -137,7 +137,7 @@ desc: Discover Penpot's free user guide! Learn the interface, workspace basics,
User area: This must be you! Access your profile settings , Penpot tutorials, the Penpot Community and more. You can also find here a way to leave us feedback. We’d love to read your thoughts :).
Comments notifications: Here you will be able to see if you have unread comments inside the files of the team. There's also a button to mark all notifications as read.
Create project: Create as many projects as you need to organize your designs.
- File card: Basic information about a file at plain sight. A preview, update info or if it’s added as a Shared Library. From there you can perform several actions over the file (rename, duplicate, move, download, delete).
+ File card: Basic information about a file at plain sight. A preview, update info or if it’s added as a Shared Library. From there you can perform several actions over the file (rename, duplicate, move, download, delete). You can also switch the files area between a thumbnail grid and a compact list. More about grid and list view.
Libraries & Templates module: A curated selection of Libraries & Templates files ready to import.
From e96a75d3669020264b638335a9fe5fa7a896e8bc Mon Sep 17 00:00:00 2001
From: Andrey Antukh
Date: Mon, 7 Sep 2026 12:57:47 +0000
Subject: [PATCH 6/7] :sparkles: Send telemetry event batch as plain JSON
vector
The event batch sent to the telemetry server was encoded as a
fressian+zstd base64 blob. Send it as a plain vector of event maps
instead: the JSON encoder handles UUID and temporal types natively,
the payload becomes inspectable, and the receiver schema coerces
values back to proper types.
The receiver (penpot-telemetry) now accepts both the blob and the
plain vector, so it must be deployed before this backend change.
AI-assisted-by: omen-alpha
---
backend/src/app/tasks/telemetry.clj | 13 +++----
.../backend_tests/tasks_telemetry_test.clj | 36 +++++++++----------
2 files changed, 20 insertions(+), 29 deletions(-)
diff --git a/backend/src/app/tasks/telemetry.clj b/backend/src/app/tasks/telemetry.clj
index 4fb5f7d904..8d70def6a7 100644
--- a/backend/src/app/tasks/telemetry.clj
+++ b/backend/src/app/tasks/telemetry.clj
@@ -17,7 +17,6 @@
[app.http.client :as http]
[app.main :as-alias main]
[app.setup :as-alias setup]
- [app.util.blob :as blob]
[app.util.json :as json]
[integrant.core :as ig]
[promesa.exec :as px]))
@@ -248,20 +247,16 @@
:props (or (some-> props db/decode-transit-pgobject) {})
:context (or (some-> context db/decode-transit-pgobject) {})}))
-(defn- encode-batch
- "Encode a sequence of event maps into a fressian+zstd base64 string
- suitable for JSON transport."
- ^String [events]
- (blob/encode-str events {:version 4}))
-
(defn send-event-batch
"Send a single batch of events to the telemetry endpoint. Returns
- true on success."
+ true on success. The events are sent as a plain vector of event
+ maps; the JSON encoder handles UUID and temporal types natively and
+ the receiver coerces them back to proper types."
[{:keys [::setup/props] :as cfg} batch]
(let [payload {:type :telemetry-events
:version (:full cf/version)
:instance-id (:instance-id props)
- :events (encode-batch batch)}
+ :events (vec batch)}
request {:method :post
:uri (cf/get :telemetry-uri)
:headers {"content-type" "application/json"}
diff --git a/backend/test/backend_tests/tasks_telemetry_test.clj b/backend/test/backend_tests/tasks_telemetry_test.clj
index e3f57647df..1f49c2f7c1 100644
--- a/backend/test/backend_tests/tasks_telemetry_test.clj
+++ b/backend/test/backend_tests/tasks_telemetry_test.clj
@@ -12,7 +12,6 @@
[app.db :as db]
[app.loggers.audit :as audit]
[app.tasks.telemetry :as telemetry]
- [app.util.blob :as blob]
[app.util.json :as json]
[backend-tests.helpers :as th]
[clojure.test :as t]
@@ -59,11 +58,6 @@
:cnt
long))
-(defn- decode-event-batch
- "Decode the base64+fressian+zstd event-batch sent to the mock."
- [b64-str]
- (blob/decode-str b64-str))
-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; STATS / REPORT STRUCTURE TESTS (existing behaviour, extended)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -245,21 +239,19 @@
(t/is (not (contains? ev :ip-addr)))))))))
(t/deftest test-batch-encoding-is-decodable
- ;; Verify that encode-batch produces a blob that round-trips back
- ;; through blob/decode to the original data.
+ ;; Events are sent as a plain vector of raw event maps (no blob
+ ;; encoding): every batch must JSON round-trip unchanged, because
+ ;; the receiver coerces types from the plain JSON representation.
(let [events [{:name "navigate" :type "action" :source "telemetry"
:tracked-at (ct/now)}
{:name "create-file" :type "action" :source "telemetry"
:tracked-at (ct/now)}]
- ;; Call the private fn through the ns-mapped var
- encode (ns-resolve 'app.tasks.telemetry 'encode-batch)
- encoded (encode events)
- decoded (decode-event-batch encoded)]
- (t/is (string? encoded))
- (t/is (seq decoded))
- (t/is (= (count events) (count decoded)))
- (t/is (= "navigate" (:name (first decoded))))
- (t/is (= "create-file" (:name (second decoded))))))
+ encoded (json/encode-str {:events (vec events)})
+ decoded (json/decode encoded)]
+ (t/is (vector? (:events decoded)))
+ (t/is (= (count events) (count (:events decoded))))
+ (t/is (= "navigate" (:name (first (:events decoded)))))
+ (t/is (= "create-file" (:name (second (:events decoded)))))))
(t/deftest test-multiple-batches-when-many-events
;; Lower batch-size to 1 so that 3 events produce 3 separate
@@ -787,9 +779,13 @@
(t/is (= "telemetry-events" (name (:type body))))
(t/is (string? (:version body)))
(t/is (some? (:instance-id body)))
- ;; :events is a base64-encoded blob
- (t/is (string? (:events body)))
- (t/is (pos? (count (:events body))))))))))
+ ;; :events is a plain vector of raw event maps
+ (t/is (vector? (:events body)))
+ (t/is (pos? (count (:events body))))
+ (doseq [ev (:events body)]
+ (t/is (string? (:name ev)))
+ (t/is (string? (:source ev)))
+ (t/is (string? (:tracked-at ev))))))))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; TASK BRANCH COVERAGE
From 011feeaf7175837167481b187f0ece924e8d5a07 Mon Sep 17 00:00:00 2001
From: Eva Marco
Date: Wed, 9 Sep 2026 09:56:10 +0200
Subject: [PATCH 7/7] :bug: Fix missing text in legacy SVG board thumbnails
(#11552)
* :bug: Fix missing text in legacy SVG board thumbnails
Board thumbnails rendered by frame-imposter used React's
renderToStaticMarkup, a synchronous pass with no live DOM to measure
text against. Text shapes without a persisted position-data value
therefore rendered as nothing, so a cached board thumbnail silently
lost its text until the board was hovered, selected, or the canvas
was zoomed past 130%, all of which bypass the cached thumbnail in
favor of live content.
frame-imposter now provides the same is-render? context the
standalone exporter already sets, so text without position-data
falls back to the synchronous foreignObject renderer instead of
rendering nothing.
Thumbnails cached before this fix stay broken until something
regenerates them, so on each page load, board thumbnails containing
text are opportunistically regenerated once per browser (tracked via
local-storage) so existing files self-heal without requiring an
edit.
AI-assisted-by: claude-sonnet-5
* :recycle: Use a transducer in heal-stale-text-thumbnails
Fixes a PR review comment: the frame filtering/mapping was spread
across four separate rx operators. Collapse it into a single
transducer pass over frame-ids, leaving only one rx/map to perform
the mark-healed side effect and build the update-thumbnail action.
---
.../app/main/data/workspace/thumbnails.cljs | 55 ++++++++++++++++++-
frontend/src/app/main/render.cljs | 21 +++----
2 files changed, 65 insertions(+), 11 deletions(-)
diff --git a/frontend/src/app/main/data/workspace/thumbnails.cljs b/frontend/src/app/main/data/workspace/thumbnails.cljs
index 3526c1ed99..78392a82bd 100644
--- a/frontend/src/app/main/data/workspace/thumbnails.cljs
+++ b/frontend/src/app/main/data/workspace/thumbnails.cljs
@@ -12,6 +12,7 @@
[app.common.thumbnails :as thc]
[app.common.time :as ct]
[app.common.types.component :as ctc]
+ [app.common.types.shape-tree :as ctt]
[app.common.uuid :as uuid]
[app.main.data.changes :as dch]
[app.main.data.helpers :as dsh]
@@ -23,6 +24,7 @@
[app.main.render :as render]
[app.main.repo :as rp]
[app.util.queue :as q]
+ [app.util.storage :as storage]
[app.util.timers :as tm]
[app.util.webapi :as wapi]
[beicon.v2.core :as rx]
@@ -289,13 +291,60 @@
(mapcat get-frame-ids-cached))
changes))))
+;; Board thumbnails used to render text shapes without position-data as
+;; nothing instead of falling back to the foreignObject renderer (see
+;; frame-imposter in app.main.render), so any board thumbnail cached before
+;; that fix may be missing its text. The backend doesn't tell the client
+;; when a fetched thumbnail was generated, so we can't tell stale apart from
+;; fresh by inspecting it; instead each board thumbnail with text content is
+;; regenerated at most once per browser, tracked via local-storage so repeat
+;; visits (once healed) don't keep re-rendering it.
+(def ^:private healed-storage-key ::healed-text-thumbnails)
+
+(defn- frame-has-text?
+ [objects frame-id]
+ (->> (cfh/get-children-with-self objects frame-id)
+ (some cfh/text-shape?)
+ (some?)))
+
+(defn- unhealed-text-thumbnail?
+ [state object-id]
+ (and (some? (dm/get-in state [:thumbnails object-id :uri]))
+ (not (contains? (get @storage/global healed-storage-key) object-id))))
+
+(defn- mark-thumbnail-healed!
+ [object-id]
+ (swap! storage/global update healed-storage-key (fnil conj #{}) object-id))
+
+(defn- heal-stale-text-thumbnails
+ "Emits an `update-thumbnail` for every board on the page that has text
+ content and hasn't already been healed (see `healed-storage-key`) in this
+ browser."
+ [state file-id page-id]
+ (let [objects (-> (dsh/lookup-file-data state file-id)
+ (dsh/get-page page-id)
+ :objects)
+ frame-ids (ctt/get-root-frames-ids objects)
+ xf (comp
+ (filter #(frame-has-text? objects %))
+ (keep
+ (fn [frame-id]
+ (let [object-id (thc/fmt-object-id file-id page-id frame-id "frame")]
+ (when (unhealed-text-thumbnail? state object-id)
+ [frame-id object-id])))))]
+ (->> (rx/from (eduction xf frame-ids))
+ (rx/map
+ (fn [[frame-id object-id]]
+ (mark-thumbnail-healed! object-id)
+ (update-thumbnail file-id page-id frame-id "frame" "heal-stale-text-thumbnails"))))))
+
(defn watch-state-changes
"Watch the state for changes inside frames. If a change is detected will force a rendering
of the frame data so the thumbnail can be updated."
[file-id page-id]
(ptk/reify ::watch-state-changes
ptk/WatchEvent
- (watch [_ _ stream]
+ (watch [_ state stream]
(let [stopper-s (rx/filter
(fn [event]
(as-> (ptk/type event) type
@@ -330,6 +379,10 @@
(rx/tap #(l/trc :hint "buffer initialized")))]
(->> (rx/merge
+ ;; Heal boards with text whose cached thumbnail may predate the
+ ;; text-position fix (see heal-stale-text-thumbnails).
+ (heal-stale-text-thumbnails state file-id page-id)
+
;; Perform instant thumbnail cleaning of affected frames
;; and interrupt any ongoing update-thumbnail process
;; related to current frame-id
diff --git a/frontend/src/app/main/render.cljs b/frontend/src/app/main/render.cljs
index 31108fa9f0..36532ed591 100644
--- a/frontend/src/app/main/render.cljs
+++ b/frontend/src/app/main/render.cljs
@@ -266,16 +266,17 @@
[{:keys [objects frame vbox x y width height background]}]
(let [shape-wrapper (shape-wrapper-factory objects)]
[:& (mf/provider muc/render-thumbnails) {:value false}
- [:svg {:view-box vbox
- :width (ust/format-precision width viewbox-decimal-precision)
- :height (ust/format-precision height viewbox-decimal-precision)
- :version "1.1"
- :xmlns "http://www.w3.org/2000/svg"
- :xmlnsXlink "http://www.w3.org/1999/xlink"
- :fill "none"}
- (when (some? background)
- [:rect {:x x :y y :width width :height height :fill background}])
- [:& shape-wrapper {:shape frame}]]]))
+ [:& (mf/provider muc/is-render?) {:value true}
+ [:svg {:view-box vbox
+ :width (ust/format-precision width viewbox-decimal-precision)
+ :height (ust/format-precision height viewbox-decimal-precision)
+ :version "1.1"
+ :xmlns "http://www.w3.org/2000/svg"
+ :xmlnsXlink "http://www.w3.org/1999/xlink"
+ :fill "none"}
+ (when (some? background)
+ [:rect {:x x :y y :width width :height height :fill background}])
+ [:& shape-wrapper {:shape frame}]]]]))
;; Component that serves for render frame thumbnails, mainly used in
;; the viewer and inspector