Printable idea sheet
first_paint_startup
reqlan rq/extension/host/activation.rq:39
Katz 0.148
The activity-bar HTML shell is assigned by activity-bar-webview-provider.ts after one event-loop turn ( retry once on invalid-state ).
Host `postMessage` starts only after the webview `ready` handshake; disposed / invalid-state errors are swallowed by safe-webview-post.ts.
Its Svelte app installs the host message listener before mount, then sends the one-shot `ready` handshake from a task queued after its first animation frame.
startup-gate.ts resolves that handshake once; `IndexService.activate` then discovers bases and syncs. If no view opens, a bounded three-second fallback starts the index without any visible first paint to contend with.
Index open / sync requires the host-matching core engine ( rusqlite ); missing `.node` fails activate.
Windows claim / dispose races: webview_claim_race.
- status
- done
- tests
- "../../../packages/extension/test/startup-gate.test.ts", "../../../packages/extension/test/safe-webview-post.test.ts", "../../../packages/analytical/src/index-store/workspace-index.ts"
Interactive page: first_paint_startup