[feat-021] Tabular column management: hide, reprocess, delete-with-confirm

↗ view on GitHub · Nick Whitehouse · 2026-05-07 · bbfdda82

Adds the actions a real user needs once a review crosses ~5 columns:

Backend:
- POST /tabular-review/:reviewId/reprocess-column { columnIndex }
  Wipes the column's cells back to status='pending', then creates a
  tabular_jobs run via the existing bug-007 worker pool. The worker's
  existing "skip done cells" filter naturally re-processes them. Refuses
  with 409 if a job is already in flight on this review (workers would
  race against the wipe).
- DELETE /tabular-review/:reviewId/columns/:columnIndex
  Drops the column from columns_config and deletes its tabular_cells
  rows. Returns the canonical updated columns_config.
- Both endpoints reuse the existing ensureReviewAccess + filter
  helpers - no new auth surface.

Frontend:
- TREditColumnMenu picks up onHide + onReprocess props. New "Hide
  column" and "Reprocess" quick-action buttons in the edit panel
  header. New "Reprocess this column after save" checkbox next to
  the Save button (Save & reprocess label when checked).
- TabularReviewView tracks hiddenColumnIndices in localStorage keyed
  by review id (per-(review, device)). visibleColumns is the filtered
  set passed to TRTable. Toolbar grows a compact "N hidden - Show all"
  button that restores in one click.
- Delete now opens an inline confirmation modal that names the column
  and counts cells about to be deleted, instead of being instant.
- Reprocess kicks off the existing pollJob loop so the run-button shows
  N/total live, same UX as a full generate.

API helpers added: reprocessTabularColumn, deleteTabularColumn.

No schema changes. tsc clean both sides; all 16 backend tests pass.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Repository nwhitehouse/mike
Author Nick Whitehouse <nick.whitehouse@mccarthyfinch.com>
Authored
Parents 3d3a2991
Stats 5 files changed , +532 , -21
Part of Tabular column management: hide, reprocess, delete

Capture this commit into my fork

Download a Markdown prompt that tells Claude how to port this exact commit into your working tree. Run it via claude -p < capture-commit-bbfdda82.md from inside the repo you want the change in.

⬇ Download capture-commit-bbfdda82.md