Repository navigation
fix(server): keep forks separate from their upstream repository in project grouping - #11011
Project516 wants to merge 2 commits into
Conversation
ApprovabilityVerdict: Would Approve Macroscope's review found this PR approvable — This is a focused bug fix that keeps fork grouping separate while preserving canonical upstream identity, with targeted resolver and grouping tests and backward-compatible metadata. An unresolved Medium finding identifies a missing fallback for fork labels when origin display metadata is absent. Not approved because:
Adjust the Minimum Blocking Severity for this repo — including turning it Off — in Settings. You can add or adjust custom eligibility rules. Learn more. |
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
🧰 Additional context used📚 Code guidelines (1)No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository: pingdotgg/t3code/.coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (4)
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 8 remain after this review. 📝 WalkthroughWalkthroughRepository identities now include metadata for a distinct fork origin. Repository grouping, labels, and mobile task selection use origin-aware helpers. Tests and documentation cover fork separation from upstream repositories. ChangesFork identity grouping
Priority: ➖ Normal Estimated code review effort: 3 (Moderate) | ~25 minutes Change: Bug fix · Severity of issue fixed: Medium Suggested reviewers: Merge Risk: ⚪ Minimal · up to Forks use their own origin for grouping and labels while retaining upstream identity for pull-request behavior. No actionable merge-blocking issue is established; the change is mergeable subject to normal checks. Security Architecture ReviewSecurity architecture risk: 🔵 Low · up to The change separates fork grouping from canonical repository identity without a demonstrated expansion of access or privileges. Task destinations remain explicit. Compatibility across older and newer repository metadata, and end-to-end access enforcement, remain unconfirmed. Retained concerns Security review detailsSecurity Blast Radius
Trust Boundaries and Controls
Resilience and Maintainability Implications
🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (3 passed)
Full details: Description checkExplanation The description explains the problem and the implementation, but it does not use the required Problem, Change, Scope and approval, and Verification sections. It also omits focused test results and does not embed or link the required before-and-after UI screenshots. Resolution Add the required sections. State the problem and reproduction context under Problem, implementation details under Change, the linked issue or maintainer approval under Scope and approval, and the tests run with observed results under Verification. Embed or link before-and-after screenshots for the UI label changes.
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
8637e33 to
b2d9e76
Compare
Bugbot is paused — on-demand spend limit reachedBugbot uses usage-based billing for this team and has hit its on-demand spend limit. A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue. |
|
claude-opus-5 responding on behalf of project516 Rebased onto The only conflict was in I dropped the sentence rather than relocating it. No code changes in the rebase. Also corrected the file list above, which still claimed a user-doc sentence. |
b2d9e76 to
4510018
Compare
…oject grouping A checkout with an upstream remote takes its canonical identity from upstream so pull request features target the repository it forked. Project grouping used that same key, so a fork and a checkout of the original collapsed into one group with the upstream name. The identity now also carries the checkout's own origin remote when it differs from the canonical repository. Clients group and label by origin, so a fork stays its own project under its own name while the canonical identity is unchanged. Fixes pingdotgg#4880
4510018 to
46ccd58
Compare
|
Note This comment is posted by Julius' dot Closing for missing UI verification. This changes visible fork grouping and labels, but the PR leaves the before/after requirement unchecked and points to the September 5 reproduction rather than captures of this fix. The reported resolver and grouping tests are useful. Please attach before/after screenshots showing the corrected fork grouping and labels, then request reconsideration. |
|
Claude Opus 5.5 responding on behalf of project516 Thanks for the review. I opened #14639 as the replacement, rebased on current main. It has before/after screenshots of this fix in the web client, taken with disposable fork fixtures, showing the fork as its own picker entry and the draft header named after the fork. Its verification section also lists the focused tests and what I could not check. |
What Changed
A checkout with an
upstreamremote keeps its canonical repository identity from upstream, so pull request features still target the repository a fork tracks. The identity now also carries the checkout's ownoriginremote, as an optionaloriginfield, when it names a different repository than the canonical one.Clients group and label by that field. A fork and a checkout of the original no longer collapse into one group, and the fork shows under its own name (
owner/fork) in the sidebar, the draft project picker, and the mobile machine switcher. Checkouts of the same fork, including its worktrees, still group together.Files:
packages/contracts:RepositoryOriginschema, optionaloriginonRepositoryIdentity, and two small helpers that pick the grouping key and label.apps/server: the resolver emitsoriginwhen it differs from the primary remote.packages/client-runtime: project grouping keys and labels use the helpers.apps/mobile: the environment matching in the new task flow uses the same key.Why
Fixes #4880. With repository grouping on, a renamed fork and the original repository showed up as a single project named after upstream, so users could not tell which one they were working in. The workaround was turning grouping off.
The earlier attempt in #7686 swapped the origin and upstream precedence for every consumer of the identity. That was closed because a sidebar label should not redefine canonical identity. This change leaves
canonicalKey,locator,owner,name, andprovideruntouched, so pull request lookup and linking behave exactly as before. Only grouping and labels read the new field, and only when a fork is involved. Checkouts without anupstreamremote produce the same identity as today.UI Changes
The only visible change is text: a fork's group label and picker entry read
owner/forkinstead of the upstream name, and the fork is listed as its own project. No layout, motion, or styling changes. Before-state screenshots are in the issue thread from the September 5 check.Checklist
Claude Fable 5.1 via Claude Code.