Files
claudia/package.json
Mufeed VH c48a63f170 feat(claude-binary): implement robust version selector with enhanced binary detection
This commit provides a comprehensive solution to Claude binary detection issues
by implementing a user-friendly version selector UI and improving the binary
discovery logic. It addresses all concerns raised in multiple PRs and comments.

Changes:
- Add ClaudeVersionSelector component for selecting from multiple installations
- Update ClaudeBinaryDialog to use version selector instead of manual path input
- Fix unused variable warning in production builds (claude.rs:442)
- Improve select_best_installation to handle production build restrictions
- Add listClaudeInstallations API endpoint to fetch all available installations
- Make Claude version indicator clickable to navigate to Settings
- Move Claude installation selector to General tab in Settings (per user request)
- Enhance dialog UX with loading states and clear installation instructions
- Add Radix UI radio-group dependency for version selector

Fixes:
- Production build warning about unused claude_path variable
- Version detection failures in production builds due to process restrictions
- Poor UX when Claude binary is not found (now shows helpful dialog)
- Inability to easily switch between multiple Claude installations

This implementation takes inspiration from:
- PR #3: Version selector dropdown approach (preferred by users)
- PR #4: Binary detection improvements and path validation
- PR #39: Additional detection methods and error handling
- Commit 5a29f9a: Shared claude binary detection module architecture

Addresses feedback from:
- getAsterisk/claudia#4 (comment): User preference for dropdown selector
- Production build restrictions that prevent version detection
- Need for better error handling when Claude is not installed

The solution provides a seamless experience whether Claude is installed via:
- npm/yarn/bun global installation
- nvm-managed Node.js versions
- Homebrew on macOS
- System-wide installation
- Local user installation (~/.local/bin, etc.)

Refs: #3, #4, #39, 5a29f9a
2025-06-25 02:49:24 +05:30

70 lines
2.0 KiB
JSON

{
"name": "claudia",
"private": true,
"version": "0.1.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "tsc && vite build",
"preview": "vite preview",
"tauri": "tauri"
},
"dependencies": {
"@hookform/resolvers": "^3.9.1",
"@radix-ui/react-dialog": "^1.1.4",
"@radix-ui/react-dropdown-menu": "^2.1.15",
"@radix-ui/react-label": "^2.1.1",
"@radix-ui/react-popover": "^1.1.4",
"@radix-ui/react-radio-group": "^1.3.7",
"@radix-ui/react-select": "^2.1.3",
"@radix-ui/react-switch": "^1.1.3",
"@radix-ui/react-tabs": "^1.1.3",
"@radix-ui/react-toast": "^1.2.3",
"@radix-ui/react-tooltip": "^1.1.5",
"@tailwindcss/cli": "^4.1.8",
"@tailwindcss/vite": "^4.1.8",
"@tanstack/react-virtual": "^3.13.10",
"@tauri-apps/api": "^2.1.1",
"@tauri-apps/plugin-dialog": "^2.0.2",
"@tauri-apps/plugin-global-shortcut": "^2.0.0",
"@tauri-apps/plugin-opener": "^2",
"@tauri-apps/plugin-shell": "^2.0.1",
"@types/diff": "^8.0.0",
"@types/react-syntax-highlighter": "^15.5.13",
"@uiw/react-md-editor": "^4.0.7",
"ansi-to-html": "^0.7.2",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"date-fns": "^3.6.0",
"diff": "^8.0.2",
"framer-motion": "^12.0.0-alpha.1",
"html2canvas": "^1.4.1",
"lucide-react": "^0.468.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-hook-form": "^7.54.2",
"react-markdown": "^9.0.3",
"react-syntax-highlighter": "^15.6.1",
"recharts": "^2.14.1",
"remark-gfm": "^4.0.0",
"tailwind-merge": "^2.6.0",
"tailwindcss": "^4.1.8",
"zod": "^3.24.1"
},
"devDependencies": {
"@tauri-apps/cli": "^2",
"@types/node": "^22.15.30",
"@types/react": "^18.3.1",
"@types/react-dom": "^18.3.1",
"@types/sharp": "^0.32.0",
"@vitejs/plugin-react": "^4.3.4",
"sharp": "^0.34.2",
"typescript": "~5.6.2",
"vite": "^6.0.3"
},
"trustedDependencies": [
"@parcel/watcher",
"@tailwindcss/oxide"
]
}