whoseportisitanyway 1.1.2

Cross-platform TUI for discovering which ports are in use, who owns them, and what they're for
Documentation
# Releasing whoseportisitanyway

## Supported release path

```bash
just release patch|minor|major
```

This verifies the repo, bumps version files, creates a release branch,
pushes, and opens a release PR.

When the PR is merged into `main`, GitHub Actions:

1. Re-verifies format, clippy, tests
2. Builds release binaries (4 targets)
3. Creates git tag
4. Generates checksums
5. Creates GitHub release
6. Verifies release integrity
7. Publishes crate to crates.io

## Step by step

### 1. Run release-check locally

```bash
just release-check
```

Runs `cargo fmt --check`, `cargo clippy`, and `cargo test`.

### 2. Run the release command

```bash
just release patch   # 1.0.0 -> 1.0.1
just release minor   # 1.0.0 -> 1.1.0
just release major   # 1.0.0 -> 2.0.0
```

This:

1. Validates clean working tree
2. Validates on `main` branch
3. Pulls latest from origin
4. Bumps version in `Cargo.toml` via `cargo set-version`
5. Writes version to `VERSION` file
6. Creates branch `release/vX.Y.Z`
7. Commits and pushes
8. Opens a PR to `main`

### 3. Merge the release PR

Merging the PR is the release boundary.

```text
release PR -> merge -> verified release workflow -> publish
```

### 4. Release workflow on `main`

`.github/workflows/release.yml` runs when `VERSION` changes on `main`:

- **check-tag**: reads VERSION, computes tag, enters recovery mode if tag exists
- **verify**: installs just, runs `just release-check`
- **build**: compiles for x86_64-linux, aarch64-linux, x86_64-darwin, aarch64-darwin
- **release**: creates tag, generates SHA256SUMS.txt, creates GitHub release
- **verify-release**: validates the release is correct (tag, assets, checksums)
- **publish-crate**: publishes to crates.io (idempotent)

## Contributor checklist

1. Make sure you're on `main` with a clean tree
2. Run `just release-check`
3. Run `just release patch|minor|major`
4. Review the generated release PR
5. Merge the PR
6. Verify the release workflow completes

## Files involved

- `justfile`
- `.github/workflows/release.yml`
- `.github/workflows/ci.yml`
- `VERSION`
- `Cargo.toml`

## Remaining improvements

### 1. Windows release artifacts

Currently builds Linux and macOS artifacts only.

### 2. Artifact signing

No code signing is configured.

### 3. Release notes curation

The workflow uses autogenerated GitHub release notes. A structured
CHANGELOG.md is maintained separately.