v0.80.6 — ai::* script bindings + workflow polish
First tagged release since v0.77.13 — closing out a long arc whose
centrepiece is the new ai::* Rhai script-engine binding plus
four built-in subprocess backends.
Highlights
ai::* script bindings (since 0.79.0)
Recon's Rhai engine can now ask an LLM a question and consume the
answer mid-script:
```rhai
let req = ai::request()
.backend("claude")
.system("Reply yes or no.")
.context("Status: 200 OK")
.context("Server: nginx/1.27.0")
.prompt("Is this an HTTP success response?");
print(req.send());
```
Built-in subprocess backends (no API keys, no SDK dependency — just
whatever CLI you already have authenticated):
| Backend | Invocation | Notes |
|---|---|---|
| `claude` | `claude -p --output-format text` | Anthropic Claude Code |
| `codex` | `codex exec` | OpenAI Codex CLI |
| `copilot` | `copilot -s --no-color` | GitHub Copilot CLI (standalone, GA Oct 2025) |
| `gemini` | `gemini --prompt` | Google Gemini CLI |
| `cmd` | user-defined argv from `[ai.backends.]` in `~/.recon/config.toml` | Escape hatch for new agent CLIs without recompiling |
Configuration precedence: per-request → env (`RECON_AI_BACKEND`,
`RECON_AI_MODEL`, `RECON_AI_TIMEOUT`) → `[ai]` config section.
Four focused demo scripts ship alongside the kitchen-sink `ai.rhai`:
- `script/ai-simple.rhai` — smallest builder use
- `script/ai-system.rhai` — `.system()` steering same prompt
- `script/ai-context.rhai` — accumulating `.context()` blocks
- `script/ai-multiturn.rhai` — manual `.assistant()` + `.user()` replay
--encode-hints (since 0.78.0)
New flag exposing rxing's `encode_with_hints` API for the Aztec and
PDF417 encoders. Keys: `charset`, `eclevel`, `aztec-layers`,
`pdf417-compact`, `pdf417-compaction`, `pdf417-auto-eci`, `margin`.
Workflow & polish
- `--editor URL` (space-separated) now works — clap's greedy value
consumption gets a rescue path (0.77.14). - OUT-OF-SCOPE.md bucket-discipline sweep moved ~20 items out of
"Waiting" into their honest bucket (0.78.1). - Codebase-wide clippy sweep: 46 → 0 warnings (0.80.1).
- Stale `v0.78` version targets removed from `--ja3`/`--ja4`/
`--http2-fingerprint` docs (0.80.3). - CLAUDE.md workflow doc closures: post-merge rebuild hygiene,
consolidated four-file version-bump table, `--features impersonate`
in the test rule, worktree-base-ref drift documented, and
`script/README.md` enforcement extended to all new `.rhai` files
(0.80.5, 0.80.6).
Patch detail
```
0.77.14 --editor URL-grabbing rescue
0.78.0 --encode-hints (rxing Aztec/PDF417 tuning)
0.78.1 OUT-OF-SCOPE.md bucket discipline sweep
0.78.2 three compiler-warning fixes
0.79.0 ai::* Rhai script-engine bindings + builder API
0.80.0 built-in copilot backend (GitHub Copilot CLI)
0.80.1 codebase-wide clippy sweep, 46 -> 0 warnings
0.80.2 close two CLAUDE.md exposure-policy gaps from 0.80.0
0.80.3 drop stale v0.78 version target from --ja3/--ja4/H2-fp docs
0.80.4 four focused ai::* demo scripts
0.80.5 CLAUDE.md post-merge hygiene rule
0.80.6 four more CLAUDE.md workflow-gap closures
```
Build & test status
- `cargo build --release` — 0 warnings.
- `cargo build --release --features impersonate` — 0 warnings.
- `cargo clippy --release` — no issues.
- `cargo test --release` — 1413 passed, 2 ignored.
- `cargo test --release --features impersonate --test impersonate_it` — 5 passed.
Install
```sh
cargo install recon-cli # from crates.io
or from this tag:
cargo install --git https://github.com/codedeviate/recon --tag v0.80.6 recon-cli
```
See `CHANGELOG.md` for full per-version detail and `HISTORY.md`
entries #73 (ai::* design rationale) and #74 (copilot backend
rationale) for the long-form design notes.