Thanks for taking the time to contribute! Here's everything you need to know.
- Bug reports — found something broken? Open a bug report
- Feature requests — missing something useful? Open a feature request
- Code contributions — fork, branch, pull request (see below)
- Pricing updates — Anthropic pricing changes periodically; PRs that update
src-tauri/src/models.rsare very welcome
- Check the open issues — someone may already be working on it
- For larger changes, open an issue first to discuss the approach
- Keep PRs focused — one feature or fix per PR
See the README for prerequisites and setup instructions.
npm run tauri dev # dev mode with hot reload
npm run build # TypeScript check + Vite build (frontend only)
cd src-tauri && cargo check # type-check Rust without full build
cd src-tauri && cargo clippy # Rust linterRust (backend)
- Run
cargo fmtbefore committing - No
unwrap()in production paths — use?or explicit error handling - All structs passed to the frontend need
#[serde(rename_all = "camelCase")]
TypeScript / React (frontend)
- Use functional components and hooks only
- State management goes through the Zustand store — avoid local state for shared data
- Tailwind utility classes for styling; avoid inline styles
The most important constraint: the Tauri FS plugin scope is locked to $HOME/.claude/**. Any file reading must go through the Rust commands — the frontend cannot access the filesystem directly.
Adding a new data source? You'll need:
- A Rust command in
src-tauri/src/commands/mod.rs - A corresponding DB table or query in
src-tauri/src/db/mod.rs - A Zustand action and selector in the frontend store
- A React component or extension to an existing one
- Fork the repository
- Create a branch:
git checkout -b fix/your-descriptionorfeat/your-description - Make your changes and commit with a clear message
- Push and open a PR against
main - Describe what changed and why in the PR body
Please do not open a public issue for security vulnerabilities. Instead, email the maintainer directly (see GitHub profile). Security issues will be addressed promptly and credited in the release notes.