feat(ui): persistent 'Reset filters' control in the Agent Runs filter bar (#6818)#6951
Conversation
… bar (JSONbored#6818) The Agent Runs filter bar (Status/Kind chips + search) had no reset affordance while filters were active — a 'Clear filters' button existed ONLY inside the `filtered.length === 0` empty state, which is unreachable whenever the active filters still match at least one run. An operator narrowing to e.g. status=ready then had no way back to all runs short of editing the URL. Add a persistent 'Reset filters' control in the bar itself, always rendered and enabled only once some filter is away from its default — mirroring the always-present Reset in AuditFilters (components/site/audit-feed.tsx). Both it and the empty-state 'Clear filters' button now call one shared `resetFilters` handler (clears status/kind/search in a single navigation + toasts), so the two paths can't drift. The filter bar is extracted into an exported, prop-driven `RunsFilterBar` (like the existing `DrawerSurface`) so the reset behavior is unit-testable without mounting the routed page. Adds regression tests: the reset renders in the bar (not only the empty state), is disabled at defaults, enables on any non-default filter, and clears through the shared handler. Closes JSONbored#6818
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
|
Tip ✅ LoopOver review result - approve/merge recommendedReview updated: 2026-07-17 15:11:56 UTC
Review summary Nits — 4 non-blocking
Decision drivers
Context & advisory signals — never blocks the verdict
Review context
Contributor next steps
Signal definitions
🧪 Chat with LoopOverAsk LoopOver a question about this PR directly in a comment — grounded only in the same cached, public-safe facts shown above, never a new claim.
Full command reference: https://loopover.ai/docs/loopover-commands 🧪 Experimental — new and may change. Visual previewClick any thumbnail to open the full-size screenshot. Before = production · After = this PR's preview deploy. 🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed 💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →. Checked by LoopOver, a quiet PR intelligence layer for OSS maintainers.
|




Closes #6818.
The Agent Runs filter bar (
apps/loopover-ui/src/routes/app.runs.tsx) had no reset affordance while filters were active — a "Clear filters" button existed only inside thefiltered.length === 0empty state, which is unreachable whenever the active filters still match at least one run. An operator who narrows to e.g.status=readythen has no way back to all runs short of hand-editing the URL.AuditFilters(components/site/audit-feed.tsx) already solves this with an always-present Reset — this brings the Runs bar to parity.Change
status/kind≠all, or a non-empty search).resetFiltershandler (clears status/kind/search in a single navigation + toast), so the two paths can't drift.RunsFilterBar(mirroring the existingDrawerSurface) so the behavior is unit-testable without mounting the routed page's session/API context.Tests (regression for the exact gap)
Added to
app.runs.test.tsx: the reset renders in the bar (not only the empty state), is disabled at defaults, enables on any non-default filter (status / kind / search), and clears through the shared handler on click. Full@loopover/uigate green: typecheck, lint, build, tests.Before / after
Top = filters at default (reset present but disabled); bottom = a filter active (reset enabled):