Hide Failed Pipelines by Default
Hide Failed Pipelines by Default
Starting in v1.0.110, failed pipeline runs are hidden by default on all pipeline list views. This reduces noise during active development and keeps attention on in-progress and completed work.
Default Behaviour
When you open the Pipelines page or a product's Pipelines tab, runs with status = 'failed' are excluded from the list and the total count. A footer note confirms: "(failed runs hidden)".
The feature applies to two views:
| View | URL |
|---|---|
| Global Pipelines | /dashboard/pipelines |
| Per-product Pipelines | /dashboard/products/[id]/pipelines |
Showing Failed Runs
Both views expose a "Show failed" toggle above the pipeline list.
Global Pipelines Page
The toggle writes ?showFailed=1 to the URL query string.
- Off (default): URL has no
showFailedparam; failed runs are excluded. - On: URL contains
?showFailed=1; all runs including failed are shown.
Because the state lives in the URL, the view is fully shareable and bookmarkable. Toggling automatically resets to page 1.
Per-Product Pipelines Page
The toggle uses local React state within the <ProjectPipelinesClient> component.
- Off (default): Failed runs are excluded; state resets if you navigate away and return.
- On: All runs including failed are shown for the current session.
Overrides
| Scenario | Behaviour |
|---|---|
| Status filter set to Failed | Always shows failed runs, regardless of toggle state |
| Any other explicit status filter | excludeFailed is not applied; filter result is shown as-is |
| Notification bell | Always fetches failed pipelines via status: "failed" directly — unaffected |
Empty State Messages
When no pipelines match and failed runs are hidden, the UI provides a targeted hint rather than a generic message:
Failed runs are hidden. Toggle "Show failed" to include them, or adjust your filters.
When failed runs are visible and no results match, the standard message is shown:
Try adjusting your search or filters.
tRPC API: pipeline.list
The pipeline.list router input now accepts an optional excludeFailed boolean.
api.pipeline.list({
status?: string; // explicit status filter (takes precedence)
search?: string;
limit?: number;
offset?: number;
excludeFailed?: boolean; // NEW — omit failed runs from results and count
});
Behaviour rules
excludeFailed: true+ nostatusfilter → failed runs excluded from data and count.excludeFailed: true+ explicitstatusfilter →excludeFailedis ignored;statusfilter applies normally.excludeFailed: falseor omitted → all runs returned (existing behaviour).
Components
<FailedPipelinesToggle>
Used on the global pipelines page. Reads and writes ?showFailed=1 via Next.js useRouter / useSearchParams.
import { FailedPipelinesToggle } from "@/components/failed-pipelines-toggle";
// showFailed derived from URL param: params.showFailed === "1"
<FailedPipelinesToggle showFailed={showFailed} />
Props
| Prop | Type | Description |
|---|---|---|
showFailed | boolean | Current toggle state, driven by the URL param |
<ProjectPipelinesClient>
Replaces the former server-only ProjectPipelinesTab dynamic import on per-product pipeline pages. Manages the "Show failed" toggle in local React state and re-fetches data automatically when toggled.
import { ProjectPipelinesClient } from "@/components/project-pipelines-client";
<ProjectPipelinesClient projectId={id} />
Props
| Prop | Type | Description |
|---|---|---|
projectId | string | The product/project ID to scope pipeline results |
All existing display features are preserved: parallel run grouping, lifecycle phase indicators, duration formatting, and mobile card layout.