feat(table): add workflow execution column type#4338
feat(table): add workflow execution column type#4338TheodoreSpeaks wants to merge 12 commits intostagingfrom
Conversation
# Conflicts: # apps/sim/app/api/table/[tableId]/columns/route.ts # apps/sim/app/workspace/[workspaceId]/tables/[tableId]/components/table/table.tsx # apps/sim/lib/webhooks/deploy.ts # apps/sim/lib/workflows/executor/execute-workflow.ts
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
@BugBot review |
PR SummaryMedium Risk Overview Backend changes add table room pub/sub in Realtime ( Frontend updates overhaul the table UI to render workflow column groups (meta header, per-cell running/waiting/error states), add run/stop controls (per-row and stop-all), enable viewing execution logs from the context menu, and introduce a new right-side Reviewed by Cursor Bugbot for commit 6e2f973. Bugbot is set up for automated code reviews on this repo. Configure here. |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 6e2f973. Configure here.
| const configuredWorkflow = ownGroup ? workflows?.find((w) => w.id === ownGroup.workflowId) : undefined | ||
| const workflowColor = configuredWorkflow?.color | ||
| const workflowId = ownGroup?.workflowId | ||
| const workflowState = useWorkflowState(workflowId) |
There was a problem hiding this comment.
Every ColumnHeaderMenu fetches full workflow state independently
Medium Severity
useWorkflowState(workflowId) is called inside every ColumnHeaderMenu instance just to resolve a block icon. For a workflow group with N output columns, this creates N independent React Query subscriptions to the same workflow state (which contains all blocks, edges, etc.). Each subscription triggers a re-render of that column header whenever the workflow state changes. The icon info could be resolved once at the parent level and passed as a prop.
Reviewed by Cursor Bugbot for commit 6e2f973. Configure here.
| }) | ||
| } | ||
| oldKeys.delete(key) | ||
| } |
There was a problem hiding this comment.
Computed oldKeys set is never read after loop
Low Severity
The oldKeys set is populated and entries are deleted during the loop, but the resulting set (representing removed outputs) is never read afterward. The removal logic is handled server-side by diffing the fullOutputs array, making oldKeys entirely dead code that adds confusion about where output removals are tracked.
Reviewed by Cursor Bugbot for commit 6e2f973. Configure here.


Summary
Brief description of what this PR does and why.
Fixes #(issue)
Type of Change
Testing
How has this been tested? What should reviewers focus on?
Checklist
Screenshots/Videos