fix: allow review diffs for registered projects#4288
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
ApprovabilityVerdict: Needs human review This PR changes runtime behavior by adding an early-return path that bypasses workspace boundary validation for registered projects, and removes fallback retry logic in the web component. These behavioral changes to validation gating warrant human review. You can customize Macroscope's approvability policy. Learn more. |
Summary
Root cause
Packaged desktop servers use the user's home directory as
ServerConfig.cwd.ReviewServiceonly trusted that directory and T3's managed worktree directory, so in-place projects on another drive or outside the home directory were rejected before VCS detection. The web client then retried againstServerConfig.cwd, hiding the authorization error behind an empty diff from the wrong directory.Impact
Working-tree and branch scopes now query the registered project's repository while preserving the arbitrary-cwd guard for unregistered paths. If validation genuinely fails, the original error remains visible instead of being replaced by an unrelated fallback result.
Closes #4022.
Validation
vp test run apps/server/src/review/ReviewService.test.ts(4 tests passed, including the outside-configured-root regression)vp run --filter t3 typecheckvp run --filter @t3tools/web typecheckvp lint --report-unused-disable-directives apps/server/src/review/ReviewService.ts apps/server/src/review/ReviewService.test.ts apps/web/src/components/DiffPanel.tsxvp fmt apps/server/src/review/ReviewService.ts apps/server/src/review/ReviewService.test.ts apps/web/src/components/DiffPanel.tsx --checkgit diff --checkNote
Medium Risk
Expands the review diff authorization boundary to registered project paths; behavior change is intentional but affects path validation for a security-sensitive API.
Overview
Review diff previews now accept a
cwdthat matches an active registered project’s workspace root, even when that path is outsideServerConfig.cwdor the managed worktrees directory. Unregistered paths still hit the same rejection as before.ReviewService.assertWorkspaceBoundCwdconsultsProjectionSnapshotQuery.getActiveProjectByWorkspaceRootafter the existing root checks; lookup failures surface asVcsRepositoryDetectionErrorinstead of a generic “outside workspace” message.DiffPanel no longer retries branch/working-tree diff previews against the server process
cwdwhen the API complains about the configured workspace root—that fallback could show an empty diff from the wrong repo. The UI uses a singlebranchDiffPreviewquery at the thread/projectactiveCwd.Tests mock projection lookup and add a regression case for an external registered project root.
Reviewed by Cursor Bugbot for commit a14a504. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Allow diff preview requests for registered project workspace roots
ReviewService.assertWorkspaceBoundCwdnow accepts acwdthat matches a registered project's workspace root viaProjectionSnapshotQuery.getActiveProjectByWorkspaceRoot, in addition to the existing within-root check.serverConfig.cwd), replacing it with a single request scoped toactiveCwd.VcsRepositoryDetectionErrorwith the operation tagReviewService.assertWorkspaceBoundCwd.resolveRegisteredProject.cwdon workspace root validation failures; all diff preview requests useactiveCwddirectly.Macroscope summarized a14a504.