Idea detail
persistence_tiers
reqlan rq/codestyle/typescript.rq:125
block
done
Summary
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.
Navigation
Attributes
| Key | Value |
|---|---|
| apply_to | *.rq".*ui*, *.rq".graph_* |
| implementation | graph-ui-state.ts, table-ui-state.ts, onboarding-state.ts, vscode.ts, vscode.ts |
| status | done |
| tests | graph-ui-state.test.ts, onboarding-state.test.ts |
Ancestor context
No ancestor chain recorded.
Outbound references
Inbound references
| Kind | Idea | Path | Snippet |
|---|---|---|---|
| references | ui_state_management | reqlan rq/codestyle/typescript.rq | persistence_tiers |
Unresolved references
| Kind | Idea | Path | Snippet |
|---|---|---|---|
| wildcard_reference | reqlan rq/extension/workspace-summary/ideas_summary/*.rq.*ui* | *.rq".*ui* | |
| wildcard_reference | reqlan rq/extension/workspace-summary/ideas_summary/*.rq.graph_* | *.rq".graph_* |
Local graph
Initialising graph…