Contributing
Getting Started
- Fork the repository on GitHub.
- Clone your fork locally.
- Follow the Development Setup guide.
- Create a feature branch from
main.
Making Changes
- Run
npm run buildbefore committing to catch TypeScript errors. - Run
pytestin the backend to verify tests pass. - Keep commits focused on a single change.
- Write clear commit messages describing what changed and why.
Pull Requests
- Open PRs against the
mainbranch. - Describe the change, what it affects, and how to test it.
- Include screenshots for UI changes.
Code Style
Frontend
- TypeScript strict mode. The build fails on type errors.
- TailwindCSS for all styling. No CSS modules or inline style objects.
- React functional components with hooks.
- State management via React Context (no Redux or Zustand).
- API calls go through
src/renderer/src/api/client.ts, not direct fetch.
Backend
- Python type hints on all function signatures.
- FastAPI with Pydantic models for request/response validation.
- Async endpoints where possible.
- Logging via Python's
loggingmodule (no print statements). - Format with
blackandisort.
Areas for Contribution
Known gaps and improvement opportunities:
| Area | Current State | Improvement |
|---|---|---|
| RAG search | BM25 + keyword hybrid | Deeper vector embedding integration |
| MCP in chat | Not integrated | Allow model to call MCP tools during inference |
| Toast notifications | Uses alert() | In-app toast component |
| SSE parsing | Duplicated across components | Shared utility function |
| Type safety | Some any usages | Replace with proper types |
| Tests | Backend unit tests; no E2E currently | Expand test coverage |
License
Contributions are accepted under the MIT license. By submitting a PR, you agree to license your contribution under the same terms.