# Phantty v0.13.0

This release introduces Phantty Remote: a web console for viewing and controlling
the current Phantty instance from a browser.

## Highlights

- Added a Cloudflare Worker based remote console with single-user login,
  signed cookies, Durable Object WebSocket relay, and a static `xterm.js`
  frontend.
- Added one shared RemoteClient per Phantty instance so all tabs and split
  panels publish through the same remote session key.
- Added per-tab and per-panel remote layout mirroring, including latest visible
  terminal snapshots instead of replaying scrollback history.
- Added remote input routing to the selected surface, so browser input lands in
  the matching local Phantty panel.
- Added clickable/copyable remote session key support in Phantty's in-window
  remote status pill and command center.

## Remote workflow

Enable remote access in the Phantty config, point `remote-server-url` at your
deployed relay, then start Phantty. Phantty generates a one-time session key for
that running instance. After signing in to the web console, enter the session
key to pair the browser with the active Phantty session.

Once paired, the browser mirrors the current tab and split layout. Click a
remote panel and type to send input to that same local panel.

## Fixes and polish

- Fixed remote output management so split panels no longer mix unrelated tab or
  panel output into one browser terminal.
- Fixed remote cursor placement and blinking for newly created WSL and terminal
  panels.
- Improved browser focus handling so remote typing is less likely to lose focus
  after output or layout refreshes.
- Persisted the browser-side session key across page refreshes.
- Removed the extra local approval step for remote input; a paired browser can
  type immediately after connecting.
- Fixed a RemoteClient queued-message leak seen during PTY output forwarding.
- Added SSH keepalive settings to reduce idle disconnects behind NAT.

## Deployment notes

Copy `remote/wrangler.toml.example` to `remote/wrangler.toml`, configure the
local route/domain there, set the Worker secrets, then run `npm run build` and
`wrangler deploy` from the `remote` directory. Keep `wrangler.toml` local so
deployment-specific domains and settings are not committed.
