Roadmap

What's shipped, what's in flight.

Today — MCP-first, four surfaces

Hover is an open-source Vibe Testing suite organised around four surfaces and one artifact:

SurfaceRoleStatus
MCP@hover-dev/mcpauthor — add it to your own agent; /mcp__hover__test_app explores + crystallizes a suite✅ Shipped (on npm)
VS Codehover-devreview — an optional Business Map + Dashboard cockpit; drives no agent✅ Shipped (Marketplace)
CIrun — the crystallized specs run on every PR as plain Playwright✅ Shipped
Cloudwatch — hosted parallel runs, monitoring, flakiness dashboard, on-failure self-healPlanned

The through-line is the artifact: owned, portable @playwright/test in your repo and your CI. The AI authors it once; nothing AI runs after.

Recently shipped

  • API testing. Hover passively captures the app's browser traffic off the same CDP connection (no proxy) and crystallizes the checks worth pinning into a plain *.api-test.spec.ts — verified with replay_request first, so no status code is confabulated.
  • Self-heal — mode A (local, on-demand). /mcp__hover__heal replays a saved spec against the live app, finds the first drifted step, and re-grounds only that step. Record == replay preserved.
  • Page Object extraction. NON-login flows repeated across specs are lifted into pages/ + fixtures.ts and the specs folded onto them — deterministically.
  • Auth as a fixture. A detected login is lifted into an auth.setup.ts setup project that logs in once and reuses storageState; the password is redacted to process.env.HOVER_PASSWORD.
  • The .hover/ test wiki, self-maintaining. Your app's knowledge compounds across runs and stays honest on its own: progressive recall (recall_business_knowledge returns an index once rules pile up; recall_fact pulls one on demand), /mcp__hover__lint (cross-checks the map against your specs + run ledger for drift), relationships (a ## Relationships block records depends-on / shares-state / navigates-to edges between flows), a run log (.hover/log.md, an append-only history), and /mcp__hover__ask (answer a question from the wiki, with citations).

What's next

  • The wiki, rendered. Surface the new wiki data in the cockpit: relationship edges in the Business Map graph, drift badges from lint, and a timeline from the run log. The data ships today; the views are next. No source uploaded.
  • CI-driven self-heal (mode B). A red CI run offering to heal the drifted spec automatically. Local, on-demand heal ships today; the CI-triggered path is planned.
  • Hover Cloud (planned, not shipped). A hosted layer over the specs you already own: parallel runs, scheduled monitoring, and a flakiness dashboard. Authoring always stays local and free; the cloud only ever runs and monitors specs you already own — never authoring lock-in.

Version history

How Hover got here. The engine evolved through the version line below; today it ships as the @hover-dev/mcp server (and the optional VS Code cockpit).

