From 778b8ae5217e7ae3315f8bfd9486b48b46623160 Mon Sep 17 00:00:00 2001 From: Pascal Fleet Date: Mon, 12 Oct 2026 22:17:22 +0000 Subject: [PATCH 1/6] chore(deps): harden MCP and refresh rendering and CSS patches --- apps/editor/lib/css-build.test.ts | 32 +++++++ apps/editor/package.json | 8 +- apps/ifc-converter/package.json | 8 +- bun.lock | 92 ++++++++++--------- package.json | 12 +-- packages/cli/package.json | 2 +- packages/mcp/package.json | 2 +- .../viewer/src/lib/dispose-object3d.test.ts | 11 +++ ...hree@0.186.0.patch => three@0.186.1.patch} | 12 +-- 9 files changed, 114 insertions(+), 65 deletions(-) create mode 100644 apps/editor/lib/css-build.test.ts rename patches/{three@0.186.0.patch => three@0.186.1.patch} (88%) diff --git a/apps/editor/lib/css-build.test.ts b/apps/editor/lib/css-build.test.ts new file mode 100644 index 0000000000..6e045a0125 --- /dev/null +++ b/apps/editor/lib/css-build.test.ts @@ -0,0 +1,32 @@ +import { expect, test } from 'bun:test' +import { readFile } from 'node:fs/promises' +import tailwindcss from '@tailwindcss/postcss' +import postcss from 'postcss' + +const stylesheet = new URL('../app/globals.css', import.meta.url) + +test('the editor stylesheet emits shared layout, theme and reduced-motion styles', async () => { + const result = await postcss([tailwindcss()]).process(await readFile(stylesheet, 'utf8'), { + from: stylesheet.pathname, + }) + + expect(result.warnings()).toEqual([]) + expect(result.css).not.toContain('@apply') + expect(result.css).toContain('.flex') + expect(result.css).toContain('var(--background)') + expect(result.css).toContain('prefers-reduced-motion') +}) + +test('zero spacing remains a length in calc and shadows support fractional opacity', async () => { + const result = await postcss([tailwindcss({ optimize: false })]).process( + '@import "tailwindcss"; @source inline("w-[calc(--spacing(0)+1px)] shadow-sm/12.5");', + { from: stylesheet.pathname }, + ) + const values: string[] = [] + result.root.walkDecls((declaration) => { + values.push(declaration.value) + }) + + expect(values).toContain('calc(0px + 1px)') + expect(values.some((value) => value.includes('12.5%'))).toBe(true) +}) diff --git a/apps/editor/package.json b/apps/editor/package.json index e755e9525f..ed4b7b5957 100644 --- a/apps/editor/package.json +++ b/apps/editor/package.json @@ -29,19 +29,19 @@ "@react-three/drei": "^10.7.7", "@react-three/fiber": "^9.8.1", "@react-three/xr": "^6.6.30", - "@tailwindcss/postcss": "^4.2.1", + "@tailwindcss/postcss": "^4.3.3", "@webxr/plugin": "github:sudhir9297/webxr-pascal-plugin#31063230d0cd5b244b04eca12c6e31b5b757cb5e", "clsx": "^2.1.1", "geist": "^1.7.0", "lucide-react": "^1.7.0", "next": "16.4.0", - "postcss": "^8.5.6", + "postcss": "^8.5.30", "react": "19.3.0", "react-colorful": "^5.6.1", "react-dom": "19.3.0", "tailwind-merge": "^3.5.0", - "tailwindcss": "^4.2.1", - "three": "^0.186.0", + "tailwindcss": "^4.3.3", + "three": "^0.186.1", "zod": ">=4.5.4 <4.6" }, "devDependencies": { diff --git a/apps/ifc-converter/package.json b/apps/ifc-converter/package.json index c93c9dcfad..7c5122db68 100644 --- a/apps/ifc-converter/package.json +++ b/apps/ifc-converter/package.json @@ -21,15 +21,15 @@ "lucide-react": "^1.7.0", "@react-three/drei": "^10.7.7", "@react-three/fiber": "^9.8.1", - "@tailwindcss/postcss": "^4.2.1", + "@tailwindcss/postcss": "^4.3.3", "clsx": "^2.1.1", "next": "16.4.0", - "postcss": "^8.5.6", + "postcss": "^8.5.30", "react": "19.3.0", "react-dom": "19.3.0", "tailwind-merge": "^3.5.0", - "tailwindcss": "^4.2.1", - "three": "^0.186.0", + "tailwindcss": "^4.3.3", + "three": "^0.186.1", "web-ifc": "^0.0.77" }, "devDependencies": { diff --git a/bun.lock b/bun.lock index 7fedbf9084..43eeac5da3 100644 --- a/bun.lock +++ b/bun.lock @@ -14,10 +14,10 @@ "ultracite": "^7.8.2", }, "optionalDependencies": { - "@tailwindcss/oxide-darwin-arm64": "4.3.0", - "@tailwindcss/oxide-darwin-x64": "4.3.0", - "@tailwindcss/oxide-linux-arm64-gnu": "4.3.0", - "@tailwindcss/oxide-linux-x64-gnu": "4.3.0", + "@tailwindcss/oxide-darwin-arm64": "4.3.3", + "@tailwindcss/oxide-darwin-x64": "4.3.3", + "@tailwindcss/oxide-linux-arm64-gnu": "4.3.3", + "@tailwindcss/oxide-linux-x64-gnu": "4.3.3", "lightningcss-darwin-arm64": "1.32.0", "lightningcss-darwin-x64": "1.32.0", "lightningcss-linux-arm64-gnu": "1.32.0", @@ -45,19 +45,19 @@ "@react-three/drei": "^10.7.7", "@react-three/fiber": "^9.8.1", "@react-three/xr": "^6.6.30", - "@tailwindcss/postcss": "^4.2.1", + "@tailwindcss/postcss": "^4.3.3", "@webxr/plugin": "github:sudhir9297/webxr-pascal-plugin#31063230d0cd5b244b04eca12c6e31b5b757cb5e", "clsx": "^2.1.1", "geist": "^1.7.0", "lucide-react": "^1.7.0", "next": "16.4.0", - "postcss": "^8.5.6", + "postcss": "^8.5.30", "react": "19.3.0", "react-colorful": "^5.6.1", "react-dom": "19.3.0", "tailwind-merge": "^3.5.0", - "tailwindcss": "^4.2.1", - "three": "^0.186.0", + "tailwindcss": "^4.3.3", + "three": "^0.186.1", "zod": ">=4.5.4 <4.6", }, "devDependencies": { @@ -83,16 +83,16 @@ "@pascal-app/viewer": "*", "@react-three/drei": "^10.7.7", "@react-three/fiber": "^9.8.1", - "@tailwindcss/postcss": "^4.2.1", + "@tailwindcss/postcss": "^4.3.3", "clsx": "^2.1.1", "lucide-react": "^1.7.0", "next": "16.4.0", - "postcss": "^8.5.6", + "postcss": "^8.5.30", "react": "19.3.0", "react-dom": "19.3.0", "tailwind-merge": "^3.5.0", - "tailwindcss": "^4.2.1", - "three": "^0.186.0", + "tailwindcss": "^4.3.3", + "three": "^0.186.1", "web-ifc": "^0.0.77", }, "devDependencies": { @@ -111,7 +111,7 @@ "pascal": "dist/bin/pascal.js", }, "dependencies": { - "@modelcontextprotocol/sdk": "^1.30.0", + "@modelcontextprotocol/sdk": "^1.32.1", }, "devDependencies": { "@pascal/typescript-config": "*", @@ -271,7 +271,7 @@ "pascal-mcp": "dist/bin/pascal-mcp.js", }, "dependencies": { - "@modelcontextprotocol/sdk": "^1.30.0", + "@modelcontextprotocol/sdk": "^1.32.1", "@pascal-app/geometry-script": "^1.0.3", "@pascal-app/lingo": "^0.2.0", "zod": ">=4.5.4 <4.6", @@ -369,7 +369,7 @@ }, }, "patchedDependencies": { - "three@0.186.0": "patches/three@0.186.0.patch", + "three@0.186.1": "patches/three@0.186.1.patch", "iwer@2.3.0": "patches/iwer@2.3.0.patch", }, "overrides": { @@ -381,7 +381,7 @@ "react": "19.3.0", "react-dom": "19.3.0", "react-grab": "0.1.50", - "three": "0.186.0", + "three": "0.186.1", }, "packages": { "@alloc/quick-lru": ["@alloc/quick-lru@5.2.0", "", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="], @@ -600,7 +600,7 @@ "@mint/pascal-plugin": ["@mint/pascal-plugin@github:mintdotgg/mint-pascal-plugin#902c546", { "peerDependencies": { "@pascal-app/core": ">=0.9.2 <1.0.0 || >=1.0.0-beta.1 <1.0.0", "@pascal-app/editor": ">=0.9.2 <1.0.0 || >=1.0.0-beta.1 <1.0.0", "@pascal-app/viewer": ">=0.9.2 <1.0.0 || >=1.0.0-beta.1 <1.0.0", "react": "^18 || ^19", "three": "^0.185" } }, "mintdotgg-mint-pascal-plugin-902c546", "sha512-/itUH9r9OIP8ZPrklW8iWe6B2SDOtlL1m8r9hlVM4Rw5josYtDdkDKQ37FbanvxxuUKcQnukHbtxWe3svRaCrQ=="], - "@modelcontextprotocol/sdk": ["@modelcontextprotocol/sdk@1.30.0", "", { "dependencies": { "@hono/node-server": "^1.19.9 || ^2.0.5", "ajv": "^8.17.1", "ajv-formats": "^3.0.1", "content-type": "^1.0.5", "cors": "^2.8.5", "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", "eventsource-parser": "^3.0.0", "express": "^5.2.1", "express-rate-limit": "^8.2.1", "hono": "^4.11.4", "jose": "^6.1.3", "json-schema-typed": "^8.0.2", "pkce-challenge": "^5.0.0", "raw-body": "^3.0.0", "zod": "^3.25 || ^4.0", "zod-to-json-schema": "^3.25.1" }, "peerDependencies": { "@cfworker/json-schema": "^4.1.1" }, "optionalPeers": ["@cfworker/json-schema"] }, "sha512-xKd8OIzlqNzcqcNumGAa6g+PW2kjD5vrpcKOnfldAUPP3j7lnqMPwlTXQm8gF+UwH72z0lqaRbjr9hqGz0eITA=="], + "@modelcontextprotocol/sdk": ["@modelcontextprotocol/sdk@1.32.1", "", { "dependencies": { "@hono/node-server": "^1.19.9 || ^2.0.5", "ajv": "^8.17.1", "ajv-formats": "^3.0.1", "content-type": "^1.0.5", "cors": "^2.8.5", "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", "eventsource-parser": "^3.0.0", "express": "^5.2.1", "express-rate-limit": "^8.2.1", "hono": "^4.11.4", "jose": "^6.1.3", "json-schema-typed": "^8.0.2", "pkce-challenge": "^5.0.0", "raw-body": "^3.0.0", "zod": "^3.25 || ^4.0", "zod-to-json-schema": "^3.25.1" }, "peerDependencies": { "@cfworker/json-schema": "^4.1.1" }, "optionalPeers": ["@cfworker/json-schema"] }, "sha512-2DdE+SJDtzLEEWzY1ZjY7Q+VcPhcV1KisD3zI4u0XZyktsjHum1mwbMI+JaulUBi2OZk+KJAi2uPXzxichPkdw=="], "@monogrid/gainmap-js": ["@monogrid/gainmap-js@3.4.0", "", { "dependencies": { "promise-worker-transferable": "^1.0.4" }, "peerDependencies": { "three": ">= 0.159.0" } }, "sha512-2Z0FATFHaoYJ8b+Y4y4Hgfn3FRFwuU5zRrk+9dFWp4uGAdHGqVEdP7HP+gLA3X469KXHmfupJaUbKo1b/aDKIg=="], @@ -934,35 +934,35 @@ "@swc/helpers": ["@swc/helpers@0.5.23", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw=="], - "@tailwindcss/node": ["@tailwindcss/node@4.3.0", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "enhanced-resolve": "^5.21.0", "jiti": "^2.6.1", "lightningcss": "1.32.0", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", "tailwindcss": "4.3.0" } }, "sha512-aFb4gUhFOgdh9AXo4IzBEOzBkkAxm9VigwDJnMIYv3lcfXCJVesNfbEaBl4BNgVRyid92AmdviqwBUBRKSeY3g=="], + "@tailwindcss/node": ["@tailwindcss/node@4.3.3", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "enhanced-resolve": "^5.24.1", "jiti": "^2.7.0", "lightningcss": "1.32.0", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", "tailwindcss": "4.3.3" } }, "sha512-/T8IKEsf9VTU6tLjgC7+sv2mOPtQxzE2jMw7u4Tt40Tx+QSZxpzh95/H6cMKoja9XuW7iMdLJYBB0o9G1CaAgg=="], - "@tailwindcss/oxide": ["@tailwindcss/oxide@4.3.0", "", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.3.0", "@tailwindcss/oxide-darwin-arm64": "4.3.0", "@tailwindcss/oxide-darwin-x64": "4.3.0", "@tailwindcss/oxide-freebsd-x64": "4.3.0", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.0", "@tailwindcss/oxide-linux-arm64-gnu": "4.3.0", "@tailwindcss/oxide-linux-arm64-musl": "4.3.0", "@tailwindcss/oxide-linux-x64-gnu": "4.3.0", "@tailwindcss/oxide-linux-x64-musl": "4.3.0", "@tailwindcss/oxide-wasm32-wasi": "4.3.0", "@tailwindcss/oxide-win32-arm64-msvc": "4.3.0", "@tailwindcss/oxide-win32-x64-msvc": "4.3.0" } }, "sha512-F7HZGBeN9I0/AuuJS5PwcD8xayx5ri5GhjYUDBEVYUkexyA/giwbDNjRVrxSezE3T250OU2K/wp/ltWx3UOefg=="], + "@tailwindcss/oxide": ["@tailwindcss/oxide@4.3.3", "", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.3.3", "@tailwindcss/oxide-darwin-arm64": "4.3.3", "@tailwindcss/oxide-darwin-x64": "4.3.3", "@tailwindcss/oxide-freebsd-x64": "4.3.3", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.3", "@tailwindcss/oxide-linux-arm64-gnu": "4.3.3", "@tailwindcss/oxide-linux-arm64-musl": "4.3.3", "@tailwindcss/oxide-linux-x64-gnu": "4.3.3", "@tailwindcss/oxide-linux-x64-musl": "4.3.3", "@tailwindcss/oxide-wasm32-wasi": "4.3.3", "@tailwindcss/oxide-win32-arm64-msvc": "4.3.3", "@tailwindcss/oxide-win32-x64-msvc": "4.3.3" } }, "sha512-krXjAikiaFSPaK/FkAQT5UTx3VormQaiZ5hBFlJZ9UFQGB/rwg1MZIhHAG9smMQRTdyJxP6Qt5MwMtdyU5FWrA=="], - "@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.3.0", "", { "os": "android", "cpu": "arm64" }, "sha512-TJPiq67tKlLuObP6RkwvVGDoxCMBVtDgKkLfa/uyj7/FyxvQwHS+UOnVrXXgbEsfUaMgiVvC4KbJnRr26ho4Ng=="], + "@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.3.3", "", { "os": "android", "cpu": "arm64" }, "sha512-Y85A2gmPSkl5Ve5qR86GL4HT509cFqQh1aes9p3sSkyTPwt0Pppf3GkwGe4JPACcRYjgJIEhQgM6dBClnr0NYw=="], - "@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.3.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-oMN/WZRb+SO37BmUElEgeEWuU8E/HXRkiODxJxLe1UTHVXLrdVSgfaJV7pSlhRGMSOiXLuxTIjfsF3wYvz8cgQ=="], + "@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.3.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-BiaWatpBcERQFDlOjRDpIVXuFK5PJez5SA4JMg6VYZdBYU+qKfV/vqjcIs+IYmtitf1xYQZTwXvU/8y4lfZUGw=="], - "@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.3.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-N6CUmu4a6bKVADfw77p+iw6Yd9Q3OBhe0veaDX+QazfuVYlQsHfDgxBrsjQ/IW+zywL8mTrNd0SdJT/zgtvMdA=="], + "@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.3.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-fAeUqfV5ndhxRwai8cXGzdLvul9utWOmeTkv69unv4ZXixjn61Z+p9lCWdwOwA3TYboG3BwdVuN/RDjhBRl0mw=="], - "@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.3.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-zDL5hBkQdH5C6MpqbK3gQAgP80tsMwSI26vjOzjJtNCMUo0lFgOItzHKBIupOZNQxt3ouPH7RPhvNhiTfCe5CQ=="], + "@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.3.3", "", { "os": "freebsd", "cpu": "x64" }, "sha512-iyf5bV6+wnAlflVeEy7R25dupxTNECZN5QMI0qNT6eT+EgaGdZcKhGkr5SdoaWiLJ3spLqIY9VCeSGrwmtg4kw=="], - "@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.3.0", "", { "os": "linux", "cpu": "arm" }, "sha512-R06HdNi7A7OEoMsf6d4tjZ71RCWnZQPHj2mnotSFURjNLdBC+cIgXQ7l81CqeoiQftjf6OOblxXMInMgN2VzMA=="], + "@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.3.3", "", { "os": "linux", "cpu": "arm" }, "sha512-aAYUprJAJQWWbRrPvtjdroZ56Md+JM8pMiopS6xGEwDfLhqj+2ver2p4nU4Mb3CRqcMmNBjo8KkUgcxhkzVQGQ=="], - "@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.3.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-qTJHELX8jetjhRQHCLilkVLmybpzNQAtaI/gaoVoidn/ufbNDbAo8KlK2J+yPoc8wQxvDxCmh/5lr8nC1+lTbg=="], + "@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.3.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-nDxldcEENOxZRzC2uu9jrutZdAAQtb+8WWDCSnWL1zvBk1+FN+x6MtDViPB5AJMfttVCUhehGWus3XBPgatM/w=="], - "@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.3.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-Z6sukiQsngnWO+l39X4pPbiWT81IC+PLKF+PHxIlyZbGNb9MODfYlXEVlFvej5BOZInWX01kVyzeLvHsXhfczQ=="], + "@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.3.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-Md44bD6veX/PC5iyF8cDVnw4HBIANZepRZZ7a8DQOvkfo5WUBwcp6iAuCUz23u+4SUkhJlD3eL7hNdW8ezd/kA=="], - "@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.3.0", "", { "os": "linux", "cpu": "x64" }, "sha512-DRNdQRpSGzRGfARVuVkxvM8Q12nh19l4BF/G7zGA1oe+9wcC6saFBHTISrpIcKzhiXtSrlSrluCfvMuledoCTQ=="], + "@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.3.3", "", { "os": "linux", "cpu": "x64" }, "sha512-tx7us1muwOKAKWao2v/GaafFeQboE6aj88vC6ziN2NCGcRm8gWUhwjzg+YdVB1e4boAtdtma4L43onunI6NS4w=="], - "@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.3.0", "", { "os": "linux", "cpu": "x64" }, "sha512-Z0IADbDo8bh6I7h2IQMx601AdXBLfFpEdUotft86evd/8ZPflZe9COPO8Q1vw+pfLWIUo9zN/JGZvwuAJqduqg=="], + "@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.3.3", "", { "os": "linux", "cpu": "x64" }, "sha512-SJxX60smvHgasZoBy11dX6YRjXJFovwWBoedhbQPOBzgFWBHGB+TVPWB9BxzR7TTxU8FQZAI2AyiNCMzFm8Img=="], - "@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.3.0", "", { "dependencies": { "@emnapi/core": "^1.10.0", "@emnapi/runtime": "^1.10.0", "@emnapi/wasi-threads": "^1.2.1", "@napi-rs/wasm-runtime": "^1.1.4", "@tybys/wasm-util": "^0.10.1", "tslib": "^2.8.1" }, "cpu": "none" }, "sha512-HNZGOUxEmElksYR7S6sC5jTeNGpobAsy9u7Gu0AskJ8/20FR9GqebUyB+HBcU/ax6BHuiuJi+Oda4B+YX6H1yA=="], + "@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.3.3", "", { "dependencies": { "@emnapi/core": "^1.11.1", "@emnapi/runtime": "^1.11.1", "@emnapi/wasi-threads": "^1.2.2", "@napi-rs/wasm-runtime": "^1.1.4", "@tybys/wasm-util": "^0.10.2", "tslib": "^2.8.1" }, "cpu": "none" }, "sha512-jx1+rPhY/5Ympkktd656HBWEBLxP7dH06losBLjjf5vgCODXvi9KhtftWcMIwTFIDqBr7cRnQkdLnAG+IOlGvQ=="], - "@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.3.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-Pe+RPVTi1T+qymuuRpcdvwSVZjnll/f7n8gBxMMh3xLTctMDKqpdfGimbMyioqtLhUYZxdJ9wGNhV7MKHvgZsQ=="], + "@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.3.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-3rc292Ca2ceK6Ulcc/bAVnTs/3nDtoPhyEKlgPv+yQJQi/JS/AMJlqzxvlDacL1nekbrcf6bTqp/jV4qgnPxNQ=="], - "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.3.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Mvrf2kXW/yeW/OTezZlCGOirXRcUuLIBx/5Y12BaPM7wJoryG6dfS/NJL8aBPqtTEx/Vm4T4vKzFUcKDT+TKUA=="], + "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.3.3", "", { "os": "win32", "cpu": "x64" }, "sha512-yJ0pwIVc/nYeGoV02WtsN8KYyLQv7kyI2wDnkezyJlGGjkd4QLwDGAwl47YpPJeuI0M0ObaXGSPjvWDPeTPggw=="], - "@tailwindcss/postcss": ["@tailwindcss/postcss@4.3.0", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "@tailwindcss/node": "4.3.0", "@tailwindcss/oxide": "4.3.0", "postcss": "^8.5.10", "tailwindcss": "4.3.0" } }, "sha512-Jm05Tjx+9yCLGv5qw1c+84Psds8MnyrEQYCB+FFk2lgGiUjlRqdxke4mVTuYrj2xnVZqKim2Apr5ySuQRYAw/w=="], + "@tailwindcss/postcss": ["@tailwindcss/postcss@4.3.3", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "@tailwindcss/node": "4.3.3", "@tailwindcss/oxide": "4.3.3", "postcss": "^8.5.16", "tailwindcss": "4.3.3" } }, "sha512-JTSZZGQi1AyKirbLN3azmjVzef92tcX7h+iSqPdaeStyFpGpDlKvvpxeOE8njhbUanbRwr3z8DyzhICWnMtQeg=="], "@turbo/darwin-64": ["@turbo/darwin-64@2.9.17", "", { "os": "darwin", "cpu": "x64" }, "sha512-io5jn5RDeU+9YV78rWhwG++HD/OZ/Lxg1sg93+jDGKQNP3UDxY6RX2dmarbCILhNxNuAM8FH3WgGMY9E96Mf8w=="], @@ -1310,7 +1310,7 @@ "encodeurl": ["encodeurl@2.0.0", "", {}, "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="], - "enhanced-resolve": ["enhanced-resolve@5.23.0", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.3" } }, "sha512-yJN/BOOLxcOW2aQgeif9mSnaUB8KtvmMMp56oA1kx1CRfBKbhZm2pJ+NBY+3eOboHxix8lfjWpHE0Ei5U8RbSA=="], + "enhanced-resolve": ["enhanced-resolve@5.26.0", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.3" } }, "sha512-9vhedylFonb2YGogzUKX6+Ja72gOJbN1QHAqdrvqLwhdl/QWbKopzoUC9EbQNVsAns/bx/4uyqalrQAoy1IByw=="], "env-paths": ["env-paths@3.0.0", "", {}, "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A=="], @@ -1824,7 +1824,7 @@ "possible-typed-array-names": ["possible-typed-array-names@1.1.0", "", {}, "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg=="], - "postcss": ["postcss@8.5.23", "", { "dependencies": { "nanoid": "^3.3.16", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg=="], + "postcss": ["postcss@8.5.30", "", { "dependencies": { "nanoid": "^3.3.20", "picocolors": "^1.1.1", "source-map-js": "^1.2.2" } }, "sha512-zkd+e9S1AQHhmaBKye9zlFHWjOwVgqXl1q3ECYy8561K7qxR2cREf/STLskulBFd78k6AOFeA+ff1TtEzk9bAA=="], "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="], @@ -1944,7 +1944,7 @@ "sisteransi": ["sisteransi@1.0.5", "", {}, "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="], - "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], + "source-map-js": ["source-map-js@1.2.2", "", {}, "sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw=="], "splaytree": ["splaytree@3.2.3", "", {}, "sha512-7OXrNWzy6CK+r7Ch9OLPBDTKfB6XlWHjX4P0RU5B3IgFuWPeYN0XtRtlexGRjgbQxpfaUve6jTAwBGWuGntz/w=="], @@ -1996,11 +1996,11 @@ "tailwind-merge": ["tailwind-merge@3.6.0", "", {}, "sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w=="], - "tailwindcss": ["tailwindcss@4.3.0", "", {}, "sha512-y6nxMGB1nMW9R6k96e5gdIFzcfL/gTJRNaqGes1YvkLnPVXzWgbqFF2yLC0T8G774n24cx3Pe8XrKoniCOAH+Q=="], + "tailwindcss": ["tailwindcss@4.3.3", "", {}, "sha512-gOhV3P7ufE62QDGg1zVaTgCR+EtPv92k2nIhVcVKcLmxT1sUBsQGhnZj175j+MqRt4zLF7ic+sCYjfhxMxj7YQ=="], "tapable": ["tapable@2.3.3", "", {}, "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A=="], - "three": ["three@0.186.0", "", {}, "sha512-cr/fIM2ddMSVbYVgkfD4jLJv7Fh/8ZTjvo+7gQeSVGUZHxpx9FDwoL5iC7hUz/LiRA8wMbqfnb90xKfm1/HHkQ=="], + "three": ["three@0.186.1", "", {}, "sha512-blFeqb49wRCSGUGj7gtpfnSGHy2lwDk94RhUmS1c/hTby70kvChbWpkJ4Pm1390LqzzvTmzgXKHPEafJwCb8jA=="], "three-bvh-csg": ["three-bvh-csg@0.0.18", "", { "peerDependencies": { "three": ">=0.179.0", "three-mesh-bvh": ">=0.9.7" } }, "sha512-M3GCZMmGFgASGuDf+YMamM83nVlD/vdwzVHcYbFxgW+g1S7/nKPiuY00YVHOMbjmJPh8mLevGZL65ItHUuGt2w=="], @@ -2180,9 +2180,9 @@ "@react-three/xr/zustand": ["zustand@4.5.7", "", { "dependencies": { "use-sync-external-store": "^1.2.2" }, "peerDependencies": { "@types/react": ">=16.8", "immer": ">=9.0.6", "react": ">=16.8" }, "optionalPeers": ["@types/react", "immer", "react"] }, "sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw=="], - "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.11.0", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.2", "tslib": "^2.4.0" }, "bundled": true }, "sha512-l9Oo58x0HOP5znGzVhYW9U3e5wVuA4LAZU2AGezTmkhO1CgQRFDhDg4nneHsu/t3WniXg9QrG2nIXL/ZS8ln8Q=="], + "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.11.3", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.3", "tslib": "^2.4.0" }, "bundled": true }, "sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg=="], - "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.11.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-55coeOFKHv1ywEcUXJtWU5f+Jr/W5tZDvZig8DLKSwUN1JpROQ4rk/SNOQiFWmaR/VKF4zuFyW1B8JduOSv6Pg=="], + "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.11.3", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA=="], "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.2", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA=="], @@ -2192,8 +2192,6 @@ "@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - "@tailwindcss/postcss/postcss": ["postcss@8.5.15", "", { "dependencies": { "nanoid": "^3.3.12", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A=="], - "@typescript-eslint/eslint-plugin/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], "@typescript-eslint/typescript-estree/minimatch": ["minimatch@10.2.5", "", { "dependencies": { "brace-expansion": "^5.0.5" } }, "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg=="], @@ -2232,6 +2230,8 @@ "linebreak/base64-js": ["base64-js@0.0.8", "", {}, "sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw=="], + "magicast/source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], + "manifold-3d/commander": ["commander@13.1.0", "", {}, "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw=="], "manifold-3d/fast-xml-parser": ["fast-xml-parser@5.11.0", "", { "dependencies": { "@nodable/entities": "^3.0.0", "fast-xml-builder": "^1.2.0", "is-unsafe": "^2.0.0", "path-expression-matcher": "^1.6.2", "strnum": "^2.4.2", "xml-naming": "^0.3.0" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-9IGxMqvqLOnqP+Egi1nqDHKv5k8aZ7r9n558enxcucmyVGEBNPAU+MOg/8jPIS7rO7sSq4gFm1/nHtiaubMruw=="], @@ -2240,13 +2240,15 @@ "ndarray-pixels/sharp": ["sharp@0.35.3", "", { "dependencies": { "@img/colour": "^1.1.0", "detect-libc": "^2.1.2", "semver": "^7.8.5" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.35.3", "@img/sharp-darwin-x64": "0.35.3", "@img/sharp-freebsd-wasm32": "0.35.3", "@img/sharp-libvips-darwin-arm64": "1.3.2", "@img/sharp-libvips-darwin-x64": "1.3.2", "@img/sharp-libvips-linux-arm": "1.3.2", "@img/sharp-libvips-linux-arm64": "1.3.2", "@img/sharp-libvips-linux-ppc64": "1.3.2", "@img/sharp-libvips-linux-riscv64": "1.3.2", "@img/sharp-libvips-linux-s390x": "1.3.2", "@img/sharp-libvips-linux-x64": "1.3.2", "@img/sharp-libvips-linuxmusl-arm64": "1.3.2", "@img/sharp-libvips-linuxmusl-x64": "1.3.2", "@img/sharp-linux-arm": "0.35.3", "@img/sharp-linux-arm64": "0.35.3", "@img/sharp-linux-ppc64": "0.35.3", "@img/sharp-linux-riscv64": "0.35.3", "@img/sharp-linux-s390x": "0.35.3", "@img/sharp-linux-x64": "0.35.3", "@img/sharp-linuxmusl-arm64": "0.35.3", "@img/sharp-linuxmusl-x64": "0.35.3", "@img/sharp-webcontainers-wasm32": "0.35.3", "@img/sharp-win32-arm64": "0.35.3", "@img/sharp-win32-ia32": "0.35.3", "@img/sharp-win32-x64": "0.35.3" }, "peerDependencies": { "@types/node": "*" }, "optionalPeers": ["@types/node"] }, "sha512-ej0zVHuZGHCiABXcNxeYhpRnPNPAcvbG8RMdBAhDAxLKkCRVSpK3Iyu7qbqw3JMzoj0REeM6f3tJLtVwl0023Q=="], + "next/postcss": ["postcss@8.5.23", "", { "dependencies": { "nanoid": "^3.3.16", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg=="], + "ora/chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="], "oxlint-plugin-react-doctor/eslint-scope": ["eslint-scope@9.1.2", "", { "dependencies": { "@types/esrecurse": "^4.3.1", "@types/estree": "^1.0.8", "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ=="], "oxlint-plugin-react-doctor/eslint-visitor-keys": ["eslint-visitor-keys@5.0.1", "", {}, "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA=="], - "postcss/nanoid": ["nanoid@3.3.17", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-xQLf0A3HOMlgHq0n247/LRuAOYmB7dXJ/DvAxGvsSBij45XtBSmQycu+F8ODbHwns/XyFZagyL1+J0Offw1E0g=="], + "postcss/nanoid": ["nanoid@3.3.20", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ=="], "promise-worker-transferable/is-promise": ["is-promise@2.2.2", "", {}, "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ=="], @@ -2270,7 +2272,7 @@ "@eslint/eslintrc/ajv/json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], - "@tailwindcss/postcss/postcss/nanoid": ["nanoid@3.3.12", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ=="], + "@tailwindcss/oxide-wasm32-wasi/@emnapi/core/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.3", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g=="], "@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@5.0.6", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g=="], @@ -2336,6 +2338,10 @@ "ndarray-pixels/sharp/semver": ["semver@7.8.5", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA=="], + "next/postcss/nanoid": ["nanoid@3.3.17", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-xQLf0A3HOMlgHq0n247/LRuAOYmB7dXJ/DvAxGvsSBij45XtBSmQycu+F8ODbHwns/XyFZagyL1+J0Offw1E0g=="], + + "next/postcss/source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], + "react-doctor/agent-install/commander": ["commander@14.0.3", "", {}, "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw=="], "react-doctor/eslint-plugin-react-hooks/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], diff --git a/package.json b/package.json index 0c2ff91eea..b0c9e202b7 100644 --- a/package.json +++ b/package.json @@ -44,16 +44,16 @@ "@types/three": "0.184.1", "next": "16.4.0", "react-grab": "0.1.50", - "three": "0.186.0", + "three": "0.186.1", "react": "19.3.0", "react-dom": "19.3.0", "@react-three/fiber": "9.8.1" }, "optionalDependencies": { - "@tailwindcss/oxide-darwin-arm64": "4.3.0", - "@tailwindcss/oxide-darwin-x64": "4.3.0", - "@tailwindcss/oxide-linux-arm64-gnu": "4.3.0", - "@tailwindcss/oxide-linux-x64-gnu": "4.3.0", + "@tailwindcss/oxide-darwin-arm64": "4.3.3", + "@tailwindcss/oxide-darwin-x64": "4.3.3", + "@tailwindcss/oxide-linux-arm64-gnu": "4.3.3", + "@tailwindcss/oxide-linux-x64-gnu": "4.3.3", "lightningcss-darwin-arm64": "1.32.0", "lightningcss-darwin-x64": "1.32.0", "lightningcss-linux-arm64-gnu": "1.32.0", @@ -66,6 +66,6 @@ ], "patchedDependencies": { "iwer@2.3.0": "patches/iwer@2.3.0.patch", - "three@0.186.0": "patches/three@0.186.0.patch" + "three@0.186.1": "patches/three@0.186.1.patch" } } diff --git a/packages/cli/package.json b/packages/cli/package.json index d4af7b6f21..b1dac8f85c 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -35,7 +35,7 @@ "typescript": "6.0.3" }, "dependencies": { - "@modelcontextprotocol/sdk": "^1.30.0" + "@modelcontextprotocol/sdk": "^1.32.1" }, "engines": { "node": ">=22.13.0" diff --git a/packages/mcp/package.json b/packages/mcp/package.json index 2b6e6ff2ab..2bf33a89d3 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -64,7 +64,7 @@ "@pascal-app/core": "^1.0.3" }, "dependencies": { - "@modelcontextprotocol/sdk": "^1.30.0", + "@modelcontextprotocol/sdk": "^1.32.1", "@pascal-app/geometry-script": "^1.0.3", "@pascal-app/lingo": "^0.2.0", "zod": ">=4.5.4 <4.6" diff --git a/packages/viewer/src/lib/dispose-object3d.test.ts b/packages/viewer/src/lib/dispose-object3d.test.ts index 85e0e077fc..5a076a9083 100644 --- a/packages/viewer/src/lib/dispose-object3d.test.ts +++ b/packages/viewer/src/lib/dispose-object3d.test.ts @@ -1,8 +1,19 @@ import { describe, expect, test } from 'bun:test' import { BoxGeometry, Group, Mesh, MeshBasicMaterial } from 'three' +import { MeshBasicNodeMaterial } from 'three/webgpu' import { disposeObject3DResources } from './dispose-object3d' describe('disposeObject3DResources', () => { + test('disposes a distributed WebGPU node material through the resource lifecycle', () => { + const material = new MeshBasicNodeMaterial() + let disposals = 0 + material.addEventListener('dispose', () => disposals++) + + disposeObject3DResources(new Mesh(new BoxGeometry(), material)) + + expect(disposals).toBe(1) + }) + test('disposes nested geometry and materials once', () => { const root = new Group() const nested = new Group() diff --git a/patches/three@0.186.0.patch b/patches/three@0.186.1.patch similarity index 88% rename from patches/three@0.186.0.patch rename to patches/three@0.186.1.patch index 3427e480e4..5632696884 100644 --- a/patches/three@0.186.0.patch +++ b/patches/three@0.186.1.patch @@ -1,8 +1,8 @@ diff --git a/build/three.webgpu.js b/build/three.webgpu.js -index 8cbb77a7bd36c6a89d397f18f8758fc60ff8146e..c1f87477640e683e447bcbf97645a64e8b5a22c6 100644 +index 48b30e6bf4bf114ba5524ae509c81c4a043d27ea..7cdcd1e3bb548d586ace72288205b61571ebd863 100644 --- a/build/three.webgpu.js +++ b/build/three.webgpu.js -@@ -14952,7 +14952,11 @@ const cameraPosition = /*@__PURE__*/ ( Fn( ( { camera } ) => { +@@ -14947,7 +14947,11 @@ const cameraPosition = /*@__PURE__*/ ( Fn( ( { camera } ) => { if ( _cameraPositionArray === null ) { @@ -15,7 +15,7 @@ index 8cbb77a7bd36c6a89d397f18f8758fc60ff8146e..c1f87477640e683e447bcbf97645a64e const subCameras = camera.cameras; const array = self.array; -@@ -71131,7 +71135,7 @@ class WebGLState { +@@ -71130,7 +71134,7 @@ class WebGLState { let needsUpdate = false; @@ -25,10 +25,10 @@ index 8cbb77a7bd36c6a89d397f18f8758fc60ff8146e..c1f87477640e683e447bcbf97645a64e drawBuffers = this.currentDrawbuffers.get( framebuffer ); diff --git a/build/three.webgpu.nodes.js b/build/three.webgpu.nodes.js -index fda563ffd328b99dc693d884f51fd39beb530a47..ee31416d454d94469465bd949b2d9ac0636b3266 100644 +index e96c4ae08d528fea66c58e5869923c1675822ac9..1da11d600c04baef183e480391a2dd813d9f9d0c 100644 --- a/build/three.webgpu.nodes.js +++ b/build/three.webgpu.nodes.js -@@ -14952,7 +14952,11 @@ const cameraPosition = /*@__PURE__*/ ( Fn( ( { camera } ) => { +@@ -14947,7 +14947,11 @@ const cameraPosition = /*@__PURE__*/ ( Fn( ( { camera } ) => { if ( _cameraPositionArray === null ) { @@ -41,7 +41,7 @@ index fda563ffd328b99dc693d884f51fd39beb530a47..ee31416d454d94469465bd949b2d9ac0 const subCameras = camera.cameras; const array = self.array; -@@ -71131,7 +71135,7 @@ class WebGLState { +@@ -71130,7 +71134,7 @@ class WebGLState { let needsUpdate = false; From bf2f21aa4093bd0d2f265abe6854dd5f2a7d9105 Mon Sep 17 00:00:00 2001 From: Pascal Fleet Date: Tue, 13 Oct 2026 22:07:12 +0000 Subject: [PATCH 2/6] chore(deps): align rendering helpers and migrate BVH leaf options --- apps/editor/package.json | 4 +-- apps/ifc-converter/package.json | 2 +- bun.lock | 26 ++++++++++++------- packages/editor/package.json | 2 +- .../editor/first-person-controls.tsx | 2 +- .../first-person/build-collider-world.ts | 2 +- packages/nodes/src/chimney/roof-trim.ts | 4 +-- packages/viewer/package.json | 2 +- .../viewer/glb-walkthrough-controller.tsx | 2 +- .../src/components/viewer/scene-bvh.tsx | 2 +- packages/viewer/src/lib/csg-utils.test.ts | 16 +++++++++++- packages/viewer/src/lib/csg-utils.ts | 4 +-- .../viewer/src/systems/roof/roof-system.tsx | 2 +- .../viewer/src/systems/wall/wall-system.tsx | 2 +- 14 files changed, 46 insertions(+), 26 deletions(-) diff --git a/apps/editor/package.json b/apps/editor/package.json index ed4b7b5957..54b5e0f211 100644 --- a/apps/editor/package.json +++ b/apps/editor/package.json @@ -26,9 +26,9 @@ "@pascal-app/plugin-trees": "github:pascalorg/plugin-trees#56d978cd9b409b716207b3f3d269455d3cd6f067", "@pascal-app/viewer": "*", "@radix-ui/react-tooltip": "^1.2.8", - "@react-three/drei": "^10.7.7", + "@react-three/drei": "^10.7.9", "@react-three/fiber": "^9.8.1", - "@react-three/xr": "^6.6.30", + "@react-three/xr": "^6.6.31", "@tailwindcss/postcss": "^4.3.3", "@webxr/plugin": "github:sudhir9297/webxr-pascal-plugin#31063230d0cd5b244b04eca12c6e31b5b757cb5e", "clsx": "^2.1.1", diff --git a/apps/ifc-converter/package.json b/apps/ifc-converter/package.json index 7c5122db68..b3bc6d6b58 100644 --- a/apps/ifc-converter/package.json +++ b/apps/ifc-converter/package.json @@ -19,7 +19,7 @@ "@pascal-app/nodes": "*", "@pascal-app/viewer": "*", "lucide-react": "^1.7.0", - "@react-three/drei": "^10.7.7", + "@react-three/drei": "^10.7.9", "@react-three/fiber": "^9.8.1", "@tailwindcss/postcss": "^4.3.3", "clsx": "^2.1.1", diff --git a/bun.lock b/bun.lock index c2334d44a9..ca39823047 100644 --- a/bun.lock +++ b/bun.lock @@ -42,9 +42,9 @@ "@pascal-app/plugin-trees": "github:pascalorg/plugin-trees#56d978cd9b409b716207b3f3d269455d3cd6f067", "@pascal-app/viewer": "*", "@radix-ui/react-tooltip": "^1.2.8", - "@react-three/drei": "^10.7.7", + "@react-three/drei": "^10.7.9", "@react-three/fiber": "^9.8.1", - "@react-three/xr": "^6.6.30", + "@react-three/xr": "^6.6.31", "@tailwindcss/postcss": "^4.3.3", "@webxr/plugin": "github:sudhir9297/webxr-pascal-plugin#31063230d0cd5b244b04eca12c6e31b5b757cb5e", "clsx": "^2.1.1", @@ -81,7 +81,7 @@ "@pascal-app/ifc-converter": "*", "@pascal-app/nodes": "*", "@pascal-app/viewer": "*", - "@react-three/drei": "^10.7.7", + "@react-three/drei": "^10.7.9", "@react-three/fiber": "^9.8.1", "@tailwindcss/postcss": "^4.3.3", "clsx": "^2.1.1", @@ -187,7 +187,7 @@ "pdfkit": "^0.19.1", "tailwind-merge": "^3.5.0", "three-bvh-csg": "^0.0.18", - "three-mesh-bvh": "~0.9.8", + "three-mesh-bvh": "~0.9.16", "zod": ">=4.5.4 <4.6", "zustand": "^5.0.11", }, @@ -341,7 +341,7 @@ "version": "1.0.4", "dependencies": { "three-bvh-csg": "^0.0.18", - "three-mesh-bvh": "^0.9.8", + "three-mesh-bvh": "~0.9.16", "zustand": "^5", }, "devDependencies": { @@ -816,9 +816,9 @@ "@pmndrs/handle": ["@pmndrs/handle@6.6.30", "", { "dependencies": { "@pmndrs/pointer-events": "~6.6.30", "zustand": "^4.5.2" } }, "sha512-KPutdaLpCNPZoqXX2HvlRc+cQMETXdHTF0nKqFHMrJrne34apqELRVig53lO469rJhheedsRVepfdyo4g9Rukw=="], - "@pmndrs/pointer-events": ["@pmndrs/pointer-events@6.6.30", "", {}, "sha512-YD2jWdgEqqAWJNOOZ1WZMunUby8jwuQyOMk8zbeqC39R4nkZnGvu1Pa5EMGbV1zd2vZTxXDxYcAVxtQuhVwf3g=="], + "@pmndrs/pointer-events": ["@pmndrs/pointer-events@6.6.31", "", {}, "sha512-Uy30AifXlyV0rKFblPMuPJz5xS4+VtZ2/TSAoI0m1xzUChLvHX5FDXJdRQZAmSoDODbBAskZP6rminT0AZ+r5A=="], - "@pmndrs/xr": ["@pmndrs/xr@6.6.30", "", { "dependencies": { "@iwer/devui": "^1.1.1", "@iwer/sem": "~0.2.5", "@pmndrs/pointer-events": "~6.6.30", "iwer": "^2.1.0", "meshline": "^3.3.1", "zustand": "^4.5.2" }, "peerDependencies": { "three": "*" } }, "sha512-qy0UQHaXdZs192awbYkde+O/eKn15fz88X08+7EhlVIdsMfPAORR2JDocTzfYmtz8bKyE4z1JMUUvXb9DyUrzg=="], + "@pmndrs/xr": ["@pmndrs/xr@6.6.31", "", { "dependencies": { "@iwer/devui": "^1.1.1", "@iwer/sem": "~0.2.5", "@pmndrs/pointer-events": "~6.6.31", "iwer": "^2.1.0", "meshline": "^3.3.1", "zustand": "^4.5.2" }, "peerDependencies": { "three": "*" } }, "sha512-2fTIG7zLDs/GaFrOkNL8oPiWGvZ+C+afSAwUePfmGKdGh1FToY2FJkPZfSz+BV1/cd9iXfuCrNiiKzLOU0caig=="], "@preact/signals": ["@preact/signals@2.9.1", "", { "dependencies": { "@preact/signals-core": "^1.14.0" }, "peerDependencies": { "preact": ">= 10.25.0 || >=11.0.0-0" } }, "sha512-xVqN8mJjbSN5IB/8Ubmd9NN+Ew6zJswoRxrjZbH3YsgkMshFeO6d8zxEFpHRTq9GJZx7cnPs2CnCpFqtGXGNsw=="], @@ -904,13 +904,13 @@ "@react-grab/cli": ["@react-grab/cli@0.1.50", "", { "dependencies": { "agent-install": "^0.0.6", "commander": "^14.0.3", "ignore": "^7.0.5", "ora": "^9.4.0", "package-manager-detector": "^1.6.0", "picocolors": "^1.1.1", "prompts": "^2.4.2", "tinyexec": "^1.1.2" }, "bin": { "react-grab": "bin/cli.js" } }, "sha512-Px/Hwhhyk2PubCA4ZaRFsfvwxhbxXsetJyvqC6aFFi8WhJhA+oVC33aTzuAeWmM3fhb4/8ce8YsHXI1d6ChcKg=="], - "@react-three/drei": ["@react-three/drei@10.7.7", "", { "dependencies": { "@babel/runtime": "^7.26.0", "@mediapipe/tasks-vision": "0.10.17", "@monogrid/gainmap-js": "^3.0.6", "@use-gesture/react": "^10.3.1", "camera-controls": "^3.1.0", "cross-env": "^7.0.3", "detect-gpu": "^5.0.56", "glsl-noise": "^0.0.0", "hls.js": "^1.5.17", "maath": "^0.10.8", "meshline": "^3.3.1", "stats-gl": "^2.2.8", "stats.js": "^0.17.0", "suspend-react": "^0.1.3", "three-mesh-bvh": "^0.8.3", "three-stdlib": "^2.35.6", "troika-three-text": "^0.52.4", "tunnel-rat": "^0.1.2", "use-sync-external-store": "^1.4.0", "utility-types": "^3.11.0", "zustand": "^5.0.1" }, "peerDependencies": { "@react-three/fiber": "^9.0.0", "react": "^19", "react-dom": "^19", "three": ">=0.159" }, "optionalPeers": ["react-dom"] }, "sha512-ff+J5iloR0k4tC++QtD/j9u3w5fzfgFAWDtAGQah9pF2B1YgOq/5JxqY0/aVoQG5r3xSZz0cv5tk2YuBob4xEQ=="], + "@react-three/drei": ["@react-three/drei@10.7.9", "", { "dependencies": { "@babel/runtime": "^7.26.0", "@mediapipe/tasks-vision": "0.10.17", "@monogrid/gainmap-js": "^3.0.6", "@use-gesture/react": "^10.3.1", "camera-controls": "^3.1.0", "cross-env": "^7.0.3", "detect-gpu": "^5.0.56", "glsl-noise": "^0.0.0", "hls.js": "^1.5.17", "maath": "^0.10.8", "meshline": "^3.3.1", "stats-gl": "^2.2.8", "stats.js": "^0.17.0", "suspend-react": "^0.1.3", "three-mesh-bvh": "^0.8.3", "three-stdlib": "^2.35.6", "troika-three-text": "^0.52.4", "tunnel-rat": "^0.1.2", "use-sync-external-store": "^1.4.0", "utility-types": "^3.11.0", "zustand": "^5.0.1" }, "peerDependencies": { "@react-three/fiber": "^9.0.0", "react": "^19", "react-dom": "^19", "three": ">=0.159" }, "optionalPeers": ["react-dom"] }, "sha512-wP4Y6o58KFi+hT1zCfjJarRtPCT6WW/lo53WMiA/aCORuUvBzW916XsCtadnIB1KB+3IQNcDU5JeVh/gYb8MYw=="], "@react-three/fiber": ["@react-three/fiber@9.8.1", "", { "dependencies": { "@babel/runtime": "^7.17.8", "@types/webxr": "*", "base64-js": "^1.5.1", "buffer": "^6.0.3", "its-fine": "^2.1.1", "react-use-measure": "^2.1.7", "scheduler": "^0.28.0", "suspend-react": "^0.1.3", "use-sync-external-store": "^1.4.0", "zustand": "^5.0.3" }, "peerDependencies": { "expo": ">=43.0", "expo-asset": ">=8.4", "expo-file-system": ">=11.0", "expo-gl": ">=11.0", "react": ">=19 <19.4", "react-dom": ">=19 <19.4", "react-native": ">=0.78", "three": ">=0.156" }, "optionalPeers": ["expo", "expo-asset", "expo-file-system", "expo-gl", "react-dom", "react-native"] }, "sha512-GbNP4r6F/gpclFKkLGHzXcuwFWAzLyKsmrQGcDuwK3wQnwLH6F1TfGtEYjHy8OQoGsajwT19B9jtVLLjjfH09w=="], "@react-three/test-renderer": ["@react-three/test-renderer@9.1.1", "", { "peerDependencies": { "@react-three/fiber": ">=9.0.0", "react": "^19.0.0", "three": ">=0.156" } }, "sha512-4DmLn0tg+AP8aU0Mb5vekjHqFrwRJ3z11HfQGOJIDj6DxZ/5BjRHRsDxY0Y+g4l8+WHysQ6PeuSdzTDDYoGuXg=="], - "@react-three/xr": ["@react-three/xr@6.6.30", "", { "dependencies": { "@pmndrs/pointer-events": "~6.6.30", "@pmndrs/xr": "~6.6.30", "suspend-react": "^0.1.3", "tunnel-rat": "^0.1.2", "zustand": "^4.5.2" }, "peerDependencies": { "@react-three/fiber": ">=8", "react": ">=18", "react-dom": ">=18", "three": "*" } }, "sha512-C+PYxnDsWvF2WG669DXwlcKnxcy7O+FMhxlaOq75HrRSJRtk4T5iZCv6qak2+8ztcYrip8t79W9E+LSV3P93hA=="], + "@react-three/xr": ["@react-three/xr@6.6.31", "", { "dependencies": { "@pmndrs/pointer-events": "~6.6.31", "@pmndrs/xr": "~6.6.31", "suspend-react": "^0.1.3", "tunnel-rat": "^0.1.2", "zustand": "^4.5.2" }, "peerDependencies": { "@react-three/fiber": ">=8", "react": ">=18", "react-dom": ">=18", "three": "*" } }, "sha512-+A8PZR0hEFFmRDZGBAuTaMsjF7iVMrSWOObFX45cVTSo5QjNX/IpB5vDTZCSIo/qXGQfOgS4SmKvvkzNlU58ig=="], "@repo/eslint-config": ["@repo/eslint-config@workspace:packages/eslint-config"], @@ -2004,7 +2004,7 @@ "three-bvh-csg": ["three-bvh-csg@0.0.18", "", { "peerDependencies": { "three": ">=0.179.0", "three-mesh-bvh": ">=0.9.7" } }, "sha512-M3GCZMmGFgASGuDf+YMamM83nVlD/vdwzVHcYbFxgW+g1S7/nKPiuY00YVHOMbjmJPh8mLevGZL65ItHUuGt2w=="], - "three-mesh-bvh": ["three-mesh-bvh@0.9.10", "", { "peerDependencies": { "three": ">= 0.159.0" } }, "sha512-UOlTgPIeqUURcwaG8knxvBaruwZlC4X3/WSHEFO7rYvMVv/YNUrkfFEszvfj36pXV88dCHoHNnIp0PifkirnTQ=="], + "three-mesh-bvh": ["three-mesh-bvh@0.9.16", "", { "peerDependencies": { "three": ">= 0.159.0" } }, "sha512-2RK+5MJOaiHJhopURn2CUkOHiF3tFloD0uZBfhebV0CKB7mgVLpWUWaDpOyhNJRDkKKe7x4rRfTHZ32GwpXdkw=="], "three-stdlib": ["three-stdlib@2.36.1", "", { "dependencies": { "@types/draco3d": "^1.4.0", "@types/offscreencanvas": "^2019.6.4", "@types/webxr": "^0.5.2", "draco3d": "^1.4.1", "fflate": "^0.6.9", "potpack": "^1.0.1" }, "peerDependencies": { "three": ">=0.128.0" } }, "sha512-XyGQrFmNQ5O/IoKm556ftwKsBg11TIb301MB5dWNicziQBEs2g3gtOYIf7pFiLa0zI2gUwhtCjv9fmjnxKZ1Cg=="], @@ -2162,10 +2162,14 @@ "@eslint/eslintrc/globals": ["globals@14.0.0", "", {}, "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="], + "@iwer/devui/@pmndrs/pointer-events": ["@pmndrs/pointer-events@6.6.30", "", {}, "sha512-YD2jWdgEqqAWJNOOZ1WZMunUby8jwuQyOMk8zbeqC39R4nkZnGvu1Pa5EMGbV1zd2vZTxXDxYcAVxtQuhVwf3g=="], + "@oxc-parser/binding-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.10.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA=="], "@oxc-resolver/binding-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.10.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA=="], + "@pmndrs/handle/@pmndrs/pointer-events": ["@pmndrs/pointer-events@6.6.30", "", {}, "sha512-YD2jWdgEqqAWJNOOZ1WZMunUby8jwuQyOMk8zbeqC39R4nkZnGvu1Pa5EMGbV1zd2vZTxXDxYcAVxtQuhVwf3g=="], + "@pmndrs/handle/zustand": ["zustand@4.5.7", "", { "dependencies": { "use-sync-external-store": "^1.2.2" }, "peerDependencies": { "@types/react": ">=16.8", "immer": ">=9.0.6", "react": ">=16.8" }, "optionalPeers": ["@types/react", "immer", "react"] }, "sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw=="], "@pmndrs/xr/@iwer/devui": ["@iwer/devui@1.1.2", "", { "dependencies": { "@fortawesome/fontawesome-svg-core": "6.6.0", "@fortawesome/free-solid-svg-icons": "6.6.0", "@fortawesome/react-fontawesome": "0.2.2", "@pmndrs/handle": "^6.6.17", "@pmndrs/pointer-events": "^6.6.17", "react": ">=18.3.1", "react-dom": ">=18.3.1", "styled-components": "^6.1.13", "three": "^0.165.0" }, "peerDependencies": { "iwer": "^2.0.1" } }, "sha512-ggF1lXSX14BTYP0QzB4xaurySr2PC+3+rtK/dpCR++giWquzFv2mBw3LW/PaCtdl5mqkZMrQ2GSwfUNg9ZoO+w=="], @@ -2272,6 +2276,8 @@ "@eslint/eslintrc/ajv/json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], + "@pmndrs/xr/@iwer/devui/@pmndrs/pointer-events": ["@pmndrs/pointer-events@6.6.30", "", {}, "sha512-YD2jWdgEqqAWJNOOZ1WZMunUby8jwuQyOMk8zbeqC39R4nkZnGvu1Pa5EMGbV1zd2vZTxXDxYcAVxtQuhVwf3g=="], + "@tailwindcss/oxide-wasm32-wasi/@emnapi/core/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.3", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g=="], "@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@5.0.6", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g=="], diff --git a/packages/editor/package.json b/packages/editor/package.json index 1cd4fa24f1..157845495b 100644 --- a/packages/editor/package.json +++ b/packages/editor/package.json @@ -60,7 +60,7 @@ "pdfkit": "^0.19.1", "tailwind-merge": "^3.5.0", "three-bvh-csg": "^0.0.18", - "three-mesh-bvh": "~0.9.8", + "three-mesh-bvh": "~0.9.16", "zod": ">=4.5.4 <4.6", "zustand": "^5.0.11" }, diff --git a/packages/editor/src/components/editor/first-person-controls.tsx b/packages/editor/src/components/editor/first-person-controls.tsx index 0813b6fa38..32c7cef826 100644 --- a/packages/editor/src/components/editor/first-person-controls.tsx +++ b/packages/editor/src/components/editor/first-person-controls.tsx @@ -521,7 +521,7 @@ function createElevatorColliderMesh( ;(bvhGeometry as any).computeBoundsTree = computeBoundsTree ;(bvhGeometry as any).disposeBoundsTree = disposeBoundsTree bvhGeometry.computeBoundsTree?.({ - maxLeafSize: 12, + targetLeafSize: 12, strategy: 0, } as never) bvhGeometry.computeBoundingBox() diff --git a/packages/editor/src/components/editor/first-person/build-collider-world.ts b/packages/editor/src/components/editor/first-person/build-collider-world.ts index d339904aa4..98da57c7b9 100644 --- a/packages/editor/src/components/editor/first-person/build-collider-world.ts +++ b/packages/editor/src/components/editor/first-person/build-collider-world.ts @@ -462,7 +462,7 @@ export function buildFirstPersonColliderWorldFromRegistry(): FirstPersonCollider ;(bvhGeometry as any).computeBoundsTree = computeBoundsTree ;(bvhGeometry as any).disposeBoundsTree = disposeBoundsTree bvhGeometry.computeBoundsTree?.({ - maxLeafSize: 12, + targetLeafSize: 12, strategy: 0, } as never) bvhGeometry.computeBoundingBox() diff --git a/packages/nodes/src/chimney/roof-trim.ts b/packages/nodes/src/chimney/roof-trim.ts index 225b0c96d9..1c85a8e5ac 100644 --- a/packages/nodes/src/chimney/roof-trim.ts +++ b/packages/nodes/src/chimney/roof-trim.ts @@ -59,8 +59,8 @@ export function trimChimneyBodyAgainstRoof( indexed.clearGroups() if (indexCount > 0) indexed.addGroup(0, indexCount, 0) ;( - indexed as unknown as { computeBoundsTree?: (opts: { maxLeafSize: number }) => void } - ).computeBoundsTree?.({ maxLeafSize: 10 }) + indexed as unknown as { computeBoundsTree?: (opts: { targetLeafSize: number }) => void } + ).computeBoundsTree?.({ targetLeafSize: 10 }) const chimneyBrush = new Brush(indexed, visibleMat as unknown as THREE.MeshStandardMaterial) chimneyBrush.updateMatrixWorld() diff --git a/packages/viewer/package.json b/packages/viewer/package.json index 5d5d75e2cc..e432bfd519 100644 --- a/packages/viewer/package.json +++ b/packages/viewer/package.json @@ -42,7 +42,7 @@ }, "dependencies": { "three-bvh-csg": "^0.0.18", - "three-mesh-bvh": "^0.9.8", + "three-mesh-bvh": "~0.9.16", "zustand": "^5" }, "devDependencies": { diff --git a/packages/viewer/src/components/viewer/glb-walkthrough-controller.tsx b/packages/viewer/src/components/viewer/glb-walkthrough-controller.tsx index 3713b61e64..40e677c671 100644 --- a/packages/viewer/src/components/viewer/glb-walkthrough-controller.tsx +++ b/packages/viewer/src/components/viewer/glb-walkthrough-controller.tsx @@ -209,7 +209,7 @@ function buildGlbColliderWorld(scene: Object3D): GlbColliderWorld | null { } ;(merged as any).computeBoundsTree = computeBoundsTree ;(merged as any).disposeBoundsTree = disposeBoundsTree - ;(merged as any).computeBoundsTree({ maxLeafSize: 12, strategy: 0 }) + ;(merged as any).computeBoundsTree({ targetLeafSize: 12, strategy: 0 }) merged.computeBoundingBox() const mesh = new Mesh(merged, colliderMaterial) diff --git a/packages/viewer/src/components/viewer/scene-bvh.tsx b/packages/viewer/src/components/viewer/scene-bvh.tsx index 9dd6a5844d..95dbd84892 100644 --- a/packages/viewer/src/components/viewer/scene-bvh.tsx +++ b/packages/viewer/src/components/viewer/scene-bvh.tsx @@ -64,7 +64,7 @@ export const SceneBvh = forwardRef( verbose, setBoundingBox, maxDepth, - maxLeafSize, + targetLeafSize: maxLeafSize, indirect, } const group = ref.current diff --git a/packages/viewer/src/lib/csg-utils.test.ts b/packages/viewer/src/lib/csg-utils.test.ts index 7063565b04..d7c1e909d7 100644 --- a/packages/viewer/src/lib/csg-utils.test.ts +++ b/packages/viewer/src/lib/csg-utils.test.ts @@ -2,7 +2,7 @@ // depend on @types/bun so the import type is unresolved at compile time. import { describe, expect, test } from 'bun:test' import * as THREE from 'three' -import { ensureRenderableGeometryAttributes } from './csg-utils' +import { computeGeometryBoundsTree, ensureRenderableGeometryAttributes } from '../index' describe('ensureRenderableGeometryAttributes', () => { test('fills missing render attributes to match position count', () => { @@ -71,3 +71,17 @@ describe('ensureRenderableGeometryAttributes', () => { expect(geometry.getAttribute('uv2')?.count).toBe(3) }) }) + +describe('computeGeometryBoundsTree', () => { + test('builds a queryable tree for prepared geometry', () => { + const geometry = new THREE.BoxGeometry(2, 2, 2) + computeGeometryBoundsTree(geometry) + const hit = geometry.boundsTree!.raycastFirst( + new THREE.Ray(new THREE.Vector3(0, 0, 3), new THREE.Vector3(0, 0, -1)), + THREE.FrontSide, + ) + expect(hit?.distance).toBeCloseTo(2) + expect(hit?.point.z).toBeCloseTo(1) + geometry.dispose() + }) +}) diff --git a/packages/viewer/src/lib/csg-utils.ts b/packages/viewer/src/lib/csg-utils.ts index f2a7974c7a..871dd19fe5 100644 --- a/packages/viewer/src/lib/csg-utils.ts +++ b/packages/viewer/src/lib/csg-utils.ts @@ -101,8 +101,8 @@ export function computeGeometryBoundsTree(geometry: THREE.BufferGeometry) { ;(geometry as unknown as { computeBoundsTree: typeof computeBoundsTree }).computeBoundsTree = computeBoundsTree ;( - geometry as unknown as { computeBoundsTree: (opts: { maxLeafSize: number }) => void } - ).computeBoundsTree({ maxLeafSize: 10 }) + geometry as unknown as { computeBoundsTree: (opts: { targetLeafSize: number }) => void } + ).computeBoundsTree({ targetLeafSize: 10 }) } export function prepareBrushForCSG(brush: Brush) { diff --git a/packages/viewer/src/systems/roof/roof-system.tsx b/packages/viewer/src/systems/roof/roof-system.tsx index 88c18f4032..a7299d1470 100644 --- a/packages/viewer/src/systems/roof/roof-system.tsx +++ b/packages/viewer/src/systems/roof/roof-system.tsx @@ -53,7 +53,7 @@ csgEvaluator.attributes = ['position', 'normal', 'uv', 'uv2'] function computeGeometryBoundsTree(geometry: THREE.BufferGeometry) { ;(geometry as any).computeBoundsTree = computeBoundsTree - ;(geometry as any).computeBoundsTree({ maxLeafSize: 10 }) + ;(geometry as any).computeBoundsTree({ targetLeafSize: 10 }) } function prepareBrushForCSG(brush: Brush) { diff --git a/packages/viewer/src/systems/wall/wall-system.tsx b/packages/viewer/src/systems/wall/wall-system.tsx index 40ccdb611f..52342eed3a 100644 --- a/packages/viewer/src/systems/wall/wall-system.tsx +++ b/packages/viewer/src/systems/wall/wall-system.tsx @@ -91,7 +91,7 @@ const WALL_BAND_SPLIT_EPSILON = 1e-5 function computeGeometryBoundsTree(geometry: THREE.BufferGeometry) { ;(geometry as any).computeBoundsTree = computeBoundsTree - ;(geometry as any).computeBoundsTree({ maxLeafSize: 10 }) + ;(geometry as any).computeBoundsTree({ targetLeafSize: 10 }) } function csgGeometry(brush: Brush): THREE.BufferGeometry { From 1f2a852142969b18c85ff7aabd7f7d8b7400ec2e Mon Sep 17 00:00:00 2001 From: Pascal Fleet Date: Tue, 13 Oct 2026 22:15:44 +0000 Subject: [PATCH 3/6] fix(deps): migrate distributed CSG brush BVH options --- bun.lock | 1 + package.json | 3 ++- patches/three-bvh-csg@0.0.18.patch | 39 ++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 patches/three-bvh-csg@0.0.18.patch diff --git a/bun.lock b/bun.lock index ca39823047..ee87e14f54 100644 --- a/bun.lock +++ b/bun.lock @@ -370,6 +370,7 @@ }, "patchedDependencies": { "three@0.186.1": "patches/three@0.186.1.patch", + "three-bvh-csg@0.0.18": "patches/three-bvh-csg@0.0.18.patch", "iwer@2.3.0": "patches/iwer@2.3.0.patch", }, "overrides": { diff --git a/package.json b/package.json index b0c9e202b7..a11f931235 100644 --- a/package.json +++ b/package.json @@ -66,6 +66,7 @@ ], "patchedDependencies": { "iwer@2.3.0": "patches/iwer@2.3.0.patch", - "three@0.186.1": "patches/three@0.186.1.patch" + "three@0.186.1": "patches/three@0.186.1.patch", + "three-bvh-csg@0.0.18": "patches/three-bvh-csg@0.0.18.patch" } } diff --git a/patches/three-bvh-csg@0.0.18.patch b/patches/three-bvh-csg@0.0.18.patch new file mode 100644 index 0000000000..de7acda321 --- /dev/null +++ b/patches/three-bvh-csg@0.0.18.patch @@ -0,0 +1,39 @@ +diff --git a/build/index.module.js b/build/index.module.js +index 7bf09faa4f35160f127350eefd2c675ebb5fb44b..be287bcacc15f455e6246d12eb3f8321b1119419 100644 +--- a/build/index.module.js ++++ b/build/index.module.js +@@ -817,7 +817,7 @@ class Brush extends Mesh { + } + + // generate bounds tree +- geometry.boundsTree = new MeshBVH( geometry, { maxLeafSize: 3, indirect: true, useSharedArrayBuffer } ); ++ geometry.boundsTree = new MeshBVH( geometry, { targetLeafSize: 3, indirect: true, useSharedArrayBuffer } ); + + // generate half edges + if ( ! geometry.halfEdges ) { +diff --git a/build/index.umd.cjs b/build/index.umd.cjs +index e666fa17343e04423b4d1a19212a1a375e13ab04..3a02bd2b92d67b972ca6a04f4ec5af84daec3c49 100644 +--- a/build/index.umd.cjs ++++ b/build/index.umd.cjs +@@ -820,7 +820,7 @@ + } + + // generate bounds tree +- geometry.boundsTree = new threeMeshBvh.MeshBVH( geometry, { maxLeafSize: 3, indirect: true, useSharedArrayBuffer } ); ++ geometry.boundsTree = new threeMeshBvh.MeshBVH( geometry, { targetLeafSize: 3, indirect: true, useSharedArrayBuffer } ); + + // generate half edges + if ( ! geometry.halfEdges ) { +diff --git a/src/core/Brush.js b/src/core/Brush.js +index c6140c8d278d6d468a081b6955fa05abdc0e0395..a7057202fe5321f3283cfa3c2dad408904b2f78f 100644 +--- a/src/core/Brush.js ++++ b/src/core/Brush.js +@@ -81,7 +81,7 @@ export class Brush extends Mesh { + } + + // generate bounds tree +- geometry.boundsTree = new MeshBVH( geometry, { maxLeafSize: 3, indirect: true, useSharedArrayBuffer } ); ++ geometry.boundsTree = new MeshBVH( geometry, { targetLeafSize: 3, indirect: true, useSharedArrayBuffer } ); + + // generate half edges + if ( ! geometry.halfEdges ) { From 943cc1a608eb58c3d7b74936c9c5b27d6af0099f Mon Sep 17 00:00:00 2001 From: Pascal Fleet Date: Wed, 14 Oct 2026 22:21:37 +0000 Subject: [PATCH 4/6] chore(deps): patch Next React and R3F and refresh measurement parsing --- apps/editor/package.json | 10 +-- apps/ifc-converter/package.json | 8 +-- bun.lock | 68 ++++++++++--------- package.json | 8 +-- packages/core/package.json | 2 +- packages/eslint-config/package.json | 2 +- packages/mcp/package.json | 2 +- packages/mcp/src/tools/measurement.test.ts | 8 +++ packages/ui/package.json | 4 +- .../viewer/src/lib/pointer-events.test.ts | 4 +- packages/viewer/src/lib/pointer-events.ts | 6 +- 11 files changed, 66 insertions(+), 56 deletions(-) diff --git a/apps/editor/package.json b/apps/editor/package.json index 389a94caf5..de903cad4a 100644 --- a/apps/editor/package.json +++ b/apps/editor/package.json @@ -27,18 +27,18 @@ "@pascal-app/viewer": "*", "@radix-ui/react-tooltip": "^1.4.1", "@react-three/drei": "^10.7.9", - "@react-three/fiber": "^9.8.1", - "@react-three/xr": "^6.6.31", + "@react-three/fiber": "^9.8.2", + "@react-three/xr": "^6.6.32", "@tailwindcss/postcss": "^4.3.3", "@webxr/plugin": "github:sudhir9297/webxr-pascal-plugin#31063230d0cd5b244b04eca12c6e31b5b757cb5e", "clsx": "^2.1.1", "geist": "^1.7.2", "lucide-react": "^1.57.0", - "next": "16.4.0", + "next": "16.4.1", "postcss": "^8.5.30", - "react": "19.3.0", + "react": "19.3.1", "react-colorful": "^5.8.1", - "react-dom": "19.3.0", + "react-dom": "19.3.1", "tailwind-merge": "^3.7.0", "tailwindcss": "^4.3.3", "three": "^0.186.1", diff --git a/apps/ifc-converter/package.json b/apps/ifc-converter/package.json index 78fa7a133e..727acbc079 100644 --- a/apps/ifc-converter/package.json +++ b/apps/ifc-converter/package.json @@ -20,13 +20,13 @@ "@pascal-app/viewer": "*", "lucide-react": "^1.57.0", "@react-three/drei": "^10.7.9", - "@react-three/fiber": "^9.8.1", + "@react-three/fiber": "^9.8.2", "@tailwindcss/postcss": "^4.3.3", "clsx": "^2.1.1", - "next": "16.4.0", + "next": "16.4.1", "postcss": "^8.5.30", - "react": "19.3.0", - "react-dom": "19.3.0", + "react": "19.3.1", + "react-dom": "19.3.1", "tailwind-merge": "^3.7.0", "tailwindcss": "^4.3.3", "three": "^0.186.1", diff --git a/bun.lock b/bun.lock index e1039c9082..971e4e052c 100644 --- a/bun.lock +++ b/bun.lock @@ -44,18 +44,18 @@ "@pascal-app/viewer": "*", "@radix-ui/react-tooltip": "^1.4.1", "@react-three/drei": "^10.7.9", - "@react-three/fiber": "^9.8.1", - "@react-three/xr": "^6.6.31", + "@react-three/fiber": "^9.8.2", + "@react-three/xr": "^6.6.32", "@tailwindcss/postcss": "^4.3.3", "@webxr/plugin": "github:sudhir9297/webxr-pascal-plugin#31063230d0cd5b244b04eca12c6e31b5b757cb5e", "clsx": "^2.1.1", "geist": "^1.7.2", "lucide-react": "^1.57.0", - "next": "16.4.0", + "next": "16.4.1", "postcss": "^8.5.30", - "react": "19.3.0", + "react": "19.3.1", "react-colorful": "^5.8.1", - "react-dom": "19.3.0", + "react-dom": "19.3.1", "tailwind-merge": "^3.7.0", "tailwindcss": "^4.3.3", "three": "^0.186.1", @@ -83,14 +83,14 @@ "@pascal-app/nodes": "*", "@pascal-app/viewer": "*", "@react-three/drei": "^10.7.9", - "@react-three/fiber": "^9.8.1", + "@react-three/fiber": "^9.8.2", "@tailwindcss/postcss": "^4.3.3", "clsx": "^2.1.1", "lucide-react": "^1.57.0", - "next": "16.4.0", + "next": "16.4.1", "postcss": "^8.5.30", - "react": "19.3.0", - "react-dom": "19.3.0", + "react": "19.3.1", + "react-dom": "19.3.1", "tailwind-merge": "^3.7.0", "tailwindcss": "^4.3.3", "three": "^0.186.1", @@ -124,7 +124,7 @@ "name": "@pascal-app/core", "version": "1.0.4", "dependencies": { - "@pascal-app/lingo": "^0.2.0", + "@pascal-app/lingo": "^0.5.0", "dedent": "^1.7.2", "idb-keyval": "^6.3.0", "mitt": "^3.0.1", @@ -224,7 +224,7 @@ "version": "0.0.0", "devDependencies": { "@eslint/js": "^10.0.1", - "@next/eslint-plugin-next": "16.4.0", + "@next/eslint-plugin-next": "16.4.1", "eslint": "^10.12.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-only-warn": "^1.2.1", @@ -275,7 +275,7 @@ "dependencies": { "@modelcontextprotocol/sdk": "^1.32.1", "@pascal-app/geometry-script": "^1.0.4", - "@pascal-app/lingo": "^0.2.0", + "@pascal-app/lingo": "^0.5.0", "zod": ">=4.6.7 <4.7", }, "devDependencies": { @@ -325,8 +325,8 @@ "name": "@repo/ui", "version": "0.0.0", "dependencies": { - "react": "19.3.0", - "react-dom": "19.3.0", + "react": "19.3.1", + "react-dom": "19.3.1", }, "devDependencies": { "@repo/eslint-config": "*", @@ -376,13 +376,13 @@ "iwer@2.3.0": "patches/iwer@2.3.0.patch", }, "overrides": { - "@react-three/fiber": "9.8.1", + "@react-three/fiber": "9.8.2", "@types/react": "19.3.0", "@types/react-dom": "19.3.0", "@types/three": "0.184.1", - "next": "16.4.0", - "react": "19.3.0", - "react-dom": "19.3.0", + "next": "16.4.1", + "react": "19.3.1", + "react-dom": "19.3.1", "react-grab": "0.2.0", "three": "0.186.1", }, @@ -629,25 +629,25 @@ "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.4", "", { "dependencies": { "@tybys/wasm-util": "^0.10.1" }, "peerDependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1" } }, "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow=="], - "@next/env": ["@next/env@16.4.0", "", {}, "sha512-pyLlT5oafGlX8X7xjgGNXz5dNIDSxREm+qD6i9VLSZiZFopA/XWl8NM/KPmLx/8EG/++c49iid3gNWSQW1+2dQ=="], + "@next/env": ["@next/env@16.4.1", "", {}, "sha512-5sUUrrSvs/2/2LnLoesybMGx12EtPB46fdZ6RhAw0XDGSPxU2LFyQBB7yuEiOFFJPKmBY6+q2jTr1/AMbnp0/g=="], - "@next/eslint-plugin-next": ["@next/eslint-plugin-next@16.4.0", "", { "dependencies": { "@eslint-community/eslint-utils": "4.9.1", "fast-glob": "3.3.1" } }, "sha512-ffeflB/dL8RrvWejQximw01pOpKHN692Y3FjDB82DCd0YVvXvBD6vY7mcZp27yvSVFVM6wA73xVodEKF4spizA=="], + "@next/eslint-plugin-next": ["@next/eslint-plugin-next@16.4.1", "", { "dependencies": { "@eslint-community/eslint-utils": "4.9.1", "fast-glob": "3.3.1" } }, "sha512-2io6M+wAqe7nT5mt2gEVy6FOzye2DmwhjaYCpSvHfrIKL11SXNTwSARxpPHJacRmfgSBSDnNmnEXSp0DaJ23BQ=="], - "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.4.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-yyZ+9MgViAKLLb5l1gPBGjRwnq3teNLb5Zx6JEw8LzNSTjlsnp+baUHFxTgl7PpjCmKf48VQfyipG1eBflb48Q=="], + "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.4.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-U+hQ5Gj3fpzf4fveTIF3dpUFYhaSW8vHhdAnbiIomzXzg7boreYFgBqprepXFtW4sw+aTttiNmg0gew/iFNhbg=="], - "@next/swc-darwin-x64": ["@next/swc-darwin-x64@16.4.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-RePEEejEj1Auf5s9qEcG0JbcDP3ceNUS/ofNX8AhxzgIjTVlZIHMatlp16YplcSMpsVo/ZMQHJTjbMYJznjGUg=="], + "@next/swc-darwin-x64": ["@next/swc-darwin-x64@16.4.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-/hqC3V1XLUjhMASf/WridKdO9FXoEgN3HBWmtKbj00MPgnltutfraWJ3bYTpCRIgEIpbjJyOVLpYgAhh/BkdcQ=="], - "@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@16.4.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-HhsyCqd+NpmvDDVY/LqkAN24f+QVvXh3ie+PfcwKinWL2Mu826JymQxJXGjAIfmJ4VlHjp4Pe/nZtXtUoEMAqw=="], + "@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@16.4.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-GHzncHbcaS9g95kcvTNtKQW3aCLoR+xc3Jm7qrkpk1R+D2BjMHIPyvQGRPKCdMX95BsH/421jBUK06q9tEwzjw=="], - "@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@16.4.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-sN9Pf+Zh+RpZAOmbR7d8KAA8T61CVhawtbEJ2Bk6QrRzx6Z/6haaF4UiwBzytM96GRRRWZh9/WALIEO3npMamA=="], + "@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@16.4.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-1SuJyDxW/PR9dHJat/ZRgcYLhuSZ+1psP4DlKb2tKIuXbjygqpLrJWRSq+onZQBv8LcmU67EIrmb6c3XTaJLjw=="], - "@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@16.4.0", "", { "os": "linux", "cpu": "x64" }, "sha512-D5M5xLWQVd1CvR+L7BickM1weRfmM41x3L1NWcnKY/oyJJqr1qwaCgmu3dMAhLBOMdZwSuDCRV6DJRRpiUkbDQ=="], + "@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@16.4.1", "", { "os": "linux", "cpu": "x64" }, "sha512-Istng1hMGp9TGO4lUqeKLd70MPN/OOkucVTP2Nmj+gLkwBgmPqUw8CJYBCC7nbl/B/23bBCcjCI5Hsh6hazC1A=="], - "@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@16.4.0", "", { "os": "linux", "cpu": "x64" }, "sha512-8d5WLS6a9YalqpOgXdlbvonFu+sIgjA+CO6tGzetrpPVcUL56foa7B7664h41rAlbLi5fJwK4vWji3zf4QDy+w=="], + "@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@16.4.1", "", { "os": "linux", "cpu": "x64" }, "sha512-aSC9wMNiZRRFVpPkPWBzRwLQxIGm/CiQcXyFF1XNcgodb+uMxdk7aSSGGpDXCbnvZdf4itjHxpOd5h7i7zaiYw=="], - "@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@16.4.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-sQuOIiW3snb48UwrBcDMvFA/u03qtw2LeuSIxFIQ9AJuW9UG/4Ddsfo+eV73PnZwBhyncMtsKVh7PrzMol2/fA=="], + "@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@16.4.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-t/myvwFDlypMUjRvbBf8qLPyuaB0iXYYdBtwMt6DM6f+60wtGr4bSYholdPqNeV5VUXZhrpMwfza829kmhS3iA=="], - "@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@16.4.0", "", { "os": "win32", "cpu": "x64" }, "sha512-6/33lCuxpdHUy27RegyGM/5uTpF7YZd3UR4D0gpkOA/tWY5YR7msbQjqPgCZmSmxrrTLGCXYA4A8vT2H5DPGTQ=="], + "@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@16.4.1", "", { "os": "win32", "cpu": "x64" }, "sha512-6ICqPo9awCkrtYNPhwkx1uU7rlFWrZRrIboDHS2LU+jv088UBYQtmJ25h6pCp27/+FZjF6BQ4Te4ErugyMeuBg=="], "@noble/ciphers": ["@noble/ciphers@1.3.0", "", {}, "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw=="], @@ -805,7 +805,7 @@ "@pascal-app/ifc-converter": ["@pascal-app/ifc-converter@workspace:packages/ifc-converter"], - "@pascal-app/lingo": ["@pascal-app/lingo@0.2.0", "", { "peerDependencies": { "react": "^19" }, "optionalPeers": ["react"] }, "sha512-Ws+Utm23SmDbMB0Jc7joIp4KPkXhs4Z1boUcW9dl8nC3ATJz+a50F7/MyVTbE3QaL5Fr+YwNfsiOMxrKdhwPhA=="], + "@pascal-app/lingo": ["@pascal-app/lingo@0.5.0", "", { "peerDependencies": { "react": "^19" }, "optionalPeers": ["react"] }, "sha512-SrmSO4MApMUIxzK4MlMU74VcnB61h2XjoAs50dmdHgJ2R5LDw4H9n7vMp0rfqXCmK7RnfOS7o2ZzQfaXzd9YUA=="], "@pascal-app/mcp": ["@pascal-app/mcp@workspace:packages/mcp"], @@ -915,7 +915,7 @@ "@react-three/drei": ["@react-three/drei@10.7.9", "", { "dependencies": { "@babel/runtime": "^7.26.0", "@mediapipe/tasks-vision": "0.10.17", "@monogrid/gainmap-js": "^3.0.6", "@use-gesture/react": "^10.3.1", "camera-controls": "^3.1.0", "cross-env": "^7.0.3", "detect-gpu": "^5.0.56", "glsl-noise": "^0.0.0", "hls.js": "^1.5.17", "maath": "^0.10.8", "meshline": "^3.3.1", "stats-gl": "^2.2.8", "stats.js": "^0.17.0", "suspend-react": "^0.1.3", "three-mesh-bvh": "^0.8.3", "three-stdlib": "^2.35.6", "troika-three-text": "^0.52.4", "tunnel-rat": "^0.1.2", "use-sync-external-store": "^1.4.0", "utility-types": "^3.11.0", "zustand": "^5.0.1" }, "peerDependencies": { "@react-three/fiber": "^9.0.0", "react": "^19", "react-dom": "^19", "three": ">=0.159" }, "optionalPeers": ["react-dom"] }, "sha512-wP4Y6o58KFi+hT1zCfjJarRtPCT6WW/lo53WMiA/aCORuUvBzW916XsCtadnIB1KB+3IQNcDU5JeVh/gYb8MYw=="], - "@react-three/fiber": ["@react-three/fiber@9.8.1", "", { "dependencies": { "@babel/runtime": "^7.17.8", "@types/webxr": "*", "base64-js": "^1.5.1", "buffer": "^6.0.3", "its-fine": "^2.1.1", "react-use-measure": "^2.1.7", "scheduler": "^0.28.0", "suspend-react": "^0.1.3", "use-sync-external-store": "^1.4.0", "zustand": "^5.0.3" }, "peerDependencies": { "expo": ">=43.0", "expo-asset": ">=8.4", "expo-file-system": ">=11.0", "expo-gl": ">=11.0", "react": ">=19 <19.4", "react-dom": ">=19 <19.4", "react-native": ">=0.78", "three": ">=0.156" }, "optionalPeers": ["expo", "expo-asset", "expo-file-system", "expo-gl", "react-dom", "react-native"] }, "sha512-GbNP4r6F/gpclFKkLGHzXcuwFWAzLyKsmrQGcDuwK3wQnwLH6F1TfGtEYjHy8OQoGsajwT19B9jtVLLjjfH09w=="], + "@react-three/fiber": ["@react-three/fiber@9.8.2", "", { "dependencies": { "@babel/runtime": "^7.17.8", "@types/webxr": "*", "base64-js": "^1.5.1", "buffer": "^6.0.3", "its-fine": "^2.1.1", "react-use-measure": "^2.1.7", "scheduler": "^0.28.0", "suspend-react": "^0.1.3", "use-sync-external-store": "^1.4.0", "zustand": "^5.0.3" }, "peerDependencies": { "expo": ">=43.0", "expo-asset": ">=8.4", "expo-file-system": ">=11.0", "expo-gl": ">=11.0", "react": ">=19 <19.4", "react-dom": ">=19 <19.4", "react-native": ">=0.78", "three": ">=0.156" }, "optionalPeers": ["expo", "expo-asset", "expo-file-system", "expo-gl", "react-dom", "react-native"] }, "sha512-6s0ejw0bT1myQ/aLLugcil8/zBmNnnHw/AISWF1yfDLOxfX3yYaTS+0IkpJITEnm/SSMLtxje6CJDt0i5Wu1Sw=="], "@react-three/test-renderer": ["@react-three/test-renderer@9.1.1", "", { "peerDependencies": { "@react-three/fiber": ">=9.0.0", "react": "^19.0.0", "three": ">=0.156" } }, "sha512-4DmLn0tg+AP8aU0Mb5vekjHqFrwRJ3z11HfQGOJIDj6DxZ/5BjRHRsDxY0Y+g4l8+WHysQ6PeuSdzTDDYoGuXg=="], @@ -1753,7 +1753,7 @@ "negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="], - "next": ["next@16.4.0", "", { "dependencies": { "@next/env": "16.4.0", "@swc/helpers": "0.5.23", "baseline-browser-mapping": "^2.9.19", "caniuse-lite": "^1.0.30001579", "postcss": "8.5.23", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "16.4.0", "@next/swc-darwin-x64": "16.4.0", "@next/swc-linux-arm64-gnu": "16.4.0", "@next/swc-linux-arm64-musl": "16.4.0", "@next/swc-linux-x64-gnu": "16.4.0", "@next/swc-linux-x64-musl": "16.4.0", "@next/swc-win32-arm64-msvc": "16.4.0", "@next/swc-win32-x64-msvc": "16.4.0", "sharp": "^0.35.4" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-N2C+9q89Z/oLrsepSRS4jRMtwmUZAoZuAHU0e9T6+sAB5DdhADmrnOW+zjYijlrYFmVfmQhGVGy9eMFoB7UgKg=="], + "next": ["next@16.4.1", "", { "dependencies": { "@next/env": "16.4.1", "@swc/helpers": "0.5.23", "baseline-browser-mapping": "^2.9.19", "caniuse-lite": "^1.0.30001579", "postcss": "8.5.23", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "16.4.1", "@next/swc-darwin-x64": "16.4.1", "@next/swc-linux-arm64-gnu": "16.4.1", "@next/swc-linux-arm64-musl": "16.4.1", "@next/swc-linux-x64-gnu": "16.4.1", "@next/swc-linux-x64-musl": "16.4.1", "@next/swc-win32-arm64-msvc": "16.4.1", "@next/swc-win32-x64-msvc": "16.4.1", "sharp": "^0.35.5" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-uc657V62E34fOI6W5NtG9IzwsPcms0Z60grz2MJGtglgD+pTFnNt4Yw2PzaU622tfX4vhrDgLZzicE2YlhI20Q=="], "node-exports-info": ["node-exports-info@1.6.0", "", { "dependencies": { "array.prototype.flatmap": "^1.3.3", "es-errors": "^1.3.0", "object.entries": "^1.1.9", "semver": "^6.3.1" } }, "sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw=="], @@ -1873,13 +1873,13 @@ "raw-body": ["raw-body@3.0.2", "", { "dependencies": { "bytes": "~3.1.2", "http-errors": "~2.0.1", "iconv-lite": "~0.7.0", "unpipe": "~1.0.0" } }, "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA=="], - "react": ["react@19.3.0", "", {}, "sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog=="], + "react": ["react@19.3.1", "", {}, "sha512-QNhWdt7nrgVWWQG58QuGsAR3jv3Hbe4mb4vz7w2csnHavciZJgda1CPNaldF6eVxv90ud3jUXpKlHL69gO38yw=="], "react-colorful": ["react-colorful@5.8.1", "", { "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-oz68bhsnFWnpDf1ZR8daiQbYpXUnM2h2J6hl9Zg2rTpM/DU6vCqe1E+CpqmqLnJucMZetHZeifSAfJ+geN9lcA=="], "react-doctor": ["react-doctor@0.5.0", "", { "dependencies": { "@babel/code-frame": "^7.29.0", "@effect/platform-node-shared": "4.0.0-beta.70", "@sentry/node": "^10.54.0", "agent-install": "0.0.5", "conf": "^15.1.0", "confbox": "^0.2.4", "deslop-js": "^0.0.21", "effect": "4.0.0-beta.70", "eslint-plugin-react-hooks": "^7.1.1", "jiti": "^2.7.0", "magicast": "^0.5.3", "oxlint": "^1.66.0", "oxlint-plugin-react-doctor": "0.5.0", "prompts": "^2.4.2", "typescript": ">=5.0.4 <7", "vscode-languageserver": "^9.0.1", "vscode-languageserver-textdocument": "^1.0.12", "vscode-uri": "^3.1.0" }, "bin": { "react-doctor": "bin/react-doctor.js" } }, "sha512-MEx7RgRv2kXp6HoPMzc7fFz5Mm3vCqS3Z7clkjmDbsPamjCz7TrDDWQarfaPr7woWA6FOAaWHt1bGhQ88cfEEw=="], - "react-dom": ["react-dom@19.3.0", "", { "dependencies": { "scheduler": "^0.28.0" }, "peerDependencies": { "react": "^19.3.0" } }, "sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q=="], + "react-dom": ["react-dom@19.3.1", "", { "dependencies": { "scheduler": "^0.28.0" }, "peerDependencies": { "react": "^19.3.1" } }, "sha512-Y0bARz53lhEC1NMCASs0/j+faB/zqt3R8hpvg1e8+61ZVJ4UL0UdC4cBbXfZMcIuhrfgeILTLe+ZeBCavQPtKQ=="], "react-grab": ["react-grab@0.2.0", "", { "dependencies": { "@react-grab/cli": "0.2.0", "bippy": "^0.6.1" }, "peerDependencies": { "react": ">=17.0.0" }, "optionalPeers": ["react"], "bin": { "react-grab": "bin/cli.js" } }, "sha512-ohhsfXD4qN0j6cMQd56aaVJBPDF3kUdviF/Od1Eak/rEIXQ3svQ4gjkwTfuTZwTBnxHRL16p9JqdlVQO5nUHqA=="], @@ -2193,6 +2193,8 @@ "@pascal-app/core/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], + "@pascal-app/editor/@pascal-app/lingo": ["@pascal-app/lingo@0.2.0", "", { "peerDependencies": { "react": "^19" }, "optionalPeers": ["react"] }, "sha512-Ws+Utm23SmDbMB0Jc7joIp4KPkXhs4Z1boUcW9dl8nC3ATJz+a50F7/MyVTbE3QaL5Fr+YwNfsiOMxrKdhwPhA=="], + "@pascal-app/editor/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], "@pascal-app/geometry-script/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], diff --git a/package.json b/package.json index b0a0c264fe..579ebad24d 100644 --- a/package.json +++ b/package.json @@ -43,12 +43,12 @@ "@types/react": "19.3.0", "@types/react-dom": "19.3.0", "@types/three": "0.184.1", - "next": "16.4.0", + "next": "16.4.1", "react-grab": "0.2.0", "three": "0.186.1", - "react": "19.3.0", - "react-dom": "19.3.0", - "@react-three/fiber": "9.8.1" + "react": "19.3.1", + "react-dom": "19.3.1", + "@react-three/fiber": "9.8.2" }, "optionalDependencies": { "@tailwindcss/oxide-darwin-arm64": "4.3.3", diff --git a/packages/core/package.json b/packages/core/package.json index e2ff5de8ee..233b00fa53 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -128,7 +128,7 @@ "three": "^0.186" }, "dependencies": { - "@pascal-app/lingo": "^0.2.0", + "@pascal-app/lingo": "^0.5.0", "dedent": "^1.7.2", "idb-keyval": "^6.3.0", "mitt": "^3.0.1", diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 8c2ad26e74..7d9596f0e9 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -10,7 +10,7 @@ }, "devDependencies": { "@eslint/js": "^10.0.1", - "@next/eslint-plugin-next": "16.4.0", + "@next/eslint-plugin-next": "16.4.1", "eslint": "^10.12.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-only-warn": "^1.2.1", diff --git a/packages/mcp/package.json b/packages/mcp/package.json index 7f47fd2c0b..8c24ad7f76 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -66,7 +66,7 @@ "dependencies": { "@modelcontextprotocol/sdk": "^1.32.1", "@pascal-app/geometry-script": "^1.0.4", - "@pascal-app/lingo": "^0.2.0", + "@pascal-app/lingo": "^0.5.0", "zod": ">=4.6.7 <4.7" }, "devDependencies": { diff --git a/packages/mcp/src/tools/measurement.test.ts b/packages/mcp/src/tools/measurement.test.ts index 39a77bb90e..6b158c511b 100644 --- a/packages/mcp/src/tools/measurement.test.ts +++ b/packages/mcp/src/tools/measurement.test.ts @@ -59,6 +59,14 @@ describe('measurement()', () => { expect(r.success).toBe(false) }) + test('accepts scientific dimensions without choosing one endpoint of a range', () => { + const field = measurement('length', 'm') + expect(field.parse('1.234e-4 m')).toBeCloseTo(0.0001234, 10) + for (const input of ['2+3 m', '2-3 m', 'between 2 and 3 m']) { + expect(field.safeParse(input).success).toBe(false) + } + }) + test('emits a number|string JSON schema advertising natural language', () => { const schema = z.toJSONSchema( measurement('length', 'm', { min: 0, description: 'Wall thickness.' }), diff --git a/packages/ui/package.json b/packages/ui/package.json index ea8f749e38..4256bdb54a 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -20,7 +20,7 @@ "typescript": "7.0.2" }, "dependencies": { - "react": "19.3.0", - "react-dom": "19.3.0" + "react": "19.3.1", + "react-dom": "19.3.1" } } diff --git a/packages/viewer/src/lib/pointer-events.test.ts b/packages/viewer/src/lib/pointer-events.test.ts index 22eaf13ce2..d73a8eec97 100644 --- a/packages/viewer/src/lib/pointer-events.test.ts +++ b/packages/viewer/src/lib/pointer-events.test.ts @@ -340,7 +340,7 @@ function perfWindow(search = '?perf') { return probeWindow } -describe('R3F 9.8.1 pointer-event differential', () => { +describe('R3F 9.8.2 pointer-event differential', () => { test('handle-like two-arg raycasts cache when tagged and report fallback when untagged', async () => { const probeWindow = perfWindow() const { stock, cached } = await differential((f) => { @@ -558,7 +558,7 @@ describe('R3F 9.8.1 pointer-event differential', () => { test('pins the vendored closure to the installed R3F version', () => { const pkg = JSON.parse(readFileSync(require.resolve('@react-three/fiber/package.json'), 'utf8')) - expect(pkg.version, 'R3F version drift: re-vendor pointer-events.ts').toBe('9.8.1') + expect(pkg.version, 'R3F version drift: re-vendor pointer-events.ts').toBe('9.8.2') }) test('nested handlers preserve the complete ordered hit metadata and callback/hover order', async () => { diff --git a/packages/viewer/src/lib/pointer-events.ts b/packages/viewer/src/lib/pointer-events.ts index ad3ebfebf9..c3f8459540 100644 --- a/packages/viewer/src/lib/pointer-events.ts +++ b/packages/viewer/src/lib/pointer-events.ts @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * - * Vendored from R3F 9.8.1: - * https://raw.githubusercontent.com/pmndrs/react-three-fiber/v9.8.1/packages/fiber/src/core/events.ts + * Vendored from R3F 9.8.2: + * https://raw.githubusercontent.com/pmndrs/react-three-fiber/v9.8.2/packages/fiber/src/core/events.ts * Ray collection is cached; camera-drag moves are throttled before stock dispatch. * The throttle is a vendored-manager policy; dev ?stockEvents uses untouched R3F. */ @@ -317,7 +317,7 @@ export function createPascalPointerEvents(store: RootStore): EventManager Date: Thu, 15 Oct 2026 22:19:05 +0000 Subject: [PATCH 5/6] chore(deps): complete framework and measurement runtime batch --- apps/editor/package.json | 2 +- apps/ifc-converter/package.json | 2 +- bun.lock | 42 ++++++++++---------- package.json | 2 +- packages/editor/package.json | 4 +- packages/editor/src/lib/measurements.test.ts | 23 +++++++++++ packages/eslint-config/package.json | 2 +- 7 files changed, 49 insertions(+), 28 deletions(-) diff --git a/apps/editor/package.json b/apps/editor/package.json index de903cad4a..95ff17c1dd 100644 --- a/apps/editor/package.json +++ b/apps/editor/package.json @@ -34,7 +34,7 @@ "clsx": "^2.1.1", "geist": "^1.7.2", "lucide-react": "^1.57.0", - "next": "16.4.1", + "next": "16.4.2", "postcss": "^8.5.30", "react": "19.3.1", "react-colorful": "^5.8.1", diff --git a/apps/ifc-converter/package.json b/apps/ifc-converter/package.json index b1ae5dcef7..82f5e8d93b 100644 --- a/apps/ifc-converter/package.json +++ b/apps/ifc-converter/package.json @@ -23,7 +23,7 @@ "@react-three/fiber": "^9.8.2", "@tailwindcss/postcss": "^4.3.3", "clsx": "^2.1.1", - "next": "16.4.1", + "next": "16.4.2", "postcss": "^8.5.30", "react": "19.3.1", "react-dom": "19.3.1", diff --git a/bun.lock b/bun.lock index 1bcd690bab..d63e1cafd7 100644 --- a/bun.lock +++ b/bun.lock @@ -51,7 +51,7 @@ "clsx": "^2.1.1", "geist": "^1.7.2", "lucide-react": "^1.57.0", - "next": "16.4.1", + "next": "16.4.2", "postcss": "^8.5.30", "react": "19.3.1", "react-colorful": "^5.8.1", @@ -87,7 +87,7 @@ "@tailwindcss/postcss": "^4.3.3", "clsx": "^2.1.1", "lucide-react": "^1.57.0", - "next": "16.4.1", + "next": "16.4.2", "postcss": "^8.5.30", "react": "19.3.1", "react-dom": "19.3.1", @@ -161,7 +161,7 @@ "@number-flow/react": "^0.6.2", "@pascal-app/geometry-script": "^1.0.4", "@pascal-app/ifc-converter": "^1.0.4", - "@pascal-app/lingo": "^0.2.0", + "@pascal-app/lingo": "^0.5.0", "@radix-ui/react-alert-dialog": "^1.2.1", "@radix-ui/react-context-menu": "^2.4.1", "@radix-ui/react-dialog": "^1.3.1", @@ -184,7 +184,7 @@ "lucide-react": "^1.57.0", "manifold-3d": "3.5.4", "mitt": "^3.0.1", - "motion": "^14.2.0", + "motion": "^14.3.0", "nanoid": "^6.0.2", "pdfkit": "^0.20.2", "tailwind-merge": "^3.7.0", @@ -224,7 +224,7 @@ "version": "0.0.0", "devDependencies": { "@eslint/js": "^10.0.1", - "@next/eslint-plugin-next": "16.4.1", + "@next/eslint-plugin-next": "16.4.2", "eslint": "^10.12.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-only-warn": "^1.2.1", @@ -383,7 +383,7 @@ "@types/react": "19.3.0", "@types/react-dom": "19.3.0", "@types/three": "0.186.0", - "next": "16.4.1", + "next": "16.4.2", "react": "19.3.1", "react-dom": "19.3.1", "react-grab": "0.2.0", @@ -632,25 +632,25 @@ "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.4", "", { "dependencies": { "@tybys/wasm-util": "^0.10.1" }, "peerDependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1" } }, "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow=="], - "@next/env": ["@next/env@16.4.1", "", {}, "sha512-5sUUrrSvs/2/2LnLoesybMGx12EtPB46fdZ6RhAw0XDGSPxU2LFyQBB7yuEiOFFJPKmBY6+q2jTr1/AMbnp0/g=="], + "@next/env": ["@next/env@16.4.2", "", {}, "sha512-nTUTFH7G5/J/fmpkjVLegOkqyKOP0CEsJcMsyO4UCYeN1su+YMW/MfaSErnJskL7XM+UDK6aTvslxsRCyya/sA=="], - "@next/eslint-plugin-next": ["@next/eslint-plugin-next@16.4.1", "", { "dependencies": { "@eslint-community/eslint-utils": "4.9.1", "fast-glob": "3.3.1" } }, "sha512-2io6M+wAqe7nT5mt2gEVy6FOzye2DmwhjaYCpSvHfrIKL11SXNTwSARxpPHJacRmfgSBSDnNmnEXSp0DaJ23BQ=="], + "@next/eslint-plugin-next": ["@next/eslint-plugin-next@16.4.2", "", { "dependencies": { "@eslint-community/eslint-utils": "4.9.1", "fast-glob": "3.3.1" } }, "sha512-gCTWlw0e+Y6kajpFyKKgA195jUJCRhlzJE0lV7ufe8a+ghIsANWZ0/FiJwg6DuOG1+OvRbcZDcFBoRh3mNJx0g=="], - "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.4.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-U+hQ5Gj3fpzf4fveTIF3dpUFYhaSW8vHhdAnbiIomzXzg7boreYFgBqprepXFtW4sw+aTttiNmg0gew/iFNhbg=="], + "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.4.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-ONkhFvZNFWlsEHOM/81AtxdyuJP2KRYKYR0JxPwvcu1AuPMMMgcL+wW2luldJvMtZwKtUxoSkCychW5wIeoYSw=="], - "@next/swc-darwin-x64": ["@next/swc-darwin-x64@16.4.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-/hqC3V1XLUjhMASf/WridKdO9FXoEgN3HBWmtKbj00MPgnltutfraWJ3bYTpCRIgEIpbjJyOVLpYgAhh/BkdcQ=="], + "@next/swc-darwin-x64": ["@next/swc-darwin-x64@16.4.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-luPCMbOsCoaF+kXJEUjmjmOZg1lC3BflhmUu+ZmW4tBu2vW/4AXak8JBFvePizGkxVmNiAw/r9ra+6UviCWtWQ=="], - "@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@16.4.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-GHzncHbcaS9g95kcvTNtKQW3aCLoR+xc3Jm7qrkpk1R+D2BjMHIPyvQGRPKCdMX95BsH/421jBUK06q9tEwzjw=="], + "@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@16.4.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-xhwFTAncJyaCNy5KqKKuKaIIdCy1/1ZV1s5S1G0hhT7wGMkDTlfJ6aQbfRFnIG/s3/kDrxQ8aycVe+c5QnP8ow=="], - "@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@16.4.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-1SuJyDxW/PR9dHJat/ZRgcYLhuSZ+1psP4DlKb2tKIuXbjygqpLrJWRSq+onZQBv8LcmU67EIrmb6c3XTaJLjw=="], + "@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@16.4.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-T1PNmfbPcxr5ndtWUL/3wQtLXsz808lq6sc2GrNT5k2oquF7UyqZddHSuAewHVsWsGXe6nsl9HoN1YNriVjuSg=="], - "@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@16.4.1", "", { "os": "linux", "cpu": "x64" }, "sha512-Istng1hMGp9TGO4lUqeKLd70MPN/OOkucVTP2Nmj+gLkwBgmPqUw8CJYBCC7nbl/B/23bBCcjCI5Hsh6hazC1A=="], + "@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@16.4.2", "", { "os": "linux", "cpu": "x64" }, "sha512-N9cDUOCGtkJG5PNKDFZUF3xXndrJJcpLp121uAGjIGvO/U2p9tfdNOM9htj7+5f72l0m8rMw/cvYacUJBQoudg=="], - "@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@16.4.1", "", { "os": "linux", "cpu": "x64" }, "sha512-aSC9wMNiZRRFVpPkPWBzRwLQxIGm/CiQcXyFF1XNcgodb+uMxdk7aSSGGpDXCbnvZdf4itjHxpOd5h7i7zaiYw=="], + "@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@16.4.2", "", { "os": "linux", "cpu": "x64" }, "sha512-yY2uh1YhX6ufuYy2FCbw1dqblbhI57GLYAJfCkqD9auTv6pLrH67Uccjc3QMKBeCYAG6lkgu08ExmX1bbjejjQ=="], - "@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@16.4.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-t/myvwFDlypMUjRvbBf8qLPyuaB0iXYYdBtwMt6DM6f+60wtGr4bSYholdPqNeV5VUXZhrpMwfza829kmhS3iA=="], + "@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@16.4.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-j/ArWRIHpMMB6wYLMhr2puTguBt70lNU/Cmjl9p6dTDE8DGknYJMP9PdwPk2dqpCNL/KIX9yfngDvIesxJPmsg=="], - "@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@16.4.1", "", { "os": "win32", "cpu": "x64" }, "sha512-6ICqPo9awCkrtYNPhwkx1uU7rlFWrZRrIboDHS2LU+jv088UBYQtmJ25h6pCp27/+FZjF6BQ4Te4ErugyMeuBg=="], + "@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@16.4.2", "", { "os": "win32", "cpu": "x64" }, "sha512-AA4edyWHDko3NCSo0x6GomsdgFb0oR1J3MXU1b5xt6FRFg4AucrMPW3S0hCe/9onU0O1BbpGQBsqo1r0Gneu1g=="], "@noble/ciphers": ["@noble/ciphers@1.3.0", "", {}, "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw=="], @@ -1462,7 +1462,7 @@ "forwarded": ["forwarded@0.2.0", "", {}, "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="], - "framer-motion": ["framer-motion@14.2.0", "", { "dependencies": { "motion-dom": "14.2.0", "motion-utils": "14.1.1", "tslib": "^2.4.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["react", "react-dom"] }, "sha512-cD2gfFujHt4r/+dZpcn5yziu7VRwQAQDakwIm/bICYXbafnpHCYokV+PnEXqErnSdv6Eh28a+SRF+f3ndGcMsQ=="], + "framer-motion": ["framer-motion@14.3.0", "", { "dependencies": { "motion-dom": "14.3.0", "motion-utils": "14.1.1", "tslib": "^2.4.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["react", "react-dom"] }, "sha512-d8WCrU0ZQn7ukKMykCsDyIOwb/taZeDqqrDBK0du5GO0AO/ynz8fdR/LIIz9Pyy3n3tGwrneR+n0egyrrLa3fw=="], "fresh": ["fresh@2.0.0", "", {}, "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A=="], @@ -1756,9 +1756,9 @@ "module-details-from-path": ["module-details-from-path@1.0.4", "", {}, "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w=="], - "motion": ["motion@14.2.0", "", { "dependencies": { "framer-motion": "14.2.0", "tslib": "^2.4.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["react", "react-dom"] }, "sha512-45cDwjZh0yOMZtnX3hIFPIPmzCWz/RC2bD/niWVIssGBjJlMmosbDILG9a+ZyoP635Z5xrbKvuo10spv9dBdnw=="], + "motion": ["motion@14.3.0", "", { "dependencies": { "framer-motion": "14.3.0", "tslib": "^2.4.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["react", "react-dom"] }, "sha512-yh/nHYjikl68+FTxAMywFYzzj21/oGY7RGCfkqN5zpuT1rk3rp0lKfVU8EUq0A64qQeGnxuKUJWP85MipqdLBw=="], - "motion-dom": ["motion-dom@14.2.0", "", { "dependencies": { "motion-utils": "14.1.1" } }, "sha512-TDdxnjAavh2Qm4lQCQI3uoTx9IR/Id2PI8JNEXW3AcwwV2yvhoimAX3/TnE+x82gDHfPq2yx/cJ58TTw5mMr0A=="], + "motion-dom": ["motion-dom@14.3.0", "", { "dependencies": { "motion-utils": "14.1.1" } }, "sha512-rcKO4aEJzAqDEsrH6qFzhLZxs7bNqZpiUEuEATz9LaRwt6dG7hZEbcFUSHNR8NECaKYM0Iuw6Iv6NpWEGXDI+w=="], "motion-utils": ["motion-utils@14.1.1", "", {}, "sha512-3VvN5Uvf8B6qG+OfOui6Nht5EWp+vLuU3IqcAj7ItZGKqtmTjCebl5sGZF7/08gEHRnEl1AP/fIwbcEyVrcQGQ=="], @@ -1784,7 +1784,7 @@ "negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="], - "next": ["next@16.4.1", "", { "dependencies": { "@next/env": "16.4.1", "@swc/helpers": "0.5.23", "baseline-browser-mapping": "^2.9.19", "caniuse-lite": "^1.0.30001579", "postcss": "8.5.23", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "16.4.1", "@next/swc-darwin-x64": "16.4.1", "@next/swc-linux-arm64-gnu": "16.4.1", "@next/swc-linux-arm64-musl": "16.4.1", "@next/swc-linux-x64-gnu": "16.4.1", "@next/swc-linux-x64-musl": "16.4.1", "@next/swc-win32-arm64-msvc": "16.4.1", "@next/swc-win32-x64-msvc": "16.4.1", "sharp": "^0.35.5" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-uc657V62E34fOI6W5NtG9IzwsPcms0Z60grz2MJGtglgD+pTFnNt4Yw2PzaU622tfX4vhrDgLZzicE2YlhI20Q=="], + "next": ["next@16.4.2", "", { "dependencies": { "@next/env": "16.4.2", "@swc/helpers": "0.5.23", "baseline-browser-mapping": "^2.9.19", "caniuse-lite": "^1.0.30001579", "postcss": "8.5.23", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "16.4.2", "@next/swc-darwin-x64": "16.4.2", "@next/swc-linux-arm64-gnu": "16.4.2", "@next/swc-linux-arm64-musl": "16.4.2", "@next/swc-linux-x64-gnu": "16.4.2", "@next/swc-linux-x64-musl": "16.4.2", "@next/swc-win32-arm64-msvc": "16.4.2", "@next/swc-win32-x64-msvc": "16.4.2", "sharp": "^0.35.5" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-r+oBJojfefUjOiWkBhXgLS+igxX/7BWyK59uHnyOyplMSLtBZ+QLP3okrdYTbrfrbrmNTVWLBPaHDX9KRaIt3w=="], "node-exports-info": ["node-exports-info@1.6.0", "", { "dependencies": { "array.prototype.flatmap": "^1.3.3", "es-errors": "^1.3.0", "object.entries": "^1.1.9", "semver": "^6.3.1" } }, "sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw=="], @@ -2248,8 +2248,6 @@ "@pascal-app/core/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], - "@pascal-app/editor/@pascal-app/lingo": ["@pascal-app/lingo@0.2.0", "", { "peerDependencies": { "react": "^19" }, "optionalPeers": ["react"] }, "sha512-Ws+Utm23SmDbMB0Jc7joIp4KPkXhs4Z1boUcW9dl8nC3ATJz+a50F7/MyVTbE3QaL5Fr+YwNfsiOMxrKdhwPhA=="], - "@pascal-app/editor/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], "@pascal-app/geometry-script/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], diff --git a/package.json b/package.json index 490fe1349c..981617d114 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "@types/react": "19.3.0", "@types/react-dom": "19.3.0", "@types/three": "0.186.0", - "next": "16.4.1", + "next": "16.4.2", "react-grab": "0.2.0", "three": "0.186.1", "react": "19.3.1", diff --git a/packages/editor/package.json b/packages/editor/package.json index 7a1d496b0d..a01bbcb8d0 100644 --- a/packages/editor/package.json +++ b/packages/editor/package.json @@ -32,7 +32,7 @@ "@number-flow/react": "^0.6.2", "@pascal-app/geometry-script": "^1.0.4", "@pascal-app/ifc-converter": "^1.0.4", - "@pascal-app/lingo": "^0.2.0", + "@pascal-app/lingo": "^0.5.0", "@radix-ui/react-alert-dialog": "^1.2.1", "@radix-ui/react-context-menu": "^2.4.1", "@radix-ui/react-dialog": "^1.3.1", @@ -55,7 +55,7 @@ "lucide-react": "^1.57.0", "manifold-3d": "3.5.4", "mitt": "^3.0.1", - "motion": "^14.2.0", + "motion": "^14.3.0", "nanoid": "^6.0.2", "pdfkit": "^0.20.2", "tailwind-merge": "^3.7.0", diff --git a/packages/editor/src/lib/measurements.test.ts b/packages/editor/src/lib/measurements.test.ts index e81a570f50..f9fa358dc2 100644 --- a/packages/editor/src/lib/measurements.test.ts +++ b/packages/editor/src/lib/measurements.test.ts @@ -1,4 +1,5 @@ import { describe, expect, test } from 'bun:test' +import { measurementHint, parseMeasurement } from '../index' import { buildMeasurementAngleArcPoints, cubicMetersToVolumeUnit, @@ -190,3 +191,25 @@ describe('volume measurements', () => { expect(formatVolumeLabel(Number.NEGATIVE_INFINITY, 'metric')).toBe('--') }) }) + +describe('typed measurement fields', () => { + test('canonicalizes explicit, compound, and scientific dimensions', () => { + const length = { kind: 'length', unitId: 'm' } as const + expect(parseMeasurement('180cm', length)).toBeCloseTo(1.8) + expect(parseMeasurement('1m80', length)).toBeCloseTo(1.8) + expect(parseMeasurement(`5'11"`, length)).toBeCloseTo(1.8034) + expect(parseMeasurement('1.234e-4 m', length)).toBeCloseTo(0.0001234, 10) + expect(parseMeasurement('6', length, { bareUnit: 'ft' })).toBeCloseTo(1.8288) + expect(parseMeasurement('180deg', { kind: 'angle', unitId: 'rad' })).toBeCloseTo(Math.PI) + }) + + test('rejects ranges, incomplete arithmetic, and nonfinite input', () => { + const length = { kind: 'length', unitId: 'm' } as const + for (const input of ['2+3 m', '2-3 m', 'between 2 and 3 m', '1e999 m']) { + expect(parseMeasurement(input, length)).toBeNull() + expect(measurementHint(input, length)).toBeNull() + } + expect(measurementHint('180cm', length)).toBe('= 1.80 m') + expect(measurementHint('6', length)).toBeNull() + }) +}) diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 7d9596f0e9..33e8c3e74b 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -10,7 +10,7 @@ }, "devDependencies": { "@eslint/js": "^10.0.1", - "@next/eslint-plugin-next": "16.4.1", + "@next/eslint-plugin-next": "16.4.2", "eslint": "^10.12.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-only-warn": "^1.2.1", From 2b8d452e1b45c235ae7fe285d97cd5780ea5b894 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Fri, 16 Oct 2026 13:13:36 +0000 Subject: [PATCH 6/6] chore(deps): bump geist 1.8.1, lucide-react 1.58.0, fake-indexeddb 6.2.6 --- apps/editor/package.json | 4 ++-- apps/ifc-converter/package.json | 2 +- bun.lock | 10 +++++----- packages/core/package.json | 2 +- packages/editor/package.json | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/editor/package.json b/apps/editor/package.json index 4b93515157..7d202d6e7f 100644 --- a/apps/editor/package.json +++ b/apps/editor/package.json @@ -34,8 +34,8 @@ "@tailwindcss/postcss": "^4.3.3", "@webxr/plugin": "github:sudhir9297/webxr-pascal-plugin#9cd90457fc823d5d633d38e9575856c854aeb4d4", "clsx": "^2.1.1", - "geist": "^1.7.2", - "lucide-react": "^1.57.0", + "geist": "^1.8.1", + "lucide-react": "^1.58.0", "next": "16.4.2", "postcss": "^8.5.30", "react": "19.3.1", diff --git a/apps/ifc-converter/package.json b/apps/ifc-converter/package.json index 82f5e8d93b..316ec50028 100644 --- a/apps/ifc-converter/package.json +++ b/apps/ifc-converter/package.json @@ -18,7 +18,7 @@ "@pascal-app/ifc-converter": "*", "@pascal-app/nodes": "*", "@pascal-app/viewer": "*", - "lucide-react": "^1.57.0", + "lucide-react": "^1.58.0", "@react-three/drei": "^10.7.9", "@react-three/fiber": "^9.8.2", "@tailwindcss/postcss": "^4.3.3", diff --git a/bun.lock b/bun.lock index c7ff8caf88..971e5c942a 100644 --- a/bun.lock +++ b/bun.lock @@ -51,8 +51,8 @@ "@tailwindcss/postcss": "^4.3.3", "@webxr/plugin": "github:sudhir9297/webxr-pascal-plugin#9cd90457fc823d5d633d38e9575856c854aeb4d4", "clsx": "^2.1.1", - "geist": "^1.7.2", - "lucide-react": "^1.57.0", + "geist": "^1.8.1", + "lucide-react": "^1.58.0", "next": "16.4.2", "postcss": "^8.5.30", "react": "19.3.1", @@ -88,7 +88,7 @@ "@react-three/fiber": "^9.8.2", "@tailwindcss/postcss": "^4.3.3", "clsx": "^2.1.1", - "lucide-react": "^1.57.0", + "lucide-react": "^1.58.0", "next": "16.4.2", "postcss": "^8.5.30", "react": "19.3.1", @@ -142,7 +142,7 @@ "@types/react": "19.3.0", "@types/three": "^0.186.0", "@typescript/typescript6": "6.0.2", - "fake-indexeddb": "^6.2.5", + "fake-indexeddb": "^6.2.6", "typescript": "7.0.2", }, "peerDependencies": { @@ -183,7 +183,7 @@ "cmdk": "^1.1.1", "fflate": "^0.8.3", "howler": "^2.2.4", - "lucide-react": "^1.57.0", + "lucide-react": "^1.58.0", "manifold-3d": "3.5.4", "mitt": "^3.0.1", "motion": "^14.3.0", diff --git a/packages/core/package.json b/packages/core/package.json index f0ae43c168..ce13765028 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -154,7 +154,7 @@ "@types/react": "19.3.0", "@types/three": "^0.186.0", "@typescript/typescript6": "6.0.2", - "fake-indexeddb": "^6.2.5", + "fake-indexeddb": "^6.2.6", "typescript": "7.0.2" }, "keywords": [ diff --git a/packages/editor/package.json b/packages/editor/package.json index 7b99a83e37..a038ddee23 100644 --- a/packages/editor/package.json +++ b/packages/editor/package.json @@ -53,7 +53,7 @@ "cmdk": "^1.1.1", "fflate": "^0.8.3", "howler": "^2.2.4", - "lucide-react": "^1.57.0", + "lucide-react": "^1.58.0", "manifold-3d": "3.5.4", "mitt": "^3.0.1", "motion": "^14.3.0",