Code reference detail
table-ui-state.ts
packages/extension/src/ideas_summary_module/shared/table-ui-state.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 | |
| 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 | ||
| ui_state_management | done | Extension UI state is explicit, typed, and layered — not a single global store shared across host and webview. Choose the layer by lifetime and owner: - Host session / durable prefs live in the extension process ( `ExtensionContext`, plain modules ). - Webview view-models live in Svelte 5 runes ( `$state` / `$derived` / `$effect` ). - Cross-boundary traffic uses typed `postMessage` contracts only. Prefer small state machines ( named phases, request ids, clear transitions ) over ad-hoc flags. Related: [webview_app_state], [persistence_tiers], [zustand_boundary], [host_webview_ownership]. | 0.080 | |
| table_column_options | Each table has an Options control ( [TableOptionsMenu] ) to show or hide columns. Visibility persists per tab in workspaceState via [table_ui_state]. | 0.073 |
Reference labels
"../../packages/extension/src/ideas_summary_module/shared/table-ui-state.ts", ../../../../packages/extension/src/ideas_summary_module/shared/table-ui-state.ts, ../../packages/extension/src/ideas_summary_module/shared/table-ui-state.ts