Skip to content

feat(dashboard): run filters - #900

Open
jamescmartinez wants to merge 1 commit into
mainfrom
run-features
Open

jamescmartinez wants to merge 1 commit into
mainfrom
run-features

Conversation

@jamescmartinez

@jamescmartinez jamescmartinez commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor
  • status and exact workflow-name filters
  • clickable status cards
  • shareable URLs that preserve filters through refreshes
image

@pkg-pr-new

pkg-pr-new Bot commented Oct 13, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/openworkflowdev/openworkflow/@openworkflow/cli@900
npm i https://pkg.pr.new/openworkflowdev/openworkflow/@openworkflow/dashboard@900
npm i https://pkg.pr.new/openworkflowdev/openworkflow@900

commit: 72f2af3

@greptile-apps

greptile-apps Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

RetriggerConfidence Score: 4/5

[Medium impact] Adds filtering UI and backend support to the runs dashboard.

Fix status filtering for older runs before merging.

Findings

  1. P1 Filters hide older runs ▶
  2. P2 Exact names stop matching ▶
  3. P2 Card clicks erase typed names ▶

Summary

Adds status and exact workflow-name filters to the dashboard’s run list.

  • The dashboard filters runs by status or workflow name.
  • Status count cards filter the run list when clicked.
  • The run list explains why it has no results.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  Form["Filter form"] --> Search["URL search"]
  Cards["Status cards"] --> Search
  Search --> Loader["Home page loader"]
  Loader --> Server["listWorkflowRunsServerFn"]
  Server --> Backend["Backend lists matching runs"]
  Backend --> List["Run list and pagination"]
  List --> Search
Loading

Reviews (1) · Last reviewed commit: "feat(dashboard): run filters" · Reviewed by Greptile

const backend = await getBackend();
const result = await backend.listWorkflowRuns(getPaginationOptions(data));
const params: ListWorkflowRunsParams = getPaginationOptions(data);
if (data.status !== undefined) params.status = data.status;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Filters hide older runs

For databases with older runs stored as sleeping or succeeded, clicking Running or Completed excludes runs counted by that card. toWorkflowRunCounts folds these older statuses into the displayed counts, but listWorkflowRuns matches the requested status exactly. The migrations do not rewrite those statuses, so a nonzero card can lead to an empty list. Make the dashboard filters include the same statuses as the counts.

status: z.enum(RUN_FILTER_STATUSES).optional(),
workflowName: z
.string()
.trim()

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Exact names stop matching

A workflow created through runWorkflow can have a name such as " report ", which the client stores unchanged. Both RunFiltersForm and runFiltersSchema trim that name to "report", so the backend’s exact match cannot find it. Users must be able to search for the name as stored; preserve meaningful spaces in both places.

</div>
<div className="space-y-4">
<RunFiltersForm
key={`${search.status ?? "all"}:${search.workflowName ?? ""}`}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Card clicks erase typed names

If a user types a workflow name and then clicks a status card before applying it, their text disappears. The card changes search.status, which changes this key and mounts a fresh RunFiltersForm. Its input resets to the saved search.workflowName rather than the pending edit. Keep the typed name when changing the selected status so users do not have to enter it again.

@codecov

codecov Bot commented Oct 13, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

This branch has not been deployed

No deployments
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