reqlanOverviewIdeasFilesCode filesClustersAttributesGraphPrint
Ideas/activation_sequence

Idea detail

activation_sequence

reqlan rq/extension/activation.rq:21

block

Summary

`activate` is synchronous and non-blocking in main.ts; it never awaits startup work so the UI is available as soon as possible. It runs the following phases:
1. Register reference inlay-hint and CodeLens configuration / commands synchronously.
2. Call analytical_submodule_activation — registers commands, activity bar, chat, webviews, AI commands, and mutation hooks synchronously and returns without starting indexing.
3. Register import-error quick-fix commands when the analytical submodule registered.
4. Arm first_paint_startup so index startup cannot race the activity-bar shell.
5. Invoke onboarding_check without awaiting it, so onboarding cannot block activation.
Submodule failures are logged and do not prevent later phases from running.

Jump to outbound references

Jump to inbound references

Navigation

Source file

reqlan rq/extension/activation.rq

community 9

community cluster

activation.rq

file cluster

reqlan rq/extension

folder cluster

status: Not present

status cluster

tag: Not present

tag cluster

Printable page

Static print-friendly idea sheet.

Attributes

No attributes declared.

Ancestor context

analytical_submodule_activation

Analytical submodule registration is implemented in ["../../packages/extension/src/analytical_submodule/index.ts"]. `activateAnalyticalSubmodule` is synchronous: VS Code contributions ( commands, activity bar provider, chat participant, webviews, AI commands, mutation hooks ) register synchronously and it returns the submodule immediately. It does not start indexing; it passes the activity-bar post-paint callback into the provider and the caller starts index activation through [first_paint_startup].

first_paint_startup

The activity-bar HTML shell is assigned synchronously by ["../../packages/extension/src/activity_bar_module/activity-bar-webview-provider.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. ["../../packages/extension/src/extension/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. Parser services inside each `WorkspaceIndex` are lazy and are created only when a file is actually parsed, not while bases are discovered. The sql. js asm implementation is emitted as a separate lazy vendor bundle, so loading `main.cjs` does not parse the database engine before `activate`.

onboarding_check

Post-install onboarding is checked on every activation, not via a dedicated install event. ["./onboarding/page-thanks-for-installing.rq".installation_event_trigger] is satisfied because `activate` always calls ["../../packages/extension/src/extension/open-thanks-for-installing.ts"]. The check reads global state key `onboarding` via ["../../packages/extension/src/extension/onboarding-state.ts"]: - `onboardingMessageShown` — when false, open the onboarding webview panel via ["../../packages/extension/src/extension/onboarding-panel.ts"]. - `lastVersion` — updated each activation after the message has been shown so future releases can detect extension updates. The call is fire-and-forget; errors are logged and do not fail activation.

Outbound references

KindIdeaPathSnippet
file_reference ../../packages/extension/src/extension/main.ts packages/extension/src/extension/main.ts main.ts
references analytical_submodule_activation reqlan rq/extension/activation.rq analytical_submodule_activation
references first_paint_startup reqlan rq/extension/activation.rq first_paint_startup
references onboarding_check reqlan rq/extension/activation.rq onboarding_check

Inbound references

KindIdeaPathSnippet
None

Unresolved references

KindIdeaPathSnippet
None

Local graph

Initialising graph…