Thanks for your interest in contributing! This document outlines how to get started.
- Rust 1.70 or newer
- macOS 11+ or Linux with kernel 3.13+
# Clone the repository
git clone https://github.com/jordond/jolt.git
cd jolt
# Build
cargo build
# Run
cargo run
# Run tests
cargo test
# Run all checks (format, lint, build)
./scripts/checkUse descriptive branch names:
feat/add-new-widget— New featuresfix/battery-parsing— Bug fixesdocs/update-readme— Documentationrefactor/cleanup-config— Code improvements
Follow Conventional Commits:
feat: add power graph smoothing
fix: correct battery percentage calculation
docs: update installation instructions
refactor: simplify config loading
test: add battery parser tests
- Run
cargo fmtbefore committing - Ensure
cargo clippy -- -D warningspasses - Follow existing patterns in the codebase
Run the check script before opening a PR:
./scripts/check- Fork the repository
- Create a feature branch from
main - Make your changes
- Ensure all checks pass
- Open a PR with a clear description
- Keep PRs focused — one feature or fix per PR
- Update documentation if needed
- Add tests for new functionality
- Reference related issues
jolt/
├── cli/ # Main application
│ └── src/
│ ├── main.rs # Entry point
│ ├── app.rs # Application state
│ ├── data/ # Data collection
│ ├── daemon/ # Background service
│ ├── theme/ # Theme system
│ └── ui/ # Terminal UI widgets
├── crates/
│ ├── platform/ # Platform-specific code
│ ├── protocol/ # IPC protocol
│ └── theme/ # Theme types
├── docs/ # Documentation
└── scripts/ # Development scripts- Create
cli/src/ui/your_widget.rs - Implement the render function:
pub fn render(frame: &mut Frame, area: Rect, app: &App, theme: &ThemeColors) { // ... }
- Add to
cli/src/ui/mod.rs - Call from main render function
- Create
cli/src/theme/themes/your_theme.toml - Include
[dark]and/or[light]sections - Theme is auto-loaded on startup
- Add field to
UserConfigincli/src/config.rs - Use
#[serde(default)]for backwards compatibility - Add UI in
cli/src/ui/config_editor.rsif needed
- Open an issue for bugs or feature requests
- Check existing issues before creating new ones
By contributing, you agree that your contributions will be licensed under the MIT License.