Use short names for grouped projects - #4138

Closed
unknown6003 wants to merge 1 commit into
pingdotgg:mainfrom
unknown6003:agent/short-project-group-labels
Closed

Use short names for grouped projects#4138
unknown6003 wants to merge 1 commit into
pingdotgg:mainfrom
unknown6003:agent/short-project-group-labels

Conversation

@unknown6003

@unknown6003unknown6003 commented Jul 18, 2026

Copy link
Copy Markdown

What Changed

  • Keep matching repositories grouped across devices and environments.
  • Prefer the shared repository name for grouped sidebar labels, while preserving the owner-qualified display name and project title as fallbacks.

Why

Repository grouping correctly uses a canonical remote identity, but the group label preferred displayName, which can include a repository owner. The repository identity already exposes the short name, so checking it first keeps cross-device grouping intact without showing the owner.

UI Changes

Before

Grouped project labels include the repository owner

After

Grouped project labels use only the repository name

Checks

  • vp test apps/web/src/environmentGrouping.test.ts apps/mobile/src/features/home/homeThreadList.test.ts (18 passed)
  • vp check
  • vp run typecheck

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • No animation or interaction change requires a video

@coderabbitai

coderabbitaiBot commented Jul 18, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 8692d29b-d32a-4574-8574-f73a55696aca

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Jul 18, 2026
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch 5 times, most recently from b3d6acf to 923bc2fCompareJuly 18, 2026 21:02
@github-actionsgithub-actionsBot added size:XS 0-9 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Jul 18, 2026
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 923bc2f to 93f2851CompareJuly 18, 2026 21:03
@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). and removed size:XS 0-9 changed lines (additions + deletions). labels Jul 18, 2026
@unknown6003
unknown6003 marked this pull request as ready for review July 18, 2026 21:21
@macroscopeapp

macroscopeappBot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

Multiple unresolved review comments identify that this change can cause ambiguous project labels when different repositories share the same short name (e.g., both org/app and user/app showing as 'app'). These substantive concerns warrant human review.

You can customize Macroscope's approvability policy. Learn more.

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jul 18, 2026

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:93f285159e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

input.members.map((member) => member.repositoryIdentity?.name),
);
if (sharedRepositoryNames.length === 1) {
return sharedRepositoryNames[0]!;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Disambiguate colliding short repository labels

When two distinct canonical repositories with the same basename are each grouped across environments (for example, org/app and user/app), this returns app for both groups. Both the web sidebar and mobile home list call deriveProjectGroupLabel independently per group, so users can no longer distinguish the rows or their new-thread targets; the previous qualified displayName kept them distinct. Prefer the short name only when it does not collide with another visible repository group, or retain a qualified fallback for collisions.

Useful? React with 👍 / 👎.

@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 93f2851 to 6435959CompareJuly 18, 2026 22:27
@macroscopeapp
macroscopeappBot dismissed their stale reviewJuly 18, 2026 22:27

Dismissing prior approval to re-evaluate 6435959

Comment threadapps/mobile/src/features/home/homeThreadList.ts Outdated
Comment threadapps/mobile/src/features/home/homeThreadList.ts Outdated
Comment threadpackages/client-runtime/src/state/projectGrouping.ts Outdated
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 6435959 to 0d49c21CompareJuly 18, 2026 22:33
Comment threadpackages/client-runtime/src/state/projectGrouping.ts Outdated
(project) =>
project.title.toLocaleLowerCase().includes(query) ||
project.repositoryIdentity?.displayName?.toLocaleLowerCase().includes(query),
);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Search skips repository short name

Low Severity

Home search was extended to match repositoryIdentity.displayName, but not repositoryIdentity.name. When a name conflict yields a workspace title label instead of a short or qualified name, queries matching only the repo short name may not match the group even though threads exist.

Fix in CursorFix in Web

Reviewed by Cursor Bugbot for commit 0d49c21. Configure here.

const query = input.searchQuery.trim().toLocaleLowerCase();
const visibleProjects = [...groups.values()]
.filter((group) => group.threads.length > 0 || group.pendingTasks.length > 0)
.flatMap((group) => group.projects);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inactive repos skip collision scan

Medium Severity

Mobile builds visibleProjects only from home groups that already have threads or pending tasks. Another loaded repository with the same short name but no home activity is omitted, so deriveProjectGroupLabel treats the name as unique and shows an ambiguous short label while web includes that repository in its collision scan.

Additional Locations (1)
Fix in CursorFix in Web

Reviewed by Cursor Bugbot for commit 0d49c21. Configure here.

@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 0d49c21 to e330656CompareJuly 18, 2026 22:40
Comment threadapps/mobile/src/features/home/homeThreadList.ts Outdated
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from e330656 to 9082dfbCompareJuly 18, 2026 22:43
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 9082dfb to a9bbbc4CompareJuly 18, 2026 23:39

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

There are 3 total unresolved issues (including 2 from previous reviews).

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit a9bbbc4. Configure here.

