# Contributing

Outside contributions are welcome. The project is small; the workflow is light.

## Getting started

```bash
git clone https://github.com/reh3502/sqpack-rs
cd sqpack-rs
cargo test
```

## Branch naming

Branch off `main` with one of these prefixes:

| Prefix | Use for |
|--------|---------|
| `feature/` | New features, additive work |
| `bug/` | Non-urgent bug fixes |
| `hotfix/` | Urgent production fixes |
| `chore/` | Dependencies, infra, tooling |
| `docs/` | Documentation-only changes |
| `release/` | Release-prep (version bump + CHANGELOG date stamp) |

Convention only; not server-enforced. The `release/*` prefix is the one the `Version bump` CI job watches for — every other prefix lets you land on `main` without a `Cargo.toml` bump. User-facing changes accumulate under `[Unreleased]` in `CHANGELOG.md` and ship in a dedicated `release/vX.Y.Z` PR.

## Commit discipline

One logical change per commit. The branch is squash-merged on land, so granular commits make review easier even though `main` only ever sees the single squashed entry.

Before pushing, run the same checks CI does:

```bash
cargo fmt
cargo clippy -- -D warnings
cargo test
```

## Opening a PR

The PR template asks for a Summary (1–3 bullets) and a Related link. Keep titles under 70 characters; put detail in the body.

CI runs Test / Clippy / Format / Audit / Coverage on Linux, Windows, and macOS plus an MSRV (Rust 1.85) build. Expect a few minutes end-to-end.

The maintainer reviews and merges. If you haven't heard back within a week, ping the PR.

## Reporting security issues

See [SECURITY.md](SECURITY.md). Don't open a public issue for a vulnerability.
