packages: - "apps/*" - "packages/*" catalog: # Core React react: "19.2.3" react-dom: "19.2.3" "@types/react": "^19.2.0" "@types/react-dom": "^19.2.0" # TypeScript & Node typescript: "^5.9.3" "@types/node": "^25.0.10" # State Management zustand: "^5.0.0" "@tanstack/react-query": "^5.96.2" "@tanstack/react-table": "^8.21.3" # Runtime schema validation (defensive boundary against API drift — # see CLAUDE.md "API Response Compatibility") zod: "^4.1.5" # UI & Styling tailwindcss: "^4" "@tailwindcss/postcss": "^4" "@tailwindcss/vite": "^4" tailwind-merge: "^3.4.0" class-variance-authority: "^0.7.1" clsx: "^2.1.1" katex: "^0.16.45" rehype-katex: "^7.0.1" remark-math: "^6.0.0" mermaid: "^11.14.0" # Icons lucide-react: "^1.0.1" # i18n i18next: "^26.0.8" react-i18next: "^17.0.6" "@formatjs/intl-localematcher": "^0.8.4" eslint-plugin-i18next: "^6.1.4" # Loading animations (chat StatusPill) unicode-animations: "^1.0.3" # QR rendering — Lark device-flow scan-to-install dialog renders the # verification_uri_complete as a QR so users can scan it from their # phone instead of typing the URL. "react-qr-code": "^2.0.18" # Virtualized timeline (issue detail comments) react-virtuoso: "^4.14.0" "@tanstack/react-virtual": "^3.13.0" # Product analytics posthog-js: "^1.176.1" # YAML parsing (skill frontmatter) yaml: "^2.6.0" # Testing vitest: "^4.1.0" jsdom: "^29.0.1" "@vitejs/plugin-react": "^6.0.1" "@testing-library/react": "^16.3.2" "@testing-library/jest-dom": "^6.9.1" "@testing-library/user-event": "^14.6.1"