Files
temetro/frontend/package.json
T
Khalid Abdi 233ce9f854 fix: QR wallet pairing broken by multi-clinic routing (v0.8.1)
QR "scan to connect" pairing has no wallet number, so nothing registered
the request with the relay and the scanning device's response was rejected
("unknown or expired request"). The backend now pre-registers the pairing
request over the relay's new hub:expect event on POST /pair, and
re-registers still-pending requests on hub (re)connect so routing survives
a relay restart. /pair now requires the clinic to have joined the network
(clear 409, surfaced in the import dialog, localized in all five langs).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 19:16:33 +03:00

81 lines
2.3 KiB
JSON

{
"name": "frontend",
"version": "0.8.1",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "eslint",
"check-locales": "node scripts/check-locales.mjs"
},
"dependencies": {
"@ai-sdk/react": "^3.0.206",
"@base-ui/react": "^1.5.0",
"@number-flow/react": "^0.6.0",
"@radix-ui/react-use-controllable-state": "^1.2.2",
"@rive-app/react-webgl2": "^4.28.6",
"@streamdown/cjk": "^1.0.3",
"@streamdown/code": "^1.1.1",
"@streamdown/math": "^1.0.2",
"@streamdown/mermaid": "^1.0.2",
"@tiptap/extension-placeholder": "^3.25.0",
"@tiptap/extension-underline": "^3.25.0",
"@tiptap/pm": "^3.25.0",
"@tiptap/react": "^3.25.0",
"@tiptap/starter-kit": "^3.25.0",
"@types/d3-force": "^3.0.10",
"@visx/curve": "^4.0.1-alpha.0",
"@visx/event": "^4.0.1-alpha.0",
"@visx/gradient": "^4.0.1-alpha.0",
"@visx/grid": "^4.0.1-alpha.0",
"@visx/pattern": "^4.0.1-alpha.0",
"@visx/responsive": "^4.0.1-alpha.0",
"@visx/scale": "^4.0.1-alpha.0",
"@visx/shape": "^4.0.1-alpha.0",
"@xyflow/react": "^12.10.2",
"ai": "^6.0.193",
"ansi-to-react": "^6.2.6",
"better-auth": "^1.6.13",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"cmdk": "^1.1.1",
"d3-array": "^3.2.4",
"d3-force": "^3.0.0",
"embla-carousel-react": "^8.6.0",
"framer-motion": "^12.40.0",
"i18next": "^26.3.1",
"i18next-browser-languagedetector": "^8.2.1",
"lucide-react": "^1.17.0",
"media-chrome": "^4.19.0",
"motion": "^12.40.0",
"nanoid": "^5.1.11",
"next": "16.2.6",
"next-themes": "^0.4.6",
"react": "19.2.4",
"react-day-picker": "^10.0.1",
"react-dom": "19.2.4",
"react-i18next": "^17.0.8",
"react-jsx-parser": "^2.4.1",
"react-qr-code": "^2.2.0",
"shadcn": "^4.8.3",
"shiki": "^4.1.0",
"socket.io-client": "^4.8.3",
"streamdown": "^2.5.0",
"tailwind-merge": "^3.6.0",
"tokenlens": "^1.3.1",
"tw-animate-css": "^1.4.0",
"use-stick-to-bottom": "^1.1.4"
},
"devDependencies": {
"@tailwindcss/postcss": "^4",
"@types/node": "^20",
"@types/react": "^19",
"@types/react-dom": "^19",
"eslint": "^9",
"eslint-config-next": "16.2.6",
"tailwindcss": "^4",
"typescript": "^5"
}
}