if (sharedDisplayNames.length === 1) {
return sharedDisplayNames[0]!;
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ambiguous short labels across groups

Medium Severity

The deriveProjectGroupLabel function now uses the short repository name for a group's label if all its members share it. This check is limited to the group's members and doesn't consider other visible project groups. As a result, distinct project groups (e.g., org/app and user/app) can both be labeled app in the sidebar and home thread list, leading to ambiguity where qualified labels are expected.

Fix in CursorFix in Web

Reviewed by Cursor Bugbot for commit a9bbbc4. Configure here.

@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

We're closing this PR as we clean up the T3 Code backlog. Thank you for taking the time to put this together.

Closing the global short-name change. Qualified repository names distinguish projects with the same repository name, while current main already preserves explicit group titles. Short names should come from an explicit title rather than changing the fallback label for every grouped project. Related work: #5923.

If you believe we closed this in error, please reopen the PR and leave a comment explaining what we missed. If GitHub does not let you reopen it, leave a comment here and we'll take another look.

@t3dotggt3dotgg closed this Aug 27, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@unknown6003@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Use short names for grouped projects - #4138

Closed
unknown6003 wants to merge 1 commit into
pingdotgg:mainfrom
unknown6003:agent/short-project-group-labels
Closed

Use short names for grouped projects#4138
unknown6003 wants to merge 1 commit into
pingdotgg:mainfrom
unknown6003:agent/short-project-group-labels

Conversation

@unknown6003

@unknown6003unknown6003 commented Jul 18, 2026

Copy link
Copy Markdown

What Changed

  • Keep matching repositories grouped across devices and environments.
  • Prefer the shared repository name for grouped sidebar labels, while preserving the owner-qualified display name and project title as fallbacks.

Why

Repository grouping correctly uses a canonical remote identity, but the group label preferred displayName, which can include a repository owner. The repository identity already exposes the short name, so checking it first keeps cross-device grouping intact without showing the owner.

UI Changes

Before

Grouped project labels include the repository owner

After

Grouped project labels use only the repository name

Checks

  • vp test apps/web/src/environmentGrouping.test.ts apps/mobile/src/features/home/homeThreadList.test.ts (18 passed)
  • vp check
  • vp run typecheck

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • No animation or interaction change requires a video

@coderabbitai

coderabbitaiBot commented Jul 18, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 8692d29b-d32a-4574-8574-f73a55696aca

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Jul 18, 2026
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch 5 times, most recently from b3d6acf to 923bc2fCompareJuly 18, 2026 21:02
@github-actionsgithub-actionsBot added size:XS 0-9 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Jul 18, 2026
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 923bc2f to 93f2851CompareJuly 18, 2026 21:03
@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). and removed size:XS 0-9 changed lines (additions + deletions). labels Jul 18, 2026
@unknown6003
unknown6003 marked this pull request as ready for review July 18, 2026 21:21
@macroscopeapp

macroscopeappBot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

Multiple unresolved review comments identify that this change can cause ambiguous project labels when different repositories share the same short name (e.g., both org/app and user/app showing as 'app'). These substantive concerns warrant human review.

You can customize Macroscope's approvability policy. Learn more.

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jul 18, 2026

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:93f285159e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

input.members.map((member) => member.repositoryIdentity?.name),
);
if (sharedRepositoryNames.length === 1) {
return sharedRepositoryNames[0]!;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Disambiguate colliding short repository labels

When two distinct canonical repositories with the same basename are each grouped across environments (for example, org/app and user/app), this returns app for both groups. Both the web sidebar and mobile home list call deriveProjectGroupLabel independently per group, so users can no longer distinguish the rows or their new-thread targets; the previous qualified displayName kept them distinct. Prefer the short name only when it does not collide with another visible repository group, or retain a qualified fallback for collisions.

Useful? React with 👍 / 👎.

@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 93f2851 to 6435959CompareJuly 18, 2026 22:27
@macroscopeapp
macroscopeappBot dismissed their stale reviewJuly 18, 2026 22:27

Dismissing prior approval to re-evaluate 6435959

Comment threadapps/mobile/src/features/home/homeThreadList.ts Outdated
Comment threadapps/mobile/src/features/home/homeThreadList.ts Outdated
Comment threadpackages/client-runtime/src/state/projectGrouping.ts Outdated
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 6435959 to 0d49c21CompareJuly 18, 2026 22:33
Comment threadpackages/client-runtime/src/state/projectGrouping.ts Outdated
(project) =>
project.title.toLocaleLowerCase().includes(query) ||
project.repositoryIdentity?.displayName?.toLocaleLowerCase().includes(query),
);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Search skips repository short name

Low Severity

Home search was extended to match repositoryIdentity.displayName, but not repositoryIdentity.name. When a name conflict yields a workspace title label instead of a short or qualified name, queries matching only the repo short name may not match the group even though threads exist.

Fix in CursorFix in Web

Reviewed by Cursor Bugbot for commit 0d49c21. Configure here.

const query = input.searchQuery.trim().toLocaleLowerCase();
const visibleProjects = [...groups.values()]
.filter((group) => group.threads.length > 0 || group.pendingTasks.length > 0)
.flatMap((group) => group.projects);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inactive repos skip collision scan

Medium Severity

Mobile builds visibleProjects only from home groups that already have threads or pending tasks. Another loaded repository with the same short name but no home activity is omitted, so deriveProjectGroupLabel treats the name as unique and shows an ambiguous short label while web includes that repository in its collision scan.

Additional Locations (1)
Fix in CursorFix in Web

Reviewed by Cursor Bugbot for commit 0d49c21. Configure here.

@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 0d49c21 to e330656CompareJuly 18, 2026 22:40
Comment threadapps/mobile/src/features/home/homeThreadList.ts Outdated
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from e330656 to 9082dfbCompareJuly 18, 2026 22:43
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 9082dfb to a9bbbc4CompareJuly 18, 2026 23:39

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

There are 3 total unresolved issues (including 2 from previous reviews).

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit a9bbbc4. Configure here.

if (sharedDisplayNames.length === 1) {
return sharedDisplayNames[0]!;
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ambiguous short labels across groups

Medium Severity

The deriveProjectGroupLabel function now uses the short repository name for a group's label if all its members share it. This check is limited to the group's members and doesn't consider other visible project groups. As a result, distinct project groups (e.g., org/app and user/app) can both be labeled app in the sidebar and home thread list, leading to ambiguity where qualified labels are expected.

Fix in CursorFix in Web

Reviewed by Cursor Bugbot for commit a9bbbc4. Configure here.

@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

We're closing this PR as we clean up the T3 Code backlog. Thank you for taking the time to put this together.

Closing the global short-name change. Qualified repository names distinguish projects with the same repository name, while current main already preserves explicit group titles. Short names should come from an explicit title rather than changing the fallback label for every grouped project. Related work: #5923.

If you believe we closed this in error, please reopen the PR and leave a comment explaining what we missed. If GitHub does not let you reopen it, leave a comment here and we'll take another look.

@t3dotggt3dotgg closed this Aug 27, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@unknown6003@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Use short names for grouped projects - #4138

Closed
unknown6003 wants to merge 1 commit into
pingdotgg:mainfrom
unknown6003:agent/short-project-group-labels
Closed

Use short names for grouped projects#4138
unknown6003 wants to merge 1 commit into
pingdotgg:mainfrom
unknown6003:agent/short-project-group-labels

Conversation

@unknown6003

@unknown6003unknown6003 commented Jul 18, 2026

Copy link
Copy Markdown

What Changed

  • Keep matching repositories grouped across devices and environments.
  • Prefer the shared repository name for grouped sidebar labels, while preserving the owner-qualified display name and project title as fallbacks.

Why

Repository grouping correctly uses a canonical remote identity, but the group label preferred displayName, which can include a repository owner. The repository identity already exposes the short name, so checking it first keeps cross-device grouping intact without showing the owner.

UI Changes

Before

Grouped project labels include the repository owner

After

Grouped project labels use only the repository name

Checks

  • vp test apps/web/src/environmentGrouping.test.ts apps/mobile/src/features/home/homeThreadList.test.ts (18 passed)
  • vp check
  • vp run typecheck

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • No animation or interaction change requires a video

@coderabbitai

coderabbitaiBot commented Jul 18, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 8692d29b-d32a-4574-8574-f73a55696aca

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Jul 18, 2026
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch 5 times, most recently from b3d6acf to 923bc2fCompareJuly 18, 2026 21:02
@github-actionsgithub-actionsBot added size:XS 0-9 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Jul 18, 2026
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 923bc2f to 93f2851CompareJuly 18, 2026 21:03
@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). and removed size:XS 0-9 changed lines (additions + deletions). labels Jul 18, 2026
@unknown6003
unknown6003 marked this pull request as ready for review July 18, 2026 21:21
@macroscopeapp

macroscopeappBot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

Multiple unresolved review comments identify that this change can cause ambiguous project labels when different repositories share the same short name (e.g., both org/app and user/app showing as 'app'). These substantive concerns warrant human review.

You can customize Macroscope's approvability policy. Learn more.

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jul 18, 2026

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:93f285159e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

input.members.map((member) => member.repositoryIdentity?.name),
);
if (sharedRepositoryNames.length === 1) {
return sharedRepositoryNames[0]!;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Disambiguate colliding short repository labels

When two distinct canonical repositories with the same basename are each grouped across environments (for example, org/app and user/app), this returns app for both groups. Both the web sidebar and mobile home list call deriveProjectGroupLabel independently per group, so users can no longer distinguish the rows or their new-thread targets; the previous qualified displayName kept them distinct. Prefer the short name only when it does not collide with another visible repository group, or retain a qualified fallback for collisions.

Useful? React with 👍 / 👎.

@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 93f2851 to 6435959CompareJuly 18, 2026 22:27
@macroscopeapp
macroscopeappBot dismissed their stale reviewJuly 18, 2026 22:27

Dismissing prior approval to re-evaluate 6435959

Comment threadapps/mobile/src/features/home/homeThreadList.ts Outdated
Comment threadapps/mobile/src/features/home/homeThreadList.ts Outdated
Comment threadpackages/client-runtime/src/state/projectGrouping.ts Outdated
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 6435959 to 0d49c21CompareJuly 18, 2026 22:33
Comment threadpackages/client-runtime/src/state/projectGrouping.ts Outdated
(project) =>
project.title.toLocaleLowerCase().includes(query) ||
project.repositoryIdentity?.displayName?.toLocaleLowerCase().includes(query),
);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Search skips repository short name

Low Severity

Home search was extended to match repositoryIdentity.displayName, but not repositoryIdentity.name. When a name conflict yields a workspace title label instead of a short or qualified name, queries matching only the repo short name may not match the group even though threads exist.

Fix in CursorFix in Web

Reviewed by Cursor Bugbot for commit 0d49c21. Configure here.

const query = input.searchQuery.trim().toLocaleLowerCase();
const visibleProjects = [...groups.values()]
.filter((group) => group.threads.length > 0 || group.pendingTasks.length > 0)
.flatMap((group) => group.projects);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inactive repos skip collision scan

Medium Severity

Mobile builds visibleProjects only from home groups that already have threads or pending tasks. Another loaded repository with the same short name but no home activity is omitted, so deriveProjectGroupLabel treats the name as unique and shows an ambiguous short label while web includes that repository in its collision scan.

Additional Locations (1)
Fix in CursorFix in Web

Reviewed by Cursor Bugbot for commit 0d49c21. Configure here.

@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 0d49c21 to e330656CompareJuly 18, 2026 22:40
Comment threadapps/mobile/src/features/home/homeThreadList.ts Outdated
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from e330656 to 9082dfbCompareJuly 18, 2026 22:43
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 9082dfb to a9bbbc4CompareJuly 18, 2026 23:39

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

There are 3 total unresolved issues (including 2 from previous reviews).

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit a9bbbc4. Configure here.

if (sharedDisplayNames.length === 1) {
return sharedDisplayNames[0]!;
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ambiguous short labels across groups

Medium Severity

The deriveProjectGroupLabel function now uses the short repository name for a group's label if all its members share it. This check is limited to the group's members and doesn't consider other visible project groups. As a result, distinct project groups (e.g., org/app and user/app) can both be labeled app in the sidebar and home thread list, leading to ambiguity where qualified labels are expected.

Fix in CursorFix in Web

Reviewed by Cursor Bugbot for commit a9bbbc4. Configure here.

@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

We're closing this PR as we clean up the T3 Code backlog. Thank you for taking the time to put this together.

Closing the global short-name change. Qualified repository names distinguish projects with the same repository name, while current main already preserves explicit group titles. Short names should come from an explicit title rather than changing the fallback label for every grouped project. Related work: #5923.

If you believe we closed this in error, please reopen the PR and leave a comment explaining what we missed. If GitHub does not let you reopen it, leave a comment here and we'll take another look.

@t3dotggt3dotgg closed this Aug 27, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@unknown6003@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Use short names for grouped projects - #4138

Closed
unknown6003 wants to merge 1 commit into
pingdotgg:mainfrom
unknown6003:agent/short-project-group-labels
Closed

Use short names for grouped projects#4138
unknown6003 wants to merge 1 commit into
pingdotgg:mainfrom
unknown6003:agent/short-project-group-labels

Conversation

@unknown6003

@unknown6003unknown6003 commented Jul 18, 2026

Copy link
Copy Markdown

What Changed

  • Keep matching repositories grouped across devices and environments.
  • Prefer the shared repository name for grouped sidebar labels, while preserving the owner-qualified display name and project title as fallbacks.

Why

Repository grouping correctly uses a canonical remote identity, but the group label preferred displayName, which can include a repository owner. The repository identity already exposes the short name, so checking it first keeps cross-device grouping intact without showing the owner.

UI Changes

Before

Grouped project labels include the repository owner

After

Grouped project labels use only the repository name

Checks

  • vp test apps/web/src/environmentGrouping.test.ts apps/mobile/src/features/home/homeThreadList.test.ts (18 passed)
  • vp check
  • vp run typecheck

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • No animation or interaction change requires a video

@coderabbitai

coderabbitaiBot commented Jul 18, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 8692d29b-d32a-4574-8574-f73a55696aca

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Jul 18, 2026
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch 5 times, most recently from b3d6acf to 923bc2fCompareJuly 18, 2026 21:02
@github-actionsgithub-actionsBot added size:XS 0-9 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Jul 18, 2026
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 923bc2f to 93f2851CompareJuly 18, 2026 21:03
@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). and removed size:XS 0-9 changed lines (additions + deletions). labels Jul 18, 2026
@unknown6003
unknown6003 marked this pull request as ready for review July 18, 2026 21:21
@macroscopeapp

macroscopeappBot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

Multiple unresolved review comments identify that this change can cause ambiguous project labels when different repositories share the same short name (e.g., both org/app and user/app showing as 'app'). These substantive concerns warrant human review.

You can customize Macroscope's approvability policy. Learn more.

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jul 18, 2026

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:93f285159e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

input.members.map((member) => member.repositoryIdentity?.name),
);
if (sharedRepositoryNames.length === 1) {
return sharedRepositoryNames[0]!;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Disambiguate colliding short repository labels

When two distinct canonical repositories with the same basename are each grouped across environments (for example, org/app and user/app), this returns app for both groups. Both the web sidebar and mobile home list call deriveProjectGroupLabel independently per group, so users can no longer distinguish the rows or their new-thread targets; the previous qualified displayName kept them distinct. Prefer the short name only when it does not collide with another visible repository group, or retain a qualified fallback for collisions.

Useful? React with 👍 / 👎.

@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 93f2851 to 6435959CompareJuly 18, 2026 22:27
@macroscopeapp
macroscopeappBot dismissed their stale reviewJuly 18, 2026 22:27

Dismissing prior approval to re-evaluate 6435959

Comment threadapps/mobile/src/features/home/homeThreadList.ts Outdated
Comment threadapps/mobile/src/features/home/homeThreadList.ts Outdated
Comment threadpackages/client-runtime/src/state/projectGrouping.ts Outdated
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 6435959 to 0d49c21CompareJuly 18, 2026 22:33
Comment threadpackages/client-runtime/src/state/projectGrouping.ts Outdated
(project) =>
project.title.toLocaleLowerCase().includes(query) ||
project.repositoryIdentity?.displayName?.toLocaleLowerCase().includes(query),
);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Search skips repository short name

Low Severity

Home search was extended to match repositoryIdentity.displayName, but not repositoryIdentity.name. When a name conflict yields a workspace title label instead of a short or qualified name, queries matching only the repo short name may not match the group even though threads exist.

Fix in CursorFix in Web

Reviewed by Cursor Bugbot for commit 0d49c21. Configure here.

const query = input.searchQuery.trim().toLocaleLowerCase();
const visibleProjects = [...groups.values()]
.filter((group) => group.threads.length > 0 || group.pendingTasks.length > 0)
.flatMap((group) => group.projects);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inactive repos skip collision scan

Medium Severity

Mobile builds visibleProjects only from home groups that already have threads or pending tasks. Another loaded repository with the same short name but no home activity is omitted, so deriveProjectGroupLabel treats the name as unique and shows an ambiguous short label while web includes that repository in its collision scan.

Additional Locations (1)
Fix in CursorFix in Web

Reviewed by Cursor Bugbot for commit 0d49c21. Configure here.

@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 0d49c21 to e330656CompareJuly 18, 2026 22:40
Comment threadapps/mobile/src/features/home/homeThreadList.ts Outdated
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from e330656 to 9082dfbCompareJuly 18, 2026 22:43
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 9082dfb to a9bbbc4CompareJuly 18, 2026 23:39

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

There are 3 total unresolved issues (including 2 from previous reviews).

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit a9bbbc4. Configure here.

if (sharedDisplayNames.length === 1) {
return sharedDisplayNames[0]!;
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ambiguous short labels across groups

Medium Severity

The deriveProjectGroupLabel function now uses the short repository name for a group's label if all its members share it. This check is limited to the group's members and doesn't consider other visible project groups. As a result, distinct project groups (e.g., org/app and user/app) can both be labeled app in the sidebar and home thread list, leading to ambiguity where qualified labels are expected.

Fix in CursorFix in Web

Reviewed by Cursor Bugbot for commit a9bbbc4. Configure here.

@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

We're closing this PR as we clean up the T3 Code backlog. Thank you for taking the time to put this together.

Closing the global short-name change. Qualified repository names distinguish projects with the same repository name, while current main already preserves explicit group titles. Short names should come from an explicit title rather than changing the fallback label for every grouped project. Related work: #5923.

If you believe we closed this in error, please reopen the PR and leave a comment explaining what we missed. If GitHub does not let you reopen it, leave a comment here and we'll take another look.

@t3dotggt3dotgg closed this Aug 27, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@unknown6003@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Use short names for grouped projects - #4138

Closed
unknown6003 wants to merge 1 commit into
pingdotgg:mainfrom
unknown6003:agent/short-project-group-labels
Closed

Use short names for grouped projects#4138
unknown6003 wants to merge 1 commit into
pingdotgg:mainfrom
unknown6003:agent/short-project-group-labels

Conversation

@unknown6003

@unknown6003unknown6003 commented Jul 18, 2026

Copy link
Copy Markdown

What Changed

  • Keep matching repositories grouped across devices and environments.
  • Prefer the shared repository name for grouped sidebar labels, while preserving the owner-qualified display name and project title as fallbacks.

Why

Repository grouping correctly uses a canonical remote identity, but the group label preferred displayName, which can include a repository owner. The repository identity already exposes the short name, so checking it first keeps cross-device grouping intact without showing the owner.

UI Changes

Before

Grouped project labels include the repository owner

After

Grouped project labels use only the repository name

Checks

  • vp test apps/web/src/environmentGrouping.test.ts apps/mobile/src/features/home/homeThreadList.test.ts (18 passed)
  • vp check
  • vp run typecheck

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • No animation or interaction change requires a video

@coderabbitai

coderabbitaiBot commented Jul 18, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 8692d29b-d32a-4574-8574-f73a55696aca

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Jul 18, 2026
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch 5 times, most recently from b3d6acf to 923bc2fCompareJuly 18, 2026 21:02
@github-actionsgithub-actionsBot added size:XS 0-9 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Jul 18, 2026
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 923bc2f to 93f2851CompareJuly 18, 2026 21:03
@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). and removed size:XS 0-9 changed lines (additions + deletions). labels Jul 18, 2026
@unknown6003
unknown6003 marked this pull request as ready for review July 18, 2026 21:21
@macroscopeapp

macroscopeappBot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

Multiple unresolved review comments identify that this change can cause ambiguous project labels when different repositories share the same short name (e.g., both org/app and user/app showing as 'app'). These substantive concerns warrant human review.

You can customize Macroscope's approvability policy. Learn more.

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jul 18, 2026

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:93f285159e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

input.members.map((member) => member.repositoryIdentity?.name),
);
if (sharedRepositoryNames.length === 1) {
return sharedRepositoryNames[0]!;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Disambiguate colliding short repository labels

When two distinct canonical repositories with the same basename are each grouped across environments (for example, org/app and user/app), this returns app for both groups. Both the web sidebar and mobile home list call deriveProjectGroupLabel independently per group, so users can no longer distinguish the rows or their new-thread targets; the previous qualified displayName kept them distinct. Prefer the short name only when it does not collide with another visible repository group, or retain a qualified fallback for collisions.

Useful? React with 👍 / 👎.

@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 93f2851 to 6435959CompareJuly 18, 2026 22:27
@macroscopeapp
macroscopeappBot dismissed their stale reviewJuly 18, 2026 22:27

Dismissing prior approval to re-evaluate 6435959

Comment threadapps/mobile/src/features/home/homeThreadList.ts Outdated
Comment threadapps/mobile/src/features/home/homeThreadList.ts Outdated
Comment threadpackages/client-runtime/src/state/projectGrouping.ts Outdated
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 6435959 to 0d49c21CompareJuly 18, 2026 22:33
Comment threadpackages/client-runtime/src/state/projectGrouping.ts Outdated
(project) =>
project.title.toLocaleLowerCase().includes(query) ||
project.repositoryIdentity?.displayName?.toLocaleLowerCase().includes(query),
);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Search skips repository short name

Low Severity

Home search was extended to match repositoryIdentity.displayName, but not repositoryIdentity.name. When a name conflict yields a workspace title label instead of a short or qualified name, queries matching only the repo short name may not match the group even though threads exist.

Fix in CursorFix in Web

Reviewed by Cursor Bugbot for commit 0d49c21. Configure here.

const query = input.searchQuery.trim().toLocaleLowerCase();
const visibleProjects = [...groups.values()]
.filter((group) => group.threads.length > 0 || group.pendingTasks.length > 0)
.flatMap((group) => group.projects);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inactive repos skip collision scan

Medium Severity

Mobile builds visibleProjects only from home groups that already have threads or pending tasks. Another loaded repository with the same short name but no home activity is omitted, so deriveProjectGroupLabel treats the name as unique and shows an ambiguous short label while web includes that repository in its collision scan.

Additional Locations (1)
Fix in CursorFix in Web

Reviewed by Cursor Bugbot for commit 0d49c21. Configure here.

@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 0d49c21 to e330656CompareJuly 18, 2026 22:40
Comment threadapps/mobile/src/features/home/homeThreadList.ts Outdated
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from e330656 to 9082dfbCompareJuly 18, 2026 22:43
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 9082dfb to a9bbbc4CompareJuly 18, 2026 23:39

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

There are 3 total unresolved issues (including 2 from previous reviews).

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit a9bbbc4. Configure here.

if (sharedDisplayNames.length === 1) {
return sharedDisplayNames[0]!;
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ambiguous short labels across groups

Medium Severity

The deriveProjectGroupLabel function now uses the short repository name for a group's label if all its members share it. This check is limited to the group's members and doesn't consider other visible project groups. As a result, distinct project groups (e.g., org/app and user/app) can both be labeled app in the sidebar and home thread list, leading to ambiguity where qualified labels are expected.

Fix in CursorFix in Web

Reviewed by Cursor Bugbot for commit a9bbbc4. Configure here.

@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

We're closing this PR as we clean up the T3 Code backlog. Thank you for taking the time to put this together.

Closing the global short-name change. Qualified repository names distinguish projects with the same repository name, while current main already preserves explicit group titles. Short names should come from an explicit title rather than changing the fallback label for every grouped project. Related work: #5923.

If you believe we closed this in error, please reopen the PR and leave a comment explaining what we missed. If GitHub does not let you reopen it, leave a comment here and we'll take another look.

@t3dotggt3dotgg closed this Aug 27, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@unknown6003@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Use short names for grouped projects - #4138

Closed
unknown6003 wants to merge 1 commit into
pingdotgg:mainfrom
unknown6003:agent/short-project-group-labels
Closed

Use short names for grouped projects#4138
unknown6003 wants to merge 1 commit into
pingdotgg:mainfrom
unknown6003:agent/short-project-group-labels

Conversation

@unknown6003

@unknown6003unknown6003 commented Jul 18, 2026

Copy link
Copy Markdown

What Changed

  • Keep matching repositories grouped across devices and environments.
  • Prefer the shared repository name for grouped sidebar labels, while preserving the owner-qualified display name and project title as fallbacks.

Why

Repository grouping correctly uses a canonical remote identity, but the group label preferred displayName, which can include a repository owner. The repository identity already exposes the short name, so checking it first keeps cross-device grouping intact without showing the owner.

UI Changes

Before

Grouped project labels include the repository owner

After

Grouped project labels use only the repository name

Checks

  • vp test apps/web/src/environmentGrouping.test.ts apps/mobile/src/features/home/homeThreadList.test.ts (18 passed)
  • vp check
  • vp run typecheck

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • No animation or interaction change requires a video

@coderabbitai

coderabbitaiBot commented Jul 18, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 8692d29b-d32a-4574-8574-f73a55696aca

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Jul 18, 2026
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch 5 times, most recently from b3d6acf to 923bc2fCompareJuly 18, 2026 21:02
@github-actionsgithub-actionsBot added size:XS 0-9 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Jul 18, 2026
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 923bc2f to 93f2851CompareJuly 18, 2026 21:03
@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). and removed size:XS 0-9 changed lines (additions + deletions). labels Jul 18, 2026
@unknown6003
unknown6003 marked this pull request as ready for review July 18, 2026 21:21
@macroscopeapp

macroscopeappBot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

Multiple unresolved review comments identify that this change can cause ambiguous project labels when different repositories share the same short name (e.g., both org/app and user/app showing as 'app'). These substantive concerns warrant human review.

You can customize Macroscope's approvability policy. Learn more.

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jul 18, 2026

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:93f285159e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

input.members.map((member) => member.repositoryIdentity?.name),
);
if (sharedRepositoryNames.length === 1) {
return sharedRepositoryNames[0]!;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Disambiguate colliding short repository labels

When two distinct canonical repositories with the same basename are each grouped across environments (for example, org/app and user/app), this returns app for both groups. Both the web sidebar and mobile home list call deriveProjectGroupLabel independently per group, so users can no longer distinguish the rows or their new-thread targets; the previous qualified displayName kept them distinct. Prefer the short name only when it does not collide with another visible repository group, or retain a qualified fallback for collisions.

Useful? React with 👍 / 👎.

@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 93f2851 to 6435959CompareJuly 18, 2026 22:27
@macroscopeapp
macroscopeappBot dismissed their stale reviewJuly 18, 2026 22:27

Dismissing prior approval to re-evaluate 6435959

Comment threadapps/mobile/src/features/home/homeThreadList.ts Outdated
Comment threadapps/mobile/src/features/home/homeThreadList.ts Outdated
Comment threadpackages/client-runtime/src/state/projectGrouping.ts Outdated
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 6435959 to 0d49c21CompareJuly 18, 2026 22:33
Comment threadpackages/client-runtime/src/state/projectGrouping.ts Outdated
(project) =>
project.title.toLocaleLowerCase().includes(query) ||
project.repositoryIdentity?.displayName?.toLocaleLowerCase().includes(query),
);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Search skips repository short name

Low Severity

Home search was extended to match repositoryIdentity.displayName, but not repositoryIdentity.name. When a name conflict yields a workspace title label instead of a short or qualified name, queries matching only the repo short name may not match the group even though threads exist.

Fix in CursorFix in Web

Reviewed by Cursor Bugbot for commit 0d49c21. Configure here.

const query = input.searchQuery.trim().toLocaleLowerCase();
const visibleProjects = [...groups.values()]
.filter((group) => group.threads.length > 0 || group.pendingTasks.length > 0)
.flatMap((group) => group.projects);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inactive repos skip collision scan

Medium Severity

Mobile builds visibleProjects only from home groups that already have threads or pending tasks. Another loaded repository with the same short name but no home activity is omitted, so deriveProjectGroupLabel treats the name as unique and shows an ambiguous short label while web includes that repository in its collision scan.

Additional Locations (1)
Fix in CursorFix in Web

Reviewed by Cursor Bugbot for commit 0d49c21. Configure here.

@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 0d49c21 to e330656CompareJuly 18, 2026 22:40
Comment threadapps/mobile/src/features/home/homeThreadList.ts Outdated
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from e330656 to 9082dfbCompareJuly 18, 2026 22:43
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 9082dfb to a9bbbc4CompareJuly 18, 2026 23:39

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

There are 3 total unresolved issues (including 2 from previous reviews).

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit a9bbbc4. Configure here.

