From 3643f176d7d1aa578534413d2094bc7190cd2ac1 Mon Sep 17 00:00:00 2001 From: Justin Gray Date: Sat, 12 Sep 2026 12:38:25 -0400 Subject: [PATCH] build: resolve the Toolpath packages onto one tool-support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `@toolpath/app-support` 0.1.3 depends on `@toolpath/tool-support` `^0.3.0` and `@toolpath/tool-drawing` 1.0.0 and `@toolpath/tool-scraper` 3.0.0 both depend on `^0.3.1`, while the workspace pinned `tool-support` itself at 0.3.0. A `0.x` caret does not span a minor, so no single version satisfied all four and the install carried two copies — the drawing and the scraper computing a stickout against one `tool-support` while the applications read another. The three are at 0.1.4, 1.0.1 and 3.0.1, each depending on `^0.4.0`, and `tool-support` is 0.4.0 here. `pnpm-lock.yaml` now resolves one copy. `gripsShank`'s tolerance is a thousandth of an inch as of `tool-support` 0.3.1, where it had been a float artifact's last bit, so a 9.5 mm shank is within a 3/8" collet's size. `toolholding.test.ts` pins both sides of that boundary rather than only the float below it. `@toolpath/api` stays at 0.4.1. Reaching 0.6.0 crosses two minors on a `0.x` package and moves datasheet values, which is its own change. --- apps/catalog/package.json | 6 +- apps/dfm/package.json | 4 +- packages/catalog-data/package.json | 4 +- packages/catalog-data/src/toolholding.test.ts | 15 +++- packages/part-contracts/package.json | 2 +- pnpm-lock.yaml | 68 +++++++++---------- 6 files changed, 52 insertions(+), 47 deletions(-) diff --git a/apps/catalog/package.json b/apps/catalog/package.json index 46494ce..47e9d0e 100644 --- a/apps/catalog/package.json +++ b/apps/catalog/package.json @@ -18,13 +18,13 @@ "@react-router/node": "^7.6.0", "@react-three/drei": "10.7.8", "@react-three/fiber": "9.7.0", - "@toolpath/app-support": "0.1.3", + "@toolpath/app-support": "0.1.4", "@toolpath/catalog-data": "workspace:*", "@toolpath/part-client": "workspace:*", "@toolpath/part-contracts": "workspace:*", "@toolpath/part-server": "workspace:*", - "@toolpath/tool-drawing": "1.0.0", - "@toolpath/tool-support": "0.3.0", + "@toolpath/tool-drawing": "1.0.1", + "@toolpath/tool-support": "0.4.0", "@toolpath/ui": "1.0.0", "@toolpath/viewer": "1.1.1", "hono": "4.13.0", diff --git a/apps/dfm/package.json b/apps/dfm/package.json index 26bac5b..5445757 100644 --- a/apps/dfm/package.json +++ b/apps/dfm/package.json @@ -20,8 +20,8 @@ "@react-three/drei": "10.7.8", "@react-three/fiber": "9.7.0", "@toolpath/api": "0.4.1", - "@toolpath/app-support": "0.1.3", - "@toolpath/tool-support": "0.3.0", + "@toolpath/app-support": "0.1.4", + "@toolpath/tool-support": "0.4.0", "@toolpath/ui": "1.0.0", "@toolpath/viewer": "1.1.1", "eventsource-parser": "4.0.0", diff --git a/packages/catalog-data/package.json b/packages/catalog-data/package.json index 6742be0..6681eaa 100644 --- a/packages/catalog-data/package.json +++ b/packages/catalog-data/package.json @@ -46,8 +46,8 @@ }, "dependencies": { "@toolpath/part-contracts": "workspace:*", - "@toolpath/tool-scraper": "3.0.0", - "@toolpath/tool-support": "0.3.0" + "@toolpath/tool-scraper": "3.0.1", + "@toolpath/tool-support": "0.4.0" }, "devDependencies": { "@types/node": "24.10.1", diff --git a/packages/catalog-data/src/toolholding.test.ts b/packages/catalog-data/src/toolholding.test.ts index c28d04f..4cd5ef7 100644 --- a/packages/catalog-data/src/toolholding.test.ts +++ b/packages/catalog-data/src/toolholding.test.ts @@ -318,11 +318,22 @@ describe('the shank diameters a crib can grip', () => { }) describe('a shank a hair off the collet’s size', () => { - /** 3/8" is 9.525 on the collet and 9.524999999999999 on the tool: the same shank. */ + /** + * 3/8" is 9.525 on the collet and 9.524999999999999 on the tool: the same + * shank. + * + * How wide "a hair" is belongs to `@toolpath/tool-support`, and it moved in + * 0.3.1: from a float-artifact's last bit to a thousandth of an inch, which + * is the coarsest last place the vendor catalogs print. Four Kennametal + * collets were refusing the shank they are sold for. So a 9.5 mm shank — + * 0.025 mm under a 3/8" collet, inside a thousandth — is now the same shank + * too, and this pins both sides of that boundary rather than only the float. + */ it('is still gripped', () => { const inch = collet({ guid: 'c', clampMin: 9.525, clampMax: 9.525 }) expect(gripsShank(inch, 9.524999999999999)).toBe(true) - expect(gripsShank(inch, 9.5)).toBe(false) + expect(gripsShank(inch, 9.5)).toBe(true) + expect(gripsShank(inch, 9.4)).toBe(false) }) }) diff --git a/packages/part-contracts/package.json b/packages/part-contracts/package.json index 6af44fd..b9d3fa0 100644 --- a/packages/part-contracts/package.json +++ b/packages/part-contracts/package.json @@ -48,7 +48,7 @@ }, "dependencies": { "@toolpath/api": "0.4.1", - "@toolpath/tool-support": "0.3.0", + "@toolpath/tool-support": "0.4.0", "@toolpath/viewer": "1.1.1" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b6ac662..d2d02c8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -54,8 +54,8 @@ importers: specifier: 9.7.0 version: 9.7.0(@types/react@19.2.18)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(three@0.185.1) '@toolpath/app-support': - specifier: 0.1.3 - version: 0.1.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: 0.1.4 + version: 0.1.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@toolpath/catalog-data': specifier: workspace:* version: link:../../packages/catalog-data @@ -69,11 +69,11 @@ importers: specifier: workspace:* version: link:../../packages/part-server '@toolpath/tool-drawing': - specifier: 1.0.0 - version: 1.0.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: 1.0.1 + version: 1.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@toolpath/tool-support': - specifier: 0.3.0 - version: 0.3.0 + specifier: 0.4.0 + version: 0.4.0 '@toolpath/ui': specifier: 1.0.0 version: 1.0.0(@emotion/react@11.14.0(@types/react@19.2.18)(react@19.2.0))(@types/react@19.2.18)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(tailwindcss@4.3.3) @@ -178,11 +178,11 @@ importers: specifier: 0.4.1 version: 0.4.1 '@toolpath/app-support': - specifier: 0.1.3 - version: 0.1.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: 0.1.4 + version: 0.1.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@toolpath/tool-support': - specifier: 0.3.0 - version: 0.3.0 + specifier: 0.4.0 + version: 0.4.0 '@toolpath/ui': specifier: 1.0.0 version: 1.0.0(@emotion/react@11.14.0(@types/react@19.2.18)(react@19.2.0))(@types/react@19.2.18)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(tailwindcss@4.3.3) @@ -278,11 +278,11 @@ importers: specifier: workspace:* version: link:../part-contracts '@toolpath/tool-scraper': - specifier: 3.0.0 - version: 3.0.0 + specifier: 3.0.1 + version: 3.0.1 '@toolpath/tool-support': - specifier: 0.3.0 - version: 0.3.0 + specifier: 0.4.0 + version: 0.4.0 devDependencies: '@types/node': specifier: 24.10.1 @@ -322,8 +322,8 @@ importers: specifier: 0.4.1 version: 0.4.1 '@toolpath/tool-support': - specifier: 0.3.0 - version: 0.3.0 + specifier: 0.4.0 + version: 0.4.0 '@toolpath/viewer': specifier: 1.1.1 version: 1.1.1(@react-three/drei@10.7.8(@react-three/fiber@9.7.0(@types/react@19.2.18)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(three@0.185.1))(@types/react@19.2.18)(@types/three@0.185.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(three@0.185.1))(@react-three/fiber@9.7.0(@types/react@19.2.18)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(three@0.185.1))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(three@0.185.1) @@ -1301,31 +1301,27 @@ packages: resolution: {integrity: sha512-SJbwQWSJoYQextAdJXHQQMCIFZ/OB+PijLDuhQqQPqy95TOApSpT5emXHhHPRghHQLwdSlKCXz5aQ7lv6nPFYg==} engines: {node: '>=20'} - '@toolpath/app-support@0.1.3': - resolution: {integrity: sha512-acdi/WkLfCSJdDmGshX1sG2ZSZQSrBgkegkQklwU2xjq0fA911ejNW95jwH/nzz0e+KOlmSMzGP8ckV1YTVuqg==} + '@toolpath/app-support@0.1.4': + resolution: {integrity: sha512-41uT8GLG2IMOKJJqmqnm0rtyTPBs+w43jN7Uhw46cgvhoVe8AMw2O9jZ24V4dLQxwCMunwddeUbMYPjAdERPMg==} engines: {node: '>=20'} peerDependencies: react: ^19.0.0 react-dom: ^19.0.0 - '@toolpath/tool-drawing@1.0.0': - resolution: {integrity: sha512-ppLG270AACmRAT/hoUl8scHDtsgQ7RIjTROMc0+drLa5IADsAAZ/97CWXn/YEVoeIfrNAYudnwnH8RoR9ocPrA==} + '@toolpath/tool-drawing@1.0.1': + resolution: {integrity: sha512-mppu5TPVDoscHY5gi8eSbijRE7Upi5XTCaVq9cDm/PffbCo3edBbGqa9pBNJURR7kz58V2tTtMQNmCgLdGpWDQ==} engines: {node: '>=20'} peerDependencies: react: ^19.0.0 react-dom: ^19.0.0 - '@toolpath/tool-scraper@3.0.0': - resolution: {integrity: sha512-Uzoc3fdDpdQeOE0DUnKc+fnERbbGHyrjBWxIidkPTVlGgKBDg1qnmP9OmWuMgKUPJCgfJ/wFNFFbEtRiusZerA==} + '@toolpath/tool-scraper@3.0.1': + resolution: {integrity: sha512-JuSLGX8cSXWXFP/qvoZu6CDWRljmKA5ViM6VVhOOKV8fArlERInHP33nZM7DN5Vkd1aEFL/seDWfrQC3ukJIQw==} engines: {node: '>=20'} hasBin: true - '@toolpath/tool-support@0.3.0': - resolution: {integrity: sha512-7sv9UMTgEyOIBKTUhlbgOtUJ5tOA10G61crfRZcO8BILooWzfw/V2cUTOt35M15WyLnxMu/uPX1pBY1eO8nziw==} - engines: {node: '>=20'} - - '@toolpath/tool-support@0.3.1': - resolution: {integrity: sha512-X2sTebw0liETcmbypaz2I/KYeO2N4oQCN/pHhgkMzNfbeSaCwMkJy5UiukbksAjWJfeH56AcfZrjLMX/aMSCig==} + '@toolpath/tool-support@0.4.0': + resolution: {integrity: sha512-LVyh/qwcV8izuzKgdfbnUdgGcCPZzxnfFqYlHGF18WO6tAETb/NB7jVgi9idA+13lWM2WFZoq4O/A+apWMuvbA==} engines: {node: '>=20'} '@toolpath/ui@1.0.0': @@ -3974,26 +3970,24 @@ snapshots: '@toolpath/api@0.4.1': {} - '@toolpath/app-support@0.1.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@toolpath/app-support@0.1.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@toolpath/tool-support': 0.3.0 + '@toolpath/tool-support': 0.4.0 react: 19.2.0 react-dom: 19.2.0(react@19.2.0) - '@toolpath/tool-drawing@1.0.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@toolpath/tool-drawing@1.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@toolpath/tool-support': 0.3.1 + '@toolpath/tool-support': 0.4.0 react: 19.2.0 react-dom: 19.2.0(react@19.2.0) - '@toolpath/tool-scraper@3.0.0': + '@toolpath/tool-scraper@3.0.1': dependencies: - '@toolpath/tool-support': 0.3.1 + '@toolpath/tool-support': 0.4.0 htmlparser2: 12.0.0 - '@toolpath/tool-support@0.3.0': {} - - '@toolpath/tool-support@0.3.1': {} + '@toolpath/tool-support@0.4.0': {} '@toolpath/ui@1.0.0(@emotion/react@11.14.0(@types/react@19.2.18)(react@19.2.0))(@types/react@19.2.18)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(tailwindcss@4.3.3)': dependencies: