OpenTrApp v0.3.0 — Delightful Sloth
OpenTrApp grew up — every screen is now a real surface, not a placeholder.
v0.3.0 is the first build I'm comfortable putting in front of someone non-technical. v0.2.0 was the hardened-but-clunky release; this one is the same security model, presented in a way Karen can actually navigate.
What changed since v0.2.0
- Home is real — 7-state hero card, backend status aggregator, proactive alerts banner, daily use-case tip.
- Discover is real — 19-entry use-case gallery with one-click Telegram deep-links.
- Preferences is real — keys (with auto-restart on rotation), notifications (with OS permission gate), startup (actually wired through), re-run setup, advanced mode.
- Lifecycle ownership — app start ⇒ perimeter up; graceful exit ⇒ perimeter down; SIGKILL reaped on next launch. New
paused_by_userstate with cross-restart durability. - No spending dashboard — Anthropic Console already does this better than we ever could. The Spending tile is now a clean deep-link.
Karen's full journey, before vs. after
| Moment | v0.2.0 | v0.3.0 |
|---|---|---|
| Returning use (Home) | 3.8 | 9.0 |
| Monitoring (Security) | 4.9 | 8.5 |
| Adding tools (Discover) | 4.9 | 9.0 |
| Setting changes (Preferences) | 4.9 | 8.7 |
| Crash & recovery | ~7 | 9.0 |
The Pass-1 cliff at moments 4–7 is closed.
Quality bar
- 56 / 56 Rust unit tests
- 175 / 175 vitest tests
- 25 / 25 Playwright e2e tests
- 42 / 42 orchestrator-check (0 warnings)
- 28 banned terms enforced on every commit (no developer jargon leaks)
- Production build: 85 KB gzipped
Full release notes: docs/release-notes-v0.3.0.md
Pre-ship audit: docs/specs/2026-05-02-pass-8-preship-walk.md
Known limitations carried into Pass 9 (post-launch polish)
- ErrorBoundary still shows raw
error.message(friendlier copy queued). - macOS / Windows install copy still says "Podman Desktop" (rename queued).
- Help page is a friendlier placeholder (diagnostic-bundle button + FAQ queued).
- Security Monitor is a friendlier placeholder (real content from vault-proxy logs queued).