Code reference detail
App.svelte
packages/extension/webviews/activity-bar/App.svelte
| Idea | Status | Tags | Summary | Katz |
|---|---|---|---|---|
| extension_startup_reliability | done | Reqlan startup must make the activity-bar shell and contributed commands available before optional indexing, parser construction, database initialization, or language-client startup can monopolize the extension host. The implementation contract is [first_paint_contract], [webview_claim_race], [deferred_startup_sequence], [lazy_runtime_dependencies], and [development_bundle_freshness]. Operational diagnosis follows [startup_diagnostics]. [activation.activation_sequence] [activitybar.loading_state] [indexer.nonblocking_index] [build.extension_bundle] | 0.046 | |
| first_paint_contract | done | The platform spinner ends only after VS Code loads the host module, calls `activate`, the provider registers, and `resolveWebviewView` assigns HTML. `resolveWebviewView` is async: it binds the view, yields one turn so the overlay can be claimed, then assigns the lightweight HTML / Svelte shell ( retry once on invalid-state ). It does **not** `postMessage` in that method. The webview installs its host message listener, mounts, waits for its first animation frame, then posts the one-shot `ready` signal from a queued task. Host messages start only after that handshake. Index discovery / sync waits for the same signal so synchronous parser or database setup cannot race the first visible frame. Windows overlay restore can dispose and re-resolve the sidebar; the provider rebinds and waits for a new `ready`. [activation.first_paint_startup] [webview_claim_race] ["../../../packages/extension/webviews/activity-bar/App.svelte"] ["../../../packages/extension/webviews/activity-bar/state/app.svelte.ts"] ["../../../packages/extension/src/extension/startup-gate.ts"] ["../../../packages/extension/src/shared/safe-webview-post.ts"] | 0.058 | |
| todo_pane | done | Workspace todo list in the activity bar — ideas that carry the `@todo` special attribute ( [ai_support.special_attributes] ), not ideas whose `@status` happens to be `todo`. Complements the planned Overview todos rollup in [ideas_summary_doc.overview_page]; this pane stays open for quick triage beside the editor. Layout matches [search_panel.search_pane_layout]: flat list in the pane body, not a nested boxed subsection. - List ideas in the active base where the `todo` attribute is present ( bare `@todo` / flag, or `@todo` with a note ). - Each row: idea name, source path, and the todo note when present ( omit empty / bare-true values ). - Click opens the idea in the editor ( same navigation as [search_panel.search_pane_results] ). - Results fill the pane body ( 100 % width ) and scroll inside the pane; do not nest a second capped NestedSection scroll. - List capped ( default ~ 40 ) with a “ showing N of M ” meta line when truncated; do not dump unbounded index results into the pane. - Soft-wait when the index is not ready; scoped errors stay in the pane. - Pane header **Refresh** reloads the list; also reload on index health / sync completion for the active base. - Optional affordance to create a stub via [commands.pallete_function_create_todo] when that command ships — do not block the list on it. Host query + wire: [activity_bar_webview] / [activity_bar_data] / [activity_bar_messages] / [app_state]; store query [sqlite_store]. Implemented by [TodoPane] under [CollapsiblePane]; same scroll / fill pattern as [SearchPane]. | 0.046 | |
| activity_bar_styling | done | Activity bar chrome for the [panes] stack under [ActivityBarApp] / [CollapsiblePane]. - **Open panes fill** the remaining bar height ( flex grow ); collapsed panes stay header-sized. A single open pane takes the full stack; multiple open panes share space by persisted relative weights. - Each expanded pane is **resizable** when more than one is open ( drag handle adjusts weight ); heights / weights persist with expand state via [ActivityBarApp] view state. - The bar itself **scrolls** when minimum pane sizes exceed the webview viewport; otherwise pane bodies scroll internally. - Pane shells **persist** across bootstrap / empty / invalid states — hide or soften **content** inside the pane ( e. g. [SelectionPane] empty copy ), do not unmount the section for phase or missing data. Bootstrap banner remains per [loading_state]; list overflow still uses [panel_content_styling] / [NestedSection]. Layout helpers: ["../../../packages/extension/webviews/activity-bar/lib/pane-layout.ts"]. | 0.054 | |
| component_list | Priority release ( shipped ): - Shell: [ActivityBarApp], HeaderBar ( includes [info_site_link] ), CollapsiblePane in ["../../../packages/extension/webviews/activity-bar/"] - Panes: WorkspacePane, [SearchPane], [TodoPane], ScopePane, SelectionPane, ReferenceListsPane, MiniatureGraphPane, ParentNodesPane, ContextTray - Graph: [MiniGraphCanvas] consuming shared graph lib per [graph_lib] - Host: [activity_bar_webview], [activity_bar_data], wire types in [activity_bar_messages] - HTML: [get_activity_bar_html] - Build: ["../../../packages/extension/webviews/activity-bar/vite.config.ts"] → media / webviews / activity-bar / Deferred ( not in priority release ): - IdeasetPane, FileReferencesPane, RecentPane - [graph_path_doc.graph_path_walk] UI pane - ExportSliceButton - Full workspace export via ["../export/export.rq".export_JSON] and ["../export/export.rq".export_csv] | 0.040 | ||
| loading_state | done | After the activity bar shell mounts, the header may appear before pane data. Cover every sequencing beat with an explicit loading or error affordance — never a blank content area: 1. HTML shell ( before Svelte boots ): inline waiting markup in [get_activity_bar_html]. 2. Connecting: header visible; a post-first-frame `ready` handshake starts the index and requests the first host state. 3. Waiting for index: [workspace_panel.workspace_loading]. 4. Ready panes: [current_context_scope.context_panes_loading], [minigraph.minigraph_loading], and [search_panel.search_progress]. Index sync progress belongs in [workspace_panel.workspace_pane]; graph slice waits stay in [miniature_graph_pane]; idea-search phases stay in [search_panel.search_pane] — not a second global overlay. Host posts index health on `ready` and on subsequent status changes; soft-waits when the index is not ready instead of erroring the whole bar. Pane shells stay mounted through these phases per [activity_bar_styling]; only content / bootstrap banner reflect invalid or loading states. True error states ( status line + bootstrap banner ) must show the error prominently per [error_status_bar]. | 0.063 | |
| local_graph_view | The activity bar provides a local graph view scoped to the current file or selected idea. The local graph should show direct and optionally indirect references with a configurable depth. | 0.055 |
Reference labels
"../../../../packages/extension/webviews/activity-bar/App.svelte", "../../../packages/extension/webviews/activity-bar/App.svelte", ../../../../packages/extension/webviews/activity-bar/App.svelte, ../../../packages/extension/webviews/activity-bar/App.svelte