TypeDialog/CONTRIBUTING.md
Jesús Pérez ab6c097819
Some checks failed
CI / Lint (bash) (push) Has been cancelled
CI / Lint (markdown) (push) Has been cancelled
CI / Lint (nickel) (push) Has been cancelled
CI / Lint (nushell) (push) Has been cancelled
CI / Lint (rust) (push) Has been cancelled
CI / Code Coverage (push) Has been cancelled
CI / Test (macos-latest) (push) Has been cancelled
CI / Test (ubuntu-latest) (push) Has been cancelled
CI / Test (windows-latest) (push) Has been cancelled
CI / Build (macos-latest) (push) Has been cancelled
CI / Build (ubuntu-latest) (push) Has been cancelled
CI / Build (windows-latest) (push) Has been cancelled
CI / Benchmark (push) Has been cancelled
CI / Security Audit (push) Has been cancelled
CI / License Compliance (push) Has been cancelled
chore: fix md lint
2026-01-11 22:36:45 +00:00

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
```text

## Making Changes

### Development Workflow
1. **Create a branch**: `git checkout -b feature/my-feature`
2. **Make changes**: Follow coding standards below
3. **Run checks**: `just check-all` (format + lint + tests)
4. **Commit**: Write clear commit messages
5. **Push**: `git push origin feature/my-feature`
6. **Open PR**: Describe changes, link issues

### Coding Standards

#### Rust Code
- Follow Rust API guidelines
- Use `cargo fmt` for 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 output`
- `fix(web): resolve CSRF token validation error`
- `docs(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

1. **Before submitting**:
   - [ ] `just check-all` passes
   - [ ] Tests added/updated
   - [ ] Documentation updated
   - [ ] CHANGELOG.md updated (if user-facing)

2. **PR template**: Fill out the template completely
3. **Review**: Address reviewer feedback
4. **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 `--verbose` flag

## 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](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.