AFT v0.26.2 makes home-directory project roots usable for migration tasks instead of refusing them outright, and brings a handful of CI and release-pipeline fixes.

## Home-directory project roots

Opening OpenCode (or Pi) from `$HOME` previously threw `HomeProjectRootError` and the plugin refused to spawn a bridge at all. That blocked legitimate migration tasks — dotfile sweeps, shell config maintenance, machine-setup scripts — that genuinely need to run from `~`.

`$HOME` bridges now spawn in **auto-degraded mode**:

- `read`, `write`, `edit`, `bash`, `aft_outline`, `aft_zoom`, `aft_safety` all work normally
- `search_index` and `semantic_search` auto-disable (so we don't try to trigram-index `~/Library/Caches`)
- `aft_navigate` (callers, impact, trace_to, trace_data) returns `project_too_large` because the project root is over the callgraph file-count cap
- The TUI sidebar shows a red `Degraded` badge with `home_root` as the reason
- `/aft-status` reports the same in its dialog and markdown output

Same behavior applies if the canonical project root resolves to `$HOME` through a symlink chain (Stow-style dotfiles, chrooted containers, etc.), so the previously confusing `~/.dotfiles → /home/user` setup is covered too.

The search-index threshold also catches very large project trees more honestly: if the synchronous source-file count exceeds 20,000, search is auto-disabled with a `search_too_many_files:20000` reason instead of starting an index build that would never realistically be useful.

## Fixes

- **Configure no longer times out on `$HOME`.** Two synchronous walks ran before degraded-mode detection: the source-file count walk (bounded by `take(20_001)` but still traversing millions of non-source files first) and the nested-`.gitignore` discovery walk (`max_depth(8)` across `~/Library/*`). Both now skip when the project root is `$HOME`, dropping configure time from a 30s timeout to roughly 1-2s.
- **Linux CI flake in `findBinarySync` resolved.** Bun runs test files concurrently in one process and `process.env` is process-shared; broad env mutations in one test could be clobbered by parallel tests between the precondition spawn and the subsequent `findBinarySync` call. The resolver now snapshots `process.env` once at entry and uses that snapshot for cache path, PATH lookup, and cargo fallback, so concurrent test env mutations can't slip in.

## Release pipeline

Discord release announcements now fire inline from the release workflow's `discord-announce` job. The previous standalone workflow only ran on manual dispatch because GitHub suppresses `release: published` events triggered by `GITHUB_TOKEN`. The manual workflow (`discord-release.yml`) is preserved as a re-fire override.

## Upgrade notes

No config changes required. Existing project bridges keep working unchanged. If you've been working around the `$HOME` refusal with a placeholder subdirectory, you can drop the workaround.
