Make worktree placement configurable - #4439

Closed
colonelpanic8 wants to merge 9 commits into
pingdotgg:mainfrom
colonelpanic8:t3code/configurable-workspace-placement
Closed

Make worktree placement configurable#4439
colonelpanic8 wants to merge 9 commits into
pingdotgg:mainfrom
colonelpanic8:t3code/configurable-workspace-placement

Conversation

@colonelpanic8

@colonelpanic8colonelpanic8 commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

What Changed

  • Add a persisted worktreePathTemplate server setting.
  • Expand {worktreesDir}, {repoRoot}, {repoName}, and {branch} when creating worktrees.
  • Keep {worktreesDir}/{repoName}/{branch} as the default, preserving the existing centralized layout.
  • Add a General settings control with a one-click reset to the default.
  • Apply the setting to new-session, explicit VCS, and pull-request worktree creation flows.
  • Normalize relative repository roots and allow review previews for worktrees matching the configured template.

Why

Some users keep worktrees alongside each repository, while others prefer T3 Code's centralized worktree directory. A configurable template supports both layouts without changing existing behavior.

For example, {repoRoot}/.worktrees/{branch} creates repository-local worktrees.

UI Changes

The General settings panel now exposes the worktree path template and documents its available variables. Browser verification covered the default value, persisting a repository-local template, and resetting to the default.

Default centralized templateRepository-local template persisted after reload
Default centralized worktree templateRepository-local worktree template persisted after reload

These current screenshots were recaptured from PR head 366d6e021814242392c778d49fd195397a8cbf11 in the combined package 0.0.29-patched-main-20260724 (integration 4dd4cef4039303179929a1dbdbf0c9b358c076f9).

Checklist

  • pnpm exec vp test run packages/contracts/src/settings.test.ts apps/server/src/serverSettings.test.ts apps/server/src/vcs/GitVcsDriverCore.test.ts apps/server/src/server.test.ts -t 'bootstraps first-send worktree turns|ServerSettings worktree path template|ServerSettingsPatch string normalization|server settings|uses the configured repository-local worktree path template|keeps the centralized worktree path as the default' (21 passed)
  • pnpm exec vp test run apps/server/src/review/ReviewService.test.ts apps/server/src/vcs/GitVcsDriverCore.test.ts (40 passed)
  • Targeted vp check for the final review-fix files (no warnings)
  • pnpm exec vp check (passes with 12 pre-existing warnings in untouched files)
  • pnpm --filter t3 typecheck
  • pnpm --filter @t3tools/contracts typecheck
  • Integrated web verification in an isolated authenticated environment against the exact combined package; default value, repository-local edit, and persistence after reload verified
  • pnpm exec vp run typecheck (workspace baseline fails in untouched web/mobile files: existing implicit-any and unknown AtomRegistry errors; the affected server and contracts package checks pass)

Note

Medium Risk
Touches worktree creation, review path sandboxing, and persisted settings across Git/VCS/WS layers; default template preserves prior behavior but misconfigured templates or template-matching edge cases could block previews or place worktrees unexpectedly.

Overview
Adds a persisted worktreePathTemplate server setting (default {worktreesDir}/{repoName}/{branch}) with a General settings field to edit and reset it.

Worktree creation no longer hardcodes the centralized layout: GitVcsDriverCore.createWorktree resolves paths via new resolveWorktreePathTemplate / matchesWorktreePathTemplate helpers, and bootstrap, VCS RPC, and PR-thread flows pass the setting (with fallback on read failure).

Review diff preview widens allowed cwd values: besides the workspace and legacy worktrees dir, paths under persisted thread worktrees or paths matching the template against active project repo roots are accepted. The WS handler loads getActiveProjectWorkspaceRoots and getActiveThreadWorktreePaths from projection SQL (without shell snapshot hydration) and forwards them to ReviewService.

Reviewed by Cursor Bugbot for commit b8aa507. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Make worktree placement configurable via a path template setting

  • Adds a worktreePathTemplate field to ServerSettings (default: {worktreesDir}/{repoName}/{branch}) with UI controls in the General settings panel to view, edit, and reset it.
  • GitVcsDriverCore.createWorktree and GitWorkflowService.createWorktree now accept an optional pathTemplate and resolve the worktree path by expanding template placeholders ({worktreesDir}, {repoRoot}, {repoName}, {branch}) instead of using a hardcoded path join.
  • New resolveWorktreePathTemplate and matchesWorktreePathTemplate utilities in worktreePathTemplate.ts handle expansion and pattern matching against candidate paths.
  • ReviewService.getDiffPreview now accepts optional repositoryRoots and knownWorktreePaths; workspace boundary validation allows cwds inside known worktree paths or matching the configured template against any provided repository root.
  • ProjectionSnapshotQuery gains getActiveProjectWorkspaceRoots and getActiveThreadWorktreePaths methods, which the WS RPC layer uses to supply these paths to the review service.
  • Risk: createWorktree may now fail earlier with a GitCommandError if repository root canonicalization fails when no explicit path is given.

Macroscope summarized b8aa507.

@coderabbitai

coderabbitaiBot commented Jul 24, 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 Plus

Run ID: 9ef36ed5-f453-4078-94cb-59ef58caf1d5

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:M 30-99 changed lines (additions + deletions). labels Jul 24, 2026
Comment threadapps/server/src/vcs/GitVcsDriverCore.ts Outdated
Comment threadapps/server/src/vcs/GitVcsDriverCore.ts Outdated
@macroscopeapp

macroscopeappBot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new user-facing feature (configurable worktree path templates) with new settings UI, path template resolution logic, and validation changes across multiple services. New features that introduce user-facing behavior warrant human review.

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

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Jul 24, 2026
Comment threadapps/server/src/vcs/worktreePathTemplate.ts
Comment threadapps/server/src/vcs/worktreePathTemplate.ts Outdated
Comment threadapps/server/src/vcs/worktreePathTemplate.ts
Comment threadapps/server/src/review/ReviewService.ts
Comment threadapps/server/src/review/ReviewService.ts
Comment threadapps/server/src/review/ReviewService.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from 5f92245 to 0ff572eCompareJuly 24, 2026 17:00
Comment threadapps/server/src/ws.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from 366d6e0 to ea5b4d2CompareJuly 25, 2026 00:04
Comment threadapps/server/src/ws.ts Outdated
Comment threadapps/server/src/vcs/worktreePathTemplate.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from dce0c11 to 72afbcaCompareJuly 25, 2026 03:23
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from fbee701 to 5985491CompareJuly 28, 2026 02:07

@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.

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 5985491. Configure here.

Comment threadapps/server/src/server.test.ts Outdated
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from 301ea5a to b8aa507CompareJuly 28, 2026 02:51
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
…ocal worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
…ocal worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 11, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 28, 2026
@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.

Configurable worktree placement changes path ownership, cleanup, revival, and collision behavior. That risk is too large for a location preference while #4742 is handling worktree inventory and cleanup.

If you believe we closed this in error, please reopen the PR and leave a comment explaining what we missed.

@t3dotggt3dotgg closed this Aug 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 31, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Sep 2, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 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

@colonelpanic8@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

Make worktree placement configurable - #4439

