# v0.29.1

Patch release with three user-facing fixes uncovered during v0.29.0 dogfooding.

## TUI background bash wakes work without `--port 0`

Plain OpenCode TUI users (without `opencode --port 0`) previously couldn't receive background bash completion reminders. The live-server wake workaround couldn't reach the HTTP listener, and the in-process fallback was disabled to avoid the upstream duplicate-runner bug ([anomalyco/opencode#28202](https://github.com/anomalyco/opencode/issues/28202)).

Now the plugin probes the live server once at startup and picks the best available transport:

- **Live server reachable** (Desktop, `opencode --port 0` TUI): uses the workaround, no duplicate runs
- **Live server unreachable** (plain TUI): falls back to the in-process `promptAsync` so wakes still arrive

The one-time `--port 0` nudge ignored-message is removed. The trace event `bash_completion_wake_prompt_async_start` now carries `wake_client_path: "live-server" | "in-process-fallback"` for post-mortem.

## Schema gap: top-level `bash` field

The `bash` field that graduated out of `experimental.bash` in v0.27.2 was missing from the published `aft.schema.json`. Editors like VS Code reported the field as invalid even though it was accepted. Fixed in `build-schema.ts` and serving immediately from the master schema URL.

## Background bash watchdog: false-positive `Failed` state

The watchdog's `reap_child()` could mark a still-cleaning-up task as `Failed` when the bash wrapper's exit-marker write race lost a single sample. The watchdog now defers the failure decision to the next poll cycle — if the marker is still absent, it declares failure; otherwise the next pass picks it up normally. Adds at most ~500ms latency to genuinely-failed tasks, eliminates the test-suite flake.

Also includes per-test storage isolation in `configure_background` to prevent parallel test instances from replaying each other's background tasks.
