# Phantty v0.17.0

## Highlights

- Added opt-in tab session persistence. Enable
  `restore-tabs-on-startup = true` in your config and Phantty will save
  the current tab/split layout when you close the last window, and rebuild
  it on the next launch. SSH targets reconnect using the stored
  host/user/port, but always re-prompt for credentials - passwords are
  never written to disk. Local shells reopen at their last reported cwd.
- Improved the Phantty Remote console on mobile and desktop: mobile remote
  terminals keep the useful output anchored more reliably, the browser IME
  viewport is handled better, canvas dragging works again, and desktop
  remote sessions now support middle-drag panning plus a canvas scrollbar.

## Session Persistence

- Added `restore-tabs-on-startup` to the config parser, defaults, README
  config table, and user-facing docs.
- Added `%APPDATA%\phantty\session.json` session storage next to the normal
  config file path.
- Added snapshot and restore support for tabs, nested split trees, local
  shells, and SSH leaves.
- Wrote session files through an atomic replace path, with `.bak` fallback
  handling for corrupt or unreadable session JSON.
- Hardened restore behavior for corrupt files, forward-compatible JSON,
  out-of-range active tab indices, and invalid split ratios.
- Added tests covering session JSON round trips, nested splits, SSH leaves,
  corrupt backup behavior, and the guarantee that SSH passwords are never
  serialized.

## Remote Console

- Restored and refined mobile remote canvas dragging, viewport sizing, and
  bottom anchoring so recent output stays reachable while the virtual
  keyboard or browser viewport changes size.
- Added desktop remote canvas panning with the middle mouse button.
- Added a desktop remote canvas scrollbar and wheel handling for large
  remote terminal surfaces.
- Fixed remote host anchoring, sidebar collapse behavior, and bottom
  clipping in the remote terminal area.
- Persisted remote sidebar collapse state in browser storage.
- Added and updated remote client tests for canvas panning, viewport layout,
  mobile text input, storage, version labels, and virtual keyboard behavior.

## Fixes and Changes

- Fixed a crash that could happen after closing a split, caused by stale
  split hit-test/render caches still pointing at the removed surface.
- Reverted the spatial split focus shortcut to `Alt` + arrow keys (was
  briefly changed to `Ctrl+Shift` + arrows in v0.16).
- Removed the unreachable pure `Alt` + arrow terminal sequence path so those
  keys are owned consistently by split focus.
- Updated README and website shortcut tables to match the `Alt` + arrow split
  focus binding.
- Added the approved session persistence design and implementation plan under
  `docs/superpowers/`.
