Skip to content

Comments

Improves scannability of pipelines list page for faster troubleshooting#2234

Draft
eblairmckee wants to merge 5 commits intomasterfrom
feat/m1-scannability
Draft

Improves scannability of pipelines list page for faster troubleshooting#2234
eblairmckee wants to merge 5 commits intomasterfrom
feat/m1-scannability

Conversation

@eblairmckee
Copy link
Contributor

@eblairmckee eblairmckee commented Feb 20, 2026

Summary

Rewrites the pipeline list page to improve scannability and debugging UX.

What changed

Added filters

Screenshot 2026-02-19 at 8 21 07 PM Screenshot 2026-02-19 at 8 18 04 PM Screenshot 2026-02-19 at 8 22 25 PM

Added more columns

  • Input/Output columns — parses configYaml to extract connector component names and displays them as inline badges
  • StatusBadge — color-coded status indicator (green=Running, gray=Stopped, red=Error, amber=Starting/Stopping) with animated pulse for transitional states
  • Action menu — context-aware dropdown (Start/Stop/Retry/Edit/Delete) that only shows valid actions per pipeline state
Screenshot 2026-02-19 at 8 15 08 PM

UI registry changes

This branch includes draft versions of new ui-registry components that will be upstreamed in a separate PR and then reinstalled here:

  • data-table-filter — new faceted filter component with submenu-based option selection
  • filter-utils / use-data-table-filter — filter state management and utility helpers
  • command tweaks — subcommand/submenu support added to the Command component
  • popover fix — minor portal fix

These changes should be ignored in this review — they'll come in via ui-registry once upstreamed.

Files changed (excluding ui-registry)

  • pipeline/list.tsx — main list page rewrite
  • ui/pipeline/status-badge.tsx — new PipelineStatusBadge component
  • ui/pipeline/constants.ts — pipeline state constants and options
  • api/pipeline.tsx — smart polling support in the query hook

eblairmckee and others added 5 commits February 19, 2026 14:50
Extract STARTABLE_STATES, STOPPABLE_STATES, TRANSITIONAL_STATES, and
PIPELINE_STATE_OPTIONS to ui/pipeline/constants.ts. Replace icon-based
status badge with pulsing dot indicator at ui/pipeline/status-badge.tsx.
Delete old status-badge.tsx and update import path.

RED-9

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add enableSmartPolling option that auto-refetches the pipeline list
every 2s when any pipeline is in STARTING or STOPPING state. Works
with the existing infinite query pagination approach.

RED-9

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace ID/Description columns with Input/Output connector badges
parsed from pipeline configYaml. Add dropdown action menu with
context-aware Edit, Start, Stop, Retry Start/Stop, and Delete actions.
Enable smart polling for transitional pipeline states.

RED-9

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Comment on lines +33 to +71
const statusConfig = useMemo(() => {
switch (state) {
case Pipeline_State.RUNNING:
return {
icon: <PulsingStatusIcon variant="success" />,
text: 'Running',
};
case Pipeline_State.STARTING:
return {
icon: <PulsingStatusIcon variant="warning" />,
text: 'Starting',
};
case Pipeline_State.STOPPING:
return {
icon: <PulsingStatusIcon variant="warning" />,
text: 'Stopping',
};
case Pipeline_State.STOPPED:
return {
icon: <PulsingStatusIcon pulsing={false} variant="disabled" />,
text: 'Stopped',
};
case Pipeline_State.COMPLETED:
return {
icon: <PulsingStatusIcon variant="success" />,
text: 'Completed',
};
case Pipeline_State.ERROR:
return {
icon: <PulsingStatusIcon variant="error" />,
text: 'Error',
};
default:
return {
icon: <PulsingStatusIcon variant="informative" />,
text: 'Unknown',
};
}
}, [state]);
Copy link
Contributor

Choose a reason for hiding this comment

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

I don't think we need useMemo here. We can just take it out of the component layer?

Comment on lines +108 to +112
const hasTransitional = pages?.some((page) =>
page?.response?.pipelines?.some(
(p) => p?.state === Pipeline_State.STARTING || p?.state === Pipeline_State.STOPPING
)
);
Copy link
Contributor

Choose a reason for hiding this comment

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

[small nit]: I would make a list of states we want to enable polling for, and just check with .includes()


.cursor No newline at end of file
.cursor
.claude/skills No newline at end of file
Copy link
Contributor

Choose a reason for hiding this comment

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

Do we want to ignore all claude skills?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants