Skip to content

Connect Chrome extension to desktop VAV’s built-in daemon - #30

Merged
Obooman merged 5 commits into
mainfrom
cursor/desktop-extension-connect-5633
Sep 6, 2026
Merged

Connect Chrome extension to desktop VAV’s built-in daemon#30
Obooman merged 5 commits into
mainfrom
cursor/desktop-extension-connect-5633

Conversation

@Obooman

@Obooman Obooman commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Problem

The Chrome extension looked for standalone vavd on 127.0.0.1:4752. Desktop VAV 1.19.0 already embeds vavd, but spawned it with --no-web, so auto-discover failed. Pasting a Connect vav-daemon://… line or an http:// URL also failed: the extension treated URLs as secrets and still required /discover.

Change

  • Desktop spawn now starts the loopback web bridge (/discover + ws://…/vav) on the embedded daemon — same secret as Connect.
  • When desktop runs in-process (--no-vavd / e2e), it starts the same bridge on the in-process hub.
  • Side panel copy talks about the desktop app, not npx vavd.
  • Paste accepts vav-daemon://…, http(s)://…, and ws(s)://…, then attaches even if scan missed the port.
  • Service worker runtime.onMessage now handles pair (side panel port already did).

Tests

  • Pairing paste unit tests (vav-daemon://, http/ws, raw secret) — CI
  • spawnLocalVavd({ noWeb: false }) serves /discover — CI
  • In-process desktop web bridge test — CI
  • Playwright (local Chromium): auto-discover, http URL paste, and Connect vav-daemon:// paste each complete a stub turn
  • Electron e2e (macOS CI): spawned desktop vavd is discoverable on 4752–4762 and accepts a phone hello — all 12 test:e2e:vavd passed

CI: macos-14 and windows-latest green on 842539d.

You need a desktop build from this branch (released 1.19.0 still starts --no-web). After that, open VAV, then the extension — no separate vavd.

Open in Web Open in Cursor 

cursoragent and others added 4 commits September 5, 2026 02:34
Desktop now starts the loopback web bridge on the embedded daemon (and in-process when there is no child). The side panel auto-discovers it, and a pasted Connect URI or local http/ws URL attaches to the same secret.

Co-authored-by: Oboo Cheng <oboochin@gmail.com>
…dge.

Electron e2e now boots with VAVD_SPAWN, waits for /discover on 4752–4762, and completes a phone hello over /vav.

Co-authored-by: Oboo Cheng <oboochin@gmail.com>
Desktop 1.19.0 users open the app, then the side panel — or paste the
Connect vav-daemon:// line. Cover both against a desktop-style spawned
vavd (web on 4752) through a real Chrome extension turn.

Co-authored-by: Oboo Cheng <oboochin@gmail.com>
runtime.onMessage ignored type=pair, so pasted Connect lines never
reached the service worker. Accept that message, take the host name
from welcome, and assert auto-discover plus vav-daemon:// paste against
a uniquely named desktop-style vavd.

Co-authored-by: Oboo Cheng <oboochin@gmail.com>
@Obooman
Obooman marked this pull request as ready for review September 6, 2026 04:18
Keep the phone-ui side panel from main. Keep this branch’s desktop-daemon pairing tests, now using the shared 420×800 launch helper and desktop session layout assertion.

Co-authored-by: Oboo Cheng <oboochin@gmail.com>
@Obooman
Obooman merged commit 32ef0f6 into main Sep 6, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants