eliziff is making Mike's front end earn its keep

This is a concentrated effort to make a legal-AI workspace feel lighter, steadier and less repetitive without changing its core purpose.

workflowinfrastructure

Across 154 commits, eliziff has stripped duplicate interface work and simplified the moving parts behind document, project, chat and review screens. The notable point is not a splashy new feature, but an unusually disciplined cleanup sprint, with changes repeatedly measured rather than merely declared complete.

  • Document upload interactions have been consolidated, reducing overlapping ways to add files.
  • Chat, project and tabular-review screens have had their state handling simplified, aiming for less friction as users move between matters.
  • Heavier streaming and document-viewing elements now load only when needed, which should reduce the initial burden on the browser.
  • Authentication is applied more consistently across the workspace, while model and effort controls have been compacted.

The team also recorded before-and-after results throughout the pass, making the performance claims easier to audit on GitHub.

So what Legal teams considering Mike as a daily workspace should care because small reductions in delay and interface clutter compound across document-heavy work.

View this fork on GitHub →

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

Commits in this thread

154 commits from eliziff/Beaver, oldest first. Source extracted verbatim from the harvested git log.

SHA Subject Author Date
2fdfb7fe perf: simplify responsive frontend surfaces Eli Ziff 2026-07-27 ↗ GitHub
dba1e942 perf: persist the Turbopack build cache Eli Ziff 2026-07-27 ↗ GitHub
c90c935f perf: avoid eager assistant bundle on other routes Eli Ziff 2026-07-27 ↗ GitHub
4f898989 perf: reduce startup and duplicate client work Eli Ziff 2026-07-27 ↗ GitHub
adb37a56 feat: stabilize drafting and compact core UI Eli Ziff 2026-07-27 ↗ GitHub
90e77d2d refactor: delete dead exports, unify sha256/xml/whitespace helpers Eli Ziff 2026-07-27 ↗ GitHub
commit body
Un-export 23 module-internal symbols, delete 5 fully dead ones
(including the fast-diff dependency, imported solely to be re-exported
'for future work'), and collapse five local sha256 definitions, three
XML entity decoders, and two whitespace normalizers into lib/hash.ts
and lib/text.ts. officeText's decoder decoded & first, which
double-decoded entities; the shared decoder fixes that.

tsc clean; 639 backend tests pass.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QUsMXzBsEJ27DjJVPSfW5o
b7c05711 perf: lazy MCP SDK, incremental backend builds Eli Ziff 2026-07-27 ↗ GitHub
commit body
The MCP SDK cost ~270ms of require time on every server boot even with
zero connectors configured. Load it on first connector use instead:
type-only imports stay, the Client/transport pair loads inside
withMcpClient, and the OAuth 'auth' entry point loads behind a tiny
wrapper at its two call sites. Eager module graph drops 674 -> 472
modules; boot 764ms -> 581ms.

tsconfig gains 'incremental': full backend build 8.3s cold -> 4.4s warm.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QUsMXzBsEJ27DjJVPSfW5o
d4dffaf4 perf: load undici at first guarded fetch, not at boot Eli Ziff 2026-07-27 ↗ GitHub
commit body
undici (95 modules, ~100ms) was in the eager graph solely for the SSRF
guard's pinned-DNS Agent, which is per-request work. With this and the
lazy MCP SDK the server's eager module graph is 674 -> 377 modules.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QUsMXzBsEJ27DjJVPSfW5o
d18580f1 perf: simplify Beaver UI and local workflows Eli Ziff 2026-07-27 ↗ GitHub
efc899d1 refactor: unify LLM adapter tracing and API key resolution Eli Ziff 2026-07-27 ↗ GitHub
commit body
Every adapter duplicated the same two rituals: a ~10-line apiKey()
override-or-env-or-throw copy, and paired logRawLlmStream(...) +
rawStreamRecorder?.record(...) calls at each stream-event site.
createLlmTrace() now folds console echo and file capture behind one
always-present handle, and requireApiKey() owns key resolution.
Also drops OpenAI's redundant sse_chunk capture (the parsed sse_event
records the same bytes, matching the DeepSeek adapter's granularity).

Verified: tsc clean; 47 llm+chat tests green incl. new smoke test
proving file capture JSON and console echo end-to-end.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QUsMXzBsEJ27DjJVPSfW5o
910b0920 perf: lazy-load SheetJS at first spreadsheet read Eli Ziff 2026-07-27 ↗ GitHub
commit body
xlsx (~1 MB, installed from a pinned CDN tarball) sat in the eager
boot graph for every process that never touches a spreadsheet.
spreadsheetToLLMText is now async with a memoized dynamic import;
verified via require-cache probe that xlsx no longer loads at boot.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QUsMXzBsEJ27DjJVPSfW5o
90314399 fix: stabilize local UI and document workflows Eli Ziff 2026-07-28 ↗ GitHub
204c95c8 Eliminate route pop-in and duplicate tabular UI Eli Ziff 2026-07-28 ↗ GitHub
3d6559fb Delete duplicate stream and option readers Eli Ziff 2026-07-28 ↗ GitHub
348621d9 Delete duplicated account UI and dead API code Eli Ziff 2026-07-28 ↗ GitHub
d0c90f54 Delete unused frontend helpers Eli Ziff 2026-07-28 ↗ GitHub
3e1de61b Consolidate document and streaming workflows Eli Ziff 2026-07-28 ↗ GitHub
bc85de73 Delete redundant tabular workflow wrapper Eli Ziff 2026-07-28 ↗ GitHub
6ec6db4f Simplify tabular model selection state Eli Ziff 2026-07-28 ↗ GitHub
5fcf008c Block builds against a live frontend Eli Ziff 2026-07-28 ↗ GitHub
17b1c13a Remove dead table filter props Eli Ziff 2026-07-28 ↗ GitHub
e068d8fc Simplify tabular workflow actions Eli Ziff 2026-07-28 ↗ GitHub
a5543dd7 Unify panel resizing Eli Ziff 2026-07-28 ↗ GitHub
754a8ac1 Record frontend simplification measurements Eli Ziff 2026-07-28 ↗ GitHub
9727cf0f Reuse native project document actions Eli Ziff 2026-07-28 ↗ GitHub
cfa67c57 Reuse native tabular document actions Eli Ziff 2026-07-28 ↗ GitHub
396509a4 Record native action simplification Eli Ziff 2026-07-28 ↗ GitHub
83166c41 Simplify project selection actions Eli Ziff 2026-07-28 ↗ GitHub
4ba76f0c Fit project tables to narrow viewports Eli Ziff 2026-07-28 ↗ GitHub
e39becb5 Record navigation and responsive gains Eli Ziff 2026-07-28 ↗ GitHub
83ce61d6 Simplify member access actions Eli Ziff 2026-07-28 ↗ GitHub
5e0d275e Stabilize remaining bulk actions Eli Ziff 2026-07-28 ↗ GitHub
dedabcb5 Stabilize document attachment control Eli Ziff 2026-07-28 ↗ GitHub
bad5ce03 Record fixed control gains Eli Ziff 2026-07-28 ↗ GitHub
bd83c424 Remove duplicate tabular cell overlay Eli Ziff 2026-07-28 ↗ GitHub
37eac54b Remove redundant workspace loading state Eli Ziff 2026-07-28 ↗ GitHub
5ab0655d Record tabular interaction cut Eli Ziff 2026-07-28 ↗ GitHub
7d4187ef Use the shared column preset chooser Eli Ziff 2026-07-28 ↗ GitHub
39649f2d Delete unused frontend prop paths Eli Ziff 2026-07-28 ↗ GitHub
7dcb424c Record preset chooser cut Eli Ziff 2026-07-28 ↗ GitHub
61c138b5 Mount document drag listeners once Eli Ziff 2026-07-28 ↗ GitHub
2986a527 Record stable drag listener result Eli Ziff 2026-07-28 ↗ GitHub
511347bc Remove duplicate document drop surface Eli Ziff 2026-07-28 ↗ GitHub
0684b794 Share document extension validation Eli Ziff 2026-07-28 ↗ GitHub
48684b17 Keep filename validation lightweight Eli Ziff 2026-07-28 ↗ GitHub
8b4bce00 Avoid duplicate frontend type checking Eli Ziff 2026-07-28 ↗ GitHub
3f28d087 Deduplicate model effort capabilities Eli Ziff 2026-07-28 ↗ GitHub
f1e9eee2 Consolidate local and cloud legal source tools Eli Ziff 2026-07-28 ↗ GitHub
af50a66c test: share supabase route fixtures Eli Ziff 2026-07-28 ↗ GitHub
8fa282e5 refactor: share tabular document generation Eli Ziff 2026-07-28 ↗ GitHub
f4df1f38 refactor: share route normalization helpers Eli Ziff 2026-07-28 ↗ GitHub
ea91bff2 refactor: share async route wrapper Eli Ziff 2026-07-28 ↗ GitHub
5376827c refactor: reuse filename normalization Eli Ziff 2026-07-28 ↗ GitHub
c696288f perf: lazy load cloud download route Eli Ziff 2026-07-28 ↗ GitHub
95b38bca perf: defer cloud project cleanup Eli Ziff 2026-07-28 ↗ GitHub
6c208517 refactor: share library kind normalization Eli Ziff 2026-07-28 ↗ GitHub
c2f3cc1d Record mid-pilot deviations: matcher fallback and task-01 sandbox incident Eli Ziff 2026-07-28 ↗ GitHub
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016yXxuitxX5h4wm1v88hnga
cdcd5300 perf: defer cloud profile lookups Eli Ziff 2026-07-28 ↗ GitHub
df3ccc83 perf: split sidebar-only modals from app shell Eli Ziff 2026-07-28 ↗ GitHub
1ea1c485 perf: keep local and cloud routes lazy Eli Ziff 2026-07-28 ↗ GitHub
01a71fc5 shrink: share local-cloud route selection Eli Ziff 2026-07-28 ↗ GitHub
f8c34f81 shrink: keep one reasoning effort control Eli Ziff 2026-07-28 ↗ GitHub
a8d346e6 shrink: inline the one-use workflow prompt editor Eli Ziff 2026-07-28 ↗ GitHub
b3beb9cb shrink: inline the one-use document version chip Eli Ziff 2026-07-28 ↗ GitHub
fcb82135 style: remove redundant blue action tone Eli Ziff 2026-07-28 ↗ GitHub
baefea84 style: use red and neutral state accents Eli Ziff 2026-07-28 ↗ GitHub
1fadca12 style: remove nonessential UI transitions Eli Ziff 2026-07-28 ↗ GitHub
5649e508 shrink: collapse repeated frontend request and memo boilerplate Eli Ziff 2026-07-28 ↗ GitHub
11663fab shrink: remove compiler-redundant list memoization Eli Ziff 2026-07-28 ↗ GitHub
94f2be2a shrink: remove redundant derived-value memoization Eli Ziff 2026-07-28 ↗ GitHub
98aed7a4 shrink: inline the single auth gate loader Eli Ziff 2026-07-28 ↗ GitHub
b542e377 shrink: share document viewer selection Eli Ziff 2026-07-28 ↗ GitHub
b3b6e9e6 delete: remove document citation compatibility fields Eli Ziff 2026-07-28 ↗ GitHub
9d04ec85 style: delete unused theme shims Eli Ziff 2026-07-28 ↗ GitHub
1208ebe3 shrink: remove unused document viewer import Eli Ziff 2026-07-28 ↗ GitHub
63e62914 shrink: let compiler memoize model setters Eli Ziff 2026-07-28 ↗ GitHub
177688f5 shrink: share non-document citation formatting Eli Ziff 2026-07-28 ↗ GitHub
053d8e9a shrink: make citation text cleanup context-free Eli Ziff 2026-07-28 ↗ GitHub
f54c2569 perf: keep wrapper routes server-rendered Eli Ziff 2026-07-28 ↗ GitHub
ce168afa shrink: share date and size formatting Eli Ziff 2026-07-28 ↗ GitHub
8896f565 shrink: remove inert transition utilities Eli Ziff 2026-07-28 ↗ GitHub
87aec7e2 shrink: use the shared file icon directly Eli Ziff 2026-07-28 ↗ GitHub
4ec491bd docs: consolidate lean runtime and context plan Eli Ziff 2026-07-28 ↗ GitHub
5b2b769a shrink: share table row sorting Eli Ziff 2026-07-28 ↗ GitHub
81c6dd16 shrink: use shared document sorting Eli Ziff 2026-07-28 ↗ GitHub
25310ffb shrink: inline trivial review map Eli Ziff 2026-07-28 ↗ GitHub
2a97b32c perf: lazy load document renderers Eli Ziff 2026-07-28 ↗ GitHub
42a3964d shrink: route uploads through api client Eli Ziff 2026-07-28 ↗ GitHub
3509f802 shrink: reuse binary api request Eli Ziff 2026-07-28 ↗ GitHub
f001b213 shrink: share multipart uploads Eli Ziff 2026-07-28 ↗ GitHub
b7357a9e shrink: share streaming request setup Eli Ziff 2026-07-28 ↗ GitHub
3489924d shrink: centralize authenticated fetches Eli Ziff 2026-07-28 ↗ GitHub
f50ae3ca shrink: share api base configuration Eli Ziff 2026-07-28 ↗ GitHub
5c04021a shrink: hide auth header implementation Eli Ziff 2026-07-28 ↗ GitHub
f239d06b shrink: simplify document picker Eli Ziff 2026-07-28 ↗ GitHub
799a24c2 shrink: flatten document side panel Eli Ziff 2026-07-28 ↗ GitHub
78b303e9 shrink: remove frontend whitespace noise Eli Ziff 2026-07-28 ↗ GitHub
c4b03f67 style: keep compact surfaces readable Eli Ziff 2026-07-28 ↗ GitHub
74c4f36a shrink: data settings actions Eli Ziff 2026-07-28 ↗ GitHub
4466f705 shrink: remove unused picker state Eli Ziff 2026-07-28 ↗ GitHub
25926bad shrink: remove redundant explorer layouts Eli Ziff 2026-07-28 ↗ GitHub
346445a5 shrink: remove project column dropdowns Eli Ziff 2026-07-28 ↗ GitHub
ecc5ce57 shrink: flatten connector tool list Eli Ziff 2026-07-28 ↗ GitHub
58a033c6 shrink: remove review table dropdowns Eli Ziff 2026-07-28 ↗ GitHub
c9bf9f20 shrink: simplify workflow filtering Eli Ziff 2026-07-28 ↗ GitHub
13770a51 style: remove trailing whitespace Eli Ziff 2026-07-28 ↗ GitHub
745078af shrink: remove library document filter controls Eli Ziff 2026-07-28 ↗ GitHub
130d13de shrink: remove cross-document version drop Eli Ziff 2026-07-28 ↗ GitHub
7b872349 shrink: keep document drops local Eli Ziff 2026-07-28 ↗ GitHub
0ab70e09 shrink: render assistant questions in one panel Eli Ziff 2026-07-28 ↗ GitHub
20cdc164 shrink: remove workflow metadata duplication Eli Ziff 2026-07-28 ↗ GitHub
15543e0a shrink: remove workflow table filler Eli Ziff 2026-07-28 ↗ GitHub
6e0cfa47 shrink: remove modal cancel alias Eli Ziff 2026-07-28 ↗ GitHub
2796f267 shrink: remove unused table filters Eli Ziff 2026-07-28 ↗ GitHub
56e7f050 shrink: remove dead table helpers Eli Ziff 2026-07-28 ↗ GitHub
7cda6cab perf: lazy-load heavy backend routes Eli Ziff 2026-07-28 ↗ GitHub
6aa04d12 shrink: remove unused row sorter Eli Ziff 2026-07-28 ↗ GitHub
c1188373 shrink: share sidebar icon factory Eli Ziff 2026-07-28 ↗ GitHub
b203b478 shrink: inline compact opinion text Eli Ziff 2026-07-28 ↗ GitHub
e42ad8bd Record effort provenance: all sonnet rows ran at high Eli Ziff 2026-07-28 ↗ GitHub
commit body
CLI default is high on effort-capable models and this machine's
settings.json pins effortLevel high, so pre-pin cc-harness rows and
judge calls were already tier-parity with claude-sonnet-4-6-high.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018bhP89cYSdEEjHNPnxacns
9581ecc8 shrink: share assistant edit callbacks Eli Ziff 2026-07-28 ↗ GitHub
6954d838 shrink: reuse graph store transactions Eli Ziff 2026-07-28 ↗ GitHub
6c916610 experiment: remove legacy shell from compact route Eli Ziff 2026-07-28 ↗ GitHub
b5c495ac shrink: share readonly provider database access Eli Ziff 2026-07-28 ↗ GitHub
4430ccdf shrink: apply local auth once per router Eli Ziff 2026-07-28 ↗ GitHub
fee55c00 shrink: apply library auth once per router Eli Ziff 2026-07-28 ↗ GitHub
80fbefb9 shrink: apply document auth once per router Eli Ziff 2026-07-28 ↗ GitHub
ae781fee shrink: apply project auth once per router Eli Ziff 2026-07-28 ↗ GitHub
dfae26cf shrink: apply tabular auth once per router Eli Ziff 2026-07-28 ↗ GitHub
14ab3fe4 shrink: apply workflow auth once per router Eli Ziff 2026-07-28 ↗ GitHub
8f74170e shrink: share profile label loading Eli Ziff 2026-07-28 ↗ GitHub
cb59b27d test: remove deleted sorter coverage Eli Ziff 2026-07-28 ↗ GitHub
ac6ca537 test: share mutable supabase fixtures Eli Ziff 2026-07-28 ↗ GitHub
1cbe151e shrink: share automation stream parsing Eli Ziff 2026-07-28 ↗ GitHub
a57bbe49 shrink: centralize assistant document events Eli Ziff 2026-07-28 ↗ GitHub
a88bdda1 shrink: reuse streaming placeholder predicate Eli Ziff 2026-07-28 ↗ GitHub
991b1ed6 chore: remove local paths and secret-like fixtures Eli Ziff 2026-07-29 ↗ GitHub
d1014660 docs: citation-machinery doctrine - reuse shared surfaces, no one-off regex Eli Ziff 2026-07-30 ↗ GitHub
commit body
Citation detection/resolution goes through citationKey.ts,
caselawCitator.ts (citationAliasKeys), the corpus lookup indexes, and
the US lane (courtlistenerLocalBulk + eyecite); genuinely new shapes
expand the shared module with tests. CITATION_IN_QUERY in
a2ajPassageSearch.ts recorded as pre-existing debt. Also carries a
concurrent session's journal-footnote-pairs data note.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012AgUm5EcRKbT3duVFMbrQD
b80f05ec Unify the plan to current priors; scrub the stale hold-out framing Eli Ziff 2026-07-31 ↗ GitHub
commit body
The plan still read as though a Stage 19 burn were queued and Tier C were the
last gate before it. That framing predates the four audits.

