- Windows clients no longer force isReady(true) on mount: the validation
effect owns isReady on every path, so persisted tabs are server-validated
before xterm connects (previously Windows could attach to a dead session
first and recover via 4004).
- isWindowsBrowserClient() matches 'Windows NT' minus 'Windows Phone' so
phone UAs are not needlessly denied first-tab auto-create.
- normalizeActiveTab() now also collapses MULTIPLE active tabs to the first
active one (zero-active was already handled), and readTabsFromStorage
drops malformed persisted entries individually instead of discarding the
whole payload's valid siblings via the outer catch.
- Regression tests for all four paths.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>