Referenced by30
Labels6

Referencing ideas

IdeaStatusTagsSummaryKatz
active_base_switchdoneChanging the active base is a **pointer swap** onto a per-base `WorkspaceIndex` / store. - Do **not** await soft-sync, hard-rebuild, or a full `.rq` walk on the switch call itself. - Host surfaces rebind views to the newly active store ( status snapshot, tables, context panes ) immediately. - If the selected base is not yet ready, show its readiness / progress and **schedule** the normal activate catch-up ( open if needed, then one soft sync ) fire-and-forget — same path as ["../indexer/indexer.rq".triggers] / ["../extension/index-host/graph-analysers.rq".indexing_trigger_open], not a special switcher rebuild. - Idle staleness checks only touch bases that are already open; they must not reopen every discovered base ( ["../extension/index-host/sqlite-artifact-lifecycle.rq".release_when_idle] ). - Open failures stay isolated per base so one bad base cannot leave siblings stranded in `uninitialized`. - Editor-follow must not overwrite a user pin on the same refresh that applies the selection. - Inactive bases release SQLite artifacts when the active pointer moves away ( ["../extension/index-host/sqlite-artifact-lifecycle.rq".sqlite_artifact_lifecycle] ). Surfaces: activity bar ["../extension/local-context/activitybar-panels/workspace.rq".workspace_base_picker], Ideas Summary ["../extension/workspace-summary/ideas_summary/base-scope.rq".ideas_summary_base_scope]. Implemented by [editor_index_adapter] ( `setActiveBaseId` / `scheduleBaseCatchUp` ); engine: [base_registry] `ensureBaseReady` / `releaseArtifacts`, [workspace_index] `ensureReady` / `deactivate`.0.093
baseA base is a container for ideas, ideasets, and files. It forms the boundary of one ideas graph and is consumed by the CLI and the extension. Marker: a directory is a base only when it owns a `.reqlan` folder ( [app_memory_doc.application_memory] ). No bare workspace folder is treated as a base until the user creates `.reqlan` there ( [create_base_onboarding] ). Aligns with [ontology_base]. Discovery and registry: [base_discovery], [base_registry]. Marker path helpers: [application_memory_impl].0.322
refresh_rediscovers_basesdoneManual Refresh ( command `reqlan.refreshIndex`, activity-bar / Ideas Summary Refresh buttons ) and Clear & rebuild must **always rediscover** `.reqlan` markers under workspace roots before soft-sync or rebuild. Do not skip discovery when bases are already registered — a new nested or sibling base created on disk must appear after Refresh. Discovery and registration live in [base_registry] ( `refresh` → `rediscover` → optional `ensureBaseReady` for the active base ). The extension adapter ( [editor_index_adapter] ) calls that analytical API; it must not invent a parallel discovery walk. Create Base follows the same refresh path after [create_base_impl] so the new marker is visible immediately ( [create_base_onboarding] ). Related: [multi_base_environment], ["../extension/index-host/graph-analysers.rq".indexing_trigger_manual], ["../extension/index-host/sqlite-artifact-lifecycle.rq".event_driven_base_access].0.075
host_webview_ownershipdoneThe extension host owns durable data, index / analysis queries, and VS Code APIs. The webview owns presentation state and posts intents ( search, navigate, persist UI prefs, export ). Host session objects ( e. g. activity-bar context session ) mutate on the host and push snapshots to the webview; the webview must not invent a second source of truth for the same domain fields. Typed message modules define the contract; keep request ids / error scopes on async host calls.0.050
scopeTypeScript 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
activationVS Code loads the extension host entry at ["../../../packages/extension/src/extension/main.ts"] when an activation event in ["../../../packages/extension/package.json"] matches. The exported `activate(context)` function is the single activation entry point for [scope.vscode_extension]. Install-time and first-run sequencing across extension vs base layers: ["./installation.rq".installation_sequencing]. Startup failure diagnosis, first-paint sequencing, bundle splitting, and development-host lessons: ["./startup-performance.rq"].0.064
first_paint_startupdoneThe activity-bar HTML shell is assigned by ["../../../packages/extension/src/activity_bar_module/activity-bar-webview-provider.ts"] after one event-loop turn ( retry once on invalid-state ). Host `postMessage` starts only after the webview `ready` handshake; disposed / invalid-state errors are swallowed by ["../../../packages/extension/src/shared/safe-webview-post.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. Index open / sync requires the host-matching core engine ( rusqlite ); missing `.node` fails activate. Windows claim / dispose races: ["./startup-performance.rq".webview_claim_race].0.148
extension_startup_reliabilitydoneReqlan 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
webview_claim_racedoneSetting `webview.html` or calling `postMessage` before the workbench has claimed the overlay ( or after it has disposed it ) can fail with `Webview is in an invalid state` / `Webview is disposed`. This is intermittent and more common on Windows during extension init, when the activity-bar view is restored in the same tick as another webview ( first-run onboarding ). Contract: - Activity-bar host posts only after the webview's `ready` signal; `post` is a no-op until then and swallows disposed / invalid-state errors. - `resolveWebviewView` may run more than once: dispose prior view listeners, clear `webviewReady`, rebind, reassign HTML. - First-run onboarding waits for the activity-bar paint gate or 400 ms, whichever first, so it does not register a second webview service worker during sidebar claim. Palette `reqlan.showOnboarding` stays immediate. Index and language-client startup still use the existing paint / timeout fallbacks — a dead sidebar must not strand indexing. [first_paint_contract] [activation.onboarding_check] ["../../../packages/extension/src/activity_bar_module/activity-bar-webview-provider.ts"] ["../../../packages/extension/src/extension/main.ts"] ["../../../packages/extension/src/shared/safe-webview-post.ts"]0.091
current_file_panePrimary contextual pane when a. rq file is active. Sub-sections may collapse independently. [scope_pane] [reference_lists_pane] [parent_nodes_pane]0.046
unresolved_reference_createdoneWhen an outbound reference remains unresolved after shared resolution ( missing idea, not a file / namespace-alias target ): - Do **not** treat the label as a file path or navigate to a non-existent file. - Show an unresolved badge and a ** + ** control with tooltip " Create idea ". - Activating ** + ** opens create-idea ( reuse [commands.pallete_function_create_todo] when available; until then, the existing import-error create-file flow prefilled with the reference name and source document ). Implemented by [ReferenceListsPane] and the activity-bar host message handler.0.064
search_add_to_chatdoneFrom each [search_pane] hit, a split **Add to chat** control: - Primary button: place compact `#requirement` context into the **current** chat input without submitting. - ▾ menu ( visible secondary affordance ): **Add to current chat** or **Add to new chat** ( new session, then seed the same payload ). Tooltips name both behaviours; secondary is not right-click-only. Same payload shape as ["../../agent/features-ai.rq".add_to_chat] ( idea name, path: line, summary ) via [open_chat]. Host: [open_chat] with `{ query, isPartialQuery: true, target: 'current' | 'new' }`. Cursor note: do not use `workbench.action.chat.open` for **current** ( it always opens a new tab ); see ["../../agent/features-ai.rq".add_to_chat] / [open_chat]. Clipboard fallback when no chat command is available ( same spirit as ["../../agent/features-ai.rq".add_to_chat] ). Wire: [AddToChatButton] / [SearchPane] → [app_state] `addToChat(hit, target)` → [activity_bar_messages] → [activity_bar_webview] → [open_chat].0.071
search_panedoneWorkspace idea search in the activity bar — find rq ideas by name, summary, or tags without leaving the sidebar. Complements the modal from [commands.search_code_actions]; this pane stays open for repeated lookups and inserts. Implemented by [SearchPane] under [CollapsiblePane]; host wire in [activity_bar_webview] / [activity_bar_messages] / [app_state]. [search_pane_query] [search_pane_layout] [search_pane_results] [search_pane_open_live_file] [search_pane_load_more] [search_pane_file_hits] [search_pane_insert_reference] [search_add_to_chat] [search_pane_advanced] [search_pane_empty_query] [search_pane_scoped_status] [search_progress] [search_pane_seed] [search_pane_match_highlighting]0.176
search_pane_file_hitsdone[search_pane] mixes [core_search.file_search] hits ( kind `file` ) into the ranked list with ideas. Click opens the file at line 0. File hits do not offer Insert ref or Pin ( those are idea actions ). Empty-state and placeholder copy mention files.0.115
search_pane_load_moredoneWhen ranked hits exceed the visible page, [search_pane] shows an exceeded-count label ( `40+ matches`, or `{n}+ matches` after further pages ) instead of a full total, and a **Show more** control at the bottom of the list that fetches the next page and appends. A new query resets to the first page. Uses [core_search.fuzzy_search_pages] ( `offset` + `truncated` ).0.095
search_pane_seeddoneHost may seed [search_pane] via `focusIdeaSearch` ( query + optional pathFilter ) from the wildcard-matches webview **Open in Search** action ( ["../../../language/imports.rq".wildcard_references_webview] ). Path filter is a hard AND after ranking ( ["../../../language/imports.rq".idea_path_filter] ).0.090
search_progressdoneActivity-bar search ranks in the native [core_search.fuzzy_search] module ( rusqlite read + score in-process ). The host must not hydrate a JS idea catalog or worker before scoring — return only the capped hit list. A static " Searching … " / " Loading … " label must not be the only signal: the pane should show **live progress** so a slow wait reads as working, not hung. - Host posts progress for the in-flight search request while native scoring runs ( `Scoring ideas…` ). - [SearchPane] displays the phase label with a continuous activity affordance ( spinner / indeterminate bar ) and elapsed time while loading, for both the empty initial wait and the " Updating … " refresh path. - Stale progress from superseded queries must not overwrite a newer request; clear progress when results or a scoped error arrive.0.080
todo_panedoneWorkspace 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
workspace_base_pickerdoneBases in the Workspace pane are chosen via a **searchable dropdown**, not a stacked list of base rows. - Closed: shows the active base label ( and compact ready / issue hint when useful ). - Open: type-to-filter over discovered bases by label and path; selecting a match **pins** the active base ( [bases.active_base_switch] ) — a pointer swap, not a sync. - Options surface label / path plus ready state and idea / edge / issue counts so the user can distinguish bases before committing. - Single-base workspaces still use the same control ( no special flat list ); empty discovery stays on the Create Base CTA. - Prefer VS Code dropdown tokens for chrome; keep the control compact so health / stats / actions remain the focus of the pane. Switch UX: - Selecting a base posts immediately; the picker may flash **Switching … ** until `indexHealth` confirms `activeBaseId` ( should be near-instant ). - Never kick soft / hard sync on switch; readiness / progress for a not-yet-ready base is whatever the index already reports. - Editor-follow must not overwrite a user-selected base on the same refresh that applies the selection. Implemented by [BasePicker] in [WorkspacePane]; filter helpers in [filter_bases].0.072
workspace_paneMulti-base index health, errors, and activity — without duplicating the full Index tab in [ideas_summary_doc.index_panel]. - [workspace_base_picker]: choose the active base; do not render a full always-visible base list. - For the selected base: state badge, sync progress ( processed / total + current file ), idea / edge counts, global and per-file errors, recent activity. - Clickable file issue list opens the source location in the editor. - Refresh / cancel in-flight sync / clear & rebuild for the selected base ( or all ); " Open index tab " hands off to [ideas_summary_panel] with that base selected. - When no bases exist: empty state with Create Base CTA ( [bases.create_base_onboarding] ). Non-blocking sync UX: ["../../../indexer/indexer.rq".nonblocking_index]. Implemented by [WorkspacePane].0.146
activity_barThe extension should provide an activity bar sidebar for editor-adjacent requirement context per [local_graph_view]. UI is implemented as Svelte webview panes per [development_core], not as a long-lived tree of static rows. The host loads slices from the index via [indexer.local_graph_analysis] and forwards editor focus through [activity_bar_webview] and [activity_bar_data]. Panes should be performance conscious: capped neighbourhoods, lazy cytoscape mount, debounced cursor updates — same discipline as [webview_doc.webview]. Workspace-wide tables, full layout controls, and unconstrained graph dumps belong in Ideas Summary per [ideas_summary_doc.ideas_summary]; panes link out with prefilled state instead of duplicating those views.0.115
component_listPriority 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
info_site_linkThe header shows an info control that opens the project site in the system browser. Link id `site` from [phonebook_reqs.phonebook] per [phonebook_reqs.activity_bar_site_link]. Resolved in the extension host via ["../../../packages/extension/src/shared/phonebook.ts"] ( canonical data in ["../../phonebook.json"] ), not hardcoded in the webview. The webview receives the resolved label and href from [activity_bar_webview] and posts `openPhonebookLink` when the user activates the control.0.059
lean_resolved_opendoneWhen a link already carries a resolved `fileUri` / `targetPath`, open that URI at the given line — do not re-classify resolution or walk base discovery on the click path. Pass the active base root into ["../../../packages/extension/src/analytical_submodule/index-store/open-index-file.ts"] so ["../../../packages/extension/src/analytical_submodule/index-store/resolve-index-file-uri.ts"] skips tree discovery. `toIndexFileUri` fallbacks ( editor selection, git chrome, open-tab scan ) must use ["../../../packages/analytical/src/core/base-discovery.ts".nearestBaseRoot] ( ancestor `.reqlan` walk ), never `discoverBases` ( full workspace scan ). Clicking a search hit that already has `fileUri` + line must not wait on catalog scoring or base rediscovery.0.045
link_open_decoupled_from_gitdoneOpening a resolved idea / file link must not await git focus history or idea-at-revision parsing. Host posts index-backed context ( scope, references, graph, ancestors ) first; [current_context_scope.git_history_lens] enrichment runs asynchronously afterward and may re-post context when ready. Light git chrome ( branch / dirty from the VS Code git API ) may ride along with the first paint; `git log -L`, `git show` + Langium parse-at-revision, and focus stats must not block open or the first context post. Implemented by ["../../../packages/extension/src/activity_bar_module/activity-bar-webview-provider.ts"] and ["../../../packages/extension/src/activity_bar_module/git-context.ts"].0.059
link_open_interactive_quietdoneProgrammatic and editor file-switch navigation share the interactive quiet path with webview `openIdea`: cancel in-flight search / refresh and briefly suppress editor-driven pane rebuilds so the open settles before context rebuild. Selection moves within the same document keep the short debounce only ( no full interactive cancel ). Document-link / go-to-definition opens that change the active file are covered by active-editor-switch quieting. Implemented by ["../../../packages/extension/src/activity_bar_module/activity-bar-webview-provider.ts"].0.045
loading_statedoneAfter 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_viewThe 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
extension_ui_consumersVS Code surfaces that query the live ideas store through [editor_index_adapter]: - Activity bar workspace / search / minigraph / todo ( [activity_bar_host] ) - Ideas Summary panel ( [ideas_summary_panel] ) — prefer paged SQL and capped graph queries - Reference-search and wildcard-match panels ( may call `listAllIdeas`; see [cache_reuse.avoid_full_list_all_ideas] ) - Chat / AI commands that call `getFileContext`, `getLocalGraph`, or semantic search - Refactor and mutation hooks that read inbound edges from the store - Name and attribute catalog sync that pushes index rows into the language server The Rust language server may open the ideas index read-only for rename, find-references, and fallback completion. Open-file inbound inlays and file CodeLens use the host-pushed snapshot first ( no SQLite in those handlers ). [index_consumers]0.086
index_consumersdoneModules that read or write [ideas_schema.ideas_index_sqlite] / [index]: - Engine write / read: [workspace_index], Rust sync / store under [ownership] - Extension adapter: [editor_index_adapter] ( watchers, Uri conversion, multi-base ) - Headless: [analysis_runtime] for [cli_package] and [mcp_server] - Activity bar: [activity_bar_host] ( ideas-in-file, hop refs, search via fuzzy ) - Ideas Summary: [ideas_summary_panel] ( table SQL, graph slices, overview ) - Search: [fuzzy_search], [file_search] - Check / analyse / export: [check], analytical export APIs - Local graph: [local_graph_analysis] Product aliases: [index_ideas], [index_technology], [consumption]. Related: [cache_reuse.index_cache_reuse], ["./sequencing.rq".index_sequencing].0.169

Reference labels

"../../../../packages/extension/src/activity_bar_module/activity-bar-webview-provider.ts", "../../../packages/extension/src/activity_bar_module/activity-bar-webview-provider.ts", "../../packages/extension/src/activity_bar_module/activity-bar-webview-provider.ts", ../../../../packages/extension/src/activity_bar_module/activity-bar-webview-provider.ts, ../../../packages/extension/src/activity_bar_module/activity-bar-webview-provider.ts, ../../packages/extension/src/activity_bar_module/activity-bar-webview-provider.ts