feat(review): support multi-repo workspace reviews#543
Conversation
- Fix race condition in label generation by pre-computing labels sequentially - Fix rewritePatchLine to support quoted paths and rename/copy headers - Add separator between aggregated patches to avoid invalid diffs - Normalize input paths in resolveWorkspaceFilePath - Add timeout to PR discovery (15s) to prevent server hangs - Fix PATCH /api/workspace/repo to rollback state on failure via applyRepoMutation - Validate body.source runtime (must be 'local' or 'pr') - Snapshot active repo in agent jobs at launch to prevent race in onJobComplete - Prevent double-prefixing of agent findings when paths are already prefixed - Fix frontend findWorkspaceRepoForPath to use longest-prefix matching - Fix shared types: diffType uses DiffType, platformUser is string | null
|
👋 @backnotprop — this PR has been rebased on latest TL;DR: Lets All tests pass and the build is clean. Would love your eyes on this when you have a moment! |
…ale detectManagedVcs import
|
@Oscar-Silva More conflicts to resolve :( |
|
I can help resolve conflicts, but I’m not able to reproduce the advertised workflow on the current PR head. I tested a non-git parent directory with two child git repos, both with local changes: Running I can see the workspace helper can build a combined patch, and if I manually pass that patch to the existing review server, the file tree shows
Was some of the server/UI wiring dropped during conflict resolution or a merge from main? What command/workflow should I use to test the intended multi-repo review behavior? Aside, I'm happy to get this one through. Maybe @ericclemmons If you provide a bit more clarity on what exactly you're looking for out of this, I'll push it through and make sure its working e2e |
|
I've got the thing working well and will solve conflicts |
Problem
Plannotator's code review currently requires a git repository as the working directory. For teams working with poly-repo microservices architectures, there's no way to review changes across multiple repos in a single session — each repo needs its own review tab, feedback is fragmented, and the workflow doesn't match how developers actually work (navigating a parent directory with multiple independent services).
Issue #527 captured this gap: users want to run
plannotator reviewfrom a non-git parent directory and have it automatically discover and review all nested repos with local changes.Solution
This PR adds multi-repo workspace review — Plannotator can now operate from a non-git parent directory, auto-discover nested git repositories, and present a unified review session covering all repos.
How it works:
plannotator reviewfrom a non-git parent (e.g.,~/projects/containingsvc-a/,svc-b/,infra/)Scope:
buildWorkspaceLocalRepos()andbuildWorkspacePRRepos()for repo discoveryTest plan
bun test packages/server/review-workspace.test.ts packages/server/vcs.test.ts packages/review-editor/utils/exportFeedback.workspace.test.ts packages/review-editor/utils/buildFileTree.workspace.test.ts packages/review-editor/utils/reviewSearch.workspace.test.tsbun run --cwd apps/review build && bun run build:hook && bun run build:opencodemain(May 9, 2026)Files changed
packages/server/review-workspace.tspackages/shared/review-workspace.tspackages/server/vcs.tspackages/server/shared-handlers.tspackages/server/claude-review.tspackages/server/codex-review.tsapps/hook/server/index.tsCloses #527