feat: folder-grouped tabular reviews with per-user page limit

🟢 open · #54 · willchen96/mike ← ecarjat/mike · opened 16d ago by ecarjat · +1,923-411 across 23 files · ↗ on GitHub

From the PR description

Summary

  • Folder-grouped rows: a new toggle in the tabular review creation flow lets users treat all documents inside the same project subfolder as a single review row (label = folder path, subtitle = N documents). Documents without a subfolder still get their own row.
  • Per-user page limit: a configurable tabular_max_pages setting (10-2000, default 250) in Account → Models & API Keys controls how large a grouped row can be before it is skipped. Rows that exceed the limit now surface a single, full-width error banner instead of repeating the error icon in every column.
  • PDF.js noise fixes: all getDocument calls now pass standardFontDataUrl and verbosity: 0, eliminating the standardFontDataUrl and TT: undefined function: 32 console warnings.

Database changes

Two new migrations ship alongside an updated schema.sql:

Migration Purpose
20260510000000_tabular_review_rows.sql Adds document_grouping to tabular_reviews; introduces tabular_review_rows and tabular_review_row_sources tables; backfills existing cells; adds RLS policies
20260510000001_user_tabular_max_pages.sql Adds tabular_max_pages integer default 250 to user_profiles

The initial schema (20240101000000_initial_schema.sql) is also updated to keep it in sync with the new tables for fresh installs.

Test plan

  • Create a project with at least two subfolders, each containing multiple documents
  • Start a tabular review → enable "Treat documents in the same subfolder as one row" → confirm rows are grouped by folder with correct labels and document counts
  • Run all columns → confirm each folder row is processed as a unit
  • In Account → Models & API Keys, set Max pages to a low value (e.g. 10) and re-run → confirm the row shows the full-width error banner with the page-count message
  • Confirm no standardFontDataUrl or TT: undefined function warnings in backend logs after PDF upload/processing

🤖 Generated with Claude Code

Our analysis

Folder-grouped rows and per-user page caps for tabular reviews — read the full analysis →

Think the analysis missed something the PR description covers?

Capture this PR into my fork

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

⬇ Download capture-pull-54.md