feat(review): lazy per-file diffs for huge PRs + review-thread resolve state #5515
ccantynzAI Reviewcommented 10d ago
AI Triage
(no summary)
Priority: medium Risk area: mixed
Suggested labels: (no label suggestions) Suggested reviewers: (no reviewer suggestions)
Suggestions only — nothing has been applied. The PR author stays in control.
gluecron[bot]🤖 botAI Reviewcommented 10d ago
AI review unavailable
The platform's AI balance is exhausted, so AI generation is temporarily unavailable. Nothing was lost. You can queue this as a repair for the internal agent from the repository's Health page, or try again once the balance is restored. The PR is otherwise unchanged.
Cross-repo impact
See what breaks downstream if this PR merges.
⮌ Merged
This pull request was merged into main.
c comment · e edit title · m merge · a approve · r request changes · ? shortcuts
Scorecard move #6 — the last of the greenlit block (agent-built, coordinator-rebased)
Big-PR diffs: past 100 files or 1.5MB of patch, the Files-changed area renders a per-file list (path, ±counts, status) with each patch lazy-loaded on expand via a new access-gated fragment endpoint (
GET .../pulls/:number/files/:index/patch, same auth chain as the PR page,?path=fallback for moved branches). Below the budget, rendering is byte-for-byte identical to today — proven by diffing base-vs-branch output on the same fixture in both unified and split modes.Thread resolve: migration 0126 adds
resolved_at/resolved_bytopr_comments. Finding: threads are flat — comments grouped by(file_path, line_number)anchor; resolution scopes to the group's earliest comment. Permission: PR author OR thread-root author OR write access (pure exportedcanResolvePrThread). Resolved threads collapse behind "✓ Resolved by @user · show"; the conversation tab gets an "N of M threads resolved" pill. Display only — merging is deliberately not gated on resolution.Full suite in the agent worktree: 4886 pass / 6 pre-existing fails (verified on base). Typecheck clean on current main; targeted tests green after rebase.
🤖 Generated with Claude Code