Repository navigation
fix(client-runtime): preserve saved names for repository groups - #27652
iTzFrancesco wants to merge 1 commit into
Conversation
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — Repository groups now retain their shared saved title even when it matches a repository name. The change affects displayed labels without changing grouping identity or stored data. You can add or adjust custom eligibility rules. Learn more. |
|
No actionable comments were generated in the recent review.
|
| Layer / File(s) | Summary |
|---|---|
Preserve shared project titles packages/client-runtime/src/state/projectGrouping.ts, packages/client-runtime/src/state/projectGrouping.test.ts |
The label derivation returns the sole shared project title without excluding titles that match the repository display name or repository name. A test verifies the label for matching local and remote projects. |
Priority:
Estimated code review effort: 2 (Simple) | ~8 minutes
Change: Bug fix
Possibly related issues
pingdotgg/t3code#26296— Removes the guard for a saved title that equals the repository name.pingdotgg/t3code#15049— Changes the label logic for the case where the saved title remains the repository name.pingdotgg/t3code#24999— Changes the grouped-label derivation used by the interface, though the described mismatch may not be fully covered.
Suggested labels: bugfix, size:XS
Suggested reviewers: t3dotgg, macroscopeapp
Merge Risk: 
Minimal · up to f73df
-
No actionable merge-blocking risk remains in the reviewed grouping-label change.
Pre-merge checks: 
4
-
Full details: Description check
-
Explanation
The description is complete and relevant. It explains the problem, change, reproduction steps, scope exception, linked issue, screenshots, focused verification results, limitations, and agent attribution. The verification content uses a "## Checks" heading instead of the template's "## Verification" heading, but it provides the required information.
-
Finishing Touches
-
🧪 Generate unit tests (beta)
-
- Create a new PR
-
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Comment @coderabbitai help to get the list of available commands.
|
Note Written by Verified in a real dev environmentverified unchanged head
before, main project picker: after, pr project picker with the same thread: before, main project settings: after, pr project settings: fresh pr-side provider turn: rename, restore, grouping off/on, and retained provider thread (idle intervals removed): Not verifiednative electron, ios/android clients, separate remote environments, relay/tunnel connections, and providers other than codex were not exercised. all three real checkouts used this linux environment. the older pr server warned about newer migration ids in the copied task database, then started and completed the flows above. |






Problem
With repository grouping enabled, grouped checkouts can share a saved project title equal to the repository name. The current label derivation treats that title as repository identity and falls back to
owner/repo, so the picker and project settings can show a different label from the saved project name. Related to #4880.This qualifies for the small, focused bug-fix exception in CONTRIBUTING.md: it fixes one mismatch in an existing workflow, with no new option, product default, or workflow. The patch changes only the derived display label and its regression test; stored titles, repository identity, and grouping keys stay unchanged.
This replaces #27133, which was closed because it lacked real-client before/after evidence.
Change
Prefer a unanimous non-empty saved project title even when it matches the repository name. Fall back to repository identity only when member titles are missing or disagree. The regression test covers local and remote checkouts and asserts that the canonical group key stays unchanged while the label uses the saved title.
Reproduction
owner/repo; with this change the picker and Settings use the saved title.Before and after
The two before screenshots are the original Windows T3 Code report, showing the affected owner/repo labels in the project picker and Settings.
Before — project picker
Before — project settings
The after screenshots are from the T3 Code web client using an isolated development home. The fixture has two checkout entries pointing at the same GitHub remote and sharing the short saved title. It does not use the live VPS; the focused regression test covers the local/remote environment case.
After — project picker
After — project settings
Checks
pnpm exec vp test run packages/client-runtime/src/state/projectGrouping.test.ts— 21 tests passed.check:changed— format, lint, both Knip passes, typecheck for 7 affected workspaces, and the focused test file passed. On Windows I ran the script directly with a temporary child-process shim because the normal runner's child process cannot launchvp.cmd(spawn vp ENOENT).Two different repositories with the same unanimous saved short title may now display the same label; their repository grouping identities remain distinct.
Prepared and verified by Codex in T3 Code (GPT-6 Luna).