Live mode had no TanStack coverage: a TanStack Start user hit disconnects
and static previews because there is no static index.html to inject and no
adapter for the SSR root document.
- New tanstack-adapter.mjs, modeled on the SvelteKit/Nuxt adapters: detects
a TanStack Start project (@tanstack/react-start + src/routes/__root.tsx)
and patches the __root document to mount a generated dev-only React
component (src/impeccable/ImpeccableLiveRoot) that appends the live bundle
on the client after hydration, carrying the ?token= param via
buildLiveScriptSrc. Patch/unpatch round-trips byte-for-byte and is
idempotent; refuses to clobber an unmanaged file at the component path.
- Wire detection into live-inject.mjs (insert + remove + gitignore),
ordered so SvelteKit/Nuxt win and a plain TanStack Router SPA falls
through to the baseline Vite index.html path.
- tanstack-router-vite fixture (baseline, no adapter) and tanstack-start
fixture (SSR adapter), both with runtime blocks. Both pass the full
live-e2e cycle (handshake, steer, pick, Go, cycle, accept, carbonize,
reloadProbe).
- Unit tests for detection + patch round-trip + apply/remove; tanstack-start
branches in framework-fixtures.test.mjs; live.md framework table + adapter note.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>