feat: pipeline page - view, edit, create modes with pipeline flow diagram#2285
feat: pipeline page - view, edit, create modes with pipeline flow diagram#2285eblairmckee wants to merge 5 commits intomasterfrom
Conversation
✅ Snyk checks have passed. No issues have been found so far.
💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse. |
| isLoading, | ||
| nameError, | ||
| autoFocus, | ||
| // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Toolbar renders multiple conditional UI states |
There was a problem hiding this comment.
minor: if you do find any time, please try and avoid the complexity being ignored, I think the LLM starts to notice this pattern more and more so it would just slam another biome-ignore and move on
|
@claude review |
|
Claude finished @malinskibeniamin's task in 2m 32s —— View job PR Review: Edit/Create Mode Pipeline Page
Overall the PR is well-structured with good separation of concerns. The orchestration in Bugs1. Duplicate entry in
const PRIORITY_COMPONENTS = [
// ...
'mysql_cdc', // index 7
'mongodb_cdc',
'snowflake_streaming',
'redpanda_migrator',
'mysql_cdc', // index 12 - duplicate
'snowflake_put',2. Conflicting SVG gradient IDs — Both components use hardcoded gradient IDs ( Consider generating unique IDs with 3. Skeleton tiles use const skeletonTiles = Array.from({ length: tileCount }, () => (
<div ... key={crypto.randomUUID()}> // new key every renderReplace with index-based keys or a stable pre-generated list. Correctness / Potential Issues4. Render-body ref mutation — The pattern of comparing and resetting a ref directly in the render body is fragile with React Strict Mode / Concurrent Features — the render function may run multiple times before committing: // These lines run during render, not in an effect
const prevYamlRef = useRef(yamlContent);
if (prevYamlRef.current !== yamlContent) {
prevYamlRef.current = yamlContent;
userLintOverrideRef.current = null; // side effect in render
}The intent (reset manual lint panel override when YAML changes) is better served by moving this into the 5. The 6. Unlike 7.
Nits / Style8. The test file re-declares // config.test.tsx
const MIN_TASKS = 1; // should import from '../tasks'9. Brittle className assertion in test — Testing 10. 500 is likely sufficient for most clusters, but worth a comment explaining why this cap was chosen, or wiring it to a constant. 11.
12. Lines 44, 46-48 have mixed indentation and inline Addressing Reviewer Comments
SummaryThe PR introduces a well-thought-out IDE-like layout with clean state management and good test coverage for the Config form. The main actionable items before merge are:
|
|
Claude finished @eblairmckee's task in 24s —— View job Hey @eblairmckee! It looks like your comment just has For example:
Just let me know and I'll get started! |
|
@claude review this PR |
|
Claude finished @eblairmckee's task in 1m 59s —— View job PR Review: Pipeline Page - View, Edit, Create Modes
Good news first: the bugs flagged in the previous review (@malinskibeniamin's round) have all been addressed in the current state of this branch:
Below are the remaining issues I found. Bugs / Correctness1. Unlike secrets/users queries which correctly use // secrets — correctly gated ✅
const { data: secretsResponse } = useListSecretsQuery({}, { enabled: open });
// topics — always fires ❌
const { data: topicsResponse } = useListTopicsQuery({ pageSize: 500 });2.
3. Fragile String Nits / Code style4. Lucide icons imported directly — Several new files import directly from // config.tsx
import { PlusIcon, XIcon } from 'lucide-react'; // should be components/icons
// pipeline-command-menu.tsx
import { PlusIcon } from 'lucide-react'; // same
// connect-tiles.tsx
import { Search } from 'lucide-react'; // same5.
6. const [isEditing, setIsEditing] = useState(autoFocus ?? false);This works correctly for initial render, but if Test coverage7.
8. The test defines its own inline Zod schema (line 23) with a different SummaryThe architecture is clean and well-structured. The previous review's bug fixes are all in. The main items worth addressing before merge:
|
There was a problem hiding this comment.
This could be a nice addition to backport to registry afterwards
Summary
PipelineFlowDiagramin the left sidebar for all modes, gated behindenablePipelineDiagramsfeature flaguseEffectnow early-returns whencomponents.length === 0and includescomponentsin deps, fixing a race wheregetConnectTemplatesilently failed before component list resolvedView
Edit
Create (empty)
Create (wizard completed)
PR #2284 review comments addressed
utils/pipeline-throughput.utils.tswith 12 unit testsuseMemo/useCallbackin throughput cardyarn.lockTest coverage
isSystemTag,isCloudManagedTagKey)Feature flags
enablePipelineDiagrams— gatesPipelineFlowDiagramin the left sidebar (all modes)Reviewer actions
add-secrets-dialog.tsxsignature change (onSecretsCreated: (secretNames?: string[]) => void) doesn't break callers inonboarding-wizard.tsxandapi-connect-wizard.tsx— param is optional so existing callers should workenablePipelineDiagramson: verify flow diagram renders in left sidebar for all three modes