nwhitehouse gives tabular review proper column controls

Once a review grows past a handful of columns, reviewers need to hide, rerun, or delete them without nuking the whole table - nwhitehouse just shipped that.

discoverycontract-review

Tabular review in Mike lets a team ask the same set of questions across a stack of documents and get back a grid of answers. Useful - until the grid sprawls and you're stuck staring at columns you no longer care about, or one that needs rerunning because the question was wrong.

nwhitehouse's fork adds the three actions a real reviewer reaches for: hide a column from view, reprocess a column from scratch, or delete it outright with a confirm step that tells you how many cells are about to vanish. Hidden columns are remembered per device rather than synced across the team, which is the right call for what's really just a personal view setting. After a quick placement reshuffle based on user feedback, the controls now live in the main toolbar alongside Add Documents.

So what Anyone running matter review or due diligence at scale should look at this - it's the difference between a tabular review tool you tolerate and one you actually live in.

View this fork on GitHub →

Spotted something wrong? Or know the PR text has fresher detail than the writeup above?

Commits in this thread

3 commits from nwhitehouse/mike, oldest first. Source extracted verbatim from the harvested git log.

SHA Subject Author Date
bbfdda82 [feat-021] Tabular column management: hide, reprocess, delete-with-confirm Nick Whitehouse 2026-05-07 ↗ GitHub
commit body
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>
00c3af8d [feat-021] Manage Columns popover next to + Add column Nick Whitehouse 2026-05-07 ↗ GitHub
commit body
User feedback on the per-column ⋯ menu: clunky for managing many
columns at once. Adds a centralised manager that mirrors what
work___ does - a sliders-icon button next to + Add column that opens
a popover with:

- "N of M shown" header
- Show all / Hide all bulk actions
- Per-column row: eye toggle (show/hide), name, format pill (TEXT,
  DATE, YES_NO etc.), trash icon (opens the existing confirm-delete
  modal)
- Hidden columns render line-through + EyeOff icon for clarity

The per-column ⋯ menu's Hide / Reprocess / Save & reprocess affordances
stay - they're still useful for one-off actions. The new menu is the
"manage everything at once" surface.

Component: ColumnVisibilityMenu.tsx. Renders inside TRTable next to the
+ button. Visibility state is owned by TabularReviewView (localStorage-
backed); the new menu is a controlled view over props.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5a03ee69 [feat-021] Move manage-columns menu into the toolbar (left of Add Documents) Nick Whitehouse 2026-05-07 ↗ GitHub
commit body
The sliders icon was inside the table header next to the + Add column
control - the user pointed out it's the wrong place. Moved into the main
toolbar, sitting just before the "+ Add Documents" / "+ Add Columns"
group, matching the layout pattern from work___.

- Removed ColumnVisibilityMenu render + its 5 props from TRTable.
- Removed the import from TRTable.
- Added the import + render in TabularReviewView's toolbar, with the
  same handlers wired (handleToggleColumnVisibility, handleShowAllColumns,
  handleHideAllColumns, handleDeleteColumn).
- TRTable's column-header row goes back to its original layout (just
  the + Add column button) - no behavioural change there.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

Capture this thread into my fork

Download a single Markdown prompt that tells Claude how to port every commit above into your working tree — adapting paths and structure to match your repo. Run it via claude -p < capture-thread-152.md from inside the repo you want the changes in.

⬇ Download capture-thread-152.md