2.8 KiB
2.8 KiB
Contributing to TypeDialog
Welcome
Thank you for considering contributing to TypeDialog! This document provides guidelines for contributing to the project.
Development Setup
Prerequisites
- Rust 1.75+ (see rustup.rs)
- just - command runner (
cargo install just) - Nickel - configuration language (
cargo install nickel-lang-cli) - Additional linters: shellcheck, nushell, markdownlint-cli2
Quick Start
# Clone repository
git clone https://github.com/jesusperezlorenzo/typedialog.git
cd typedialog
# Check dependencies
./scripts/check_deps.sh
# Run full validation
just check-all
Making Changes
Development Workflow
- Create a branch:
git checkout -b feature/my-feature - Make changes: Follow coding standards below
- Run checks:
just check-all(format + lint + tests) - Commit: Write clear commit messages
- Push:
git push origin feature/my-feature - Open PR: Describe changes, link issues
Coding Standards
Rust Code
- Follow Rust API guidelines
- Use
cargo fmtfor formatting - Zero clippy warnings (
just dev::lint-rust) - Add tests for new functionality
- Document public APIs with rustdoc
Commit Messages
Format: <type>(<scope>): <description>
Types: feat, fix, docs, style, refactor, test, chore
Examples:
feat(cli): add --verbose flag for debug outputfix(web): resolve CSRF token validation errordocs(README): update installation instructions
Testing
- Unit tests:
cargo test --lib - Integration tests:
cargo test --test '*' - All tests:
just test::all - Coverage:
just dev::coverage
Pull Request Process
-
Before submitting:
just check-allpasses- Tests added/updated
- Documentation updated
- CHANGELOG.md updated (if user-facing)
-
PR template: Fill out the template completely
-
Review: Address reviewer feedback
-
Merge: Maintainer will merge when approved
Code Review Guidelines
We review for:
- Correctness and functionality
- Code quality and style
- Test coverage
- Documentation
- Security implications
Reporting Bugs
Use GitHub Issues with template:
- Title: Clear, concise description
- Environment: OS, Rust version, TypeDialog version
- Steps to reproduce: Minimal example
- Expected vs actual behavior
- Logs: Use
--verboseflag
Feature Requests
Open a GitHub Discussion first for:
- Large features
- Breaking changes
- Architectural changes
Security Vulnerabilities
DO NOT open public issues for security vulnerabilities.
See SECURITY.md for reporting process.
Questions?
- Discussions: GitHub Discussions
- Chat: (if applicable)
- Email: jpl@jesusperez.com
License
By contributing, you agree your contributions will be licensed under MIT License.