Repository navigation
feat(web): visual insights page behind the insights-visual flag - #714
Conversation
…pulse views Registers the insights-visual flag (default off) and adds the pure, tested models the flag-gated Insights page renders: the loop stage figures and pulse buckets, a layered flow layout, the recall flow, and the runs rhythm and swimlanes. Co-authored-by: dash0-dev[bot] <257284812+dash0-dev[bot]@users.noreply.github.com>
Adds the InsightsView resolver (off: the original page, unchanged; on: the visual page) and the visual page itself: the learn/recall/ promote/prune strip, the pulse timeline, the recall flow, and runs as a weekday x hour rhythm plus swimlanes, with the utility grid, runs list, scope leaderboard and operational health kept on one page-wide window. Co-authored-by: dash0-dev[bot] <257284812+dash0-dev[bot]@users.noreply.github.com>
…ghts page Adds deterministic MSW fixtures, visual stories (Default, Empty) and interaction tests for InsightsVisualPage; gives the pulse section an explicit empty state; removes non-null assertions from the new modules. Co-authored-by: dash0-dev[bot] <257284812+dash0-dev[bot]@users.noreply.github.com>
…ify pass The flow chart scaled through a fixed viewBox, shrinking its 11px labels to ~5px on a phone; it now lays out at the container's measured width (callback ref, so it survives the table toggle). Column names align to the node columns, the rhythm grid's labels share a fixed gutter, and the recall-flow interaction test scopes its table query to its section. Simplify: drop the cursor hook's unused setter, rename cryptic locals, reuse the shared time constants in the story fixtures. Co-authored-by: dash0-dev[bot] <257284812+dash0-dev[bot]@users.noreply.github.com>
Co-authored-by: dash0-dev[bot] <257284812+dash0-dev[bot]@users.noreply.github.com>
- Lead with the cost line, per the decision that /insights leads with the bill; the utility grid stays in its own section. - Draw every grid from the window the data was fetched for, and dim the page (aria-busy) while a new range loads, instead of re-gridding the previous window's rows onto the new axis. - Treat a row-capped series in either window as a lower bound: the strip says so and drops the Learn/Recall deltas. - Count only successful calls in the recall flow; correct its comment. - Say the Pulse text alternative is window totals; centre ticks under their bars; add legends to the rhythm grid and swimlanes; show a census failure instead of loading forever; caption the run list's own window and the most-recent-first truncation. - Add resolver tests for the off, on and unknown-variant arms. Co-authored-by: dash0-dev[bot] <257284812+dash0-dev[bot]@users.noreply.github.com>
|
/update-baselines |
|
The dashboard preview for this PR — redeployed on each push that changes the web app.
Preview always points at this PR's latest commit; Deployment is the immutable build of |
…d load on the visual insights page - Swimlanes: overlapping runs stack into sub-rows (greedy interval packing, capped at six per lane, instant runs reserve their drawn width), so concurrent sessions read as separate bars. - Recall flow: outer labels move into gutters, middle labels get a background halo; tool->scope bands are coloured by tool in a blue family no client uses; client colours no longer repeat amber. - A call with no scope type is 'unattributed' (never folded into 'other'); 'other' is only unknown types and the top-N fold. - Stage deltas use a new neutral TrendChip tone. - Load: the cost line, utility grid and loop strip share ONE /memories/utility request on an hour-aligned 30-day window (both flag arms; quadrant rows no longer ask for the all-history cost), and runs, the run list and the scope leaderboard mount only when scrolled near. Co-authored-by: dash0-dev[bot] <257284812+dash0-dev[bot]@users.noreply.github.com>
✅ No issues foundAdds the visual /insights page behind the default-off insights-visual flag: pure spec-covered models over existing REST routes, one shared hour-aligned /memories/utility request, and below-the-fold sections fetched on scroll. Progress: open review threads 2 → 1 → 2 → 0 → 0 across the last 5 reviews Review details
Nothing to report — standards (skipped), measurability (skipped), integrations (skipped), severity, 0 files skipped.
|
…ll as lower bounds Addresses the pr-reviewer comment: #714 (comment) Refs: #714 Co-authored-by: dash0-dev[bot] <257284812+dash0-dev[bot]@users.noreply.github.com>
…flow's chart/table toggle Addresses the pr-reviewer comment: #714 (comment) Refs: #714 Co-authored-by: dash0-dev[bot] <257284812+dash0-dev[bot]@users.noreply.github.com>
Drop the swimlane builder's intermediate packed-lane map (pack while building lanes) and rename packRows' cryptic local. Co-authored-by: dash0-dev[bot] <257284812+dash0-dev[bot]@users.noreply.github.com>
Addresses the pr-reviewer comment: #714 (comment) Refs: #714 Co-authored-by: dash0-dev[bot] <257284812+dash0-dev[bot]@users.noreply.github.com>
…side the swimlane track Addresses the pr-reviewer comment: #714 (comment) Refs: #714 Co-authored-by: dash0-dev[bot] <257284812+dash0-dev[bot]@users.noreply.github.com>
…d the page range section in docs/otel.md Addresses the pr-reviewer comment: #714 (comment) Refs: #714 Co-authored-by: dash0-dev[bot] <257284812+dash0-dev[bot]@users.noreply.github.com>
…et before the scope-type nodes Addresses the pr-reviewer comment: #714 (comment) Refs: #714 Co-authored-by: dash0-dev[bot] <257284812+dash0-dev[bot]@users.noreply.github.com>
|
/update-baselines |
Regenerated by the Update visual baselines workflow for PR #714.
|
✅ Update visual baselines: committed 41 updated baseline(s) as ℹ️ This commit was pushed with |
Resolved conflicts in (took origin/main's baseline: these stories are not touched by this PR, and main's images were rendered from the code the merged branch runs): packages/web/src/app/(dashboard)/lore/__screenshots__/LorePage.stories.tsx/Default-1-chromium-linux.png packages/web/src/components/blog/__screenshots__/TocList.stories.tsx/Playground-1-chromium-linux.png packages/web/src/components/lore/__screenshots__/LessonDetailSheet.stories.tsx/Playground-1-chromium-linux.png
|
Darkplane Automerge did not approve this pull request. It scored 60.76 of 100, and 75 was required.
The other 2 criteria
An AI evaluator produced these scores from the diff, the repository history, and the pull request text. The pull request text is author-controlled, so treat the scores as signals rather than proof. Reviewed for commit 05bb828. |
Why
/insightsreads as a stack of sentences, and over the last 30 days the only section anyone interacted with was the utility grid. This is the first visual version — the learning loop plus when memory moves — behindinsights-visual(default off), so it can ship without changing what anyone sees.What changed
insights-visualflag and anInsightsViewcopy-and-suffix resolver: off renders the originalInsightsPageuntouched, on rendersInsightsVisualPage.insights-loop,flow-layout,recall-flow,runs-rhythm) over existing REST routes only — no backend change.max_rowsare shown as lower bounds rather than drawn as a cliff; the rhythm uses paginated runs for the same reason./memories/utilityrequest — this also changes the flag-off page (one request instead of two, no all-history cost) — and below-the-fold sections fetch on scroll;/utilityhit statement timeouts under the old fan-out.How to verify
cd packages/web && npx vitest run src/lib/{insights-loop,flow-layout,recall-flow,runs-rhythm}.spec.tsPages/Insights/Visual(+/Tests) andPages/Insights/InsightsView/Tests; or flip the flag on/settings/developer.Notes for reviewers
The two new visual stories need
/update-baselines(Chromium was not reachable where this was authored). User-facing docs andllms.txtare untouched on purpose — nothing changes for users until the flag flips (docs/otel.mdlists the newinsights.*analytics: thepagerange section andinsights.recall_flow_view_changed) — and the lifecycle flow and prune trend wait on an audit-log aggregate endpoint.