Skip to content

Queue metrics & health: UI polish (TRI-12068)#4354

Merged
samejr merged 69 commits into
feat/queue-metrics-and-healthfrom
samejr/queues-ui-improvements
Jul 24, 2026
Merged

Queue metrics & health: UI polish (TRI-12068)#4354
samejr merged 69 commits into
feat/queue-metrics-and-healthfrom
samejr/queues-ui-improvements

Conversation

@samejr

@samejr samejr commented Jul 23, 2026

Copy link
Copy Markdown
Member

Stacked on #4131 — targets feat/queue-metrics-and-health, not main. GitHub will auto-retarget this to main once #4131 merges. (Targeting main now would wrongly include all of #4131's own commits.)

UI polish for the Queue metrics & health pages (TRI-12068). 49 commits, all under apps/webapp/app/ — no engine/ClickHouse/package changes.

Highlights

  • Layout — consolidated queue-detail header into one filter bar; shared MetricsLayout spacing (2.5 scale); paused-queue banner mirroring the environment-paused banner.
  • Charts — inline legends under titles; threshold gradient coloring (Env saturation orange only >100%; Concurrency orange only at/over the limit); fullscreen legend spacing; result caching so tab switches don't reload; brighter hover cursor + full x-axis labels.
  • Tables — whole-row click via stretched link; custom Queues icon; removed column sorting; Limit-cell spacing + hover-bright; "Limited by" tooltip sizing.
  • Controls — Pause moved into the filter bar (orange label + accurate tooltip copy); restyled override-concurrency modal.
  • Copy — plain-language pass; inline colour swatches; Throttled reads "% of current period".

Also consolidated the three queue-metrics .server-changes notes into one.

Known follow-up (not in this PR): the Concurrency-keys table is capped at 50 keys (union of live Redis backlog + ClickHouse history, no single cursor across both) and truncates silently — fine for most queues, a real limit for high-cardinality per-tenant keys.

Verified locally against the queue-metrics-demo seed; pnpm typecheck --filter webapp passes.

samejr added 30 commits July 22, 2026 19:21
… (TRI-12309)

Move the environment pause/resume button out of the Queued stat tile into the top-right of the queues filter bar, and give it a visible label ("Pause/Resume {environment} environment") instead of icon-only.
The "Limited by" cell was the only data cell not linking to the queue detail page, so clicking it did nothing. Make it navigable like the rest of the row (matching the runs-table pattern); the override explainer moves to an info-icon tooltip rendered beside the link so the button never nests inside the row's <a>.
…e header (TRI-12312)

In TableHeaderCell, clicking anywhere on a sortable header used to sort (the label + arrows were one full-width button). Now only the sort-arrows icon is the button; the label (and any info tooltip) are plain, non-clickable content. Shared primitive change — affects every sortable table.
… scale (TRI-12313)

Normalize the gaps between content containers (stat/chart grid gap, the vertical block gap, and the content-region gap) from 3 (0.75rem) to 2 (0.5rem) in the shared MetricsLayout. Page gutters are left at 3 so left edges stay aligned with the filter bar. Affects all metric/dashboard pages using MetricsLayout.
…RI-12315, TRI-12316)

Move the Overview/Concurrency-keys tabs up into the filter bar (tabs left, inset by pl-2), with the date filter and the relocated Override limit + Pause {queue} queue buttons on the right (gap-1.5). Both controls move out of the Concurrency panel and gain visible labels; the override button gets an explanatory tooltip. Adds withQueueName to QueuePauseResumeButton and a labeled+tooltip 'button' trigger to QueueOverrideConcurrencyButton.
…n queue charts (TRI-12317)

The header charts turn the line orange as a warning (saturation over the env limit, p95 over 1 min, any throttling) but nothing labelled the colour. Add a small inline legend (rounded colour square + label) below the title on Env saturation, Scheduling delay p95, and Throttled. Backlog has no warning colour so it gets no legend.
Bake a max-w-[230px] default into the shared TooltipContent so no tooltip sprawls too wide, and converge the queue-page tooltips that were pinned at max-w-xs (320px) onto the same 230px cap.
…don't reload charts (TRI-12321)