if (sharedDisplayNames.length === 1) {
return sharedDisplayNames[0]!;
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ambiguous short labels across groups

Medium Severity

The deriveProjectGroupLabel function now uses the short repository name for a group's label if all its members share it. This check is limited to the group's members and doesn't consider other visible project groups. As a result, distinct project groups (e.g., org/app and user/app) can both be labeled app in the sidebar and home thread list, leading to ambiguity where qualified labels are expected.

Fix in CursorFix in Web

Reviewed by Cursor Bugbot for commit a9bbbc4. Configure here.

@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

We're closing this PR as we clean up the T3 Code backlog. Thank you for taking the time to put this together.

Closing the global short-name change. Qualified repository names distinguish projects with the same repository name, while current main already preserves explicit group titles. Short names should come from an explicit title rather than changing the fallback label for every grouped project. Related work: #5923.

If you believe we closed this in error, please reopen the PR and leave a comment explaining what we missed. If GitHub does not let you reopen it, leave a comment here and we'll take another look.

@t3dotggt3dotgg closed this Aug 27, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@unknown6003@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Use short names for grouped projects - #4138

Closed
unknown6003 wants to merge 1 commit into
pingdotgg:mainfrom
unknown6003:agent/short-project-group-labels
Closed

Use short names for grouped projects#4138
unknown6003 wants to merge 1 commit into
pingdotgg:mainfrom
unknown6003:agent/short-project-group-labels

Conversation

@unknown6003

@unknown6003unknown6003 commented Jul 18, 2026

Copy link
Copy Markdown

What Changed

  • Keep matching repositories grouped across devices and environments.
  • Prefer the shared repository name for grouped sidebar labels, while preserving the owner-qualified display name and project title as fallbacks.

Why

Repository grouping correctly uses a canonical remote identity, but the group label preferred displayName, which can include a repository owner. The repository identity already exposes the short name, so checking it first keeps cross-device grouping intact without showing the owner.

UI Changes

Before

Grouped project labels include the repository owner

After

Grouped project labels use only the repository name

Checks

  • vp test apps/web/src/environmentGrouping.test.ts apps/mobile/src/features/home/homeThreadList.test.ts (18 passed)
  • vp check
  • vp run typecheck

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • No animation or interaction change requires a video

@coderabbitai

coderabbitaiBot commented Jul 18, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 8692d29b-d32a-4574-8574-f73a55696aca

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Jul 18, 2026
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch 5 times, most recently from b3d6acf to 923bc2fCompareJuly 18, 2026 21:02
@github-actionsgithub-actionsBot added size:XS 0-9 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Jul 18, 2026
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 923bc2f to 93f2851CompareJuly 18, 2026 21:03
@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). and removed size:XS 0-9 changed lines (additions + deletions). labels Jul 18, 2026
@unknown6003
unknown6003 marked this pull request as ready for review July 18, 2026 21:21
@macroscopeapp

macroscopeappBot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

Multiple unresolved review comments identify that this change can cause ambiguous project labels when different repositories share the same short name (e.g., both org/app and user/app showing as 'app'). These substantive concerns warrant human review.

You can customize Macroscope's approvability policy. Learn more.

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jul 18, 2026

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:93f285159e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

input.members.map((member) => member.repositoryIdentity?.name),
);
if (sharedRepositoryNames.length === 1) {
return sharedRepositoryNames[0]!;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Disambiguate colliding short repository labels

When two distinct canonical repositories with the same basename are each grouped across environments (for example, org/app and user/app), this returns app for both groups. Both the web sidebar and mobile home list call deriveProjectGroupLabel independently per group, so users can no longer distinguish the rows or their new-thread targets; the previous qualified displayName kept them distinct. Prefer the short name only when it does not collide with another visible repository group, or retain a qualified fallback for collisions.

Useful? React with 👍 / 👎.

@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 93f2851 to 6435959CompareJuly 18, 2026 22:27
@macroscopeapp
macroscopeappBot dismissed their stale reviewJuly 18, 2026 22:27

Dismissing prior approval to re-evaluate 6435959

Comment threadapps/mobile/src/features/home/homeThreadList.ts Outdated
Comment threadapps/mobile/src/features/home/homeThreadList.ts Outdated
Comment threadpackages/client-runtime/src/state/projectGrouping.ts Outdated
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 6435959 to 0d49c21CompareJuly 18, 2026 22:33
Comment threadpackages/client-runtime/src/state/projectGrouping.ts Outdated
(project) =>
project.title.toLocaleLowerCase().includes(query) ||
project.repositoryIdentity?.displayName?.toLocaleLowerCase().includes(query),
);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Search skips repository short name

Low Severity

Home search was extended to match repositoryIdentity.displayName, but not repositoryIdentity.name. When a name conflict yields a workspace title label instead of a short or qualified name, queries matching only the repo short name may not match the group even though threads exist.

Fix in CursorFix in Web

Reviewed by Cursor Bugbot for commit 0d49c21. Configure here.

const query = input.searchQuery.trim().toLocaleLowerCase();
const visibleProjects = [...groups.values()]
.filter((group) => group.threads.length > 0 || group.pendingTasks.length > 0)
.flatMap((group) => group.projects);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inactive repos skip collision scan

Medium Severity

Mobile builds visibleProjects only from home groups that already have threads or pending tasks. Another loaded repository with the same short name but no home activity is omitted, so deriveProjectGroupLabel treats the name as unique and shows an ambiguous short label while web includes that repository in its collision scan.

Additional Locations (1)
Fix in CursorFix in Web

Reviewed by Cursor Bugbot for commit 0d49c21. Configure here.

@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 0d49c21 to e330656CompareJuly 18, 2026 22:40
Comment threadapps/mobile/src/features/home/homeThreadList.ts Outdated
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from e330656 to 9082dfbCompareJuly 18, 2026 22:43
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 9082dfb to a9bbbc4CompareJuly 18, 2026 23:39

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

There are 3 total unresolved issues (including 2 from previous reviews).

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit a9bbbc4. Configure here.