VersionThemeStatus
v0.0.1-pocPhase 0 — end-to-end feasibility (claude -p drives Chrome via CDP)✅ Shipped
v0.1.xPhase 1 — Vite plugin + chat UI + persistent service + Save as Spec✅ Shipped
v0.2.xPhase 2 — multi-agent (claude + codex), dark widget v2, Result + Findings cards, custom tooltip✅ Shipped
v0.3.x@hover-dev/next — Next.js 16+ Turbopack-native integration✅ Shipped
v0.4.xClick → Suggest fix prompt✅ Shipped
v0.5.xMerged Record + Assert workflow (Record / Exists / Says / Equals sub-toolbar)✅ Shipped
v0.6.xVoice mode — push-to-talk STT + spoken progress narration, browser-native, zh/en autodetect, Chrome 139+ on-device✅ Shipped
v0.7.xSecurity testing + plugin API@hover-dev/api-test (HTTPS MITM, captured-flow inspector, IDOR / authz probing MCP) + defineHoverPlugin manifest API behind it✅ Shipped
v0.8.xMulti-framework source attribution + integration overhaul — JSX / Vue / Svelte / Astro data-hover-source stamps via the private @hover-dev/transform-source; @hover-dev/next gains plugin support via register()'s second arg✅ Shipped
v0.9.xWidget plugin-UI protocol + cursor-agentwindow.__HOVER_WIDGET__ host API (namespaced CSS / DOM mutations / toolbar buttons / overlays / WS message handlers / lifecycle); @hover-dev/api-test migrates onto it; cursor-agent joins the registry✅ Shipped
v0.10.xMulti-tab agent reliability + 3 more agents — system-prompt addendum for popup checkouts / OAuth chains / post-popup state, pnpm bench-multi-tab for A/B'ing prompt changes, two-step card+OTP examples/payment-provider, aider + gemini-cli + qwen-code in the registry✅ Shipped
v0.11.xSpec resilience: ⟳ Re-record + Saved-sessions overlay + FAQ — when a saved spec breaks (UI changed), Re-record button (widget) or pnpm hover re-record <spec> (CLI) replays the JSDoc Original prompt: against the current UI and overwrites the file. Widget gains the Skills+Specs tabbed overlay (Save-as-Skill later retired — spec + Re-record covers replay; the overlay is now Specs + Seeds). README + docs site gain a top-level FAQ explaining why we don't self-heal at CI time✅ Shipped
v0.12.xSecurity spec recording semanticsreplay_flow MCP tool gains intent + expectStatus parameters that record the replay as a security check. Save-as menu sprouts a "Security spec" entry that writes __vibe_tests__/<slug>.api-test.spec.ts — plain Playwright with the request fixture, one test() per recorded check. Also: server HoverPluginManifest.saveHandlers + widget WidgetPluginSpec.saveEntries plugin extension points✅ Shipped
v0.13.xRecord/replay parity — (1) visibility prelude in writeSpec emit ({ const el = …; await expect(el).toBeVisible(); await el.<action>; }) makes UI drift fail in ~3 s with Locator expected to be visible instead of 30 s actionability timeout; (2) Record mode emits page.goto as the first step (was: spec started on about:blank and failed mysteriously); (3) opt-in "Reload before recording" setting aligns record-time and replay-time starting state. Plus a ?drift=on visibility-drift lab and 9 new vitest cases✅ Shipped
v0.14.xSingle-Chrome security + landing site — security mode drops its second browser (one debug Chrome; a hover:service:start hook sets launch flags), gethover.dev lands, the widget gains --mode-accent plugin theming + CJK output mirroring✅ Shipped
v0.15.xStructured spec output + CLI mode — named test.step Given/When/Then stages, .hover/<slug>.json sidecars, Page Objects + fixtures (hover extract), Promise.all popup / upload / download pairing, the off-by-default AI optimization pass (hover optimize — diff-reviewed candidate, original always kept, // KNOWN BUG flagging), the .hover/rules/ seed library (full catalogue ships built-in), terminal-native hover run, an optional model API key passed to the spawned CLI's env, the addsetup rename, and one Clack-style frame across every command. Save-as-Skill retired (spec + Re-record + seeds cover it)✅ Shipped
v0.16.x–v0.22.xMCP-first maturityAPI testing (passive CDP capture → replay_request verify → deterministic *.api-test.spec.ts), self-heal mode A (replay_spec drift detection + the /mcp__hover__heal prompt, plus a "🏥 Heal in agent" CodeLens in the cockpit), Page Object extraction (detect_shared_flows + extract_page_objects), and auth as a fixture (auth.setup.ts setup project + HOVER_PASSWORD redaction + scaffolded playwright.config.ts)✅ Shipped (you are here)
VS Code extension (hover-dev)The review cockpit — a Business Map graph of your flows + coverage and a Dashboard (pass / fail / flaky + CI results), optional AI optimize pass, PR-CI workflow generation. Optional — it reviews, it doesn't drive the agent.✅ Shipped (on the VS Code Marketplace)
@hover-dev/mcpThe authoring engine — an MCP server you add to your own agent (BYO-CLI). Grounded actuation tools + crystallize_spec + the test_app prompt; record == replay, deterministic crystallize.✅ Shipped (on npm)

For real-time tracking, see github.com/Hyperyond/Hover/issues.