# Beige Threat plugins

Audio plug-ins by Beige Threat. Currently ships:

- **Tunnels** — phase-distortion synthesiser. VST3 / AU / CLAP / Standalone on
  macOS, Windows, and Linux.

## Repository layout

- `plugins/<name>/` — per-plugin source, tests, presets, and packaging.
- `modules/` — shared libraries linked into every plugin:
  - `thanet` — UI design system and primitives.
  - `bt_dsp` — shared DSP utilities.
  - `bt_auth` — licensing / unlock plumbing.
  - `bt_assets` — generated design-system binary data.
- `cmake/`, `tools/` — build infrastructure.

## Build

The dev shell is Nix-flake-based and pins every toolchain (Clang, CMake, Ninja,
ccache, just, validators). With `nix` installed:

```sh
nix develop -c just ci-pr   # fast PR gate (build + unit tests)
nix develop -c just ci-full  # full hosted build + pluginval
```

Outside Nix, install the toolchain listed in `flake.nix` manually.

## Release

Releases are cut by [release-please](https://github.com/googleapis/release-please).
Merging the open release PR tags every package in the suite (Tunnels plus each
shared module), and the per-plugin release workflow then builds, signs, and
publishes installers from those tags.

Happy path:

1. Merge the release-please PR.
2. Confirm the `Tunnels-vX.Y.Z` tag exists.
3. Watch the `Release Tunnels` workflow for that tag.
4. Confirm the GitHub release has macOS, Windows, Linux tarball, and Linux deb assets.
5. Confirm `tunnels/releases.json` on the file host lists the new version.
6. If the website deploy fails after assets are published, rerun the failed job instead of rebuilding installers.

Manual `Release Tunnels` dispatch is for dry-run artifacts and signing checks; publishing is tag-only.
