## Codename-11/hermes-relay — v0.3.0…v0.4.0

_73 commits._

### Features
- **feat(C1-C4): sideload-only tier - location, contacts, call, send_sms** (35808e7)
- **feat(B1): add android_events + android_event_stream** (9bab435)
- **feat(B4): add android_send_intent and android_broadcast** (1ec7a2e)
- **feat(A4): android_describe_node + wire nodeId for /tap and /scroll** (1e5ad14)
- **feat(A5): add android_screen_hash + android_diff_screen** (3543e66)
- **feat(A9): three-tier tapText fallback cascade** (d7ed77e)
- **feat(A6): add android_clipboard_read and android_clipboard_write** (9c4acbc)
- **feat(A10): add android_macro batched workflow tool** (e2ba96b)
- **feat(A7): add android_media system-wide playback control** (dd61db7)
- **feat(A1): add android_long_press gesture tool** (164cdfb)
- **feat(A3): add android_find_nodes filtered search** (83bfa23)
- **feat(A2): add android_drag gesture tool** (5284341)
- **feat(P1): ScreenReader walks all accessibility windows** (a042a4e)
- **feat(A11): add skills/android/SKILL.md agent playbook** (0ace580)
- **feat(A8): add WakeLockManager wake-scope wrapper for gesture dispatch** (78d44ed)

### Fixes
- **fix: update stale version refs 0.1.0 → 0.4.0 in app + user-docs** (e06deac)
- **fix(manifest): flip FGS type override direction for lint compliance** (7420704)
- **fix(docs): use doc layout for privacy policy page (#30)** (d3c41e3)
- **docs + fix: add 3 user-docs pages + expose flavor in bridge status** (513de39)
- **fix(bridge): Play UI gating — toggle label, safety cards, permission rows** (aa67e09)
- **fix(bridge): Play Store hardening — route whitelist, manifest split, UI gate** (be18166)
- **fix(voice-intents): close UI-automation bypass + structured contact phones** (b7dab4c)
- **fix(voice-intents): trust-model language in tool descriptions** (ddd6f70)
- **fix(voice-intents): single-gate _check_requirements + structured 503** (1323dc3)
- **fix(voice-intents): UX polish, chat parity, OEM hardening, portable guidance** (c5cdb45)
- **fix(voice-intents): post-dispatch feedback + clearer bridge-disabled error** (536a131)
- **fix(voice-intents): honest errors, modal lifecycle, and missing LLM tools** (5c763eb)
- **fix(voice-intents): leave a local chat trace so voice actions are visible** (2e51ba9)
- **fix(voice-intents): in-process bridge dispatch via handleLocalCommand** (0c9221f)
- **fix(voice-intents): wire bridge multiplexer into VoiceViewModel.initialize** (a568366)
- **fix(bridge-smoke): foreground hermes app for clipboard round-trip** (85cf6b4)
- **fix(bridge-smoke): bash brace-parsing corrupts every POST body** (63a60ea)
- **fix(action-executor): narrow service param to HermesAccessibilityService** (040d6a1)
- **fix(bridge-overlay): wire SavedStateRegistryOwner on OverlayLifecycleOwner** (612f253)
- **fix(bridge-smoke): /events is GET, not POST** (c65851a)
- **Merge origin/main into feature/bridge-feature-expansion: pick up 4de05c9 bootstrap fix** (27fc43e)
- **fix(bootstrap): drop skills_categories import removed by upstream** (4de05c9)
- **fix(install.sh): widen remote refspec so --branch works on existing clones** (e0866ba)
- **fix(v0.4): close C4 + H5 voice intent TODOs, add install.sh --branch, test_android_read_screen** (12204fd)
- **fix(v0.4): port missing /open_app /get_apps /setup Kotlin handlers + docs sweep** (7755851)
- **fix(v0.4): code-review gap fixes for bridge feature expansion** (8fe34dc)

### Backend
- **release: v0.4.0** (7bed7be)
- **Merge branch 'feature/bridge-feature-expansion' into main** (7e73d6a)
- **Merge feature/doc-spec-status-refresh: 15-item spec rot cleanup** (3dc4194)
- **Merge feature/doc3-spec-bridge-surface: spec.md + decisions.md updates** (fece0a1)
- **Merge feature/doc2-readme-features: README + features doc sweep** (2cc8b76)
- **Merge feature/C1-C4-sideload-perms: location/contacts/call/sms tools** (407efc6)
- **Merge feature/B1-event-stream: EventStore + events/event_stream tools** (937580d)
- **Merge feature/B4-send-intent: raw Intent + broadcast escape hatches** (2da98cd)
- **Merge feature/A4-describe-node: describe_node + nodeId tap/scroll** (25970c3)
- **Merge feature/A5-screen-hash: SHA-256 screen fingerprint + diff tool** (f8b0195)
- **Merge feature/A3-find-nodes: filtered searchNodes tool** (501d0cc)
- **Merge feature/A9-tap-text-fallback: three-tier tapText cascade** (b648721)
- **Merge feature/A7-media: media playback broadcast** (51dead0)
- **Merge feature/A1-long-press: long-press gesture** (c2d9eb3)
- **Merge feature/A2-drag: drag gesture** (cccafa9)
- **Merge feature/A6-clipboard: clipboard read/write bridge** (c5ff028)
- **Merge feature/A10-macro: batched workflow dispatcher** (0424e7f)
- **Merge feature/P1-all-windows: multi-window ScreenReader** (21795a3)
- **Merge feature/A8-wake-lock: WakeLockManager wake scope wrapper** (a732f86)
- **Merge feature/A11-android-skill: per-app playbook** (844dc6a)

### Tests
- **test(bridge): add scripts/bridge-smoke.sh end-to-end smoke runner** (b1f4822)

### Docs
- **docs(user-docs): update release tracks, relay routes, security for v0.4.0** (160dda0)
- **docs: update tool count 14 → 18, remove scroll from voice intents** (29610d2)
- **docs(roadmap): expand v0.4.1 — voice local dispatch + tiered perms + JIT errors** (8d418ef)
- **docs(spec): additional rot pass — 7 more stale items** (3210d38)
- **docs(spec): refresh v0.1.0-frozen status + check off shipped phases** (8e402dd)
- **docs(doc3): document v0.4 bridge surface + new architectural patterns** (af1a862)
- **docs(doc2): update README + user-docs features for v0.4 bridge expansion** (241e0dc)
- **docs: add ROADMAP.md + bridge feature expansion plan** (67c4454)

### Chore
- **chore: commit pre-session working tree changes** (00a9887)
- **chore: fold parallel main-worktree WIP into bridge feature branch** (5cc8036)
- **chore: migrate applicationId to com.axiomlabs.hermesrelay + AGP 9.1.1** (1e72ff4)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/Codename-11/hermes-relay?utm_source=github-action)._