ecarjat adds folder-grouped tabular rows with per-user page caps
ecarjat introduces a new tabular review mode that collapses subfolder documents into a single review row, plus a per-user page limit with a cleaner error UI when that limit is hit. The schema change is non-trivial: rows become first-class records with their own table and RLS policies.
The document_grouping field on tabular_reviews now controls whether the review creates one row per document (existing behaviour) or one row per subfolder. In folder mode, documents sharing a subfolder are merged into a single row; documents at the project root still get individual rows.
To support this, the diff introduces tabular_review_rows and tabular_review_row_sources as new tables (with RLS policies and a migration backfill for existing cells). The tabular_cells table gains a nullable row_id FK. The backend routes/tabular.ts rewrite is ~+791/-407 lines - it now operates on row IDs rather than document IDs when assembling LLM prompts for folder rows.
Per-user page caps land in the same commit. A tabular_max_pages value (range 10-2000, default 250) is stored on user profiles and surfaced in the account settings. When a row's total page count exceeds the cap, it's skipped and the frontend shows a single full-width banner rather than repeating an error icon across every column. Individual error cells also gain hover tooltips with the actual failure reason. A fast-follow commit (be1665a) adds tabularMaxPages: 250 to the fallback profile in UserProfileContext - without it, the feature crashes for users whose profile fetch has failed.
PDF.js normalisation is bundled in the same commit: standardFontDataUrl and verbosity: 0 are passed to all getDocument call sites, which stops TT: undefined function: 32 warnings from polluting backend logs during document processing.
Spotted something wrong? Or know the PR text has fresher detail than the writeup above?