WS9 PR 3: firm-visibility frontend (PeopleModal, Firm library, badges)

↗ view on GitHub · sloth-ninja · 2026-07-28 · 913897ac

Build the firm-library UI on top of WS9 PR 2's backend (#55). Frontend only;
no backend/migration/.env touched. Built to the approved mock-ups.

- mikeApi: getFirmMemberSuggestions, updateProjectVisibility,
  updateTabularReviewVisibility, getFirmLibrary, getAdminFirmLibrary,
  revertFirmLibraryItem; visibility field on the Project/TabularReview types.
- PeopleModal: firm-member suggestion pills (owner + firm only; external
  emails still free-typed) and a "Visible to everyone at <firm>" toggle
  (owner-only, optimistic + rollback, confirm-before-ON, audit info strip);
  project-scoped reviews show an inherited-visibility note instead of the
  toggle. AccountToggle gains an ariaLabel prop.
- Firm library page ((pages)/firm-library) + a firm-gated sidebar item.
- Admin Firm settings: a "Firm library" card with MFA-guarded per-item
  Revert to private (confirm + optimistic removal + rollback).
- FirmBadge (indigo pill) on firm-visible rows in the matters and
  tabular-reviews lists, via a new TablePrimaryCell adornment prop.

Deviations (honesty-driven, noted in BUILD_LOG): admin card shows "updated"
not "firm-visible since" (payload has only updatedAt); review rows show
document count without a column count (not in the firm-library payload).

Verification: frontend tsc clean; eslint introduces zero new problems (3
pre-existing set-state-in-effect errors on untouched lines). No prettier on
frontend files. Backend tsc + vitest re-run green (500/500) to prove it was
untouched. Screenshots pending (headless worktree; mock-ups are the reference).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Repository Sloth-ninja/JessicaOSS
Author sloth-ninja <ezanahaddis@gmail.com>
Authored
Parents aed5f1d6
Stats 14 files changed , +936 , -8
Part of WS9: firm library and firm-level visibility

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-913897ac.md from inside the repo you want the change in.

⬇ Download capture-commit-913897ac.md