http-relay 0.6.0

A Rust implementation of _some_ of [Http relay spec](https://httprelay.io/).
Documentation
# Releasing http-relay

## Prerequisites

- Push access to `main` branch
- `CARGO_REGISTRY_TOKEN` secret configured in GitHub repo settings
  (Settings → Secrets and variables → Actions → New repository secret)

## Release Steps

### 1. Bump the version and create version PR

Make sure you are working on the most recent main branch.

Update the version in `Cargo.toml`:

```toml
[package]
version = "0.7.0"  # bump appropriately
```

Then update the lockfile:

```bash
cargo check
```

Create the version PR:

```bash
git checkout -b chore/v0.7.0
git add Cargo.toml Cargo.lock
git commit -m "release: v0.7.0"
git push origin chore/v0.7.0
```

PR title: chore: v0.7.0
PR description: Changelogs

### 2. Tag and push

After the PR has been merged, tag the commit.

```bash
git checkout main
git pull origin main
git tag v0.7.0
git push origin v0.7.0
```

This triggers the release workflow. That's it — CI handles the rest.

## What CI Does Automatically

When a `v*` tag is pushed, the [release workflow](.github/workflows/release.yml) runs:

1. **Builds binaries** for 7 targets:
   - Linux: x86_64 (glibc), x86_64 (musl), aarch64
   - macOS: x86_64, aarch64 (Apple Silicon)
   - Windows: x86_64, aarch64

2. **Creates a GitHub Release** with auto-generated release notes and all binaries attached

3. **Publishes to crates.io** via `cargo publish`

## Post-Release Verification

- [ ] [GitHub Releases](https://github.com/pubky/http-relay/releases) — new release with 7 binary assets
- [ ] [crates.io/crates/http-relay](https://crates.io/crates/http-relay) — new version visible
- [ ] Install works: `cargo install http-relay`

## Versioning

Follow [Semantic Versioning](https://semver.org/):

- **Patch** (0.6.x): bug fixes, no API changes
- **Minor** (0.x.0): new features, backwards-compatible
- **Major** (x.0.0): breaking API changes
- **Release Candidate** (0.0.0-rc.x): Test releases

## Troubleshooting

**CI build fails?** Fix the issue, then delete and re-push the tag:

```bash
git tag -d v0.7.0
git push origin :refs/tags/v0.7.0
# fix the issue, commit, push
git tag v0.7.0
git push origin v0.7.0
```

**cargo publish fails?** Check that `CARGO_REGISTRY_TOKEN` is set and not expired. Generate a new token at [crates.io/settings/tokens](https://crates.io/settings/tokens).