mirror of
https://github.com/hanzo-apps/hanzo.ai.git
synced 2026-10-28 07:32:52 +00:00
/login and /signup draw "Continue with wallet" and "Continue with phone" after Google and GitHub, each only where IAM's methods say it is on. Wallet: where IAM signs a wallet in (@hanzo/iam 0.21.37 `wallet`) and the browser injects an EIP-1193 wallet; the press is loginWithWallet (IAM's challenge, personal_sign of its EIP-4361 text, IAM's verify) and ends as a password's sign-in ends. A wallet IAM has not seen is made an account in an org of its own, with no email. Phone: where IAM says it sends codes (`code`) and has answered. The number is read in its country with the SMS consent ticked, then IAM's code flow. IAM's address lookup answers an email address only, so a number is texted as any is and the account that holds it is signed in by the code. Settings -> General -> Sign in another way adds an email or a phone to the signed-in account through IAM's own proof (addAddress, PUT /v1/iam/address), drawn only where IAM's methods say `address`. Same account, org, keys and balance; nothing is created, so nothing earns twice. Gates: wallet.spec (a throwaway secp256k1 key behind an injected provider), phone.spec, address.spec. login.spec expects the phone after the providers.
98 lines
3.1 KiB
JSON
98 lines
3.1 KiB
JSON
{
|
|
"name": "@hanzo/site",
|
|
"private": true,
|
|
"engines": {
|
|
"node": ">=22.18"
|
|
},
|
|
"version": "0.2.31",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "next dev",
|
|
"build": "next build && node scripts/export.mjs",
|
|
"typecheck": "tsc --noEmit",
|
|
"start": "next start",
|
|
"serve": "node scripts/serve.mjs out 5173",
|
|
"lint": "oxlint",
|
|
"test": "playwright test",
|
|
"test:unit": "playwright test --project=unit",
|
|
"gates": "playwright test --project=gates",
|
|
"test:ui": "playwright test --ui",
|
|
"test:headed": "playwright test --headed",
|
|
"test:report": "playwright show-report",
|
|
"gen:gui-css": "node scripts/gen-gui-css.mjs",
|
|
"css-check": "node node_modules/@hanzo/gui/css-check.mjs out",
|
|
"prebuild": "node scripts/prebuild.ts",
|
|
"predev": "node scripts/gen-gui-css.mjs && node scripts/rooms-assets.mjs",
|
|
"sync:catalog": "node scripts/sync-catalog.mjs",
|
|
"sync:papers": "node scripts/sync-papers.mjs",
|
|
"sync:oss": "node scripts/sync-oss.ts",
|
|
"sync:mark": "node scripts/sync-mark.mjs",
|
|
"sync:pages": "node scripts/sync-rooms.mjs && node scripts/sync-pages.mjs",
|
|
"audit:catalog": "node scripts/audit-catalog.mjs",
|
|
"audit:price": "node scripts/audit-price-literals.mjs",
|
|
"lint:design": "hanzo-design-lint components app lib",
|
|
"ratchet": "node scripts/ratchet.ts"
|
|
},
|
|
"dependencies": {
|
|
"@hanzo/ai": "catalog:",
|
|
"@hanzo/app": "catalog:",
|
|
"@hanzo/appearance": "catalog:",
|
|
"@hanzo/brand": "catalog:",
|
|
"@hanzo/build": "catalog:",
|
|
"@hanzo/composer": "catalog:",
|
|
"@hanzo/design": "catalog:",
|
|
"@hanzo/event": "catalog:",
|
|
"@hanzo/font": "^1.9.3",
|
|
"@hanzo/glass": "catalog:",
|
|
"@hanzo/gui": "catalog:",
|
|
"@hanzo/i18n": "catalog:",
|
|
"@hanzo/iam": "catalog:",
|
|
"@hanzo/logo": "catalog:",
|
|
"@hanzo/mod": "catalog:",
|
|
"@hanzo/observe": "catalog:",
|
|
"@hanzo/pay": "catalog:",
|
|
"@hanzo/plans": "catalog:",
|
|
"@hanzo/studio": "catalog:",
|
|
"@hanzo/tabs": "catalog:",
|
|
"@hanzo/tokens": "catalog:",
|
|
"@hanzo/ui": "catalog:",
|
|
"@hanzo/usage": "catalog:",
|
|
"@hanzo/voice": "catalog:",
|
|
"@hanzogui/config": "8.3.5",
|
|
"@hanzogui/lucide-icons-2": "8.3.5",
|
|
"@hanzogui/next-theme": "catalog:",
|
|
"@hanzogui/shell": "8.3.20",
|
|
"@hanzogui/web": "8.3.5",
|
|
"@zenlm/models": "^1.0.4",
|
|
"framer-motion": "^13.2.0",
|
|
"libphonenumber-js": "1.13.12",
|
|
"lucide-react": "^1.42.0",
|
|
"marked": "^18.0.12",
|
|
"next": "catalog:",
|
|
"react": "catalog:",
|
|
"react-dom": "catalog:",
|
|
"react-native-web": "^0.21.2",
|
|
"shiki": "^4.5.0",
|
|
"uuid": "^14.0.2"
|
|
},
|
|
"devDependencies": {
|
|
"@hanzo/personas": "1.0.5",
|
|
"@hanzogui/animations-css": "8.3.5",
|
|
"@hanzogui/core": "8.3.5",
|
|
"@hanzogui/telemetry": "8.3.5",
|
|
"@hanzogui/toast": "8.3.5",
|
|
"@noble/curves": "2.4.0",
|
|
"@noble/hashes": "2.4.0",
|
|
"@playwright/test": "^1.63.0",
|
|
"@types/node": "catalog:",
|
|
"@types/react": "catalog:",
|
|
"@types/react-dom": "catalog:",
|
|
"esbuild": "^0.28.2",
|
|
"oxlint": "^1.82.0",
|
|
"sharp": "0.35.4",
|
|
"simple-icons": "^16.30.0",
|
|
"typescript": "catalog:"
|
|
},
|
|
"packageManager": "[email protected]"
|
|
}
|