Skip to content

fix(webapp): move Queues search and pagination above the table - #4834

Merged
samejr merged 2 commits into
mainfrom
queues-table-filter-bar
Aug 30, 2026
Merged

fix(webapp): move Queues search and pagination above the table#4834
samejr merged 2 commits into
mainfrom
queues-table-filter-bar

Conversation

@claude

@claude claude Bot commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Requested by Matt Aitken, James Ritchie · Slack thread

✅ Checklist

  • I have followed every step in the contributing guide
  • The PR title follows the convention.
  • I ran and tested the code works

Testing

Ran the webapp locally against Postgres + Redis with the Queue Metrics UI enabled for the org, seeded 38 queues in one Development environment (two pages at 25 per page) and loaded the Queues page in a browser at 1600×1000.

Checked that:

  • Period is the only control left in the top bar's left cluster, and the Pause environment button stays on the right.
  • Search and the prev/next arrows render in the new bar between the charts and the table, search left and pagination right.
  • The prev/next arrows still page the table (they render because 38 queues span two pages; with a single page the arrows are disabled as before).
  • Typing in search still resets to page 1 and filters only the table.
  • The classic, non-metrics Queues view is untouched.

Checks run: pnpm --filter webapp run lint, pnpm --filter webapp run typecheck, pnpm run knip, oxfmt --check, and the queue-related webapp tests (queueListPagination, queueMetricsMapping, queueSparklineGrid, queueDepthSeries) — all green.


Changelog

Before: the "Search queues…" input and the prev/next pagination arrows lived in the toolbar row above the metrics panel, alongside the Period control. Everything above a block reads as controlling that block, so their position implied they filtered the Queued / Running / Allocated / Environment limit tiles and the charts. They never did — they only affect the queue table further down the page. The confusion was sharpest because Period, sitting in the same row, genuinely does drive those tiles and charts, so there was no cue that its neighbours had a different scope.

After: the top bar is page-wide scope only. Period is left-aligned at the start of the row and the Pause environment button stays at the end. Search and pagination move into their own bar placed between the charts and the table — search on the left, pagination on the right — so each control now sits next to the surface it acts on. That costs one extra row of vertical space, which is the right trade for making the scope of each control legible.

How: the queues route stops rendering QueueFilters and PaginationControls inside MetricsLayout.Filters and passes them to a new toolbar prop on MetricsLayout.Content instead. The prop bakes the bar chrome (justify-between, top border, page insets) so it sits flush on the content it scopes and pages can't drift on spacing — the same left/right bar the classic, non-metrics Queues view already renders above its table. No loader, query-param or pagination behaviour changed.


Screenshots

Verified in a local browser. The new layout, top to bottom:

  1. Top bar: Period: 1 hr at the far left, Pause Development environment… at the far right.
  2. Metrics panel: the four stat tiles (Queued / Running / Allocated / Environment limit), then the four charts (Env saturation / Backlog / Scheduling delay p95 / Throttled) — unchanged.
  3. New filter bar: Search queues… at the left, the prev/next arrows at the right, sitting directly on top of the table.
  4. Queue table: unchanged.

💯

On the Queues page the "Search queues…" input and the prev/next pagination
arrows sat in the top bar, above the metrics panel, even though they only
filter the queue table below it. Their position implied they filtered the
metrics — made worse by "Period" sitting in the same row, which genuinely
does drive the tiles and charts.

Move search and pagination into their own bar between the charts and the
table (search left, pagination right), and left-align the Period button so
the top bar reads as page-wide scope only. This is the same left/right bar
the classic, non-metrics Queues view already uses.

Adds a `toolbar` prop to `MetricsLayout.Content` so the bar sits flush on
the content it scopes, rather than each page re-inventing the chrome.
@changeset-bot

changeset-bot Bot commented Aug 29, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 11d0b42

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

@samejr
samejr marked this pull request as ready for review August 30, 2026 10:05

@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.

Note

This report is out of date. Scroll down for Devin Review's latest report on this PR.

✅ Devin Review: No Issues Found

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

Devin Review

The control placement change is not something a user needs called out in
release notes, so it does not warrant an entry.

@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 found 0 new potential issues.

Devin Review

@samejr
samejr merged commit 1d55693 into main Aug 30, 2026
50 checks passed
@samejr
samejr deleted the queues-table-filter-bar branch August 30, 2026 11:36
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.

3 participants