browserlisted
Install: claude install-skill oldmilky/luno-for-cc
# Browser — drive the panel outside VS Code
The panel normally lives in a `vscode-webview://` frame no tool can attach to.
The bundle only depends on the host in two places — `acquireVsCodeApi()` and
`window.LUNO_MODE` — so stubbing those boots the entire UI on localhost, where
Playwright can screenshot it and read computed styles.
**"Should work" is not a result.** If you changed something the browser renders,
run this before reporting done.
## Start it
```bash
bun run harness # build, serve, print the URL
bun run harness --no-build # reuse webview/dist as-is
bun run harness --mode artifact # the plan-artifact shell instead of chat
bun run harness --port 4599
```
Serves `http://127.0.0.1:4599/`. Leave it running; rebuild and reload rather
than restarting.
## The seam: `window.__luno`
The stub is a **fake host**, not a silent shim. It answers the same boot
handshake the extension host does, so the app reaches its chat state on its own
rather than racing a timer.
| Call | Does |
| ------------------------- | ------------------------------------------------------ |
| `__luno.sent` | every message the webview posted to the host, in order |
| `__luno.sentOf("prompt")` | just those of one type — the usual assertion |
| `__luno.send(msg)` | push a host → webview message |
| `__luno.clear()` | reset the recording