useMetricResourceQuery reset to rows=null on every mount, so remounting a chart (switching queue-detail tabs, or navigating back to the queues list) flashed a loading skeleton and refetched. Add a bounded module-level cache keyed by the query signature: a remounted chart paints its last rows immediately and revalidates in the background instead of reloading.
…styling (TRI-12323)

The BigNumber stat tiles (Queued/Running/Allocated/Environment limit) and the detail-page ConcurrencyBlock used rounded-sm + border-grid-dimmed, which didn't match the chart cards' rounded-lg + border-grid-bright. Align both to the chart Card styling so the tiles and charts read as one system.
Both queues pages: filter-bar item gap is now gap-1.5. The list page's search/period and pause/pagination clusters move from gap-2 to gap-1.5; the detail page's cluster was already gap-1.5 (TRI-12315).
…its tooltip (TRI-12328)

The Increase limit control (Environment limit tile) was an icon-only button with the label only in a hover tooltip. Show "Increase limit" as the button text and remove the tooltip, for both the increase and the upgrade variants.
The "NN% of the environment limit" caption on the Allocated tile was text-text-bright; switch it to the text-text-dimmed token so it reads as secondary subtext like the other tiles' captions.
…12337)

ChartLine collapsed the x-axis to only the first + last tick while the tooltip was active. Remove that so every x-axis label stays visible at all times; recharts keeps its default preserveStartEnd ticks whether hovering or not.
…parators (TRI-12330)

Replace the word "Yellow" with an inline warning-coloured swatch (matching the chart's over-limit line) in the Env saturation, Scheduling delay p95, and Backlog tooltips. Swap the em dashes in the "Limited by" header tooltip for colons. The tile description type widens to ReactNode to carry the inline swatch.
Shrink the description text (variant=small); move the Number/Percent segmented control to the right of the concurrency-limit input (gap-2, matched height) instead of up by the label; show a % suffix in the field when Percent is selected; and let the label sit close above the input (InputGroup's gap-1.5).
…2068)

Both queue pages: the gaps between stat/chart containers and the padding around the metrics area move from 2 to 1.5 in the shared MetricsLayout.
… gap (TRI-12068)

Reduce the legend colour-swatch corner radius (rounded-[3px] to rounded-[2px]) and increase the gap between the chart title and the legend row (gap-0.5 to gap-1).
… link (TRI-12068)

For a TableCell with a link plus leading/trailing adornments, the <a> only wrapped the text. Add an inset ::before overlay so the anchor covers the whole cell; the interactive adornments (type icon, badges) sit above it (relative z-10) and stay clickable. Shared primitive — applies to every such cell (e.g. the queues Name cell).
… (TRI-12068)

Swap the generic RectangleStackIcon for the QueuesIcon (the same icon as the Queues side-menu item) on custom queues in the Name cell.
Remove client-side column sorting from the queues table (to be reimplemented server-side separately, per TRI-12322). Drops the useTableSort wiring, the sort-column defs, the header sort props, and the now-dead queueLimitedByLabel helper; the sort arrow icons no longer render.
…cement, per-page padding (TRI-12068)

Show the date filter as "Period: {value}" (bright label, dimmed value, matching the Runs page) on both queue pages; move it to the right of the list filter bar (left of Pause); and set per-page filter-bar padding (list px-2, detail pl-1.5 pr-2) via a new optional className on MetricsLayout.Filters.
… (TRI-12068)

The hovered chart's cursor was a dim rgba(255,255,255,0.1); point it at SYNC_LINE_COLOR so it matches the dashed synced indicator drawn on the other charts. Bar charts' fill cursor is brightened to match. Global to line + bar charts.
…ht (TRI-12068)

Chart card header used items-center, so with a two-line title the Maximize button sat too low. Switch to items-start.
The 5th Overview chart (Throttled) sat alone at 50% width; span it across both columns (sm:col-span-2) with a wider aspect so its height matches the others.
Pause buttons (queue + environment): orange border matching the icon, brighter on hover; ellipsis in the label; the queue button reads "Pause this queue…" with the queue name moved into the tooltip (items 11/12/18). Override modal: Cancel is now secondary, description numbers use tabular-nums, the absolute-mode copy is clearer and spans two lines to avoid layout shift, and the Number/Percent toggle height now matches the number field via a new SegmentedControl className (item 13).
…I-12068)

