Files
chat/client/package.json
zooqueen 6aeac0a488 the lock names the @hanzo/ui the generated sheet was built from
`client/src/gui.css` is emitted at build time by gui's compiler, which reads
the font stack out of the installed `@hanzo/ui`. The committed sheet names
Zen — 8.4.11's output — while the lock resolved 8.1.21, which still names
Geist. A build that honours the lock therefore regenerates Geist over the
committed file, and the typeface the app ships is decided by whether the
installing machine used the lock.

The range already admitted 8.4.11; only the lock disagreed. With it pinned
there the compiler reproduces the committed sheet byte for byte, so the file
on disk and the file a build produces are the same file.
2026-08-25 12:44:29 -07:00

169 lines
5.7 KiB
JSON

{
"name": "@hanzochat/frontend",
"version": "v0.8.3-rc1",
"description": "",
"type": "module",
"scripts": {
"typecheck": "tsc --noEmit",
"data-provider": "cd .. && npm run build:data-provider",
"build:file": "cross-env NODE_ENV=production vite build --debug > vite-output.log 2>&1",
"build": "cross-env NODE_ENV=production vite build && node ./scripts/post-build.cjs",
"build:ci": "cross-env NODE_ENV=development vite build --mode ci",
"dev": "cross-env NODE_ENV=development vite",
"preview-prod": "cross-env NODE_ENV=development vite preview",
"test": "cross-env NODE_ENV=development jest --watch",
"test:ci": "cross-env NODE_ENV=development jest --ci --logHeapUsage",
"b:test": "NODE_ENV=test bunx jest --watch",
"b:build": "NODE_ENV=production bun --bun vite build",
"b:dev": "NODE_ENV=development bunx vite"
},
"repository": {
"type": "git",
"url": "git+https://github.com/hanzoai/chat.git"
},
"keywords": [],
"author": "",
"license": "ISC",
"bugs": {
"url": "https://github.com/hanzoai/chat/issues"
},
"homepage": "https://hanzo.ai/chat",
"dependencies": {
"@ariakit/react": "^0.4.15",
"@ariakit/react-core": "^0.4.17",
"@codesandbox/sandpack-react": "^2.19.10",
"@dicebear/collection": "^9.2.2",
"@dicebear/core": "^9.2.2",
"@hanzo/ai": "^0.3.10",
"@hanzo/appearance": "^0.1.2",
"@hanzo/composer": "^0.1.0",
"@hanzo/design": "^0.5.20",
"@hanzo/event": "^0.3.28",
"@hanzo/gui": "^8.1.1",
"@hanzo/iam": "^0.21.12",
"@hanzo/logo": "^1.0.13",
"@hanzo/observe": "^0.1.6",
"@hanzo/plans": "1.4.16",
"@hanzo/ui": "^8.4.11",
"@hanzo/usage": "^0.1.6",
"@hanzo/voice": "0.1.6",
"@hanzochat/client": "workspace:*",
"@hanzochat/data-provider": "workspace:*",
"@hanzogui/config": "^8.0.1",
"@hanzogui/shell": "^8.1.52",
"@headlessui/react": "^2.1.2",
"@hyperdx/browser": "^0.24.0",
"@marsidev/react-turnstile": "^1.1.0",
"@mcp-ui/client": "^5.7.0",
"@radix-ui/react-accordion": "^1.1.2",
"@radix-ui/react-dialog": "1.0.2",
"@radix-ui/react-dropdown-menu": "^2.1.1",
"@radix-ui/react-hover-card": "^1.0.5",
"@radix-ui/react-popover": "^1.0.7",
"@radix-ui/react-radio-group": "^1.1.3",
"@radix-ui/react-slider": "^1.1.1",
"@radix-ui/react-tabs": "^1.0.3",
"@radix-ui/react-toast": "^1.1.5",
"@react-spring/web": "^9.7.5",
"@tanstack/react-query": "^4.28.0",
"@tanstack/react-table": "^8.11.7",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"copy-to-clipboard": "^3.3.3",
"cross-env": "^7.0.3",
"date-fns": "^3.3.1",
"dompurify": "^3.3.0",
"downloadjs": "^1.4.7",
"export-from-json": "^1.7.2",
"filenamify": "^6.0.0",
"framer-motion": "^11.5.4",
"heic-to": "^1.1.14",
"html-to-image": "^1.11.11",
"i18next": "^24.2.2",
"i18next-browser-languagedetector": "^8.0.3",
"input-otp": "^1.4.2",
"jotai": "^2.12.5",
"js-cookie": "^3.0.5",
"lodash": "^4.17.23",
"lucide-react": "^0.394.0",
"match-sorter": "^8.1.0",
"mermaid": "^11.12.3",
"micromark-extension-llm-math": "^3.1.0",
"qrcode.react": "^4.2.0",
"rc-input-number": "^7.4.2",
"react": "^19.2.0",
"react-avatar-editor": "^13.0.2",
"react-dnd": "^16.0.1",
"react-dnd-html5-backend": "^16.0.1",
"react-dom": "^19.2.0",
"react-flip-toolkit": "^7.1.0",
"react-gtm-module": "^2.0.11",
"react-hook-form": "^7.43.9",
"react-i18next": "^15.4.0",
"react-lazy-load-image-component": "^1.6.0",
"react-markdown": "^9.0.1",
"react-native-web": "^0.21.2",
"react-resizable-panels": "^3.0.6",
"react-router-dom": "^6.30.3",
"react-speech-recognition": "^3.10.0",
"react-textarea-autosize": "^8.4.0",
"react-transition-group": "^4.4.5",
"react-virtualized": "^9.22.6",
"regenerator-runtime": "^0.14.1",
"rehype-highlight": "^6.0.0",
"rehype-katex": "^6.0.3",
"remark-directive": "^3.0.0",
"remark-gfm": "^4.0.0",
"remark-math": "^6.0.0",
"remark-supersub": "^1.0.0",
"sse.js": "^2.5.0",
"swr": "^2.3.8",
"tailwind-merge": "^1.9.1",
"tailwindcss-animate": "^1.0.5",
"tailwindcss-radix": "^2.8.0",
"ts-md5": "^1.3.1",
"zod": "^3.22.4"
},
"devDependencies": {
"@babel/plugin-transform-runtime": "^7.22.15",
"@babel/preset-env": "^7.22.15",
"@babel/preset-react": "^7.22.15",
"@babel/preset-typescript": "^7.22.15",
"@hanzogui/vite-plugin": "8.0.1",
"@tanstack/react-query-devtools": "^4.29.0",
"@testing-library/dom": "^10.4.0",
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^16.3.2",
"@testing-library/user-event": "^14.4.3",
"@types/jest": "^29.5.14",
"@types/js-cookie": "^3.0.6",
"@types/lodash": "^4.17.15",
"@types/node": "^20.3.0",
"@types/react": "^19.2.0",
"@types/react-dom": "^19.2.0",
"@vitejs/plugin-react": "^4.3.4",
"autoprefixer": "^10.4.20",
"babel-plugin-replace-ts-export-assignment": "^0.0.2",
"babel-plugin-root-import": "^6.6.0",
"babel-plugin-transform-import-meta": "^2.3.2",
"babel-plugin-transform-vite-meta-env": "^1.0.3",
"eslint-plugin-jest": "^29.1.0",
"fs-extra": "^11.3.2",
"identity-obj-proxy": "^3.0.0",
"jest": "^30.2.0",
"jest-canvas-mock": "^2.5.2",
"jest-environment-jsdom": "^29.7.0",
"jest-file-loader": "^1.0.3",
"jest-junit": "^16.0.0",
"postcss": "^8.4.31",
"postcss-preset-env": "^8.2.0",
"react-native-svg": "^15.15.5",
"tailwindcss": "^3.4.1",
"typescript": "^7.0.2",
"vite": "^6.4.1",
"vite-plugin-compression2": "^2.2.1",
"vite-plugin-node-polyfills": "^0.25.0",
"vite-plugin-pwa": "^0.21.2"
}
}