Git workflow
Create a feature branch from main
feat/, fix/, docs/, refactor/.Make focused changes
Keep commits small and atomic. Each commit should represent a single logical change that can be understood and reverted independently.
Open a pull request
Include in your PR description:
- What: Brief description of changes
- Why: Motivation or issue reference
- How: Implementation approach (if non-obvious)
- Testing: How you tested the changes
Address review feedback
Respond to review comments and push additional commits to address feedback. Request re-review when ready.
Commit convention
All commits must follow Conventional Commits. PRs with non-conforming messages will be asked to rebase.| Type | When to use |
|---|---|
feat | New feature |
fix | Bug fix |
docs | Documentation only |
refactor | Code change that neither fixes a bug nor adds a feature |
test | Adding or updating tests |
chore | Build process, tooling, or dependency updates |
Code of conduct
This project follows the guidelines inCODE_OF_CONDUCT.md. All contributors are expected to uphold a respectful and inclusive environment.
Reporting bugs
Open an issue on GitHub Issues and include:- Trueears version (found in
Settings > About) - Operating system and version
- Steps to reproduce the issue
- Expected vs actual behavior
- Console errors (open with F12 in dev mode)
- Screenshots if relevant
Performance budgets
Keep these targets in mind when contributing:| Metric | Target |
|---|---|
| Cold start to ready | < 2 seconds |
| Hotkey to recording | < 100ms |
| Transcription display | < 3 seconds |
| Idle memory | < 50MB |
| Recording memory | < 150MB |
| Bundle size | < 25MB |
Security guidelines
- API keys: Store in Tauri Store (
@tauri-apps/plugin-store), never inlocalStorage - Audio buffers: Clear after transcription completes
- Clipboard: Read only on user action, write only final output
- LLM prompts: Include injection-prevention instructions
- User input: Validate at all trust boundaries
