mirror of
https://github.com/pbakaus/impeccable.git
synced 2026-09-12 22:26:38 +03:00
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>
41 lines
1.0 KiB
JSON
41 lines
1.0 KiB
JSON
{
|
|
"name": "Vite 8 + TanStack Start (SSR, root-document adapter)",
|
|
"config": {
|
|
"files": ["src/routes/__root.tsx"],
|
|
"insertBefore": "<Scripts",
|
|
"commentSyntax": "jsx"
|
|
},
|
|
"sourceFiles": [
|
|
"src/routes/__root.tsx",
|
|
"src/routes/index.tsx",
|
|
"src/router.tsx",
|
|
"vite.config.js"
|
|
],
|
|
"generatedFiles": [],
|
|
"wrapCases": [
|
|
{
|
|
"name": "wraps index hero in routes/index.tsx",
|
|
"args": { "classes": "hero-title", "tag": "h1" },
|
|
"expectedFile": "src/routes/index.tsx"
|
|
}
|
|
],
|
|
"runtime": {
|
|
"styling": "plain-css",
|
|
"install": ["npm", "install", "--no-audit", "--no-fund", "--loglevel=error"],
|
|
"devCommand": ["npm", "run", "dev"],
|
|
"readyPattern": "Local:\\s+https?://[^:]+:(\\d+)",
|
|
"readyTimeoutMs": 180000,
|
|
"pickSelector": "h1.hero-title",
|
|
"reloadProbe": {
|
|
"expectSelector": "h1.hero-title"
|
|
},
|
|
"probe": {
|
|
"expectLiveInit": true,
|
|
"expectConsoleClean": true
|
|
},
|
|
"steer": {
|
|
"sourceFile": "src/routes/index.tsx"
|
|
}
|
|
}
|
|
}
|