feat(dashboard): Forgejo/Cursor-grade diff review viewer (#1009) #1012
No reviewers
Labels
No labels
area:agents
area:dashboard
area:database
area:design
area:design-review
area:flows
area:infra
area:meta
area:security
area:sessions
area:webhook
area:workdir
security
type:bug
type:chore
type:meta
type:user-story
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/claude-hooks!1012
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "code-lead/1009"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Rebuilds the fleet event drawer's
Diff reviewtab with file-tree sidebar, sticky headers, Shiki highlighting, word-level intra-line diff, expand-context, soft-wrap toggle, and per-line copy.Test plan
apps/web/src/components/agent/diff/*.test.ts(token-LCS cap, file-tree builder, syntax map, URL collapse hook)apps/web/src/components/agent/run-diff-review.test.tsx— 37 cases incl. fixtures for single/multi-file unified, split, oversize, unknown-extension, word-edge cases?collapsed=URL persistenceCloses #1009
All #1009 ACs met. CI green.
Nits (not blocking):
treeNodesuseMemo (run-diff-review.tsx) callsdiffLines()for every file to count adds/removes for the sidebar, duplicating the O(m×n) work already done inside eachFileDiffBlock.fileDiff. Bounded byLINE_DIFF_CAPso not critical, but worth lifting the computation or caching counts separately in a follow-up.usePrefersReducedMotionstartsuseState(false)— first render won't respect the OS setting until the effect fires. Initialise lazily:useState(() => typeof window !== "undefined" && window.matchMedia?.(QUERY)?.matches ?? false).