File detail
html_export.rq
reqlan rq/core_analysis/html_export.rq
| Idea | Status | Tags | Summary | Katz |
|---|---|---|---|---|
| html_export | done | `@reqlan/analytical` builds documentation as HTML from the requirement graph ( ["./export.rq".export_pipeline], [analysis_scope] ). Html export should render ideas, attributes, references, and navigable structure suitable for sharing. Pipeline: `NativeAnalysisApi.exportHtml` / `AnalysisRuntime.export` → `reqlan-export` snapshot ( `build_export_snapshot` ) → multi-file static site ( `write_html_export` ). Single-file mode remains optional via [html_export_runtime_modes]. Interactive graph / search JS stays bundled static assets ( [html_export_graph_layout] ), not a second writer ( ["./rust_port.rq".export_rust] ). Thin hosts: extension UI ( ["../extension/export/export.rq".export_webview], ["../extension/export/html-export.rq".html_export_form], ["../extension/export/export.rq".export_html] ) and CLI ( `reqlan export` / ["../cli/cli_package.rq".commands] ). Export is scoped to a selected ["../bases/base.rq".base] ( not a merged multi-base workspace graph ). [html_export_multi_file] [html_export_internal_links] [html_export_idea_tooltips] [html_export_layout_cards] [html_export_heading_tooltips] [html_export_table_columns] [html_export_search] [html_export_list_views] [html_export_overview_links] [html_export_idea_pages] [html_export_file_pages] [html_export_code_reference_pages] [html_export_cluster_pages] [html_export_graph_page] [html_export_attributes_index] [html_export_attribute_pages] [html_export_printable_pages] [html_export_print_idea_cards] [html_export_print_body_whitespace] [html_export_print_in_page_anchors] [html_export_print_all_attributes] [html_export_print_button] [html_export_print_order_by] [html_export_runtime_modes] [html_export_scrollable_lists] [html_export_header_link] [html_export_url_base] [html_export_katz_column] | 0.201 | |
| html_export_multi_file | Html export should generate a multi-file static site rather than a single document. The export should include page families for overview, ideas, files, code files, clusters, attributes, graph, data, and print-focused pages. | 0.067 | ||
| html_export_internal_links | Every exported idea should have a stable html page path and stable in-page anchors. References, breadcrumbs, search results, graph nodes, cluster members, attribute listings, file listings, and code-file listings should link to html pages rather than only showing text labels. Overview status / tag rollups and list-table facet cells follow [html_export_overview_links]. On the printable report, same-page idea links use those in-page anchors per [html_export_print_in_page_anchors]. Graph node links must follow [html_export_graph_links]. When [html_export_url_base] is set, those same links must be root-relative under the mount prefix so static hosts resolve them with or without a trailing slash. A link `[idea.attribute]` opens that attribute on the idea page. See ["../language/syntax.rq".attribute_namespacing]. A link to an idea shows that idea's body in a tooltip per [html_export_idea_tooltips]. | 0.152 | ||
| html_export_idea_tooltips | done | A link to an idea must show a tooltip when the pointer or keyboard focus rests on the link. The tooltip must show the idea name, the source file, and the idea body text. The tooltip must show the status when the idea has a status. The tooltip must be a styled panel. The tooltip must not use the browser title text. The tooltip must stay inside the viewport. An unresolved reference must not show an idea tooltip. Section and card heading tips follow [html_export_heading_tooltips]. | 0.099 | |
| html_export_layout_cards | done | In interactive runtime mode, detail-page panels ( panel, table-shell, graph-shell ) and entity-card tiles are drag-reorderable within their layout group and collapsible. In interactive mode, cards that are direct children of a page layout group and use panel, table-shell, or graph-shell chrome are width-resizable by column span. Entity-card tiles inside an entity-list layout group are drag-reorderable and collapsible, but they are not width-resizable. Column hide and column width on tables stay separate from card width. Width-resizable cards sit in a responsive multi-column grid and snap to column spans so a card can take one column, several columns, or the full row. Double-click on the card width handle fills the row. A second double-click restores the last non-full span. Collapsed cards ignore fill. Narrow viewports collapse spans so cards stack without horizontal overflow. The full card header is the drag handle. Links, buttons, and inputs in the header still activate on click. The collapse caret stays hidden until the card is hovered or has focus within. Collapse hides the card body and shrinks the card chrome so the layout does not keep empty body space. Card-width and header drag must not lose control to text selection: pointer capture, select lock, and preventDefault on resize pointerdown. Order, collapse, column-span, and fill-restore state persist in localStorage for that page path. Document and print runtime modes keep a static layout with no rearrange, resize, or collapse behaviour. Printable-report idea cards stay outside this idea ( [html_export_print_idea_cards], [html_export_print_order_by] ). Table column chrome follows [html_export_table_columns]. Cross-refs [html_export_runtime_modes], [html_export_heading_tooltips]. | 0.092 | |
| html_export_table_columns | done | In interactive runtime mode, tables inside layout cards let the user hide and resize columns. An eye control on each column header toggles that column. The eye shows when the header cell is hovered or focused. A column-selector control in the table card header opens a multiselect panel with search, select all, clear, and shift-click range selection. Column resize must not lose control to text selection: pointer capture, select lock, and a resize handle above selectable header text. Hidden columns and column widths persist in localStorage for that page path and table. Document and print runtime modes keep all columns visible at default widths with no column chrome. Cross-refs [html_export_layout_cards], [html_export_list_views]. | 0.095 | |
| html_export_heading_tooltips | done | Section headings on layout panels show a short descriptive tip via the styled tooltip panel when pointer or keyboard focus rests on the heading. Entity-card title headings tip with that card's short summary text. Idea title headings tip with the idea summary when present. Heading tips must not use the browser title text. Reuses the tooltip surface from [html_export_idea_tooltips]. Cross-refs [html_export_layout_cards]. | 0.092 | |
| html_export_search | The interactive html export should provide a global search bar and page-local search bars. Search should work offline from generated data bundled with the export. Attribute keys and values should be searchable alongside ideas, files, code files, and clusters. | 0.067 | ||
| html_export_list_views | Html export should provide searchable list views for ideas, files, code files, references, clusters, and attributes. List views should preserve the usability of the current ideas summary tables with counts, sorting, filters, and quick navigation. Every interactive table column should be sortable by header click and filterable with a per-column filter, in addition to any page-level search bar. Navigable facet cells in those tables ( status, tags, paths, attribute values, cluster labels / kinds ) should be links to the matching detail page or to a list page with the matching column filter applied via [html_export_overview_links]. Long lists that sit above other page content follow [html_export_scrollable_lists]. The ideas index count columns follow [html_export_ideas_ref_columns]. Column hide, resize, and selector chrome follow [html_export_table_columns]. [html_export_ideas_ref_columns] [html_export_table_columns] [html_export_attributes_index] [html_export_file_pages] [html_export_code_reference_pages] [html_export_scrollable_lists] [html_export_overview_links] | 0.121 | ||
| html_export_ideas_ref_columns | done | The ideas index table shows inbound reference counts and outbound reference counts in two columns. The first count column is In. The second count column is Out. Each cell shows one integer. Each column has its own header sort and column filter. Filter keys are `in` and `out`. | 0.056 | |
| html_export_katz_column | done | HTML export shows the inbound Katz score ( ["../modelling/advanced_analysis.rq".katz_centrality] ) for each idea. The ideas index adds a Katz column after Out. File idea tables, code-file idea tables, cluster member tables, and attribute idea tables add a Katz column. The printable file sheet, code-file sheet, and cluster sheet add the same column. The idea page and the printable idea sheet show the same score as a metric. The cell text uses 3 decimal places. The sort value is the full score. The filter key is `katz`. File, cluster, and attribute index tables do not show this column. | 0.075 | |
| html_export_overview_links | done | The interactive overview page status rollup, tags rollup, and highlighted clusters must be interactive navigation, not plain labels. Status and tag rollup entries should open the matching status / tag cluster page when [html_export_cluster_pages] is enabled; otherwise they should open the ideas list with the Status or Tags column filter seeded from the rollup key. Highlighted clusters should open the matching cluster page ( or the clusters index when cluster pages are disabled ). List pages must honour URL query parameters that seed per-column filters ( for example `ideas.html?status=todo` or `ideas.html?tags=export` ) so overview and in-table facet links land with the filter already applied. Query keys match stable `data-filter-key` values on table headers; filter values use the same display labels as the rollup ( including Not present / Empty ). Cross-refs [html_export_list_views], [html_export_cluster_pages], [html_export_internal_links]. | 0.103 | |
| html_export_idea_pages | Html export should generate a dedicated page per idea. Idea pages should include summary, attributes, inbound references, outbound references, nearby context, and links to related ideas, files, clusters, graph views, and printable forms. Status and tags are nullable attributes: render them only when present. | 0.081 | ||
| html_export_file_pages | Html export should generate dedicated pages for reqlan source files that host ideas in the export scope. File pages should list hosted ideas, related clusters, and a local graph view when available. Emission defaults on and is controllable via includeFilePages so page families can be flagged in or out without changing the export pipeline shape. Graph nodes and idea source-file links for hosting files should resolve to these pages when enabled. | 0.119 | ||
| html_export_code_reference_pages | Html export should generate dedicated pages for outbound file_reference targets and inbound comment_link code files that are not idea-hosting reqlan files already covered by [html_export_file_pages]. Code-file pages should list referencing ideas and reference labels, and participate in search and navigation. Emission defaults on and is controllable via includeCodeFilePages so this page family can be flagged in or out later. Outbound reference path cells and graph external file nodes should link to these pages when enabled. Comment-linked files: ["../indexer/indexer.rq".index_code_files]. | 0.151 | ||
| html_export_cluster_pages | Html export should support cluster pages that group related ideas. Deterministic clusters should at least include file, folder, tag, and status groupings. Optional computed clusters should use graph or semantic analysis when available without making export correctness depend on them. | 0.080 | ||
| html_export_attributes_index | Html export should provide a searchable attributes index page listing every attribute key used in the export scope. Each attribute entry should summarize distinct values and idea counts, and link to the dedicated attribute page when [html_export_attribute_pages] is enabled. | 0.089 | ||
| html_export_attribute_pages | Html export should generate a dedicated page per attribute key used in the export scope. Attribute pages should show a distribution of distinct values ( counts and share of ideas ), and a searchable full list of ideas that declare the attribute with their values for that key. Emission defaults on and is controllable via includeAttributePages so this page family can be flagged in or out without changing the export pipeline shape. The attributes index, idea attribute tables, and search results should link to these pages when enabled. | 0.078 | ||
| html_export_graph_page | Html export should provide an interactive graph page with search, filters, and links back into idea and cluster pages. The graph should support scoped views for workspace, file, cluster, and idea contexts. The workspace graph page must include every idea in the export scope — blocks, oneliners, and ideasets — and must not apply the interactive Ideas Summary GRAPH_MAX_NODES budget. Ideasets are visible by default with a Hide ideasets / Show ideasets toggle, matching the external-file visibility control ( explicit AST ideasets only — distinct from hosting-file treatment ). Hosting `.rq` files ( implicit ideasets ) use a Files `<select>` — hidden / compound / linked — with option tooltips, per ["../extension/workspace-summary/ideas_summary/graphical_graph.rq".file_treatment_toggle] ( parity with Ideas Summary ). Compound mode draws hittable / draggable bounding boxes with clickable titles; linked mode adds synthetic ideaset nodes that navigate via `hostFilePageUrl` / `pageUrl`. Wildcard fan-out edges ( `wildcard_reference` ) are visible by default with a " Wildcard refs " chip ( same label / default as Ideas Summary ); turning it off client-filters those edges and draws them dotted when on — see ["../extension/workspace-summary/ideas_summary/graphical_graph.rq".wildcard_refs_toggle] and ["../extension/workspace-summary/ideas_summary/graphical_graph.rq".webview_export_graph_parity]. Status and tag filters are multi-select and distinguish [graph_status_tag_filters]. Per-idea, per-file, and per-cluster neighbourhood graphs may still use a capped budget for focused pages. [html_export_graph_links] [html_export_graph_layout] [html_export_graph_animation] [html_export_graph_background_load] [html_export_graph_subject] [html_export_graph_labels] [html_export_graph_label_modes] [html_export_graph_label_auto] [html_export_graph_interaction] [html_export_graph_metadata] | 0.165 | ||
| html_export_graph_links | Graph node hrefs must resolve to idea pages from every export page depth, including nested idea, file, and cluster pages. Node urls should be export-root-relative so path segments such as ideas / are not dropped when resolving from nested pages. When [html_export_url_base] is set, runtime resolution of those urls must honour the mount prefix ( same contract as page and asset hrefs ). External file nodes should resolve to [html_export_file_pages] or [html_export_code_reference_pages] when those page families are enabled. Hosting-file linked nodes ( ["../extension/workspace-summary/ideas_summary/graphical_graph.rq".file_treatment_toggle] linked mode ) prefer `hostFilePageUrl` stamped during graph URL enrichment ( file / code-file page for the idea's `fileUri` ), falling back to a member idea `pageUrl` when file pages are disabled. | 0.117 | ||
| html_export_graph_layout | The interactive export graph should lay out nodes so labels and circles do not heavily overlap. Initial placement should settle with the same Obsidian-style force model as [layout_physics] ( central gravity, edge springs, inverse-square repulsion ). Rendering uses canvas 2 d ( not SVG DOM ) with shared physics from ["../../packages/extension/webviews/shared/graph/physics-core.js"], inlined into the export asset ["../../crates/reqlan-export/assets/app.js"]. | 0.121 | ||
| html_export_graph_animation | Live physics in the HTML export should match Ideas Summary animatePhysics: continuous damped semi-implicit Euler using the defaults from ["../../packages/extension/webviews/shared/graph/physics-core.js"] ( same module as ["../../packages/extension/webviews/shared/graph/graph-physics.ts"] ), inlined in ["../../crates/reqlan-export/assets/app.js"]. A Live physics toggle pauses and resumes the same simulation state ( default off ); when off, the graph batch-settles then sleeps. Batch settle must remain responsive per [html_export_graph_background_load] — yield between chunks rather than freezing the page for large graphs. Simulation should converge and sleep when calm, waking on filter changes or when Live physics is turned back on, aligned with [layout_physics]. Large graphs use a spatial grid + repulsion cutoff in the shared core; all nodes and full labels remain visible. | 0.093 | ||
| html_export_graph_background_load | done | Interactive HTML export graph boot and layout settle must not monopolise the main thread on large graphs. Page chrome ( nav, filters, search, other controls ) should stay responsive while the graph initialises. Graph wiring should start after the first paint / idle opportunity rather than synchronously blocking `DOMContentLoaded`. When Live physics is off, the initial batch settle should run in yielded chunks ( animation frames or idle callbacks ) so the browser can paint and handle input between steps; keep the boot spinner until the first usable canvas frame, then show progressive settle status. A new filter / refresh or remount must cancel any in-flight background settle before starting another. Cross-refs [html_export_graph_page], [html_export_graph_animation], [html_export_graph_interaction]. | 0.093 | |
| html_export_graph_subject | When a graph view has a subject or center idea, that node should be visually distinct from peers and externals. Subject styling should use the brand rust accent against cyan peer nodes. | 0.062 | ||
| html_export_graph_labels | HTML export canvas graphs implement shared [graph_labels] ( full names, no ellipsis truncation ). [html_export_graph_label_modes] [html_export_graph_label_auto] | 0.062 | ||
| html_export_graph_label_modes | done | Export-surface wiring for [graph_label_modes]: Labels control on every interactive export graph cycles auto / on / off; Reset restores auto. | 0.070 | |
| html_export_graph_label_auto | done | Export-surface wiring for [graph_label_auto]: canvas paint applies continuous zoom opacity ( GRAPH_LABEL_FADE_START → GRAPH_LABEL_FADE_END ); hover / drag stays fully opaque. Labels stay fully invisible while the graph is initialising or batch-settling so text paint does not lag those phases; zoom fade applies only after settle completes. Zoom and Fit from [html_export_graph_interaction] / [manual_reframe] update opacity each paint. | 0.081 | |
| html_export_graph_interaction | The interactive export graph should support dragging nodes and panning or zooming the viewport, aligned with [view_controls] and [manual_reframe]. Click-through to idea pages must remain available after drag via click-versus-drag discrimination. A Fit control should reframe the viewport to the current node set without restarting layout or clearing live physics state. Zoom and Fit must continuously drive [graph_label_auto] / [html_export_graph_label_auto] opacity when Labels is in auto mode. When ["../extension/workspace-summary/ideas_summary/graphical_graph.rq".file_treatment_toggle] is compound: file bounding boxes are hittable — drag moves member nodes together; clicking the underlined title navigates to the hosting file page ( when `hostFilePageUrl` / `pageUrl` is present ). When linked: synthetic file ideaset nodes are dragged and clicked like other leaves. Related: ["../extension/workspace-summary/ideas_summary/graphical_graph.rq".file_treatment_toggle], ["../extension/workspace-summary/ideas_summary/graphical_graph.rq".webview_export_graph_parity]. | 0.085 | ||
| html_export_graph_metadata | Graph nodes in the HTML export should surface tags, status, and attribute keys on or beside the node, not only as filter inputs. Attribute values declared on the idea should be reachable from the graph via the idea page and on-node attribute key summary. | 0.062 | ||
| html_export_printable_pages | Html export should provide static printable pages alongside the interactive site. Print pages should not depend on the interactive javascript bundle. Status and tags are nullable: when absent, printable sheets must omit those fields rather than inventing placeholders such as unspecified or empty dashes. When print pages are browsed in interactive runtime mode, long lists with content below them follow [html_export_scrollable_lists]. Idea cards on the printable report follow [html_export_print_idea_cards], [html_export_print_in_page_anchors], [html_export_print_all_attributes], and [html_export_print_button]. Stored idea body spaces on print pages follow [html_export_print_body_whitespace]. Ordering of cards on the printable report is tracked by [html_export_print_order_by]. | 0.174 | ||
| html_export_print_idea_cards | done | The printable report page lists ideas as cards in a single column that must remain within the page width on narrow viewports — no horizontal spill from long summaries, file paths, refs, or attribute values. Cards use a one-column grid ( `minmax(0, 1fr)` ) and wrapping / overflow rules so content reflows instead of overflowing the layout. Stored idea body spaces on these cards follow [html_export_print_body_whitespace]. Cross-refs [html_export_printable_pages], [html_export_print_in_page_anchors], [html_export_print_all_attributes]. | 0.153 | |
| html_export_print_body_whitespace | done | The printable report must show the idea body text that the parser stores. Each per-idea printable sheet must show the stored idea body text. The parser removes the base indent. The base indent is the indent of the first body line. Extra indent on a later line is part of the body text. A later line with 4 more spaces than the first body line is stored with those 4 spaces. Print HTML must keep those leading spaces. Print HTML must not collapse those spaces. The body text must still wrap inside the card width. Cross-refs [html_export_printable_pages], [html_export_print_idea_cards]. | 0.110 | |
| html_export_print_in_page_anchors | done | On the printable report page, each idea card has a stable html `id` derived from the idea identity. Cross-idea links rendered on that page ( title links and inline idea refs in summaries / attributes ) must resolve to same-page `#` fragment urls targeting those ids, not separate idea detail pages. When browsed with the sticky site topbar, fragment navigation must leave the target card fully visible below the header ( scroll padding / scroll-margin ), not clipped behind it. Aligns with stable in-page anchors in [html_export_internal_links]. Cross-refs [html_export_printable_pages], [html_export_print_idea_cards]. | 0.145 | |
| html_export_print_all_attributes | done | Printable report idea cards and per-idea printable sheets must show every declared attribute for the idea, not only status ( or status + tags ). Attribute values that contain idea refs follow the link rules of the hosting print surface ( [html_export_print_in_page_anchors] on the report page ). Cross-refs [html_export_printable_pages], [html_export_idea_pages]. | 0.110 | |
| html_export_print_button | done | Printable report and printable idea sheets include a Print control that opens the browser print dialog ( `window.print` ). The control must work without the interactive javascript bundle ( inline handler is acceptable ) and should be hidden in the printed output. Cross-refs [html_export_printable_pages]. | 0.090 | |
| html_export_print_order_by | todo | The printable report should support ordering idea cards by a chosen field or attribute ( for example name, status, file path, or a custom attribute key ). Consumers should be able to select or configure the sort so printed documents follow a deliberate sequence rather than only the default export order. Not implemented yet — tracked for a follow-up. Cross-refs [html_export_printable_pages], [html_export_print_idea_cards]. | 0.120 | |
| html_export_runtime_modes | Html export should support a richer interactive site mode and a leaner document or print-oriented mode from the same export manifest. Template identifiers should select real rendering behavior rather than metadata only. Scrollable list viewports from [html_export_scrollable_lists] apply only in interactive mode; document and print modes keep full-length lists. | 0.079 | ||
| html_export_scrollable_lists | In interactive runtime mode, long list and table sections that have additional content below them should render inside a scrollable viewport with a max height so lower sections remain reachable without endless page scrolling. Toolbar titles and filters for those sections should stay outside the scroll viewport. In document and print runtime modes, those same lists should expand to their full natural height so the export remains readable as a continuous document and suitable for printing. Browser print of interactive pages should also expand constrained lists to full height. | 0.117 | ||
| html_export_header_link | done | Html export should accept an optional header link ( href + label ) rendered in the topbar ahead of section navigation. Hosts such as the marketing site build can set this so readers can return to the parent site from any exported page. When omitted, the topbar shows only the export section nav. Site embed consumption: ["../site/site.rq".spec_html_export]. Often paired with [html_export_url_base] when the export is mounted under a parent static site. | 0.222 | |
| html_export_url_base | done | Html export should accept an optional urlBase mount prefix ( for example `/spec` or `/reqlan/spec` ). When set, page and asset hrefs must be root-relative under that prefix so static hosts resolve correctly whether the directory URL includes a trailing slash. When omitted, exports keep document-relative hrefs suitable for local folder browsing. Applies across [html_export_internal_links] and [html_export_graph_links]; site embed consumption: ["../site/site.rq".spec_html_export]. Often paired with [html_export_header_link] when the export is mounted under a parent static site. | 0.259 |
Related clusters
community
file
folder
status
status
status
tag
Local graph
Initialising graph…