Commit Discipline
We follow a strict commit discipline to maintain a clean, reviewable git history.Commit After Every Discrete Action
Commit immediately after completing each meaningful change:- Adding a feature
- Fixing a bug
- Refactoring code
- Updating documentation
- Adding a test
Commit Message Format
Use concise, imperative commit messages that describe what the commit does:Keep Commits Small and Reviewable
Each commit should:- Be focused on a single concern
- Be understandable without additional context
- Be easy to review and revert if needed
Pre-Commit Checks
Before committing, always run:TypeScript Changes
Rust Changes
Run cargo check periodically
While making changes, run
cargo check frequently to catch errors early:Code Style Guidelines
TypeScript
- Avoid unnecessary types/interfaces — Don’t create types or interfaces if they’re only used once. Inline them instead, especially for function props.
- Run type-check periodically — After making TypeScript changes, run
bun run typecheckto catch errors early.
Rust
- Avoid unnecessary structs/enums/traits — Don’t create these if they’re not shared. Prefer inlining types when used in only one place.
- Run
cargo checkfrequently — Don’t wait until the end to check for errors.
Comments
Releases
Philo uses an automated release workflow powered by GitHub Actions.Creating a Release
Bump version numbers
Update the version in both:
src-tauri/Cargo.tomlsrc-tauri/tauri.conf.json
Cargo.toml
Release Notes Guidelines
- Do not use
--draft— Releases must be published immediately - Write concise, descriptive bullet points explaining user-facing changes
- Focus on what changed from the user’s perspective, not implementation details
- Do not just list version numbers or raw commit messages
Continuous Integration
Philo uses GitHub Actions for automated testing and builds.Frontend CI
Runs on every push/PR affecting frontend code:- Installs dependencies with Bun
- Type-checks TypeScript (
bun run build) - Checks code formatting (
dprint check)
Rust CI
Runs on every push/PR affecting Rust code:- Installs system dependencies (Linux)
- Runs
cargo check - Runs
cargo clippywith warnings as errors - Runs
cargo test
Rust Formatting CI
Runs separately to check Rust formatting:- Runs
cargo fmt --check
Release CI
Triggered when a tag matchingv* is pushed:
- Builds for macOS (Apple Silicon and Intel)
- Builds for Linux (Ubuntu 22.04)
- Builds for Windows
- Uploads binaries to the GitHub release
Development Workflow
Make changes and commit frequently
Follow the commit discipline outlined above. Commit after each discrete action.
Getting Help
- Check existing GitHub Issues
- Review closed pull requests for examples
- Ask questions in GitHub Discussions
Development Setup
Set up your local development environment
Building for Production
Learn how to build desktop apps