Code reference detail
vscode.ts
packages/extension/webviews/activity-bar/lib/vscode.ts
| Idea | Status | Tags | Summary | Katz |
|---|---|---|---|---|
| persistence_tiers | done | Three persistence tiers — pick the shallowest that matches lifetime: 1. `acquireVsCodeApi().getState` / `setState` — ephemeral webview session ( pane expand / heights, active tab ). 2. `ExtensionContext.workspaceState` — durable UI prefs shared across reloads ( graph / table UI keys under `reqlan.ideasSummary.*`, optionally per-base ). Normalize + default on read ( `normalizeGraphUiState` / table defaults ); never trust raw JSON shape. 3. `ExtensionContext.globalState` — install / user-level flags ( e. g. onboarding ), not pane view-models. Debounce persist posts ( ~ 200 – 250 ms ) when UI controls churn. Related: [webview_app_state]. | 0.050 | |
| postmessage_clone_safety | done | Before `postMessage` from a Svelte webview, JSON-clone payloads ( `JSON.parse(JSON.stringify(...))` ) so `$state` proxies remain structured-clone safe. Shared helpers live in each webview's `lib/vscode.ts`. | 0.040 | |
| scope | TypeScript package standards for `packages/extension` ( npm `reqlan-extension` ), especially UI state. Complements [development_core.rust_mindset] and [extension_architecture.state_machine_mindset]. Webview inventory: [webview_doc.webview]. Package role: [core_architecture.extension_package]. | 0.040 |
Reference labels
"../../packages/extension/webviews/activity-bar/lib/vscode.ts", ../../packages/extension/webviews/activity-bar/lib/vscode.ts