fix(table): no typewriter flash; Run-row skips completed workflows#4685
fix(table): no typewriter flash; Run-row skips completed workflows#4685TheodoreSpeaks wants to merge 2 commits into
Conversation
- Typewriter: reset the revealed text synchronously during render when the value changes (not in an effect), so a cell going from running→value no longer flashes the full text for one frame before animating. - Run row / manual incomplete runs now treat a `completed` group as done even if an output column is blank — only "Run all" re-runs completed cells. The auto cascade keeps re-filling blank outputs (completedAndFilled). Client optimistic stamp mirrors: incomplete skips `completed` cells.
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
PR SummaryMedium Risk Overview Changes manual run behavior for Reviewed by Cursor Bugbot for commit 73a4cd2. Bugbot is set up for automated code reviews on this repo. Configure here. |
Greptile SummaryThis PR fixes two independent bugs in the table workflow feature: a one-frame typewriter flash when a cell transitions from running to a new value, and "Run row / Run incomplete" incorrectly re-running workflows that had already completed but left an output column blank.
Confidence Score: 4/5Both fixes are self-contained and well-reasoned; the client and server eligibility rules are kept in sync, and the typewriter pattern is a documented React escape hatch used correctly. The logic changes are consistent between server and client. The typewriter hook uses React's render-time setState escape hatch correctly — The JSDoc block at the top of Important Files Changed
|
bulkClearWorkflowGroupCells in incomplete mode wiped EVERY targeted group's output data + exec on any row that wasn't fully filled across all targeted groups. So Run-row on a row with one completed group and one cancelled group wiped the completed group's outputs + exec too, and the dispatcher re-ran it. Now incomplete-mode clears per-group: only error/cancelled groups get their output columns + exec cleared; completed and in-flight groups are left intact (never-run groups have nothing to clear and run via eligibility). Combined with the classifyEligibility guard, a completed workflow is never re-run by Run-row — only Run-all re-runs it.
Summary
revealed ?? kind.text). Now the reset happens synchronously during render when the value changes, and we only animate on actual changes (not first mount) — no flash.completedand fully-filled groups, so a workflow that completed with any blank output column was treated as incomplete and re-ran. Now manual incomplete runs treat acompletedgroup as done regardless of blank outputs — only "Run all" re-runs completed cells. The auto cascade still re-fills blanks (completedAndFilled). Client optimistic stamp mirrors the rule.Type of Change
Testing
Tested manually on staging; tsc, vitest (lib/table + hooks/queries, 202 passing), and lint all pass.
Checklist