Current prior stated up front: LegalBench-RAG is NOT the main bed - no case law,
no citations, no courts, so the citation web, court hierarchy and attested
characterization are structurally unmeasurable there, and F1 showed its
retrieval numbers are substantially a query-format artifact. It gets closed out,
not extended.

Phases replaced by an explicit priority order: harden the deterministic
structure layer, then premise #1's checker-family crossing (both in flight),
then free re-tests on banked data, then the case-law bed where the thesis
actually lives, then the arms never run, then the structure round's composed
ablations. LegalBench closeout drops to last and is explicitly "not a gate for
anything": Tier C answers whether G+ctx was ever separable from plain G, and the
hold-out burn is a separate decision rather than something queued behind it.
File the CRLF defect upstream regardless.

Principle 8 (nothing retired on a deterministic proxy) now carries the full
retirement standard. Structure-round doc re-pointed at priority 6.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H9ToHYJVDxfeJcJwdzrP2H
345a9820 perf: hoist constant amendment regex compilation Eli Ziff 2026-08-02 ↗ GitHub
818f3bcf Record native zero-spend r2 replacement Eli Ziff 2026-08-02 ↗ GitHub
53756c41 Record Mike retrieval ablation result Eli Ziff 2026-08-02 ↗ GitHub
2beff81a Tighten Library panel geometry Eli Ziff 2026-08-09 ↗ GitHub
983cfe61 Fix compact confirmation dialog sizing Eli Ziff 2026-08-09 ↗ GitHub
afb7c971 Simplify compact confirmation dialogs Eli Ziff 2026-08-09 ↗ GitHub
c137143c Refine citation chip contrast Eli Ziff 2026-08-09 ↗ GitHub
e980aabc Style assistant links in red Eli Ziff 2026-08-09 ↗ GitHub
9016ee41 Stabilize document viewer startup Eli Ziff 2026-08-09 ↗ GitHub
7039af77 improve assistant dock and library drag attachments Eli Ziff 2026-08-10 ↗ GitHub
c6af4a43 compact model and effort controls Eli Ziff 2026-08-10 ↗ GitHub
3f7ad130 stage model and effort selection Eli Ziff 2026-08-10 ↗ GitHub
26bca880 balance model picker width Eli Ziff 2026-08-10 ↗ GitHub
cbee19b2 keep model control geometry fixed Eli Ziff 2026-08-10 ↗ GitHub
6b6b98c4 Merge remote-tracking branch 'eliziff/main' into migration/consolidate-main-20260811 Eli Ziff 2026-08-11 ↗ GitHub

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-842.md from inside the repo you want the changes in.

⬇ Download capture-thread-842.md