# FixThis v0.3.0

FixThis v0.3.0 closes the v0.3 first-run trust program, lands the
project-risk-closure build/release hardening, and rolls up a wave of console
UX fixes for the saved-annotation flow, boundary dialog, and silent-return
dead-ends.

## Highlights

- **v0.3 first-run trust — follow-up complete.** Six deferred items plus the
  pre-existing `console:smoke` failure are closed: a 403 reload CTA banner, a
  clipboard fallback that no longer marks items handed off, the new
  `CAPTURE_UNAVAILABLE` readiness state for screenshot 404 / semantics-only
  captures, late-SSE / preview-poll drop on session mismatch, a stale-draft
  conflict policy with `ETag` / `If-Match` plus a new `staleDraftConflict`
  boundary variant, and the `previewStaleBadge` regression fix that gated
  `console:smoke`.
- **Project risk closure (2026-05-17).** Detekt baseline ratchet,
  preserved `compare-perf` exit code in the `perf-report` workflow, release
  tarball SHA-256 verification on both shell and npm installers, a release
  consumer minify fixture (`ReleaseConsumerFixtureTest`), and auditable
  scheduled-gate promotion via `npm run checks:observation --json
  --require-ready`.
- **Console UX repairs.** Boundary dialog 3-button layout fix and gated
  "Start annotating" entry, session-delete dialog wiring, toasts for the
  silent-return dead-ends (context drift, recovery block, undo empty stack,
  device picker change ignored, capture/annotate preconditions), real
  Cmd+Z / Cmd+Shift+Z undo/redo, saved-annotation actions consolidated into
  the inspector footer, and `data-boundary-action` preserved on hidden
  dialog buttons.
- **Build / perf.** Console bundle minified via esbuild with explicit
  `// @requires` source resolution; reproducible build/test performance
  harness under `scripts/perf/` with a committed baseline and nightly
  `perf-report` workflow.

## Compatibility

- Bridge protocol version is unchanged at `1.3`.
- External Android apps should bump the Gradle plugin to
  `io.github.beyondwin.fixthis.compose` version `0.3.0`.
- Persisted JSON contract is unchanged.
- The new `/api/items/batch` `ETag` / `If-Match` flow is backward-compatible:
  the legacy client path still works when the header is omitted.

## Agent install

From a Jetpack Compose Android app repository:

```bash
# macOS
brew install beyondwin/tools/fixthis

# npm
npm install -g @beyondwin/fixthis

# macOS/Linux fallback without package managers
curl -fsSL https://raw.githubusercontent.com/beyondwin/FixThis/main/scripts/install-fixthis.sh \
  | bash -s -- --version v0.3.0

fixthis install-agent --project-dir . --target all
./gradlew fixthisSetup
fixthis doctor --project-dir . --json
```

Restart Claude Code or Codex after MCP config is written, then use
`fixthis_open_feedback_console`.

## See also

- [CHANGELOG.md](../../CHANGELOG.md) — full `[0.3.0]` entry.
- [docs/contributing/release-readiness.md](../contributing/release-readiness.md) —
  current channel status.
- [docs/reference/bridge-protocol.md](../reference/bridge-protocol.md) —
  bridge protocol version stayed at `1.3`.
