State a version once

A version written into a manifest is written into every manifest that wants it,
which is how eslint came to exist in a hundred and four forms across this estate
and how a package came to resolve twice at run time. The catalog moves the number
out of the manifest: a manifest names the package, the workspace names the
version.

Four are held below their latest because the newer release cannot be used, and
the reason is recorded rather than the version alone: @noble/hashes 2 renamed
every subpath the web3 stack imports, @splinetool/runtime 2 depends on a package
that was never published, @dynamic-labs 5.4.1 the same, and react-resizable-panels
3 points its types condition at the bundle.
This commit is contained in:
2026-09-03 12:10:41 -07:00
parent 81ac046743
commit 37dd93f5ea
11 changed files with 181 additions and 61 deletions
Submodule .claude/worktrees/fix-iam-surface added at 23950b9ea4
+2 -2
View File
@@ -7,7 +7,7 @@
"deploy": "wrangler deploy"
},
"devDependencies": {
"wrangler": "^4.65.0"
"wrangler": "catalog:"
},
"description": "Branded account-management pages for account.<brand>.id \u2014 a Cloudflare Worker."
}
}
+15 -15
View File
@@ -2,7 +2,7 @@
"name": "@hanzo/id-web",
"private": true,
"version": "0.1.46",
"description": "Hanzo ID — white-label login / signup / IDV portal. Vite + React 19, styled from @hanzo/design tokens. Same image serves hanzo.id / lux.id / zoo.id / pars.id.",
"description": "Hanzo ID \u2014 white-label login / signup / IDV portal. Vite + React 19, styled from @hanzo/design tokens. Same image serves hanzo.id / lux.id / zoo.id / pars.id.",
"type": "module",
"scripts": {
"dev": "vite",
@@ -11,7 +11,7 @@
"tc": "tsc --noEmit"
},
"dependencies": {
"@crossmarkio/sdk": "^0.4.0",
"@crossmarkio/sdk": "catalog:",
"@hanzo/appearance": "catalog:",
"@hanzo/brand": "catalog:",
"@hanzo/design": "catalog:",
@@ -22,22 +22,22 @@
"@hanzo/id-idv": "workspace:*",
"@hanzo/id-onboarding": "workspace:*",
"@hanzo/id-shared": "workspace:*",
"@hanzogui/shell": "^8.1.21",
"@hanzogui/shell": "catalog:",
"@luxfi/brand": "catalog:",
"@parsdao/brand": "^1.0.0",
"@tanstack/react-router": "^1.168.0",
"@tonconnect/sdk": "^4.0.0",
"@parsdao/brand": "catalog:",
"@tanstack/react-router": "catalog:",
"@tonconnect/sdk": "catalog:",
"@zooai/brand": "catalog:",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"sats-connect": "^4.2.1",
"viem": "^2.53.1"
"react": "catalog:",
"react-dom": "catalog:",
"sats-connect": "catalog:",
"viem": "catalog:"
},
"devDependencies": {
"@types/react": "^19.0.0",
"@types/react-dom": "^19.0.0",
"@vitejs/plugin-react": "^4.3.4",
"typescript": "^5.9.3",
"vite": "^7.0.0"
"@types/react": "catalog:",
"@types/react-dom": "catalog:",
"@vitejs/plugin-react": "catalog:",
"typescript": "catalog:",
"vite": "catalog:"
}
}
+5 -5
View File
@@ -2,7 +2,7 @@
"name": "@hanzo/id",
"private": true,
"version": "0.2.78",
"description": "Hanzo ID — white-label login + identity verification portal (Vite + @hanzo/gui)",
"description": "Hanzo ID \u2014 white-label login + identity verification portal (Vite + @hanzo/gui)",
"packageManager": "[email protected]",
"scripts": {
"build": "pnpm -r build",
@@ -13,9 +13,9 @@
"clean": "bash scripts/clean.sh"
},
"devDependencies": {
"@testing-library/react": "^16.3.2",
"happy-dom": "^20.11.2",
"typescript": "^5.9.3",
"vitest": "^3.2.4"
"@testing-library/react": "catalog:",
"happy-dom": "catalog:",
"typescript": "catalog:",
"vitest": "catalog:"
}
}
+8 -8
View File
@@ -22,17 +22,17 @@
"@hanzo/iam": "catalog:",
"@hanzo/id-connect": "workspace:*",
"@hanzo/id-shared": "workspace:*",
"@paulmillr/qr": "^0.3.0",
"libphonenumber-js": "^1.13.10"
"@paulmillr/qr": "catalog:",
"libphonenumber-js": "catalog:"
},
"peerDependencies": {
"react": ">=19",
"react-dom": ">=19"
"react": ">=19.2.8",
"react-dom": ">=19.2.8"
},
"devDependencies": {
"@types/react": "^19.0.0",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"typescript": "^5.9.3"
"@types/react": "catalog:",
"react": "catalog:",
"react-dom": "catalog:",
"typescript": "catalog:"
}
}
+7 -7
View File
@@ -22,14 +22,14 @@
"tc": "tsc --noEmit"
},
"dependencies": {
"@noble/curves": "^1.6.0",
"@noble/hashes": "^1.5.0",
"bs58": "^6.0.0"
"@noble/curves": "catalog:",
"@noble/hashes": "catalog:",
"bs58": "catalog:"
},
"peerDependencies": {
"@crossmarkio/sdk": "^0.4.0",
"@tonconnect/sdk": "^4.0.0",
"sats-connect": "^4.2.1",
"viem": "^2.53.1"
"@crossmarkio/sdk": ">=0",
"@tonconnect/sdk": ">=4",
"sats-connect": ">=4",
"viem": ">=2"
}
}
+9 -7
View File
@@ -15,7 +15,9 @@
"./flow": "./src/ui/IDVFlow.tsx",
"./package.json": "./package.json"
},
"files": ["src"],
"files": [
"src"
],
"scripts": {
"tc": "tsc --noEmit"
},
@@ -23,13 +25,13 @@
"@hanzo/id-shared": "workspace:*"
},
"peerDependencies": {
"react": ">=19",
"react-dom": ">=19"
"react": ">=19.2.8",
"react-dom": ">=19.2.8"
},
"devDependencies": {
"@types/react": "^19.0.0",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"typescript": "^5.9.3"
"@types/react": "catalog:",
"react": "catalog:",
"react-dom": "catalog:",
"typescript": "catalog:"
}
}
+7 -7
View File
@@ -25,14 +25,14 @@
"@hanzo/iam": "catalog:"
},
"peerDependencies": {
"react": ">=19",
"react-dom": ">=19"
"react": ">=19.2.8",
"react-dom": ">=19.2.8"
},
"devDependencies": {
"@types/node": "^22.0.0",
"@types/react": "^19.0.0",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"typescript": "^5.9.3"
"@types/node": "catalog:",
"@types/react": "catalog:",
"react": "catalog:",
"react-dom": "catalog:",
"typescript": "catalog:"
}
}
+1 -1
View File
@@ -20,7 +20,7 @@
"build": "tsc --noEmit"
},
"devDependencies": {
"typescript": "^5.9.3"
"typescript": "catalog:"
},
"dependencies": {
"@hanzo/brand": "catalog:"
+125 -9
View File
@@ -9,14 +9,130 @@ allowBuilds:
# esbuild <0.28.1 → GHSA-gv7w-rqvm-qjhr (high), GHSA-g7r4-m6w7-qqqr (low)
# uuid <11.1.1 → GHSA-w5hq-g745-h8pq (medium); only pulled by [email protected]
overrides:
esbuild: "^0.28.1"
uuid: "^11.1.1"
'@noble/hashes': '1.8.0'
'zod': '^4.5.2'
'@hanzogui/adapt': '8.3.1'
'@hanzogui/animate': '8.3.1'
'@hanzogui/animate-presence': '8.3.1'
'@hanzogui/animations-css': '8.3.1'
'@hanzogui/animations-moti': '8.3.1'
'@hanzogui/animations-react-native': '8.3.1'
'@hanzogui/babel-plugin': '8.3.1'
'@hanzogui/build': '8.3.1'
'@hanzogui/button': '8.3.1'
'@hanzogui/checkbox-headless': '8.3.1'
'@hanzogui/cli': '8.3.1'
'@hanzogui/collapsible': '8.3.1'
'@hanzogui/collection': '8.3.1'
'@hanzogui/colors': '8.3.1'
'@hanzogui/component-helpers': '8.3.1'
'@hanzogui/compose-refs': '8.3.1'
'@hanzogui/config': '8.3.1'
'@hanzogui/config-default': '8.3.1'
'@hanzogui/constants': '8.3.1'
'@hanzogui/core': '8.3.1'
'@hanzogui/create-context': '8.3.1'
'@hanzogui/create-menu': '8.3.1'
'@hanzogui/dialog': '8.3.1'
'@hanzogui/dismissable': '8.3.1'
'@hanzogui/element': '8.3.1'
'@hanzogui/floating': '8.3.1'
'@hanzogui/focus-guard': '8.3.1'
'@hanzogui/focus-scope': '8.3.1'
'@hanzogui/focusable': '8.3.1'
'@hanzogui/font-size': '8.3.1'
'@hanzogui/get-button-sized': '8.3.1'
'@hanzogui/get-font-sized': '8.3.1'
'@hanzogui/get-token': '8.3.1'
'@hanzogui/group': '8.3.1'
'@hanzogui/helpers': '8.3.1'
'@hanzogui/helpers-icon': '8.3.1'
'@hanzogui/image': '8.3.1'
'@hanzogui/input': '8.3.1'
'@hanzogui/label': '8.3.1'
'@hanzogui/list-item': '8.3.1'
'@hanzogui/loader': '8.3.1'
'@hanzogui/lucide-icons-2': '8.3.1'
'@hanzogui/native': '8.3.1'
'@hanzogui/next-plugin': '8.3.1'
'@hanzogui/next-theme': '8.3.1'
'@hanzogui/polyfill-dev': '8.3.1'
'@hanzogui/popover': '8.3.1'
'@hanzogui/popper': '8.3.1'
'@hanzogui/portal': '8.3.1'
'@hanzogui/radio-headless': '8.3.1'
'@hanzogui/react-native-media-driver': '8.3.1'
'@hanzogui/react-native-svg': '8.3.1'
'@hanzogui/react-native-use-pressable': '8.3.1'
'@hanzogui/react-native-use-responder-events': '8.3.1'
'@hanzogui/react-native-web-lite': '8.3.1'
'@hanzogui/remove-scroll': '8.3.1'
'@hanzogui/roving-focus': '8.3.1'
'@hanzogui/scroll-view': '8.3.1'
'@hanzogui/separator': '8.3.1'
'@hanzogui/shapes': '8.3.1'
'@hanzogui/sheet': '8.3.1'
'@hanzogui/shell': '8.3.1'
'@hanzogui/sizable-context': '8.3.1'
'@hanzogui/spacer': '8.3.1'
'@hanzogui/stacks': '8.3.1'
'@hanzogui/start-transition': '8.3.1'
'@hanzogui/switch-headless': '8.3.1'
'@hanzogui/telemetry': '8.3.1'
'@hanzogui/text': '8.3.1'
'@hanzogui/theme': '8.3.1'
'@hanzogui/theme-base': '8.3.1'
'@hanzogui/themes': '8.3.1'
'@hanzogui/toast': '8.3.1'
'@hanzogui/use-async': '8.3.1'
'@hanzogui/use-callback-ref': '8.3.1'
'@hanzogui/use-constant': '8.3.1'
'@hanzogui/use-controllable-state': '8.3.1'
'@hanzogui/use-debounce': '8.3.1'
'@hanzogui/use-did-finish-ssr': '8.3.1'
'@hanzogui/use-direction': '8.3.1'
'@hanzogui/use-escape-keydown': '8.3.1'
'@hanzogui/use-event': '8.3.1'
'@hanzogui/use-force-update': '8.3.1'
'@hanzogui/use-keyboard-visible': '8.3.1'
'@hanzogui/use-presence': '8.3.1'
'@hanzogui/use-previous': '8.3.1'
'@hanzogui/visually-hidden': '8.3.1'
'@hanzogui/vite-plugin': '8.3.1'
'@hanzogui/web': '8.3.1'
'@hanzogui/z-index-stack': '8.3.1'
esbuild: '^0.28.2'
uuid: '^14.0.2'
catalog:
'@hanzo/appearance': 0.2.2
'@hanzo/brand': 1.4.8
'@hanzo/design': 0.5.24
'@hanzo/event': 0.3.37
'@hanzo/iam': 0.21.17
'@luxfi/brand': 1.1.2
'@zooai/brand': 1.4.1
'@crossmarkio/sdk': '^0.4.0'
'@hanzo/appearance': '0.2.2'
'@hanzo/brand': '1.4.8'
'@hanzo/design': '0.5.24'
'@hanzo/event': '0.3.37'
'@hanzo/iam': '0.21.17'
'@hanzogui/shell': '8.3.1'
'@luxfi/brand': '1.1.2'
'@noble/curves': '^2.4.0'
'@noble/hashes': '1.8.0'
'@parsdao/brand': '^1.0.1'
'@paulmillr/qr': '^0.3.0'
'@tanstack/react-router': '1.170.8'
'@testing-library/react': '^16.3.3'
'@tonconnect/sdk': '^4.0.2'
'@types/node': '26.4.0'
'@types/react': '19.2.18'
'@types/react-dom': '19.2.5'
'@vitejs/plugin-react': '^6.0.2'
'@zooai/brand': '1.4.1'
'bs58': '^6.0.0'
'happy-dom': '^20.12.0'
'libphonenumber-js': '^1.13.12'
'react': '19.2.8'
'react-dom': '19.2.8'
'sats-connect': '^4.2.1'
'typescript': '7.0.2'
'viem': '^2.56.0'
'vite': '^8.2.2'
'vitest': '^4.1.11'
'wrangler': '^4.127.1'
Submodule
+1
Submodule pristine added at 331675c945