if (sharedDisplayNames.length === 1) {
return sharedDisplayNames[0]!;
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ambiguous short labels across groups

Medium Severity

The deriveProjectGroupLabel function now uses the short repository name for a group's label if all its members share it. This check is limited to the group's members and doesn't consider other visible project groups. As a result, distinct project groups (e.g., org/app and user/app) can both be labeled app in the sidebar and home thread list, leading to ambiguity where qualified labels are expected.

Fix in CursorFix in Web

Reviewed by Cursor Bugbot for commit a9bbbc4. Configure here.

@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

We're closing this PR as we clean up the T3 Code backlog. Thank you for taking the time to put this together.

Closing the global short-name change. Qualified repository names distinguish projects with the same repository name, while current main already preserves explicit group titles. Short names should come from an explicit title rather than changing the fallback label for every grouped project. Related work: #5923.

If you believe we closed this in error, please reopen the PR and leave a comment explaining what we missed. If GitHub does not let you reopen it, leave a comment here and we'll take another look.

@t3dotggt3dotgg closed this Aug 27, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@unknown6003@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Use short names for grouped projects - #4138

Closed
unknown6003 wants to merge 1 commit into
pingdotgg:mainfrom
unknown6003:agent/short-project-group-labels
Closed

Use short names for grouped projects#4138
unknown6003 wants to merge 1 commit into
pingdotgg:mainfrom
unknown6003:agent/short-project-group-labels

Conversation

@unknown6003

@unknown6003unknown6003 commented Jul 18, 2026

Copy link
Copy Markdown

What Changed

  • Keep matching repositories grouped across devices and environments.
  • Prefer the shared repository name for grouped sidebar labels, while preserving the owner-qualified display name and project title as fallbacks.

Why

Repository grouping correctly uses a canonical remote identity, but the group label preferred displayName, which can include a repository owner. The repository identity already exposes the short name, so checking it first keeps cross-device grouping intact without showing the owner.

UI Changes

Before

Grouped project labels include the repository owner

After

Grouped project labels use only the repository name

Checks

  • vp test apps/web/src/environmentGrouping.test.ts apps/mobile/src/features/home/homeThreadList.test.ts (18 passed)
  • vp check
  • vp run typecheck

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • No animation or interaction change requires a video

@coderabbitai

coderabbitaiBot commented Jul 18, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 8692d29b-d32a-4574-8574-f73a55696aca

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Jul 18, 2026
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch 5 times, most recently from b3d6acf to 923bc2fCompareJuly 18, 2026 21:02
@github-actionsgithub-actionsBot added size:XS 0-9 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Jul 18, 2026
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 923bc2f to 93f2851CompareJuly 18, 2026 21:03
@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). and removed size:XS 0-9 changed lines (additions + deletions). labels Jul 18, 2026
@unknown6003
unknown6003 marked this pull request as ready for review July 18, 2026 21:21
@macroscopeapp

macroscopeappBot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

Multiple unresolved review comments identify that this change can cause ambiguous project labels when different repositories share the same short name (e.g., both org/app and user/app showing as 'app'). These substantive concerns warrant human review.

You can customize Macroscope's approvability policy. Learn more.

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jul 18, 2026

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:93f285159e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

input.members.map((member) => member.repositoryIdentity?.name),
);
if (sharedRepositoryNames.length === 1) {
return sharedRepositoryNames[0]!;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Disambiguate colliding short repository labels

When two distinct canonical repositories with the same basename are each grouped across environments (for example, org/app and user/app), this returns app for both groups. Both the web sidebar and mobile home list call deriveProjectGroupLabel independently per group, so users can no longer distinguish the rows or their new-thread targets; the previous qualified displayName kept them distinct. Prefer the short name only when it does not collide with another visible repository group, or retain a qualified fallback for collisions.

Useful? React with 👍 / 👎.

@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 93f2851 to 6435959CompareJuly 18, 2026 22:27
@macroscopeapp
macroscopeappBot dismissed their stale reviewJuly 18, 2026 22:27

Dismissing prior approval to re-evaluate 6435959

Comment threadapps/mobile/src/features/home/homeThreadList.ts Outdated
Comment threadapps/mobile/src/features/home/homeThreadList.ts Outdated
Comment threadpackages/client-runtime/src/state/projectGrouping.ts Outdated
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 6435959 to 0d49c21CompareJuly 18, 2026 22:33
Comment threadpackages/client-runtime/src/state/projectGrouping.ts Outdated
(project) =>
project.title.toLocaleLowerCase().includes(query) ||
project.repositoryIdentity?.displayName?.toLocaleLowerCase().includes(query),
);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Search skips repository short name

Low Severity

Home search was extended to match repositoryIdentity.displayName, but not repositoryIdentity.name. When a name conflict yields a workspace title label instead of a short or qualified name, queries matching only the repo short name may not match the group even though threads exist.

Fix in CursorFix in Web

Reviewed by Cursor Bugbot for commit 0d49c21. Configure here.

const query = input.searchQuery.trim().toLocaleLowerCase();
const visibleProjects = [...groups.values()]
.filter((group) => group.threads.length > 0 || group.pendingTasks.length > 0)
.flatMap((group) => group.projects);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inactive repos skip collision scan

Medium Severity

Mobile builds visibleProjects only from home groups that already have threads or pending tasks. Another loaded repository with the same short name but no home activity is omitted, so deriveProjectGroupLabel treats the name as unique and shows an ambiguous short label while web includes that repository in its collision scan.

Additional Locations (1)
Fix in CursorFix in Web

Reviewed by Cursor Bugbot for commit 0d49c21. Configure here.

@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 0d49c21 to e330656CompareJuly 18, 2026 22:40
Comment threadapps/mobile/src/features/home/homeThreadList.ts Outdated
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from e330656 to 9082dfbCompareJuly 18, 2026 22:43
@unknown6003
unknown6003force-pushed the agent/short-project-group-labels branch from 9082dfb to a9bbbc4CompareJuly 18, 2026 23:39

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

There are 3 total unresolved issues (including 2 from previous reviews).

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit a9bbbc4. Configure here.

if (sharedDisplayNames.length === 1) {
return sharedDisplayNames[0]!;
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ambiguous short labels across groups

Medium Severity

The deriveProjectGroupLabel function now uses the short repository name for a group's label if all its members share it. This check is limited to the group's members and doesn't consider other visible project groups. As a result, distinct project groups (e.g., org/app and user/app) can both be labeled app in the sidebar and home thread list, leading to ambiguity where qualified labels are expected.

Fix in CursorFix in Web

Reviewed by Cursor Bugbot for commit a9bbbc4. Configure here.

@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

We're closing this PR as we clean up the T3 Code backlog. Thank you for taking the time to put this together.

Closing the global short-name change. Qualified repository names distinguish projects with the same repository name, while current main already preserves explicit group titles. Short names should come from an explicit title rather than changing the fallback label for every grouped project. Related work: #5923.

If you believe we closed this in error, please reopen the PR and leave a comment explaining what we missed. If GitHub does not let you reopen it, leave a comment here and we'll take another look.

@t3dotggt3dotgg closed this Aug 27, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@unknown6003@t3dotgg