Docs /
Web preview
The Website tab (globe icon) is a browser column docked beside the terminals, with a real address bar and working back/forward/reload.
- Each terminal keeps its own page and the preview follows your focus; an agent in a background pane updates its own preview without stealing the one you're looking at.
- Type into the address bar yourself —
localhost:3000opens as a page, free text becomes a Google search. - Sites that refuse to be embedded render anyway — GitHub, Google, most SaaS dashboards.
- Popups and
window.opennavigate the preview in place (press Back to return); the pop-out button breaks the page out into a real OS window. - Zoom — the percentage button in the address bar (default 80%, so more of a page fits the side column; change the default in Settings → Web Preview). Each pane keeps its own level.
- Responsive — the device button switches between Desktop (fills the column), the built-in iPad (820×1180) and iPhone (390×844), and any presets you added. A device gives the page its real viewport width and User-Agent, so sites that choose their mobile version by browser detection switch too. The page reloads when you switch device — like Chrome's device mode — and when the device doesn't fit the column it is shown smaller so you always see all of it. Portrait / Landscape in the same menu rotates the viewport without a reload.
- Your own devices — Settings → Web Preview → Device presets → Add device: a name, width × height in CSS px (portrait) and a User-Agent (Android Chrome, iPhone or iPad Safari). The same page sets the default zoom, device and orientation a new preview starts with.
- Dev servers — when a pane prints a local URL (Vite's
localhost:5173, Next, Metro…), a link chip appears in the pane header; click it to open the preview. In Settings → Web Preview → When a dev server starts choose Open preview to open it automatically (only for a new address — a hot-reload banner never reopens a preview you closed), or Nothing to turn the chip off.
Point an agent at part of the page
Two address-bar buttons turn "that button looks wrong" into a precise request, using the same card tray as the Mobile tab (drag a card onto any pane, or Send all):
- ✂ Capture a region — the page freezes as a snapshot; drag a box, type what should change, press Enter. The crop becomes a card with its own PNG in
.taocoding/captures/. Esc goes back to the live page. Linux only for now; on Windows and macOS the button says so — use the element picker there. - 🎯 Pick an element — hover the page (each element is outlined with its tag and size), click the one you mean, and a request box opens right under it in the page — type, press Enter. The card is text only: the element's CSS selector, text, box, key styles, a short HTML excerpt and — in a dev build — the source file and component (Vue, Svelte and React 18 give file:line; React 19 gives the file and an approximate line). The click never reaches the page, so picking a link or a button does not trigger it. Esc cancels.
Network panel
The ⇅ button in the address bar shows or hides the Network panel, docked under the page (drag the line between them to resize; TAO CODING remembers both choices). It is a devtools-style request log for the focused pane's preview: every fetch and XHR the page makes — status, method, name, type, size, time — plus scripts, stylesheets and images. Failed requests (no response, or status 400+) are red; Failed narrows the list to them and shows their count, Fetch/XHR hides static files, and the filter box matches URL text or a method.
- Click a row for its Headers, Payload (request body) and Response (JSON is pretty-printed).
- Send to agent pastes a summary of that request — method, URL, status, both bodies — into the pane's agent, without pressing Enter: add your question ("why does this 500?") and submit.
- cURL copies the request as a bash
curlcommand to replay it in a terminal. - The bug icon opens the real DevTools for the preview page when you need the full inspector.
- Credentials never leave the page:
Authorization,Cookie,Set-Cookie,X-Api-KeyandX-Auth-Tokenvalues show as «redacted» (and are left out of cURL). Bodies are text-only and cut at 16 KB. - The log restarts when the page navigates, keeps the latest 500 requests, and only lists a request once its answer arrives. The page records even while the panel is hidden, so opening it later still shows what already happened.
Agents get the same log over MCP: preview.network_log, preview.network_request (headers and bodies), preview.reload, and preview.wait_for_request — "reload the page and wait for POST /api/cart" — so an agent can check its own fix end to end.