Closed
colonelpanic8 wants to merge 9 commits into
pingdotgg:mainfrom
colonelpanic8:t3code/configurable-workspace-placement
Closed

Make worktree placement configurable#4439
colonelpanic8 wants to merge 9 commits into
pingdotgg:mainfrom
colonelpanic8:t3code/configurable-workspace-placement

Conversation

@colonelpanic8

@colonelpanic8colonelpanic8 commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

What Changed

  • Add a persisted worktreePathTemplate server setting.
  • Expand {worktreesDir}, {repoRoot}, {repoName}, and {branch} when creating worktrees.
  • Keep {worktreesDir}/{repoName}/{branch} as the default, preserving the existing centralized layout.
  • Add a General settings control with a one-click reset to the default.
  • Apply the setting to new-session, explicit VCS, and pull-request worktree creation flows.
  • Normalize relative repository roots and allow review previews for worktrees matching the configured template.

Why

Some users keep worktrees alongside each repository, while others prefer T3 Code's centralized worktree directory. A configurable template supports both layouts without changing existing behavior.

For example, {repoRoot}/.worktrees/{branch} creates repository-local worktrees.

UI Changes

The General settings panel now exposes the worktree path template and documents its available variables. Browser verification covered the default value, persisting a repository-local template, and resetting to the default.

Default centralized templateRepository-local template persisted after reload
Default centralized worktree templateRepository-local worktree template persisted after reload

These current screenshots were recaptured from PR head 366d6e021814242392c778d49fd195397a8cbf11 in the combined package 0.0.29-patched-main-20260724 (integration 4dd4cef4039303179929a1dbdbf0c9b358c076f9).

Checklist

  • pnpm exec vp test run packages/contracts/src/settings.test.ts apps/server/src/serverSettings.test.ts apps/server/src/vcs/GitVcsDriverCore.test.ts apps/server/src/server.test.ts -t 'bootstraps first-send worktree turns|ServerSettings worktree path template|ServerSettingsPatch string normalization|server settings|uses the configured repository-local worktree path template|keeps the centralized worktree path as the default' (21 passed)
  • pnpm exec vp test run apps/server/src/review/ReviewService.test.ts apps/server/src/vcs/GitVcsDriverCore.test.ts (40 passed)
  • Targeted vp check for the final review-fix files (no warnings)
  • pnpm exec vp check (passes with 12 pre-existing warnings in untouched files)
  • pnpm --filter t3 typecheck
  • pnpm --filter @t3tools/contracts typecheck
  • Integrated web verification in an isolated authenticated environment against the exact combined package; default value, repository-local edit, and persistence after reload verified
  • pnpm exec vp run typecheck (workspace baseline fails in untouched web/mobile files: existing implicit-any and unknown AtomRegistry errors; the affected server and contracts package checks pass)

Note

Medium Risk
Touches worktree creation, review path sandboxing, and persisted settings across Git/VCS/WS layers; default template preserves prior behavior but misconfigured templates or template-matching edge cases could block previews or place worktrees unexpectedly.

Overview
Adds a persisted worktreePathTemplate server setting (default {worktreesDir}/{repoName}/{branch}) with a General settings field to edit and reset it.

Worktree creation no longer hardcodes the centralized layout: GitVcsDriverCore.createWorktree resolves paths via new resolveWorktreePathTemplate / matchesWorktreePathTemplate helpers, and bootstrap, VCS RPC, and PR-thread flows pass the setting (with fallback on read failure).

Review diff preview widens allowed cwd values: besides the workspace and legacy worktrees dir, paths under persisted thread worktrees or paths matching the template against active project repo roots are accepted. The WS handler loads getActiveProjectWorkspaceRoots and getActiveThreadWorktreePaths from projection SQL (without shell snapshot hydration) and forwards them to ReviewService.

Reviewed by Cursor Bugbot for commit b8aa507. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Make worktree placement configurable via a path template setting

  • Adds a worktreePathTemplate field to ServerSettings (default: {worktreesDir}/{repoName}/{branch}) with UI controls in the General settings panel to view, edit, and reset it.
  • GitVcsDriverCore.createWorktree and GitWorkflowService.createWorktree now accept an optional pathTemplate and resolve the worktree path by expanding template placeholders ({worktreesDir}, {repoRoot}, {repoName}, {branch}) instead of using a hardcoded path join.
  • New resolveWorktreePathTemplate and matchesWorktreePathTemplate utilities in worktreePathTemplate.ts handle expansion and pattern matching against candidate paths.
  • ReviewService.getDiffPreview now accepts optional repositoryRoots and knownWorktreePaths; workspace boundary validation allows cwds inside known worktree paths or matching the configured template against any provided repository root.
  • ProjectionSnapshotQuery gains getActiveProjectWorkspaceRoots and getActiveThreadWorktreePaths methods, which the WS RPC layer uses to supply these paths to the review service.
  • Risk: createWorktree may now fail earlier with a GitCommandError if repository root canonicalization fails when no explicit path is given.

Macroscope summarized b8aa507.

@coderabbitai

coderabbitaiBot commented Jul 24, 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 Plus

Run ID: 9ef36ed5-f453-4078-94cb-59ef58caf1d5

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:M 30-99 changed lines (additions + deletions). labels Jul 24, 2026
Comment threadapps/server/src/vcs/GitVcsDriverCore.ts Outdated
Comment threadapps/server/src/vcs/GitVcsDriverCore.ts Outdated
@macroscopeapp

macroscopeappBot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new user-facing feature (configurable worktree path templates) with new settings UI, path template resolution logic, and validation changes across multiple services. New features that introduce user-facing behavior warrant human review.

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

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Jul 24, 2026
Comment threadapps/server/src/vcs/worktreePathTemplate.ts
Comment threadapps/server/src/vcs/worktreePathTemplate.ts Outdated
Comment threadapps/server/src/vcs/worktreePathTemplate.ts
Comment threadapps/server/src/review/ReviewService.ts
Comment threadapps/server/src/review/ReviewService.ts
Comment threadapps/server/src/review/ReviewService.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from 5f92245 to 0ff572eCompareJuly 24, 2026 17:00
Comment threadapps/server/src/ws.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from 366d6e0 to ea5b4d2CompareJuly 25, 2026 00:04
Comment threadapps/server/src/ws.ts Outdated
Comment threadapps/server/src/vcs/worktreePathTemplate.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from dce0c11 to 72afbcaCompareJuly 25, 2026 03:23
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from fbee701 to 5985491CompareJuly 28, 2026 02:07

@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.

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 5985491. Configure here.

Comment threadapps/server/src/server.test.ts Outdated
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from 301ea5a to b8aa507CompareJuly 28, 2026 02:51
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
…ocal worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
…ocal worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 11, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 28, 2026
@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.

Configurable worktree placement changes path ownership, cleanup, revival, and collision behavior. That risk is too large for a location preference while #4742 is handling worktree inventory and cleanup.

If you believe we closed this in error, please reopen the PR and leave a comment explaining what we missed.

@t3dotggt3dotgg closed this Aug 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 31, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Sep 2, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 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

@colonelpanic8@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

Make worktree placement configurable - #4439

Closed
colonelpanic8 wants to merge 9 commits into
pingdotgg:mainfrom
colonelpanic8:t3code/configurable-workspace-placement
Closed

Make worktree placement configurable#4439
colonelpanic8 wants to merge 9 commits into
pingdotgg:mainfrom
colonelpanic8:t3code/configurable-workspace-placement

Conversation

@colonelpanic8

@colonelpanic8colonelpanic8 commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

What Changed

  • Add a persisted worktreePathTemplate server setting.
  • Expand {worktreesDir}, {repoRoot}, {repoName}, and {branch} when creating worktrees.
  • Keep {worktreesDir}/{repoName}/{branch} as the default, preserving the existing centralized layout.
  • Add a General settings control with a one-click reset to the default.
  • Apply the setting to new-session, explicit VCS, and pull-request worktree creation flows.
  • Normalize relative repository roots and allow review previews for worktrees matching the configured template.

Why

Some users keep worktrees alongside each repository, while others prefer T3 Code's centralized worktree directory. A configurable template supports both layouts without changing existing behavior.

For example, {repoRoot}/.worktrees/{branch} creates repository-local worktrees.

UI Changes

The General settings panel now exposes the worktree path template and documents its available variables. Browser verification covered the default value, persisting a repository-local template, and resetting to the default.

Default centralized templateRepository-local template persisted after reload
Default centralized worktree templateRepository-local worktree template persisted after reload

These current screenshots were recaptured from PR head 366d6e021814242392c778d49fd195397a8cbf11 in the combined package 0.0.29-patched-main-20260724 (integration 4dd4cef4039303179929a1dbdbf0c9b358c076f9).

Checklist

  • pnpm exec vp test run packages/contracts/src/settings.test.ts apps/server/src/serverSettings.test.ts apps/server/src/vcs/GitVcsDriverCore.test.ts apps/server/src/server.test.ts -t 'bootstraps first-send worktree turns|ServerSettings worktree path template|ServerSettingsPatch string normalization|server settings|uses the configured repository-local worktree path template|keeps the centralized worktree path as the default' (21 passed)
  • pnpm exec vp test run apps/server/src/review/ReviewService.test.ts apps/server/src/vcs/GitVcsDriverCore.test.ts (40 passed)
  • Targeted vp check for the final review-fix files (no warnings)
  • pnpm exec vp check (passes with 12 pre-existing warnings in untouched files)
  • pnpm --filter t3 typecheck
  • pnpm --filter @t3tools/contracts typecheck
  • Integrated web verification in an isolated authenticated environment against the exact combined package; default value, repository-local edit, and persistence after reload verified
  • pnpm exec vp run typecheck (workspace baseline fails in untouched web/mobile files: existing implicit-any and unknown AtomRegistry errors; the affected server and contracts package checks pass)

Note

Medium Risk
Touches worktree creation, review path sandboxing, and persisted settings across Git/VCS/WS layers; default template preserves prior behavior but misconfigured templates or template-matching edge cases could block previews or place worktrees unexpectedly.

Overview
Adds a persisted worktreePathTemplate server setting (default {worktreesDir}/{repoName}/{branch}) with a General settings field to edit and reset it.

Worktree creation no longer hardcodes the centralized layout: GitVcsDriverCore.createWorktree resolves paths via new resolveWorktreePathTemplate / matchesWorktreePathTemplate helpers, and bootstrap, VCS RPC, and PR-thread flows pass the setting (with fallback on read failure).

Review diff preview widens allowed cwd values: besides the workspace and legacy worktrees dir, paths under persisted thread worktrees or paths matching the template against active project repo roots are accepted. The WS handler loads getActiveProjectWorkspaceRoots and getActiveThreadWorktreePaths from projection SQL (without shell snapshot hydration) and forwards them to ReviewService.

Reviewed by Cursor Bugbot for commit b8aa507. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Make worktree placement configurable via a path template setting

  • Adds a worktreePathTemplate field to ServerSettings (default: {worktreesDir}/{repoName}/{branch}) with UI controls in the General settings panel to view, edit, and reset it.
  • GitVcsDriverCore.createWorktree and GitWorkflowService.createWorktree now accept an optional pathTemplate and resolve the worktree path by expanding template placeholders ({worktreesDir}, {repoRoot}, {repoName}, {branch}) instead of using a hardcoded path join.
  • New resolveWorktreePathTemplate and matchesWorktreePathTemplate utilities in worktreePathTemplate.ts handle expansion and pattern matching against candidate paths.
  • ReviewService.getDiffPreview now accepts optional repositoryRoots and knownWorktreePaths; workspace boundary validation allows cwds inside known worktree paths or matching the configured template against any provided repository root.
  • ProjectionSnapshotQuery gains getActiveProjectWorkspaceRoots and getActiveThreadWorktreePaths methods, which the WS RPC layer uses to supply these paths to the review service.
  • Risk: createWorktree may now fail earlier with a GitCommandError if repository root canonicalization fails when no explicit path is given.

Macroscope summarized b8aa507.

@coderabbitai

coderabbitaiBot commented Jul 24, 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 Plus

Run ID: 9ef36ed5-f453-4078-94cb-59ef58caf1d5

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:M 30-99 changed lines (additions + deletions). labels Jul 24, 2026
Comment threadapps/server/src/vcs/GitVcsDriverCore.ts Outdated
Comment threadapps/server/src/vcs/GitVcsDriverCore.ts Outdated
@macroscopeapp

macroscopeappBot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new user-facing feature (configurable worktree path templates) with new settings UI, path template resolution logic, and validation changes across multiple services. New features that introduce user-facing behavior warrant human review.

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

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Jul 24, 2026
Comment threadapps/server/src/vcs/worktreePathTemplate.ts
Comment threadapps/server/src/vcs/worktreePathTemplate.ts Outdated
Comment threadapps/server/src/vcs/worktreePathTemplate.ts
Comment threadapps/server/src/review/ReviewService.ts
Comment threadapps/server/src/review/ReviewService.ts
Comment threadapps/server/src/review/ReviewService.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from 5f92245 to 0ff572eCompareJuly 24, 2026 17:00
Comment threadapps/server/src/ws.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from 366d6e0 to ea5b4d2CompareJuly 25, 2026 00:04
Comment threadapps/server/src/ws.ts Outdated
Comment threadapps/server/src/vcs/worktreePathTemplate.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from dce0c11 to 72afbcaCompareJuly 25, 2026 03:23
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from fbee701 to 5985491CompareJuly 28, 2026 02:07

@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.

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 5985491. Configure here.

Comment threadapps/server/src/server.test.ts Outdated
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from 301ea5a to b8aa507CompareJuly 28, 2026 02:51
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
…ocal worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
…ocal worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 11, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 28, 2026
@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.

Configurable worktree placement changes path ownership, cleanup, revival, and collision behavior. That risk is too large for a location preference while #4742 is handling worktree inventory and cleanup.

If you believe we closed this in error, please reopen the PR and leave a comment explaining what we missed.

@t3dotggt3dotgg closed this Aug 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 31, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Sep 2, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 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

@colonelpanic8@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

Make worktree placement configurable - #4439

Closed
colonelpanic8 wants to merge 9 commits into
pingdotgg:mainfrom
colonelpanic8:t3code/configurable-workspace-placement
Closed

Make worktree placement configurable#4439
colonelpanic8 wants to merge 9 commits into
pingdotgg:mainfrom
colonelpanic8:t3code/configurable-workspace-placement

Conversation

@colonelpanic8

@colonelpanic8colonelpanic8 commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

What Changed

  • Add a persisted worktreePathTemplate server setting.
  • Expand {worktreesDir}, {repoRoot}, {repoName}, and {branch} when creating worktrees.
  • Keep {worktreesDir}/{repoName}/{branch} as the default, preserving the existing centralized layout.
  • Add a General settings control with a one-click reset to the default.
  • Apply the setting to new-session, explicit VCS, and pull-request worktree creation flows.
  • Normalize relative repository roots and allow review previews for worktrees matching the configured template.

Why

Some users keep worktrees alongside each repository, while others prefer T3 Code's centralized worktree directory. A configurable template supports both layouts without changing existing behavior.

For example, {repoRoot}/.worktrees/{branch} creates repository-local worktrees.

UI Changes

The General settings panel now exposes the worktree path template and documents its available variables. Browser verification covered the default value, persisting a repository-local template, and resetting to the default.

Default centralized templateRepository-local template persisted after reload
Default centralized worktree templateRepository-local worktree template persisted after reload

These current screenshots were recaptured from PR head 366d6e021814242392c778d49fd195397a8cbf11 in the combined package 0.0.29-patched-main-20260724 (integration 4dd4cef4039303179929a1dbdbf0c9b358c076f9).

Checklist

  • pnpm exec vp test run packages/contracts/src/settings.test.ts apps/server/src/serverSettings.test.ts apps/server/src/vcs/GitVcsDriverCore.test.ts apps/server/src/server.test.ts -t 'bootstraps first-send worktree turns|ServerSettings worktree path template|ServerSettingsPatch string normalization|server settings|uses the configured repository-local worktree path template|keeps the centralized worktree path as the default' (21 passed)
  • pnpm exec vp test run apps/server/src/review/ReviewService.test.ts apps/server/src/vcs/GitVcsDriverCore.test.ts (40 passed)
  • Targeted vp check for the final review-fix files (no warnings)
  • pnpm exec vp check (passes with 12 pre-existing warnings in untouched files)
  • pnpm --filter t3 typecheck
  • pnpm --filter @t3tools/contracts typecheck
  • Integrated web verification in an isolated authenticated environment against the exact combined package; default value, repository-local edit, and persistence after reload verified
  • pnpm exec vp run typecheck (workspace baseline fails in untouched web/mobile files: existing implicit-any and unknown AtomRegistry errors; the affected server and contracts package checks pass)

Note

Medium Risk
Touches worktree creation, review path sandboxing, and persisted settings across Git/VCS/WS layers; default template preserves prior behavior but misconfigured templates or template-matching edge cases could block previews or place worktrees unexpectedly.

Overview
Adds a persisted worktreePathTemplate server setting (default {worktreesDir}/{repoName}/{branch}) with a General settings field to edit and reset it.

Worktree creation no longer hardcodes the centralized layout: GitVcsDriverCore.createWorktree resolves paths via new resolveWorktreePathTemplate / matchesWorktreePathTemplate helpers, and bootstrap, VCS RPC, and PR-thread flows pass the setting (with fallback on read failure).

Review diff preview widens allowed cwd values: besides the workspace and legacy worktrees dir, paths under persisted thread worktrees or paths matching the template against active project repo roots are accepted. The WS handler loads getActiveProjectWorkspaceRoots and getActiveThreadWorktreePaths from projection SQL (without shell snapshot hydration) and forwards them to ReviewService.

Reviewed by Cursor Bugbot for commit b8aa507. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Make worktree placement configurable via a path template setting

  • Adds a worktreePathTemplate field to ServerSettings (default: {worktreesDir}/{repoName}/{branch}) with UI controls in the General settings panel to view, edit, and reset it.
  • GitVcsDriverCore.createWorktree and GitWorkflowService.createWorktree now accept an optional pathTemplate and resolve the worktree path by expanding template placeholders ({worktreesDir}, {repoRoot}, {repoName}, {branch}) instead of using a hardcoded path join.
  • New resolveWorktreePathTemplate and matchesWorktreePathTemplate utilities in worktreePathTemplate.ts handle expansion and pattern matching against candidate paths.
  • ReviewService.getDiffPreview now accepts optional repositoryRoots and knownWorktreePaths; workspace boundary validation allows cwds inside known worktree paths or matching the configured template against any provided repository root.
  • ProjectionSnapshotQuery gains getActiveProjectWorkspaceRoots and getActiveThreadWorktreePaths methods, which the WS RPC layer uses to supply these paths to the review service.
  • Risk: createWorktree may now fail earlier with a GitCommandError if repository root canonicalization fails when no explicit path is given.

Macroscope summarized b8aa507.

@coderabbitai

coderabbitaiBot commented Jul 24, 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 Plus

Run ID: 9ef36ed5-f453-4078-94cb-59ef58caf1d5

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:M 30-99 changed lines (additions + deletions). labels Jul 24, 2026
Comment threadapps/server/src/vcs/GitVcsDriverCore.ts Outdated
Comment threadapps/server/src/vcs/GitVcsDriverCore.ts Outdated
@macroscopeapp

macroscopeappBot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new user-facing feature (configurable worktree path templates) with new settings UI, path template resolution logic, and validation changes across multiple services. New features that introduce user-facing behavior warrant human review.

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

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Jul 24, 2026
Comment threadapps/server/src/vcs/worktreePathTemplate.ts
Comment threadapps/server/src/vcs/worktreePathTemplate.ts Outdated
Comment threadapps/server/src/vcs/worktreePathTemplate.ts
Comment threadapps/server/src/review/ReviewService.ts
Comment threadapps/server/src/review/ReviewService.ts
Comment threadapps/server/src/review/ReviewService.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from 5f92245 to 0ff572eCompareJuly 24, 2026 17:00
Comment threadapps/server/src/ws.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from 366d6e0 to ea5b4d2CompareJuly 25, 2026 00:04
Comment threadapps/server/src/ws.ts Outdated
Comment threadapps/server/src/vcs/worktreePathTemplate.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from dce0c11 to 72afbcaCompareJuly 25, 2026 03:23
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from fbee701 to 5985491CompareJuly 28, 2026 02:07

@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.

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 5985491. Configure here.

Comment threadapps/server/src/server.test.ts Outdated
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from 301ea5a to b8aa507CompareJuly 28, 2026 02:51
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
…ocal worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
…ocal worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 11, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 28, 2026
@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.

Configurable worktree placement changes path ownership, cleanup, revival, and collision behavior. That risk is too large for a location preference while #4742 is handling worktree inventory and cleanup.

If you believe we closed this in error, please reopen the PR and leave a comment explaining what we missed.

@t3dotggt3dotgg closed this Aug 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 31, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Sep 2, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 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

@colonelpanic8@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

Make worktree placement configurable - #4439

Closed
colonelpanic8 wants to merge 9 commits into
pingdotgg:mainfrom
colonelpanic8:t3code/configurable-workspace-placement
Closed

Make worktree placement configurable#4439
colonelpanic8 wants to merge 9 commits into
pingdotgg:mainfrom
colonelpanic8:t3code/configurable-workspace-placement

Conversation

@colonelpanic8

@colonelpanic8colonelpanic8 commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

What Changed

  • Add a persisted worktreePathTemplate server setting.
  • Expand {worktreesDir}, {repoRoot}, {repoName}, and {branch} when creating worktrees.
  • Keep {worktreesDir}/{repoName}/{branch} as the default, preserving the existing centralized layout.
  • Add a General settings control with a one-click reset to the default.
  • Apply the setting to new-session, explicit VCS, and pull-request worktree creation flows.
  • Normalize relative repository roots and allow review previews for worktrees matching the configured template.

Why

Some users keep worktrees alongside each repository, while others prefer T3 Code's centralized worktree directory. A configurable template supports both layouts without changing existing behavior.

For example, {repoRoot}/.worktrees/{branch} creates repository-local worktrees.

UI Changes

The General settings panel now exposes the worktree path template and documents its available variables. Browser verification covered the default value, persisting a repository-local template, and resetting to the default.

Default centralized templateRepository-local template persisted after reload
Default centralized worktree templateRepository-local worktree template persisted after reload

These current screenshots were recaptured from PR head 366d6e021814242392c778d49fd195397a8cbf11 in the combined package 0.0.29-patched-main-20260724 (integration 4dd4cef4039303179929a1dbdbf0c9b358c076f9).

Checklist

  • pnpm exec vp test run packages/contracts/src/settings.test.ts apps/server/src/serverSettings.test.ts apps/server/src/vcs/GitVcsDriverCore.test.ts apps/server/src/server.test.ts -t 'bootstraps first-send worktree turns|ServerSettings worktree path template|ServerSettingsPatch string normalization|server settings|uses the configured repository-local worktree path template|keeps the centralized worktree path as the default' (21 passed)
  • pnpm exec vp test run apps/server/src/review/ReviewService.test.ts apps/server/src/vcs/GitVcsDriverCore.test.ts (40 passed)
  • Targeted vp check for the final review-fix files (no warnings)
  • pnpm exec vp check (passes with 12 pre-existing warnings in untouched files)
  • pnpm --filter t3 typecheck
  • pnpm --filter @t3tools/contracts typecheck
  • Integrated web verification in an isolated authenticated environment against the exact combined package; default value, repository-local edit, and persistence after reload verified
  • pnpm exec vp run typecheck (workspace baseline fails in untouched web/mobile files: existing implicit-any and unknown AtomRegistry errors; the affected server and contracts package checks pass)

Note

Medium Risk
Touches worktree creation, review path sandboxing, and persisted settings across Git/VCS/WS layers; default template preserves prior behavior but misconfigured templates or template-matching edge cases could block previews or place worktrees unexpectedly.

Overview
Adds a persisted worktreePathTemplate server setting (default {worktreesDir}/{repoName}/{branch}) with a General settings field to edit and reset it.

Worktree creation no longer hardcodes the centralized layout: GitVcsDriverCore.createWorktree resolves paths via new resolveWorktreePathTemplate / matchesWorktreePathTemplate helpers, and bootstrap, VCS RPC, and PR-thread flows pass the setting (with fallback on read failure).

Review diff preview widens allowed cwd values: besides the workspace and legacy worktrees dir, paths under persisted thread worktrees or paths matching the template against active project repo roots are accepted. The WS handler loads getActiveProjectWorkspaceRoots and getActiveThreadWorktreePaths from projection SQL (without shell snapshot hydration) and forwards them to ReviewService.

Reviewed by Cursor Bugbot for commit b8aa507. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Make worktree placement configurable via a path template setting

  • Adds a worktreePathTemplate field to ServerSettings (default: {worktreesDir}/{repoName}/{branch}) with UI controls in the General settings panel to view, edit, and reset it.
  • GitVcsDriverCore.createWorktree and GitWorkflowService.createWorktree now accept an optional pathTemplate and resolve the worktree path by expanding template placeholders ({worktreesDir}, {repoRoot}, {repoName}, {branch}) instead of using a hardcoded path join.
  • New resolveWorktreePathTemplate and matchesWorktreePathTemplate utilities in worktreePathTemplate.ts handle expansion and pattern matching against candidate paths.
  • ReviewService.getDiffPreview now accepts optional repositoryRoots and knownWorktreePaths; workspace boundary validation allows cwds inside known worktree paths or matching the configured template against any provided repository root.
  • ProjectionSnapshotQuery gains getActiveProjectWorkspaceRoots and getActiveThreadWorktreePaths methods, which the WS RPC layer uses to supply these paths to the review service.
  • Risk: createWorktree may now fail earlier with a GitCommandError if repository root canonicalization fails when no explicit path is given.

Macroscope summarized b8aa507.

@coderabbitai

coderabbitaiBot commented Jul 24, 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 Plus

Run ID: 9ef36ed5-f453-4078-94cb-59ef58caf1d5

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:M 30-99 changed lines (additions + deletions). labels Jul 24, 2026
Comment threadapps/server/src/vcs/GitVcsDriverCore.ts Outdated
Comment threadapps/server/src/vcs/GitVcsDriverCore.ts Outdated
@macroscopeapp

macroscopeappBot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new user-facing feature (configurable worktree path templates) with new settings UI, path template resolution logic, and validation changes across multiple services. New features that introduce user-facing behavior warrant human review.

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

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Jul 24, 2026
Comment threadapps/server/src/vcs/worktreePathTemplate.ts
Comment threadapps/server/src/vcs/worktreePathTemplate.ts Outdated
Comment threadapps/server/src/vcs/worktreePathTemplate.ts
Comment threadapps/server/src/review/ReviewService.ts
Comment threadapps/server/src/review/ReviewService.ts
Comment threadapps/server/src/review/ReviewService.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from 5f92245 to 0ff572eCompareJuly 24, 2026 17:00
Comment threadapps/server/src/ws.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from 366d6e0 to ea5b4d2CompareJuly 25, 2026 00:04
Comment threadapps/server/src/ws.ts Outdated
Comment threadapps/server/src/vcs/worktreePathTemplate.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from dce0c11 to 72afbcaCompareJuly 25, 2026 03:23
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from fbee701 to 5985491CompareJuly 28, 2026 02:07

@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.

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 5985491. Configure here.

Comment threadapps/server/src/server.test.ts Outdated
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from 301ea5a to b8aa507CompareJuly 28, 2026 02:51
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
…ocal worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
…ocal worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 11, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 28, 2026
@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.

Configurable worktree placement changes path ownership, cleanup, revival, and collision behavior. That risk is too large for a location preference while #4742 is handling worktree inventory and cleanup.

If you believe we closed this in error, please reopen the PR and leave a comment explaining what we missed.

@t3dotggt3dotgg closed this Aug 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 31, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Sep 2, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 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

@colonelpanic8@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

Make worktree placement configurable - #4439

Closed
colonelpanic8 wants to merge 9 commits into
pingdotgg:mainfrom
colonelpanic8:t3code/configurable-workspace-placement
Closed

Make worktree placement configurable#4439
colonelpanic8 wants to merge 9 commits into
pingdotgg:mainfrom
colonelpanic8:t3code/configurable-workspace-placement

Conversation

@colonelpanic8

@colonelpanic8colonelpanic8 commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

What Changed

  • Add a persisted worktreePathTemplate server setting.
  • Expand {worktreesDir}, {repoRoot}, {repoName}, and {branch} when creating worktrees.
  • Keep {worktreesDir}/{repoName}/{branch} as the default, preserving the existing centralized layout.
  • Add a General settings control with a one-click reset to the default.
  • Apply the setting to new-session, explicit VCS, and pull-request worktree creation flows.
  • Normalize relative repository roots and allow review previews for worktrees matching the configured template.

Why

Some users keep worktrees alongside each repository, while others prefer T3 Code's centralized worktree directory. A configurable template supports both layouts without changing existing behavior.

For example, {repoRoot}/.worktrees/{branch} creates repository-local worktrees.

UI Changes

The General settings panel now exposes the worktree path template and documents its available variables. Browser verification covered the default value, persisting a repository-local template, and resetting to the default.

Default centralized templateRepository-local template persisted after reload
Default centralized worktree templateRepository-local worktree template persisted after reload

These current screenshots were recaptured from PR head 366d6e021814242392c778d49fd195397a8cbf11 in the combined package 0.0.29-patched-main-20260724 (integration 4dd4cef4039303179929a1dbdbf0c9b358c076f9).

Checklist

  • pnpm exec vp test run packages/contracts/src/settings.test.ts apps/server/src/serverSettings.test.ts apps/server/src/vcs/GitVcsDriverCore.test.ts apps/server/src/server.test.ts -t 'bootstraps first-send worktree turns|ServerSettings worktree path template|ServerSettingsPatch string normalization|server settings|uses the configured repository-local worktree path template|keeps the centralized worktree path as the default' (21 passed)
  • pnpm exec vp test run apps/server/src/review/ReviewService.test.ts apps/server/src/vcs/GitVcsDriverCore.test.ts (40 passed)
  • Targeted vp check for the final review-fix files (no warnings)
  • pnpm exec vp check (passes with 12 pre-existing warnings in untouched files)
  • pnpm --filter t3 typecheck
  • pnpm --filter @t3tools/contracts typecheck
  • Integrated web verification in an isolated authenticated environment against the exact combined package; default value, repository-local edit, and persistence after reload verified
  • pnpm exec vp run typecheck (workspace baseline fails in untouched web/mobile files: existing implicit-any and unknown AtomRegistry errors; the affected server and contracts package checks pass)

Note

Medium Risk
Touches worktree creation, review path sandboxing, and persisted settings across Git/VCS/WS layers; default template preserves prior behavior but misconfigured templates or template-matching edge cases could block previews or place worktrees unexpectedly.

Overview
Adds a persisted worktreePathTemplate server setting (default {worktreesDir}/{repoName}/{branch}) with a General settings field to edit and reset it.

Worktree creation no longer hardcodes the centralized layout: GitVcsDriverCore.createWorktree resolves paths via new resolveWorktreePathTemplate / matchesWorktreePathTemplate helpers, and bootstrap, VCS RPC, and PR-thread flows pass the setting (with fallback on read failure).

Review diff preview widens allowed cwd values: besides the workspace and legacy worktrees dir, paths under persisted thread worktrees or paths matching the template against active project repo roots are accepted. The WS handler loads getActiveProjectWorkspaceRoots and getActiveThreadWorktreePaths from projection SQL (without shell snapshot hydration) and forwards them to ReviewService.

Reviewed by Cursor Bugbot for commit b8aa507. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Make worktree placement configurable via a path template setting

  • Adds a worktreePathTemplate field to ServerSettings (default: {worktreesDir}/{repoName}/{branch}) with UI controls in the General settings panel to view, edit, and reset it.
  • GitVcsDriverCore.createWorktree and GitWorkflowService.createWorktree now accept an optional pathTemplate and resolve the worktree path by expanding template placeholders ({worktreesDir}, {repoRoot}, {repoName}, {branch}) instead of using a hardcoded path join.
  • New resolveWorktreePathTemplate and matchesWorktreePathTemplate utilities in worktreePathTemplate.ts handle expansion and pattern matching against candidate paths.
  • ReviewService.getDiffPreview now accepts optional repositoryRoots and knownWorktreePaths; workspace boundary validation allows cwds inside known worktree paths or matching the configured template against any provided repository root.
  • ProjectionSnapshotQuery gains getActiveProjectWorkspaceRoots and getActiveThreadWorktreePaths methods, which the WS RPC layer uses to supply these paths to the review service.
  • Risk: createWorktree may now fail earlier with a GitCommandError if repository root canonicalization fails when no explicit path is given.

Macroscope summarized b8aa507.

@coderabbitai

coderabbitaiBot commented Jul 24, 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 Plus

Run ID: 9ef36ed5-f453-4078-94cb-59ef58caf1d5

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:M 30-99 changed lines (additions + deletions). labels Jul 24, 2026
Comment threadapps/server/src/vcs/GitVcsDriverCore.ts Outdated
Comment threadapps/server/src/vcs/GitVcsDriverCore.ts Outdated
@macroscopeapp

macroscopeappBot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new user-facing feature (configurable worktree path templates) with new settings UI, path template resolution logic, and validation changes across multiple services. New features that introduce user-facing behavior warrant human review.

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

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Jul 24, 2026
Comment threadapps/server/src/vcs/worktreePathTemplate.ts
Comment threadapps/server/src/vcs/worktreePathTemplate.ts Outdated
Comment threadapps/server/src/vcs/worktreePathTemplate.ts
Comment threadapps/server/src/review/ReviewService.ts
Comment threadapps/server/src/review/ReviewService.ts
Comment threadapps/server/src/review/ReviewService.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from 5f92245 to 0ff572eCompareJuly 24, 2026 17:00
Comment threadapps/server/src/ws.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from 366d6e0 to ea5b4d2CompareJuly 25, 2026 00:04
Comment threadapps/server/src/ws.ts Outdated
Comment threadapps/server/src/vcs/worktreePathTemplate.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from dce0c11 to 72afbcaCompareJuly 25, 2026 03:23
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from fbee701 to 5985491CompareJuly 28, 2026 02:07

@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.

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 5985491. Configure here.

Comment threadapps/server/src/server.test.ts Outdated
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from 301ea5a to b8aa507CompareJuly 28, 2026 02:51
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
…ocal worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
…ocal worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 11, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 28, 2026
@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.

Configurable worktree placement changes path ownership, cleanup, revival, and collision behavior. That risk is too large for a location preference while #4742 is handling worktree inventory and cleanup.

If you believe we closed this in error, please reopen the PR and leave a comment explaining what we missed.

@t3dotggt3dotgg closed this Aug 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 31, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Sep 2, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 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

@colonelpanic8@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

Make worktree placement configurable - #4439

Closed
colonelpanic8 wants to merge 9 commits into
pingdotgg:mainfrom
colonelpanic8:t3code/configurable-workspace-placement
Closed

Make worktree placement configurable#4439
colonelpanic8 wants to merge 9 commits into
pingdotgg:mainfrom
colonelpanic8:t3code/configurable-workspace-placement

Conversation

@colonelpanic8

@colonelpanic8colonelpanic8 commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

What Changed

  • Add a persisted worktreePathTemplate server setting.
  • Expand {worktreesDir}, {repoRoot}, {repoName}, and {branch} when creating worktrees.
  • Keep {worktreesDir}/{repoName}/{branch} as the default, preserving the existing centralized layout.
  • Add a General settings control with a one-click reset to the default.
  • Apply the setting to new-session, explicit VCS, and pull-request worktree creation flows.
  • Normalize relative repository roots and allow review previews for worktrees matching the configured template.

Why

Some users keep worktrees alongside each repository, while others prefer T3 Code's centralized worktree directory. A configurable template supports both layouts without changing existing behavior.

For example, {repoRoot}/.worktrees/{branch} creates repository-local worktrees.

UI Changes

The General settings panel now exposes the worktree path template and documents its available variables. Browser verification covered the default value, persisting a repository-local template, and resetting to the default.

Default centralized templateRepository-local template persisted after reload
Default centralized worktree templateRepository-local worktree template persisted after reload

These current screenshots were recaptured from PR head 366d6e021814242392c778d49fd195397a8cbf11 in the combined package 0.0.29-patched-main-20260724 (integration 4dd4cef4039303179929a1dbdbf0c9b358c076f9).

Checklist

  • pnpm exec vp test run packages/contracts/src/settings.test.ts apps/server/src/serverSettings.test.ts apps/server/src/vcs/GitVcsDriverCore.test.ts apps/server/src/server.test.ts -t 'bootstraps first-send worktree turns|ServerSettings worktree path template|ServerSettingsPatch string normalization|server settings|uses the configured repository-local worktree path template|keeps the centralized worktree path as the default' (21 passed)
  • pnpm exec vp test run apps/server/src/review/ReviewService.test.ts apps/server/src/vcs/GitVcsDriverCore.test.ts (40 passed)
  • Targeted vp check for the final review-fix files (no warnings)
  • pnpm exec vp check (passes with 12 pre-existing warnings in untouched files)
  • pnpm --filter t3 typecheck
  • pnpm --filter @t3tools/contracts typecheck
  • Integrated web verification in an isolated authenticated environment against the exact combined package; default value, repository-local edit, and persistence after reload verified
  • pnpm exec vp run typecheck (workspace baseline fails in untouched web/mobile files: existing implicit-any and unknown AtomRegistry errors; the affected server and contracts package checks pass)

Note

Medium Risk
Touches worktree creation, review path sandboxing, and persisted settings across Git/VCS/WS layers; default template preserves prior behavior but misconfigured templates or template-matching edge cases could block previews or place worktrees unexpectedly.

Overview
Adds a persisted worktreePathTemplate server setting (default {worktreesDir}/{repoName}/{branch}) with a General settings field to edit and reset it.

Worktree creation no longer hardcodes the centralized layout: GitVcsDriverCore.createWorktree resolves paths via new resolveWorktreePathTemplate / matchesWorktreePathTemplate helpers, and bootstrap, VCS RPC, and PR-thread flows pass the setting (with fallback on read failure).

Review diff preview widens allowed cwd values: besides the workspace and legacy worktrees dir, paths under persisted thread worktrees or paths matching the template against active project repo roots are accepted. The WS handler loads getActiveProjectWorkspaceRoots and getActiveThreadWorktreePaths from projection SQL (without shell snapshot hydration) and forwards them to ReviewService.

Reviewed by Cursor Bugbot for commit b8aa507. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Make worktree placement configurable via a path template setting

  • Adds a worktreePathTemplate field to ServerSettings (default: {worktreesDir}/{repoName}/{branch}) with UI controls in the General settings panel to view, edit, and reset it.
  • GitVcsDriverCore.createWorktree and GitWorkflowService.createWorktree now accept an optional pathTemplate and resolve the worktree path by expanding template placeholders ({worktreesDir}, {repoRoot}, {repoName}, {branch}) instead of using a hardcoded path join.
  • New resolveWorktreePathTemplate and matchesWorktreePathTemplate utilities in worktreePathTemplate.ts handle expansion and pattern matching against candidate paths.
  • ReviewService.getDiffPreview now accepts optional repositoryRoots and knownWorktreePaths; workspace boundary validation allows cwds inside known worktree paths or matching the configured template against any provided repository root.
  • ProjectionSnapshotQuery gains getActiveProjectWorkspaceRoots and getActiveThreadWorktreePaths methods, which the WS RPC layer uses to supply these paths to the review service.
  • Risk: createWorktree may now fail earlier with a GitCommandError if repository root canonicalization fails when no explicit path is given.

Macroscope summarized b8aa507.

@coderabbitai

coderabbitaiBot commented Jul 24, 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 Plus

Run ID: 9ef36ed5-f453-4078-94cb-59ef58caf1d5

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:M 30-99 changed lines (additions + deletions). labels Jul 24, 2026
Comment threadapps/server/src/vcs/GitVcsDriverCore.ts Outdated
Comment threadapps/server/src/vcs/GitVcsDriverCore.ts Outdated
@macroscopeapp

macroscopeappBot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new user-facing feature (configurable worktree path templates) with new settings UI, path template resolution logic, and validation changes across multiple services. New features that introduce user-facing behavior warrant human review.

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

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Jul 24, 2026
Comment threadapps/server/src/vcs/worktreePathTemplate.ts
Comment threadapps/server/src/vcs/worktreePathTemplate.ts Outdated
Comment threadapps/server/src/vcs/worktreePathTemplate.ts
Comment threadapps/server/src/review/ReviewService.ts
Comment threadapps/server/src/review/ReviewService.ts
Comment threadapps/server/src/review/ReviewService.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from 5f92245 to 0ff572eCompareJuly 24, 2026 17:00
Comment threadapps/server/src/ws.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from 366d6e0 to ea5b4d2CompareJuly 25, 2026 00:04
Comment threadapps/server/src/ws.ts Outdated
Comment threadapps/server/src/vcs/worktreePathTemplate.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from dce0c11 to 72afbcaCompareJuly 25, 2026 03:23
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from fbee701 to 5985491CompareJuly 28, 2026 02:07

@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.

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 5985491. Configure here.

Comment threadapps/server/src/server.test.ts Outdated
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from 301ea5a to b8aa507CompareJuly 28, 2026 02:51
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
…ocal worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
…ocal worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 11, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 28, 2026
@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.

Configurable worktree placement changes path ownership, cleanup, revival, and collision behavior. That risk is too large for a location preference while #4742 is handling worktree inventory and cleanup.

If you believe we closed this in error, please reopen the PR and leave a comment explaining what we missed.

@t3dotggt3dotgg closed this Aug 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 31, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Sep 2, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 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

@colonelpanic8@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

Make worktree placement configurable - #4439

Closed
colonelpanic8 wants to merge 9 commits into
pingdotgg:mainfrom
colonelpanic8:t3code/configurable-workspace-placement
Closed

Make worktree placement configurable#4439
colonelpanic8 wants to merge 9 commits into
pingdotgg:mainfrom
colonelpanic8:t3code/configurable-workspace-placement

Conversation

@colonelpanic8

@colonelpanic8colonelpanic8 commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

What Changed

  • Add a persisted worktreePathTemplate server setting.
  • Expand {worktreesDir}, {repoRoot}, {repoName}, and {branch} when creating worktrees.
  • Keep {worktreesDir}/{repoName}/{branch} as the default, preserving the existing centralized layout.
  • Add a General settings control with a one-click reset to the default.
  • Apply the setting to new-session, explicit VCS, and pull-request worktree creation flows.
  • Normalize relative repository roots and allow review previews for worktrees matching the configured template.

Why

Some users keep worktrees alongside each repository, while others prefer T3 Code's centralized worktree directory. A configurable template supports both layouts without changing existing behavior.

For example, {repoRoot}/.worktrees/{branch} creates repository-local worktrees.

UI Changes

The General settings panel now exposes the worktree path template and documents its available variables. Browser verification covered the default value, persisting a repository-local template, and resetting to the default.

Default centralized templateRepository-local template persisted after reload
Default centralized worktree templateRepository-local worktree template persisted after reload

These current screenshots were recaptured from PR head 366d6e021814242392c778d49fd195397a8cbf11 in the combined package 0.0.29-patched-main-20260724 (integration 4dd4cef4039303179929a1dbdbf0c9b358c076f9).

Checklist

  • pnpm exec vp test run packages/contracts/src/settings.test.ts apps/server/src/serverSettings.test.ts apps/server/src/vcs/GitVcsDriverCore.test.ts apps/server/src/server.test.ts -t 'bootstraps first-send worktree turns|ServerSettings worktree path template|ServerSettingsPatch string normalization|server settings|uses the configured repository-local worktree path template|keeps the centralized worktree path as the default' (21 passed)
  • pnpm exec vp test run apps/server/src/review/ReviewService.test.ts apps/server/src/vcs/GitVcsDriverCore.test.ts (40 passed)
  • Targeted vp check for the final review-fix files (no warnings)
  • pnpm exec vp check (passes with 12 pre-existing warnings in untouched files)
  • pnpm --filter t3 typecheck
  • pnpm --filter @t3tools/contracts typecheck
  • Integrated web verification in an isolated authenticated environment against the exact combined package; default value, repository-local edit, and persistence after reload verified
  • pnpm exec vp run typecheck (workspace baseline fails in untouched web/mobile files: existing implicit-any and unknown AtomRegistry errors; the affected server and contracts package checks pass)

Note

Medium Risk
Touches worktree creation, review path sandboxing, and persisted settings across Git/VCS/WS layers; default template preserves prior behavior but misconfigured templates or template-matching edge cases could block previews or place worktrees unexpectedly.

Overview
Adds a persisted worktreePathTemplate server setting (default {worktreesDir}/{repoName}/{branch}) with a General settings field to edit and reset it.

Worktree creation no longer hardcodes the centralized layout: GitVcsDriverCore.createWorktree resolves paths via new resolveWorktreePathTemplate / matchesWorktreePathTemplate helpers, and bootstrap, VCS RPC, and PR-thread flows pass the setting (with fallback on read failure).

Review diff preview widens allowed cwd values: besides the workspace and legacy worktrees dir, paths under persisted thread worktrees or paths matching the template against active project repo roots are accepted. The WS handler loads getActiveProjectWorkspaceRoots and getActiveThreadWorktreePaths from projection SQL (without shell snapshot hydration) and forwards them to ReviewService.

Reviewed by Cursor Bugbot for commit b8aa507. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Make worktree placement configurable via a path template setting

  • Adds a worktreePathTemplate field to ServerSettings (default: {worktreesDir}/{repoName}/{branch}) with UI controls in the General settings panel to view, edit, and reset it.
  • GitVcsDriverCore.createWorktree and GitWorkflowService.createWorktree now accept an optional pathTemplate and resolve the worktree path by expanding template placeholders ({worktreesDir}, {repoRoot}, {repoName}, {branch}) instead of using a hardcoded path join.
  • New resolveWorktreePathTemplate and matchesWorktreePathTemplate utilities in worktreePathTemplate.ts handle expansion and pattern matching against candidate paths.
  • ReviewService.getDiffPreview now accepts optional repositoryRoots and knownWorktreePaths; workspace boundary validation allows cwds inside known worktree paths or matching the configured template against any provided repository root.
  • ProjectionSnapshotQuery gains getActiveProjectWorkspaceRoots and getActiveThreadWorktreePaths methods, which the WS RPC layer uses to supply these paths to the review service.
  • Risk: createWorktree may now fail earlier with a GitCommandError if repository root canonicalization fails when no explicit path is given.

Macroscope summarized b8aa507.

@coderabbitai

coderabbitaiBot commented Jul 24, 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 Plus

Run ID: 9ef36ed5-f453-4078-94cb-59ef58caf1d5

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:M 30-99 changed lines (additions + deletions). labels Jul 24, 2026
Comment threadapps/server/src/vcs/GitVcsDriverCore.ts Outdated
Comment threadapps/server/src/vcs/GitVcsDriverCore.ts Outdated
@macroscopeapp

macroscopeappBot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new user-facing feature (configurable worktree path templates) with new settings UI, path template resolution logic, and validation changes across multiple services. New features that introduce user-facing behavior warrant human review.

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

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Jul 24, 2026
Comment threadapps/server/src/vcs/worktreePathTemplate.ts
Comment threadapps/server/src/vcs/worktreePathTemplate.ts Outdated
Comment threadapps/server/src/vcs/worktreePathTemplate.ts
Comment threadapps/server/src/review/ReviewService.ts
Comment threadapps/server/src/review/ReviewService.ts
Comment threadapps/server/src/review/ReviewService.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from 5f92245 to 0ff572eCompareJuly 24, 2026 17:00
Comment threadapps/server/src/ws.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from 366d6e0 to ea5b4d2CompareJuly 25, 2026 00:04
Comment threadapps/server/src/ws.ts Outdated
Comment threadapps/server/src/vcs/worktreePathTemplate.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from dce0c11 to 72afbcaCompareJuly 25, 2026 03:23
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
…l worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from fbee701 to 5985491CompareJuly 28, 2026 02:07

@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.

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 5985491. Configure here.

Comment threadapps/server/src/server.test.ts Outdated
@colonelpanic8
colonelpanic8force-pushed the t3code/configurable-workspace-placement branch from 301ea5a to b8aa507CompareJuly 28, 2026 02:51
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
…ocal worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
…ocal worktree placement)
# Conflicts:
#	apps/server/src/serverSettings.test.ts
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 11, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 28, 2026
@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.

Configurable worktree placement changes path ownership, cleanup, revival, and collision behavior. That risk is too large for a location preference while #4742 is handling worktree inventory and cleanup.

If you believe we closed this in error, please reopen the PR and leave a comment explaining what we missed.

@t3dotggt3dotgg closed this Aug 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 31, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Sep 2, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 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

@colonelpanic8@t3dotgg