The Overview/Concurrency-keys tabs were vertically centered in the filter bar, leaving their underline ~10px above the bar's bottom border. Bottom-align them (self-end) so the tab underline seats on the filter bar's bottom edge.
…068)

Audit of numeric displays on the queue pages: BigNumber values, table cells, chart axes, and chart peak readouts already used tabular-nums. Add it to the two that were missing — the BigNumber stat-tile suffix (e.g. "peak 2.7K", "23% of the environment limit") and the ConcurrencyBlock "NN% of limit" caption.
Rewrite the queue-page tooltip and description copy to be simpler and jargon-free: chart descriptions, table-header tooltips, the Override and Pause button tooltips, and the detail chart info tooltips. Replaces phrasing like "p95 wait from eligible to dequeued" with "how long runs wait before they start", drops em dashes, etc.
…y (TRI-12068)

Both pause buttons: colour the label text to match the icon (orange when pausing, green when resuming). Rework the tooltips off the modal's accurate wording — "Pauses all runs from being dequeued in the {name} queue/environment. Any executing runs will continue to run." (items 2, 16).
…1px (TRI-12068)

The inline colour swatch used in chart tooltips now uses rounded-[2px] to match the chart legend swatches, and is bumped up 1px (-translate-y-px) so it sits on the text baseline better (item 3).
… one (TRI-12068)

Merge the queue-metrics dashboard, live/clarity and override-limit notes into a single short release note. Leaves the unrelated notes (side menu, agent detail, duplicate-root-environments) from the base branch untouched.
@coderabbitai

coderabbitai Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: eb749b35-4416-47c8-8aff-478802623e83

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch samejr/queues-ui-improvements

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@changeset-bot

changeset-bot Bot commented Jul 23, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 36650a7

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Open in Devin Review

Concurrency: 'are going' → 'are executing', drop the redundant 'color' from the two parenthetical swatches. Queue depth: drop the trailing swatch. Scheduling delay: cut the p50/p95/p99 breakdown. Throughput: parentheticals become ({swatch} Enqueued) / ({swatch} Started).
devin-ai-integration[bot]

This comment was marked as resolved.

samejr added 4 commits July 23, 2026 18:52
…nes (TRI-12068)

The tooltip colour indicator preferred the recharts item colour, which for a threshold/gradient line is a url(#…) gradient ref (invalid as a CSS background) — so the Concurrency 'Running' swatch was missing. Prefer the configured series colour.
…ines (TRI-12068)

The orange over-threshold stretch was 2px vs the 1px base lines. It traces the same points, so 1px covers the base exactly and matches the other lines.
…legend (TRI-12068)

Add an optional extraLegend to QueueMetricChartCard for warning states that aren't their own series, and use it on Throughput so the orange 'Falling behind' colour is explained in the legend.
…ips (TRI-12068)

Add disableTooltipHoverableContent to the Limited by, Delay p95 and Backlog header tooltips.
devin-ai-integration[bot]

This comment was marked as resolved.

samejr added 3 commits July 24, 2026 10:16
…' column so it matches the other rows and brightens on hover (TRI-12068)
devin-ai-integration[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

samejr added 4 commits July 24, 2026 15:00
…panel width (container query) and show 'Waiting for' as a shorthand duration (TRI-12068)
…stop the dev-server HMR 'already registered' crash
…p back to page 1 when a filter change (e.g. narrowing the time range) empties a later page (TRI-12438)
devin-ai-integration[bot]

This comment was marked as resolved.

…uiet-env gauge can't briefly show a stale Queued/Running count on nav-back (TRI-12068)
@samejr
samejr merged commit a585dea into feat/queue-metrics-and-health Jul 24, 2026
30 checks passed
@samejr
samejr deleted the samejr/queues-ui-improvements branch July 24, 2026 15:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant