# v0.9.3 GitHub Release body — draft for the user to paste

**Status: not yet posted. Open https://github.com/AmrDab/clawdcursor/releases/new?tag=v0.9.3 and paste below as the release body.**

**Title:** `v0.9.3 — tool-layer fixes + live-test report + capability-first README`

---

Three critical tool-layer bugs found by a focused audit, plus a fourth (Windows window-title UTF-8 corruption) and a fifth (Linux CI segfault on stdin EOF) surfaced during a full end-to-end live test driving clawdcursor as an actual AI agent from Claude Code. README hero repositioned to lead with capability; SKILL.md frontmatter keeps the strict 4-gate for AI agents.

## Highlights

### Security / correctness
- `navigate_browser` PowerShell shell injection (Win32) — direct `execFile` against `msedge.exe` now, no shell shim
- `screenshot_full` MIME mismatch — declared PNG, returned JPEG; `mimeType` now follows actual frame format
- `learn_app` silent no-op — returned `saved:true` when nothing persisted; now tracks write flags + returns `saved:false` with reason
- `dashboard.looksLikeCredential` extended — now also catches Stripe, GitHub PATs, Slack, AWS access keys, Google OAuth, JWTs, `sk-proj-` OpenAI keys (was missing all of these)

### Windows
- Window-title UTF-8 corruption fixed — `scripts/ps-bridge.ps1` and `scripts/ocr-recognize.ps1` now force `[Console]::OutputEncoding = UTF-8`. Non-ASCII titles, OCR text, and clipboard contents survive the round-trip to Node.

### Linux
- CI cross-platform.yml now green on Ubuntu (Node 20 + 22). The orphan-teardown test was tripping a SIGSEGV during native-subsystem (nut-js / libxdo / libvips) cleanup in headless CI — restructured to validate the orphan logic (lockfile-unlinked) regardless of platform teardown quirks.
- Carries upstream commit deferring `process.exit` via `setImmediate` to avoid libuv stream-unwind segfault on Linux.

### Tool-surface schema
- `direction` enum on `computer({action:'scroll_horizontal'})` was silently dropping `left`/`right` (first-wins delegate field-merge race with `mouse_scroll`'s `up`/`down`). Compact dispatcher now unions enum values across delegates.
- `task` and `delegate_to_agent` descriptions now lead with `**Requires the \`clawdcursor agent\` daemon to be running**`, so an LLM calling them from a stdio MCP context gets the right next-step.

### README positioning
- Hero leads with capability instead of restraint. The "Use as a fallback, not first choice" callout moved to a new `When NOT to use it` subsection under `Why Clawd Cursor`. SKILL.md frontmatter unchanged — it still enforces the strict 4-gate for AI agents reading the skill registry.

### Documentation artifacts (`docs/internal/`)
- `0.9.2-live-test-2026-05-16.md` — first end-to-end test report. Canonical loop on Win11 Notepad, daemon HTTP MCP transport, 14 graded findings.
- `0.9.3-tool-coverage-2026-05-17.md` — companion breadth test. ~88% of the 50-action surface exercised. 9 new bugs flagged for 0.9.4.
- `issue-13-reply-draft.md` — draft response to the long-open security audit issue, listing what 0.9.x has addressed.

## What's NOT in this release (already flagged for 0.9.4)

- `accessibility.find` / `list_children` / `state` / `get_element` — scope mismatch; they search something that isn't the foreground tree.
- `window.minimize` / `restore` — silent failure path; bare `"X request failed."` with no detail.
- `type_text` drops non-keyboard Unicode (em-dashes, smart quotes).
- `submit_task` no-LLM error message conflates "stdio host" with "daemon has no LLM."
- `system.detect_app` missing entry for Claude Desktop.
- `system.shortcuts_list` returns macOS-only entries on Windows.
- `system.ocr` returns 58 KB per screen; needs a `compact:true` mode.
- Learned-lesson store has no age-out; surfaced two v0.7.5-era stale entries.
- Win11 Notepad close-tab UX needs a `window.close_tab` convenience wrapper.

## Tests + CI

- 51 test files, 812 passing tests (+1 new regression guard for `learn_app`'s no-payload case)
- Cross-platform CI green on Windows + macOS + Linux (Node 20.x, 22.x)
- Lint stable at 18 pre-existing warnings, 0 errors
- Tarball size unchanged from 0.9.2 (715 KB / 312 files)

## Upgrade

Re-run the installer or `git pull` in your existing `~/clawdcursor` clone:

```bash
# fresh
curl -fsSL https://clawdcursor.com/install.sh | bash         # macOS / Linux
irm https://clawdcursor.com/install.ps1 | iex                # Windows

# in-place
cd ~/clawdcursor && git pull && npm install && npm run build
```

Then restart your editor's MCP client (Claude Code: `/mcp` reconnect) to pick up the new binary.

---

Thanks to everyone who pulled main during the v0.9.0 → 0.9.2 churn week — the cadence was rough and the bug-surface was honest about it. 0.9.3 is the settle. The 9 backlog items will follow in 0.9.4 on a slower release rhythm.
