fix(server): brand generated branches and checkpoints as Aldo - #63

Open
logancsack wants to merge 1 commit into
mainfrom
fix/aldo-branch-and-checkpoint-branding
Open

fix(server): brand generated branches and checkpoints as Aldo#63
logancsack wants to merge 1 commit into
mainfrom
fix/aldo-branch-and-checkpoint-branding

Conversation

@logancsack

Copy link
Copy Markdown
Owner

Problem

Managed Aldo workspaces are branded everywhere the client renders, but the server still wrote T3 Code into the user's own repository:

  • generated worktree branches were t3code/<name> — visible in the composer footer, git branch, and any PR opened from one
  • cross-repository pull request checkouts were t3code/pr-<n>/<head>
  • every turn checkpoint was authored by T3 Code <t3code@users.noreply.github.com>, so the rename never reached the user's git history

Fix

WORKTREE_BRANCH_PREFIX is now aldo, PR checkout names are built from the same prefix in both the GitHub and Bitbucket paths, and checkpoints are authored by Aldo <aldo@users.noreply.github.com>.

Only the generators moved. LEGACY_WORKTREE_BRANCH_PREFIXES keeps every matcher reading the old names, so existing state is not stranded:

  • isTemporaryWorktreeBranch still matches t3code/<hex> and the UUID-shaped names older mobile builds produced, so those threads stay eligible for branch regeneration
  • stripWorktreeBranchPrefix removes either prefix, so regenerating a name cannot stack one prefix on the other
  • a pull request already checked out as t3code/pr-<n>/<head> is still found rather than duplicated under a new aldo/ branch, and the reused worktree now reports the branch it actually carries instead of the one this build would have generated

.github/devpc-release-version is bumped to 0.0.31-devpc.2 so merging cuts the artifact the managed gateway pins.

Verification

  • vp test run packages/shared apps/server/src/git apps/server/src/vcs apps/server/src/sourceControl apps/server/src/orchestration apps/server/src/server.test.ts — all green, including a new regression test that prepares a PR thread against a legacy-prefixed worktree and asserts it is reused
  • targeted vp lint, vp fmt --check, and vp run --filter t3 typecheck (0 errors)

No UI surface changed, so there are no screenshots.

Model: Claude Opus 5 (1M context), harness: Claude Code.

Managed workspaces are branded Aldo everywhere the client renders, but the
server still wrote T3 Code into the user's own repository: generated worktree
branches were `t3code/<name>`, cross-repository pull request checkouts were
`t3code/pr-<n>/<head>`, and every turn checkpoint was authored by
`T3 Code <t3code@users.noreply.github.com>`.
The generators now use `aldo`, while every matcher keeps reading the old prefix
from `LEGACY_WORKTREE_BRANCH_PREFIXES`. Existing temporary branches stay
regenerable, an existing pull request worktree is still found instead of
duplicated under the new prefix, and a reused worktree reports the name it
actually carries rather than the one this build would have generated.
Verified: vp test run on packages/shared, apps/server/src/git,
apps/server/src/vcs, apps/server/src/sourceControl, apps/server/src/orchestration
and apps/server/src/server.test.ts; targeted lint, fmt, and typecheck.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for security reviews. Please try again later.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L labels Aug 13, 2026

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

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:5f1708c423

ℹ️ About Codex in GitHub

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

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

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

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


export const WORKTREE_BRANCH_PREFIX = "t3code";
// Canonical form is `t3code/<8 hex>`. Older mobile builds generated `t3code/<uuid>`
export const WORKTREE_BRANCH_PREFIX = "aldo";

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Gate the Aldo branch prefix to managed servers

When a normal npx t3 or desktop server runs with managedDevPc === false, this shared constant is still aldo, so every temporary worktree, generated feature branch, and cross-repository PR worktree writes aldo/... into an ordinary T3 Code repository. The web already limits Aldo branding to VITE_DEVPC_MANAGED in apps/web/src/branding.ts, so the server prefix should likewise come from the managed configuration rather than changing the global default.

AGENTS.md reference: AGENTS.md:L23-L31

Useful? React with 👍 / 👎.

Comment on lines +672 to +675
GIT_AUTHOR_NAME: "Aldo",
GIT_AUTHOR_EMAIL: "aldo@users.noreply.github.com",
GIT_COMMITTER_NAME: "Aldo",
GIT_COMMITTER_EMAIL: "aldo@users.noreply.github.com",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Preserve T3 checkpoint attribution on unmanaged servers

On a standalone T3 Code installation, this driver executes without checking ServerConfig.managedDevPc, so every turn's hidden checkpoint commit is now authored and committed by Aldo as well. Inspecting, exporting, or otherwise retaining those refs therefore records the managed product's identity in normal users' repositories; select the identity from the server branding and retain T3 Code for unmanaged builds.

AGENTS.md reference: AGENTS.md:L23-L31

Useful? React with 👍 / 👎.

Comment on lines +438 to +441
return pullRequestWorktreeBranchNameCandidates(
input.pullRequestId,
sanitizeBranchFragment(input.headBranch),
)[0]!;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Reuse legacy Bitbucket checkout branches

When a fork PR was previously checked out locally by an older build, only a branch such as t3code/pr-42/main exists. This path always selects candidate zero, and the later listLocalBranchNames check consequently tests only the new Aldo name, so preparePullRequestThread in local mode fetches and switches to a duplicate aldo/... branch instead of reusing the legacy checkout. Select the first existing current-or-legacy candidate before fetching and configuring the upstream.

AGENTS.md reference: AGENTS.md:L67-L71

Useful? React with 👍 / 👎.

Comment on lines 1818 to 1820
const localBranch = result.refs.find(
(branch) => !branch.isRemote && branch.name === localPullRequestBranch,
(branch) => !branch.isRemote && localPullRequestBranchNames.includes(branch.name),
);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Prefer checked-out worktrees over newer bare legacy refs

When both branch names coexist—for example, a newer bare t3code/pr-… ref remains after its worktree was removed while the corresponding aldo/pr-… branch is currently checked out—this find selects the legacy ref because GitVcsDriver.listRefs sorts by commit recency rather than candidate order. It then materializes the Aldo branch instead of returning its existing worktree, and Git rejects the forced branch update because that branch is checked out; git worktree add -h likewise documents that checking out an already-used branch requires --force, which this path does not pass. Prefer a matching ref with a worktreePath before considering bare candidates.

Useful? React with 👍 / 👎.

@github-actions

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire11.8 KiB11.8 KiB−2 B (−0.0%)15.1 KiB
CodexThread snapshot wire5.9 KiB5.8 KiB−8 B (−0.1%)7.3 KiB
CodexLive turn WebSocket wire6.0 KiB6.0 KiB+6 B (+0.1%)7.8 KiB
CodexLive turn WebSocket decoded50.6 KiB50.6 KiB0 B (0.0%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire11.9 KiB11.9 KiB−12 B (−0.1%)15.1 KiB
ClaudeThread snapshot wire5.9 KiB5.9 KiB+2 B (+0.0%)7.3 KiB
ClaudeLive turn WebSocket wire6.0 KiB6.0 KiB−14 B (−0.2%)7.8 KiB
ClaudeLive turn WebSocket decoded51.4 KiB51.4 KiB0 B (0.0%)66.4 KiB
ClaudeLive turn messages16160 (0.0%)21

Baseline: 5a11800 · PR result: 5f1708c · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 96.9 KiB
  • Claude decoded thread snapshot: 97.6 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:Lvouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@logancsack@codex
, '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

fix(server): brand generated branches and checkpoints as Aldo - #63

Open
logancsack wants to merge 1 commit into
mainfrom
fix/aldo-branch-and-checkpoint-branding
Open

fix(server): brand generated branches and checkpoints as Aldo#63
logancsack wants to merge 1 commit into
mainfrom
fix/aldo-branch-and-checkpoint-branding

Conversation

@logancsack

Copy link
Copy Markdown
Owner

Problem

Managed Aldo workspaces are branded everywhere the client renders, but the server still wrote T3 Code into the user's own repository:

  • generated worktree branches were t3code/<name> — visible in the composer footer, git branch, and any PR opened from one
  • cross-repository pull request checkouts were t3code/pr-<n>/<head>
  • every turn checkpoint was authored by T3 Code <t3code@users.noreply.github.com>, so the rename never reached the user's git history

Fix

WORKTREE_BRANCH_PREFIX is now aldo, PR checkout names are built from the same prefix in both the GitHub and Bitbucket paths, and checkpoints are authored by Aldo <aldo@users.noreply.github.com>.

Only the generators moved. LEGACY_WORKTREE_BRANCH_PREFIXES keeps every matcher reading the old names, so existing state is not stranded:

  • isTemporaryWorktreeBranch still matches t3code/<hex> and the UUID-shaped names older mobile builds produced, so those threads stay eligible for branch regeneration
  • stripWorktreeBranchPrefix removes either prefix, so regenerating a name cannot stack one prefix on the other
  • a pull request already checked out as t3code/pr-<n>/<head> is still found rather than duplicated under a new aldo/ branch, and the reused worktree now reports the branch it actually carries instead of the one this build would have generated

.github/devpc-release-version is bumped to 0.0.31-devpc.2 so merging cuts the artifact the managed gateway pins.

Verification

  • vp test run packages/shared apps/server/src/git apps/server/src/vcs apps/server/src/sourceControl apps/server/src/orchestration apps/server/src/server.test.ts — all green, including a new regression test that prepares a PR thread against a legacy-prefixed worktree and asserts it is reused
  • targeted vp lint, vp fmt --check, and vp run --filter t3 typecheck (0 errors)

No UI surface changed, so there are no screenshots.

Model: Claude Opus 5 (1M context), harness: Claude Code.

Managed workspaces are branded Aldo everywhere the client renders, but the
server still wrote T3 Code into the user's own repository: generated worktree
branches were `t3code/<name>`, cross-repository pull request checkouts were
`t3code/pr-<n>/<head>`, and every turn checkpoint was authored by
`T3 Code <t3code@users.noreply.github.com>`.
The generators now use `aldo`, while every matcher keeps reading the old prefix
from `LEGACY_WORKTREE_BRANCH_PREFIXES`. Existing temporary branches stay
regenerable, an existing pull request worktree is still found instead of
duplicated under the new prefix, and a reused worktree reports the name it
actually carries rather than the one this build would have generated.
Verified: vp test run on packages/shared, apps/server/src/git,
apps/server/src/vcs, apps/server/src/sourceControl, apps/server/src/orchestration
and apps/server/src/server.test.ts; targeted lint, fmt, and typecheck.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for security reviews. Please try again later.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L labels Aug 13, 2026

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

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:5f1708c423

ℹ️ About Codex in GitHub

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

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

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

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


export const WORKTREE_BRANCH_PREFIX = "t3code";
// Canonical form is `t3code/<8 hex>`. Older mobile builds generated `t3code/<uuid>`
export const WORKTREE_BRANCH_PREFIX = "aldo";

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Gate the Aldo branch prefix to managed servers

When a normal npx t3 or desktop server runs with managedDevPc === false, this shared constant is still aldo, so every temporary worktree, generated feature branch, and cross-repository PR worktree writes aldo/... into an ordinary T3 Code repository. The web already limits Aldo branding to VITE_DEVPC_MANAGED in apps/web/src/branding.ts, so the server prefix should likewise come from the managed configuration rather than changing the global default.

AGENTS.md reference: AGENTS.md:L23-L31

Useful? React with 👍 / 👎.

Comment on lines +672 to +675
GIT_AUTHOR_NAME: "Aldo",
GIT_AUTHOR_EMAIL: "aldo@users.noreply.github.com",
GIT_COMMITTER_NAME: "Aldo",
GIT_COMMITTER_EMAIL: "aldo@users.noreply.github.com",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Preserve T3 checkpoint attribution on unmanaged servers

On a standalone T3 Code installation, this driver executes without checking ServerConfig.managedDevPc, so every turn's hidden checkpoint commit is now authored and committed by Aldo as well. Inspecting, exporting, or otherwise retaining those refs therefore records the managed product's identity in normal users' repositories; select the identity from the server branding and retain T3 Code for unmanaged builds.

AGENTS.md reference: AGENTS.md:L23-L31

Useful? React with 👍 / 👎.

Comment on lines +438 to +441
return pullRequestWorktreeBranchNameCandidates(
input.pullRequestId,
sanitizeBranchFragment(input.headBranch),
)[0]!;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Reuse legacy Bitbucket checkout branches

When a fork PR was previously checked out locally by an older build, only a branch such as t3code/pr-42/main exists. This path always selects candidate zero, and the later listLocalBranchNames check consequently tests only the new Aldo name, so preparePullRequestThread in local mode fetches and switches to a duplicate aldo/... branch instead of reusing the legacy checkout. Select the first existing current-or-legacy candidate before fetching and configuring the upstream.

AGENTS.md reference: AGENTS.md:L67-L71

Useful? React with 👍 / 👎.

Comment on lines 1818 to 1820
const localBranch = result.refs.find(
(branch) => !branch.isRemote && branch.name === localPullRequestBranch,
(branch) => !branch.isRemote && localPullRequestBranchNames.includes(branch.name),
);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Prefer checked-out worktrees over newer bare legacy refs

When both branch names coexist—for example, a newer bare t3code/pr-… ref remains after its worktree was removed while the corresponding aldo/pr-… branch is currently checked out—this find selects the legacy ref because GitVcsDriver.listRefs sorts by commit recency rather than candidate order. It then materializes the Aldo branch instead of returning its existing worktree, and Git rejects the forced branch update because that branch is checked out; git worktree add -h likewise documents that checking out an already-used branch requires --force, which this path does not pass. Prefer a matching ref with a worktreePath before considering bare candidates.

Useful? React with 👍 / 👎.

@github-actions

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire11.8 KiB11.8 KiB−2 B (−0.0%)15.1 KiB
CodexThread snapshot wire5.9 KiB5.8 KiB−8 B (−0.1%)7.3 KiB
CodexLive turn WebSocket wire6.0 KiB6.0 KiB+6 B (+0.1%)7.8 KiB
CodexLive turn WebSocket decoded50.6 KiB50.6 KiB0 B (0.0%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire11.9 KiB11.9 KiB−12 B (−0.1%)15.1 KiB
ClaudeThread snapshot wire5.9 KiB5.9 KiB+2 B (+0.0%)7.3 KiB
ClaudeLive turn WebSocket wire6.0 KiB6.0 KiB−14 B (−0.2%)7.8 KiB
ClaudeLive turn WebSocket decoded51.4 KiB51.4 KiB0 B (0.0%)66.4 KiB
ClaudeLive turn messages16160 (0.0%)21

Baseline: 5a11800 · PR result: 5f1708c · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 96.9 KiB
  • Claude decoded thread snapshot: 97.6 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:Lvouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@logancsack@codex
, '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

fix(server): brand generated branches and checkpoints as Aldo - #63

Open
logancsack wants to merge 1 commit into
mainfrom
fix/aldo-branch-and-checkpoint-branding
Open

fix(server): brand generated branches and checkpoints as Aldo#63
logancsack wants to merge 1 commit into
mainfrom
fix/aldo-branch-and-checkpoint-branding

Conversation

@logancsack

Copy link
Copy Markdown
Owner

Problem

Managed Aldo workspaces are branded everywhere the client renders, but the server still wrote T3 Code into the user's own repository:

  • generated worktree branches were t3code/<name> — visible in the composer footer, git branch, and any PR opened from one
  • cross-repository pull request checkouts were t3code/pr-<n>/<head>
  • every turn checkpoint was authored by T3 Code <t3code@users.noreply.github.com>, so the rename never reached the user's git history

Fix

WORKTREE_BRANCH_PREFIX is now aldo, PR checkout names are built from the same prefix in both the GitHub and Bitbucket paths, and checkpoints are authored by Aldo <aldo@users.noreply.github.com>.

Only the generators moved. LEGACY_WORKTREE_BRANCH_PREFIXES keeps every matcher reading the old names, so existing state is not stranded:

  • isTemporaryWorktreeBranch still matches t3code/<hex> and the UUID-shaped names older mobile builds produced, so those threads stay eligible for branch regeneration
  • stripWorktreeBranchPrefix removes either prefix, so regenerating a name cannot stack one prefix on the other
  • a pull request already checked out as t3code/pr-<n>/<head> is still found rather than duplicated under a new aldo/ branch, and the reused worktree now reports the branch it actually carries instead of the one this build would have generated

.github/devpc-release-version is bumped to 0.0.31-devpc.2 so merging cuts the artifact the managed gateway pins.

Verification

  • vp test run packages/shared apps/server/src/git apps/server/src/vcs apps/server/src/sourceControl apps/server/src/orchestration apps/server/src/server.test.ts — all green, including a new regression test that prepares a PR thread against a legacy-prefixed worktree and asserts it is reused
  • targeted vp lint, vp fmt --check, and vp run --filter t3 typecheck (0 errors)

No UI surface changed, so there are no screenshots.

Model: Claude Opus 5 (1M context), harness: Claude Code.

Managed workspaces are branded Aldo everywhere the client renders, but the
server still wrote T3 Code into the user's own repository: generated worktree
branches were `t3code/<name>`, cross-repository pull request checkouts were
`t3code/pr-<n>/<head>`, and every turn checkpoint was authored by
`T3 Code <t3code@users.noreply.github.com>`.
The generators now use `aldo`, while every matcher keeps reading the old prefix
from `LEGACY_WORKTREE_BRANCH_PREFIXES`. Existing temporary branches stay
regenerable, an existing pull request worktree is still found instead of
duplicated under the new prefix, and a reused worktree reports the name it
actually carries rather than the one this build would have generated.
Verified: vp test run on packages/shared, apps/server/src/git,
apps/server/src/vcs, apps/server/src/sourceControl, apps/server/src/orchestration
and apps/server/src/server.test.ts; targeted lint, fmt, and typecheck.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for security reviews. Please try again later.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L labels Aug 13, 2026

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

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:5f1708c423

ℹ️ About Codex in GitHub

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

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

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

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


export const WORKTREE_BRANCH_PREFIX = "t3code";
// Canonical form is `t3code/<8 hex>`. Older mobile builds generated `t3code/<uuid>`
export const WORKTREE_BRANCH_PREFIX = "aldo";

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Gate the Aldo branch prefix to managed servers

When a normal npx t3 or desktop server runs with managedDevPc === false, this shared constant is still aldo, so every temporary worktree, generated feature branch, and cross-repository PR worktree writes aldo/... into an ordinary T3 Code repository. The web already limits Aldo branding to VITE_DEVPC_MANAGED in apps/web/src/branding.ts, so the server prefix should likewise come from the managed configuration rather than changing the global default.

AGENTS.md reference: AGENTS.md:L23-L31

Useful? React with 👍 / 👎.

Comment on lines +672 to +675
GIT_AUTHOR_NAME: "Aldo",
GIT_AUTHOR_EMAIL: "aldo@users.noreply.github.com",
GIT_COMMITTER_NAME: "Aldo",
GIT_COMMITTER_EMAIL: "aldo@users.noreply.github.com",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Preserve T3 checkpoint attribution on unmanaged servers

On a standalone T3 Code installation, this driver executes without checking ServerConfig.managedDevPc, so every turn's hidden checkpoint commit is now authored and committed by Aldo as well. Inspecting, exporting, or otherwise retaining those refs therefore records the managed product's identity in normal users' repositories; select the identity from the server branding and retain T3 Code for unmanaged builds.

AGENTS.md reference: AGENTS.md:L23-L31

Useful? React with 👍 / 👎.

Comment on lines +438 to +441
return pullRequestWorktreeBranchNameCandidates(
input.pullRequestId,
sanitizeBranchFragment(input.headBranch),
)[0]!;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Reuse legacy Bitbucket checkout branches

When a fork PR was previously checked out locally by an older build, only a branch such as t3code/pr-42/main exists. This path always selects candidate zero, and the later listLocalBranchNames check consequently tests only the new Aldo name, so preparePullRequestThread in local mode fetches and switches to a duplicate aldo/... branch instead of reusing the legacy checkout. Select the first existing current-or-legacy candidate before fetching and configuring the upstream.

AGENTS.md reference: AGENTS.md:L67-L71

Useful? React with 👍 / 👎.

Comment on lines 1818 to 1820
const localBranch = result.refs.find(
(branch) => !branch.isRemote && branch.name === localPullRequestBranch,
(branch) => !branch.isRemote && localPullRequestBranchNames.includes(branch.name),
);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Prefer checked-out worktrees over newer bare legacy refs

When both branch names coexist—for example, a newer bare t3code/pr-… ref remains after its worktree was removed while the corresponding aldo/pr-… branch is currently checked out—this find selects the legacy ref because GitVcsDriver.listRefs sorts by commit recency rather than candidate order. It then materializes the Aldo branch instead of returning its existing worktree, and Git rejects the forced branch update because that branch is checked out; git worktree add -h likewise documents that checking out an already-used branch requires --force, which this path does not pass. Prefer a matching ref with a worktreePath before considering bare candidates.

Useful? React with 👍 / 👎.

@github-actions

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire11.8 KiB11.8 KiB−2 B (−0.0%)15.1 KiB
CodexThread snapshot wire5.9 KiB5.8 KiB−8 B (−0.1%)7.3 KiB
CodexLive turn WebSocket wire6.0 KiB6.0 KiB+6 B (+0.1%)7.8 KiB
CodexLive turn WebSocket decoded50.6 KiB50.6 KiB0 B (0.0%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire11.9 KiB11.9 KiB−12 B (−0.1%)15.1 KiB
ClaudeThread snapshot wire5.9 KiB5.9 KiB+2 B (+0.0%)7.3 KiB
ClaudeLive turn WebSocket wire6.0 KiB6.0 KiB−14 B (−0.2%)7.8 KiB
ClaudeLive turn WebSocket decoded51.4 KiB51.4 KiB0 B (0.0%)66.4 KiB
ClaudeLive turn messages16160 (0.0%)21

Baseline: 5a11800 · PR result: 5f1708c · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 96.9 KiB
  • Claude decoded thread snapshot: 97.6 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:Lvouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@logancsack@codex
, '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

fix(server): brand generated branches and checkpoints as Aldo - #63

Open
logancsack wants to merge 1 commit into
mainfrom
fix/aldo-branch-and-checkpoint-branding
Open

fix(server): brand generated branches and checkpoints as Aldo#63
logancsack wants to merge 1 commit into
mainfrom
fix/aldo-branch-and-checkpoint-branding

Conversation

@logancsack

Copy link
Copy Markdown
Owner

Problem

Managed Aldo workspaces are branded everywhere the client renders, but the server still wrote T3 Code into the user's own repository:

  • generated worktree branches were t3code/<name> — visible in the composer footer, git branch, and any PR opened from one
  • cross-repository pull request checkouts were t3code/pr-<n>/<head>
  • every turn checkpoint was authored by T3 Code <t3code@users.noreply.github.com>, so the rename never reached the user's git history

Fix

WORKTREE_BRANCH_PREFIX is now aldo, PR checkout names are built from the same prefix in both the GitHub and Bitbucket paths, and checkpoints are authored by Aldo <aldo@users.noreply.github.com>.

Only the generators moved. LEGACY_WORKTREE_BRANCH_PREFIXES keeps every matcher reading the old names, so existing state is not stranded:

  • isTemporaryWorktreeBranch still matches t3code/<hex> and the UUID-shaped names older mobile builds produced, so those threads stay eligible for branch regeneration
  • stripWorktreeBranchPrefix removes either prefix, so regenerating a name cannot stack one prefix on the other
  • a pull request already checked out as t3code/pr-<n>/<head> is still found rather than duplicated under a new aldo/ branch, and the reused worktree now reports the branch it actually carries instead of the one this build would have generated

.github/devpc-release-version is bumped to 0.0.31-devpc.2 so merging cuts the artifact the managed gateway pins.

Verification

  • vp test run packages/shared apps/server/src/git apps/server/src/vcs apps/server/src/sourceControl apps/server/src/orchestration apps/server/src/server.test.ts — all green, including a new regression test that prepares a PR thread against a legacy-prefixed worktree and asserts it is reused
  • targeted vp lint, vp fmt --check, and vp run --filter t3 typecheck (0 errors)

No UI surface changed, so there are no screenshots.

Model: Claude Opus 5 (1M context), harness: Claude Code.

Managed workspaces are branded Aldo everywhere the client renders, but the
server still wrote T3 Code into the user's own repository: generated worktree
branches were `t3code/<name>`, cross-repository pull request checkouts were
`t3code/pr-<n>/<head>`, and every turn checkpoint was authored by
`T3 Code <t3code@users.noreply.github.com>`.
The generators now use `aldo`, while every matcher keeps reading the old prefix
from `LEGACY_WORKTREE_BRANCH_PREFIXES`. Existing temporary branches stay
regenerable, an existing pull request worktree is still found instead of
duplicated under the new prefix, and a reused worktree reports the name it
actually carries rather than the one this build would have generated.
Verified: vp test run on packages/shared, apps/server/src/git,
apps/server/src/vcs, apps/server/src/sourceControl, apps/server/src/orchestration
and apps/server/src/server.test.ts; targeted lint, fmt, and typecheck.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for security reviews. Please try again later.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L labels Aug 13, 2026

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

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:5f1708c423

ℹ️ About Codex in GitHub

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

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

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

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


export const WORKTREE_BRANCH_PREFIX = "t3code";
// Canonical form is `t3code/<8 hex>`. Older mobile builds generated `t3code/<uuid>`
export const WORKTREE_BRANCH_PREFIX = "aldo";

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Gate the Aldo branch prefix to managed servers

When a normal npx t3 or desktop server runs with managedDevPc === false, this shared constant is still aldo, so every temporary worktree, generated feature branch, and cross-repository PR worktree writes aldo/... into an ordinary T3 Code repository. The web already limits Aldo branding to VITE_DEVPC_MANAGED in apps/web/src/branding.ts, so the server prefix should likewise come from the managed configuration rather than changing the global default.

AGENTS.md reference: AGENTS.md:L23-L31

Useful? React with 👍 / 👎.

Comment on lines +672 to +675
GIT_AUTHOR_NAME: "Aldo",
GIT_AUTHOR_EMAIL: "aldo@users.noreply.github.com",
GIT_COMMITTER_NAME: "Aldo",
GIT_COMMITTER_EMAIL: "aldo@users.noreply.github.com",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Preserve T3 checkpoint attribution on unmanaged servers

On a standalone T3 Code installation, this driver executes without checking ServerConfig.managedDevPc, so every turn's hidden checkpoint commit is now authored and committed by Aldo as well. Inspecting, exporting, or otherwise retaining those refs therefore records the managed product's identity in normal users' repositories; select the identity from the server branding and retain T3 Code for unmanaged builds.

AGENTS.md reference: AGENTS.md:L23-L31

Useful? React with 👍 / 👎.

Comment on lines +438 to +441
return pullRequestWorktreeBranchNameCandidates(
input.pullRequestId,
sanitizeBranchFragment(input.headBranch),
)[0]!;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Reuse legacy Bitbucket checkout branches

When a fork PR was previously checked out locally by an older build, only a branch such as t3code/pr-42/main exists. This path always selects candidate zero, and the later listLocalBranchNames check consequently tests only the new Aldo name, so preparePullRequestThread in local mode fetches and switches to a duplicate aldo/... branch instead of reusing the legacy checkout. Select the first existing current-or-legacy candidate before fetching and configuring the upstream.

AGENTS.md reference: AGENTS.md:L67-L71

Useful? React with 👍 / 👎.

Comment on lines 1818 to 1820
const localBranch = result.refs.find(
(branch) => !branch.isRemote && branch.name === localPullRequestBranch,
(branch) => !branch.isRemote && localPullRequestBranchNames.includes(branch.name),
);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Prefer checked-out worktrees over newer bare legacy refs

When both branch names coexist—for example, a newer bare t3code/pr-… ref remains after its worktree was removed while the corresponding aldo/pr-… branch is currently checked out—this find selects the legacy ref because GitVcsDriver.listRefs sorts by commit recency rather than candidate order. It then materializes the Aldo branch instead of returning its existing worktree, and Git rejects the forced branch update because that branch is checked out; git worktree add -h likewise documents that checking out an already-used branch requires --force, which this path does not pass. Prefer a matching ref with a worktreePath before considering bare candidates.

Useful? React with 👍 / 👎.

@github-actions

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire11.8 KiB11.8 KiB−2 B (−0.0%)15.1 KiB
CodexThread snapshot wire5.9 KiB5.8 KiB−8 B (−0.1%)7.3 KiB
CodexLive turn WebSocket wire6.0 KiB6.0 KiB+6 B (+0.1%)7.8 KiB
CodexLive turn WebSocket decoded50.6 KiB50.6 KiB0 B (0.0%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire11.9 KiB11.9 KiB−12 B (−0.1%)15.1 KiB
ClaudeThread snapshot wire5.9 KiB5.9 KiB+2 B (+0.0%)7.3 KiB
ClaudeLive turn WebSocket wire6.0 KiB6.0 KiB−14 B (−0.2%)7.8 KiB
ClaudeLive turn WebSocket decoded51.4 KiB51.4 KiB0 B (0.0%)66.4 KiB
ClaudeLive turn messages16160 (0.0%)21

Baseline: 5a11800 · PR result: 5f1708c · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 96.9 KiB
  • Claude decoded thread snapshot: 97.6 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:Lvouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@logancsack@codex
, '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

fix(server): brand generated branches and checkpoints as Aldo - #63

Open
logancsack wants to merge 1 commit into
mainfrom
fix/aldo-branch-and-checkpoint-branding
Open

fix(server): brand generated branches and checkpoints as Aldo#63
logancsack wants to merge 1 commit into
mainfrom
fix/aldo-branch-and-checkpoint-branding

Conversation

@logancsack

Copy link
Copy Markdown
Owner

Problem

Managed Aldo workspaces are branded everywhere the client renders, but the server still wrote T3 Code into the user's own repository:

  • generated worktree branches were t3code/<name> — visible in the composer footer, git branch, and any PR opened from one
  • cross-repository pull request checkouts were t3code/pr-<n>/<head>
  • every turn checkpoint was authored by T3 Code <t3code@users.noreply.github.com>, so the rename never reached the user's git history

Fix

WORKTREE_BRANCH_PREFIX is now aldo, PR checkout names are built from the same prefix in both the GitHub and Bitbucket paths, and checkpoints are authored by Aldo <aldo@users.noreply.github.com>.

Only the generators moved. LEGACY_WORKTREE_BRANCH_PREFIXES keeps every matcher reading the old names, so existing state is not stranded:

  • isTemporaryWorktreeBranch still matches t3code/<hex> and the UUID-shaped names older mobile builds produced, so those threads stay eligible for branch regeneration
  • stripWorktreeBranchPrefix removes either prefix, so regenerating a name cannot stack one prefix on the other
  • a pull request already checked out as t3code/pr-<n>/<head> is still found rather than duplicated under a new aldo/ branch, and the reused worktree now reports the branch it actually carries instead of the one this build would have generated

.github/devpc-release-version is bumped to 0.0.31-devpc.2 so merging cuts the artifact the managed gateway pins.

Verification

  • vp test run packages/shared apps/server/src/git apps/server/src/vcs apps/server/src/sourceControl apps/server/src/orchestration apps/server/src/server.test.ts — all green, including a new regression test that prepares a PR thread against a legacy-prefixed worktree and asserts it is reused
  • targeted vp lint, vp fmt --check, and vp run --filter t3 typecheck (0 errors)

No UI surface changed, so there are no screenshots.

Model: Claude Opus 5 (1M context), harness: Claude Code.

Managed workspaces are branded Aldo everywhere the client renders, but the
server still wrote T3 Code into the user's own repository: generated worktree
branches were `t3code/<name>`, cross-repository pull request checkouts were
`t3code/pr-<n>/<head>`, and every turn checkpoint was authored by
`T3 Code <t3code@users.noreply.github.com>`.
The generators now use `aldo`, while every matcher keeps reading the old prefix
from `LEGACY_WORKTREE_BRANCH_PREFIXES`. Existing temporary branches stay
regenerable, an existing pull request worktree is still found instead of
duplicated under the new prefix, and a reused worktree reports the name it
actually carries rather than the one this build would have generated.
Verified: vp test run on packages/shared, apps/server/src/git,
apps/server/src/vcs, apps/server/src/sourceControl, apps/server/src/orchestration
and apps/server/src/server.test.ts; targeted lint, fmt, and typecheck.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for security reviews. Please try again later.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L labels Aug 13, 2026

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

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:5f1708c423

ℹ️ About Codex in GitHub

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

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

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

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


export const WORKTREE_BRANCH_PREFIX = "t3code";
// Canonical form is `t3code/<8 hex>`. Older mobile builds generated `t3code/<uuid>`
export const WORKTREE_BRANCH_PREFIX = "aldo";

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Gate the Aldo branch prefix to managed servers

When a normal npx t3 or desktop server runs with managedDevPc === false, this shared constant is still aldo, so every temporary worktree, generated feature branch, and cross-repository PR worktree writes aldo/... into an ordinary T3 Code repository. The web already limits Aldo branding to VITE_DEVPC_MANAGED in apps/web/src/branding.ts, so the server prefix should likewise come from the managed configuration rather than changing the global default.

AGENTS.md reference: AGENTS.md:L23-L31

Useful? React with 👍 / 👎.

Comment on lines +672 to +675
GIT_AUTHOR_NAME: "Aldo",
GIT_AUTHOR_EMAIL: "aldo@users.noreply.github.com",
GIT_COMMITTER_NAME: "Aldo",
GIT_COMMITTER_EMAIL: "aldo@users.noreply.github.com",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Preserve T3 checkpoint attribution on unmanaged servers

On a standalone T3 Code installation, this driver executes without checking ServerConfig.managedDevPc, so every turn's hidden checkpoint commit is now authored and committed by Aldo as well. Inspecting, exporting, or otherwise retaining those refs therefore records the managed product's identity in normal users' repositories; select the identity from the server branding and retain T3 Code for unmanaged builds.

AGENTS.md reference: AGENTS.md:L23-L31

Useful? React with 👍 / 👎.

Comment on lines +438 to +441
return pullRequestWorktreeBranchNameCandidates(
input.pullRequestId,
sanitizeBranchFragment(input.headBranch),
)[0]!;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Reuse legacy Bitbucket checkout branches

When a fork PR was previously checked out locally by an older build, only a branch such as t3code/pr-42/main exists. This path always selects candidate zero, and the later listLocalBranchNames check consequently tests only the new Aldo name, so preparePullRequestThread in local mode fetches and switches to a duplicate aldo/... branch instead of reusing the legacy checkout. Select the first existing current-or-legacy candidate before fetching and configuring the upstream.

AGENTS.md reference: AGENTS.md:L67-L71

Useful? React with 👍 / 👎.

Comment on lines 1818 to 1820
const localBranch = result.refs.find(
(branch) => !branch.isRemote && branch.name === localPullRequestBranch,
(branch) => !branch.isRemote && localPullRequestBranchNames.includes(branch.name),
);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Prefer checked-out worktrees over newer bare legacy refs

When both branch names coexist—for example, a newer bare t3code/pr-… ref remains after its worktree was removed while the corresponding aldo/pr-… branch is currently checked out—this find selects the legacy ref because GitVcsDriver.listRefs sorts by commit recency rather than candidate order. It then materializes the Aldo branch instead of returning its existing worktree, and Git rejects the forced branch update because that branch is checked out; git worktree add -h likewise documents that checking out an already-used branch requires --force, which this path does not pass. Prefer a matching ref with a worktreePath before considering bare candidates.

Useful? React with 👍 / 👎.

@github-actions

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire11.8 KiB11.8 KiB−2 B (−0.0%)15.1 KiB
CodexThread snapshot wire5.9 KiB5.8 KiB−8 B (−0.1%)7.3 KiB
CodexLive turn WebSocket wire6.0 KiB6.0 KiB+6 B (+0.1%)7.8 KiB
CodexLive turn WebSocket decoded50.6 KiB50.6 KiB0 B (0.0%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire11.9 KiB11.9 KiB−12 B (−0.1%)15.1 KiB
ClaudeThread snapshot wire5.9 KiB5.9 KiB+2 B (+0.0%)7.3 KiB
ClaudeLive turn WebSocket wire6.0 KiB6.0 KiB−14 B (−0.2%)7.8 KiB
ClaudeLive turn WebSocket decoded51.4 KiB51.4 KiB0 B (0.0%)66.4 KiB
ClaudeLive turn messages16160 (0.0%)21

Baseline: 5a11800 · PR result: 5f1708c · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 96.9 KiB
  • Claude decoded thread snapshot: 97.6 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:Lvouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@logancsack@codex
, '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

fix(server): brand generated branches and checkpoints as Aldo - #63

Open
logancsack wants to merge 1 commit into
mainfrom
fix/aldo-branch-and-checkpoint-branding
Open

fix(server): brand generated branches and checkpoints as Aldo#63
logancsack wants to merge 1 commit into
mainfrom
fix/aldo-branch-and-checkpoint-branding

Conversation

@logancsack

Copy link
Copy Markdown
Owner

Problem

Managed Aldo workspaces are branded everywhere the client renders, but the server still wrote T3 Code into the user's own repository:

  • generated worktree branches were t3code/<name> — visible in the composer footer, git branch, and any PR opened from one
  • cross-repository pull request checkouts were t3code/pr-<n>/<head>
  • every turn checkpoint was authored by T3 Code <t3code@users.noreply.github.com>, so the rename never reached the user's git history

Fix

WORKTREE_BRANCH_PREFIX is now aldo, PR checkout names are built from the same prefix in both the GitHub and Bitbucket paths, and checkpoints are authored by Aldo <aldo@users.noreply.github.com>.

Only the generators moved. LEGACY_WORKTREE_BRANCH_PREFIXES keeps every matcher reading the old names, so existing state is not stranded:

  • isTemporaryWorktreeBranch still matches t3code/<hex> and the UUID-shaped names older mobile builds produced, so those threads stay eligible for branch regeneration
  • stripWorktreeBranchPrefix removes either prefix, so regenerating a name cannot stack one prefix on the other
  • a pull request already checked out as t3code/pr-<n>/<head> is still found rather than duplicated under a new aldo/ branch, and the reused worktree now reports the branch it actually carries instead of the one this build would have generated

.github/devpc-release-version is bumped to 0.0.31-devpc.2 so merging cuts the artifact the managed gateway pins.

Verification

  • vp test run packages/shared apps/server/src/git apps/server/src/vcs apps/server/src/sourceControl apps/server/src/orchestration apps/server/src/server.test.ts — all green, including a new regression test that prepares a PR thread against a legacy-prefixed worktree and asserts it is reused
  • targeted vp lint, vp fmt --check, and vp run --filter t3 typecheck (0 errors)

No UI surface changed, so there are no screenshots.

Model: Claude Opus 5 (1M context), harness: Claude Code.

Managed workspaces are branded Aldo everywhere the client renders, but the
server still wrote T3 Code into the user's own repository: generated worktree
branches were `t3code/<name>`, cross-repository pull request checkouts were
`t3code/pr-<n>/<head>`, and every turn checkpoint was authored by
`T3 Code <t3code@users.noreply.github.com>`.
The generators now use `aldo`, while every matcher keeps reading the old prefix
from `LEGACY_WORKTREE_BRANCH_PREFIXES`. Existing temporary branches stay
regenerable, an existing pull request worktree is still found instead of
duplicated under the new prefix, and a reused worktree reports the name it
actually carries rather than the one this build would have generated.
Verified: vp test run on packages/shared, apps/server/src/git,
apps/server/src/vcs, apps/server/src/sourceControl, apps/server/src/orchestration
and apps/server/src/server.test.ts; targeted lint, fmt, and typecheck.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for security reviews. Please try again later.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L labels Aug 13, 2026

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

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:5f1708c423

ℹ️ About Codex in GitHub

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

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

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

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


export const WORKTREE_BRANCH_PREFIX = "t3code";
// Canonical form is `t3code/<8 hex>`. Older mobile builds generated `t3code/<uuid>`
export const WORKTREE_BRANCH_PREFIX = "aldo";

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Gate the Aldo branch prefix to managed servers

When a normal npx t3 or desktop server runs with managedDevPc === false, this shared constant is still aldo, so every temporary worktree, generated feature branch, and cross-repository PR worktree writes aldo/... into an ordinary T3 Code repository. The web already limits Aldo branding to VITE_DEVPC_MANAGED in apps/web/src/branding.ts, so the server prefix should likewise come from the managed configuration rather than changing the global default.

AGENTS.md reference: AGENTS.md:L23-L31

Useful? React with 👍 / 👎.

Comment on lines +672 to +675
GIT_AUTHOR_NAME: "Aldo",
GIT_AUTHOR_EMAIL: "aldo@users.noreply.github.com",
GIT_COMMITTER_NAME: "Aldo",
GIT_COMMITTER_EMAIL: "aldo@users.noreply.github.com",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Preserve T3 checkpoint attribution on unmanaged servers

On a standalone T3 Code installation, this driver executes without checking ServerConfig.managedDevPc, so every turn's hidden checkpoint commit is now authored and committed by Aldo as well. Inspecting, exporting, or otherwise retaining those refs therefore records the managed product's identity in normal users' repositories; select the identity from the server branding and retain T3 Code for unmanaged builds.

AGENTS.md reference: AGENTS.md:L23-L31

Useful? React with 👍 / 👎.

Comment on lines +438 to +441
return pullRequestWorktreeBranchNameCandidates(
input.pullRequestId,
sanitizeBranchFragment(input.headBranch),
)[0]!;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Reuse legacy Bitbucket checkout branches

When a fork PR was previously checked out locally by an older build, only a branch such as t3code/pr-42/main exists. This path always selects candidate zero, and the later listLocalBranchNames check consequently tests only the new Aldo name, so preparePullRequestThread in local mode fetches and switches to a duplicate aldo/... branch instead of reusing the legacy checkout. Select the first existing current-or-legacy candidate before fetching and configuring the upstream.

AGENTS.md reference: AGENTS.md:L67-L71

Useful? React with 👍 / 👎.

Comment on lines 1818 to 1820
const localBranch = result.refs.find(
(branch) => !branch.isRemote && branch.name === localPullRequestBranch,
(branch) => !branch.isRemote && localPullRequestBranchNames.includes(branch.name),
);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Prefer checked-out worktrees over newer bare legacy refs

When both branch names coexist—for example, a newer bare t3code/pr-… ref remains after its worktree was removed while the corresponding aldo/pr-… branch is currently checked out—this find selects the legacy ref because GitVcsDriver.listRefs sorts by commit recency rather than candidate order. It then materializes the Aldo branch instead of returning its existing worktree, and Git rejects the forced branch update because that branch is checked out; git worktree add -h likewise documents that checking out an already-used branch requires --force, which this path does not pass. Prefer a matching ref with a worktreePath before considering bare candidates.

Useful? React with 👍 / 👎.

@github-actions

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire11.8 KiB11.8 KiB−2 B (−0.0%)15.1 KiB
CodexThread snapshot wire5.9 KiB5.8 KiB−8 B (−0.1%)7.3 KiB
CodexLive turn WebSocket wire6.0 KiB6.0 KiB+6 B (+0.1%)7.8 KiB
CodexLive turn WebSocket decoded50.6 KiB50.6 KiB0 B (0.0%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire11.9 KiB11.9 KiB−12 B (−0.1%)15.1 KiB
ClaudeThread snapshot wire5.9 KiB5.9 KiB+2 B (+0.0%)7.3 KiB
ClaudeLive turn WebSocket wire6.0 KiB6.0 KiB−14 B (−0.2%)7.8 KiB
ClaudeLive turn WebSocket decoded51.4 KiB51.4 KiB0 B (0.0%)66.4 KiB
ClaudeLive turn messages16160 (0.0%)21

Baseline: 5a11800 · PR result: 5f1708c · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 96.9 KiB
  • Claude decoded thread snapshot: 97.6 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:Lvouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@logancsack@codex
, '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

fix(server): brand generated branches and checkpoints as Aldo - #63

Open
logancsack wants to merge 1 commit into
mainfrom
fix/aldo-branch-and-checkpoint-branding
Open

fix(server): brand generated branches and checkpoints as Aldo#63
logancsack wants to merge 1 commit into
mainfrom
fix/aldo-branch-and-checkpoint-branding

Conversation

@logancsack

Copy link
Copy Markdown
Owner

Problem

Managed Aldo workspaces are branded everywhere the client renders, but the server still wrote T3 Code into the user's own repository:

  • generated worktree branches were t3code/<name> — visible in the composer footer, git branch, and any PR opened from one
  • cross-repository pull request checkouts were t3code/pr-<n>/<head>
  • every turn checkpoint was authored by T3 Code <t3code@users.noreply.github.com>, so the rename never reached the user's git history

Fix

WORKTREE_BRANCH_PREFIX is now aldo, PR checkout names are built from the same prefix in both the GitHub and Bitbucket paths, and checkpoints are authored by Aldo <aldo@users.noreply.github.com>.

Only the generators moved. LEGACY_WORKTREE_BRANCH_PREFIXES keeps every matcher reading the old names, so existing state is not stranded:

  • isTemporaryWorktreeBranch still matches t3code/<hex> and the UUID-shaped names older mobile builds produced, so those threads stay eligible for branch regeneration
  • stripWorktreeBranchPrefix removes either prefix, so regenerating a name cannot stack one prefix on the other
  • a pull request already checked out as t3code/pr-<n>/<head> is still found rather than duplicated under a new aldo/ branch, and the reused worktree now reports the branch it actually carries instead of the one this build would have generated

.github/devpc-release-version is bumped to 0.0.31-devpc.2 so merging cuts the artifact the managed gateway pins.

Verification

  • vp test run packages/shared apps/server/src/git apps/server/src/vcs apps/server/src/sourceControl apps/server/src/orchestration apps/server/src/server.test.ts — all green, including a new regression test that prepares a PR thread against a legacy-prefixed worktree and asserts it is reused
  • targeted vp lint, vp fmt --check, and vp run --filter t3 typecheck (0 errors)

No UI surface changed, so there are no screenshots.

Model: Claude Opus 5 (1M context), harness: Claude Code.

Managed workspaces are branded Aldo everywhere the client renders, but the
server still wrote T3 Code into the user's own repository: generated worktree
branches were `t3code/<name>`, cross-repository pull request checkouts were
`t3code/pr-<n>/<head>`, and every turn checkpoint was authored by
`T3 Code <t3code@users.noreply.github.com>`.
The generators now use `aldo`, while every matcher keeps reading the old prefix
from `LEGACY_WORKTREE_BRANCH_PREFIXES`. Existing temporary branches stay
regenerable, an existing pull request worktree is still found instead of
duplicated under the new prefix, and a reused worktree reports the name it
actually carries rather than the one this build would have generated.
Verified: vp test run on packages/shared, apps/server/src/git,
apps/server/src/vcs, apps/server/src/sourceControl, apps/server/src/orchestration
and apps/server/src/server.test.ts; targeted lint, fmt, and typecheck.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for security reviews. Please try again later.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L labels Aug 13, 2026

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

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:5f1708c423

ℹ️ About Codex in GitHub

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

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

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

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


export const WORKTREE_BRANCH_PREFIX = "t3code";
// Canonical form is `t3code/<8 hex>`. Older mobile builds generated `t3code/<uuid>`
export const WORKTREE_BRANCH_PREFIX = "aldo";

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Gate the Aldo branch prefix to managed servers

When a normal npx t3 or desktop server runs with managedDevPc === false, this shared constant is still aldo, so every temporary worktree, generated feature branch, and cross-repository PR worktree writes aldo/... into an ordinary T3 Code repository. The web already limits Aldo branding to VITE_DEVPC_MANAGED in apps/web/src/branding.ts, so the server prefix should likewise come from the managed configuration rather than changing the global default.

AGENTS.md reference: AGENTS.md:L23-L31

Useful? React with 👍 / 👎.

Comment on lines +672 to +675
GIT_AUTHOR_NAME: "Aldo",
GIT_AUTHOR_EMAIL: "aldo@users.noreply.github.com",
GIT_COMMITTER_NAME: "Aldo",
GIT_COMMITTER_EMAIL: "aldo@users.noreply.github.com",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Preserve T3 checkpoint attribution on unmanaged servers

On a standalone T3 Code installation, this driver executes without checking ServerConfig.managedDevPc, so every turn's hidden checkpoint commit is now authored and committed by Aldo as well. Inspecting, exporting, or otherwise retaining those refs therefore records the managed product's identity in normal users' repositories; select the identity from the server branding and retain T3 Code for unmanaged builds.

AGENTS.md reference: AGENTS.md:L23-L31

Useful? React with 👍 / 👎.

Comment on lines +438 to +441
return pullRequestWorktreeBranchNameCandidates(
input.pullRequestId,
sanitizeBranchFragment(input.headBranch),
)[0]!;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Reuse legacy Bitbucket checkout branches

When a fork PR was previously checked out locally by an older build, only a branch such as t3code/pr-42/main exists. This path always selects candidate zero, and the later listLocalBranchNames check consequently tests only the new Aldo name, so preparePullRequestThread in local mode fetches and switches to a duplicate aldo/... branch instead of reusing the legacy checkout. Select the first existing current-or-legacy candidate before fetching and configuring the upstream.

AGENTS.md reference: AGENTS.md:L67-L71

Useful? React with 👍 / 👎.

Comment on lines 1818 to 1820
const localBranch = result.refs.find(
(branch) => !branch.isRemote && branch.name === localPullRequestBranch,
(branch) => !branch.isRemote && localPullRequestBranchNames.includes(branch.name),
);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Prefer checked-out worktrees over newer bare legacy refs

When both branch names coexist—for example, a newer bare t3code/pr-… ref remains after its worktree was removed while the corresponding aldo/pr-… branch is currently checked out—this find selects the legacy ref because GitVcsDriver.listRefs sorts by commit recency rather than candidate order. It then materializes the Aldo branch instead of returning its existing worktree, and Git rejects the forced branch update because that branch is checked out; git worktree add -h likewise documents that checking out an already-used branch requires --force, which this path does not pass. Prefer a matching ref with a worktreePath before considering bare candidates.

Useful? React with 👍 / 👎.

@github-actions

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire11.8 KiB11.8 KiB−2 B (−0.0%)15.1 KiB
CodexThread snapshot wire5.9 KiB5.8 KiB−8 B (−0.1%)7.3 KiB
CodexLive turn WebSocket wire6.0 KiB6.0 KiB+6 B (+0.1%)7.8 KiB
CodexLive turn WebSocket decoded50.6 KiB50.6 KiB0 B (0.0%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire11.9 KiB11.9 KiB−12 B (−0.1%)15.1 KiB
ClaudeThread snapshot wire5.9 KiB5.9 KiB+2 B (+0.0%)7.3 KiB
ClaudeLive turn WebSocket wire6.0 KiB6.0 KiB−14 B (−0.2%)7.8 KiB
ClaudeLive turn WebSocket decoded51.4 KiB51.4 KiB0 B (0.0%)66.4 KiB
ClaudeLive turn messages16160 (0.0%)21

Baseline: 5a11800 · PR result: 5f1708c · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 96.9 KiB
  • Claude decoded thread snapshot: 97.6 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:Lvouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@logancsack@codex
, '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

fix(server): brand generated branches and checkpoints as Aldo - #63

Open
logancsack wants to merge 1 commit into
mainfrom
fix/aldo-branch-and-checkpoint-branding
Open

fix(server): brand generated branches and checkpoints as Aldo#63
logancsack wants to merge 1 commit into
mainfrom
fix/aldo-branch-and-checkpoint-branding

Conversation

@logancsack

Copy link
Copy Markdown
Owner

Problem

Managed Aldo workspaces are branded everywhere the client renders, but the server still wrote T3 Code into the user's own repository:

  • generated worktree branches were t3code/<name> — visible in the composer footer, git branch, and any PR opened from one
  • cross-repository pull request checkouts were t3code/pr-<n>/<head>
  • every turn checkpoint was authored by T3 Code <t3code@users.noreply.github.com>, so the rename never reached the user's git history

Fix

WORKTREE_BRANCH_PREFIX is now aldo, PR checkout names are built from the same prefix in both the GitHub and Bitbucket paths, and checkpoints are authored by Aldo <aldo@users.noreply.github.com>.

Only the generators moved. LEGACY_WORKTREE_BRANCH_PREFIXES keeps every matcher reading the old names, so existing state is not stranded:

  • isTemporaryWorktreeBranch still matches t3code/<hex> and the UUID-shaped names older mobile builds produced, so those threads stay eligible for branch regeneration
  • stripWorktreeBranchPrefix removes either prefix, so regenerating a name cannot stack one prefix on the other
  • a pull request already checked out as t3code/pr-<n>/<head> is still found rather than duplicated under a new aldo/ branch, and the reused worktree now reports the branch it actually carries instead of the one this build would have generated

.github/devpc-release-version is bumped to 0.0.31-devpc.2 so merging cuts the artifact the managed gateway pins.

Verification

  • vp test run packages/shared apps/server/src/git apps/server/src/vcs apps/server/src/sourceControl apps/server/src/orchestration apps/server/src/server.test.ts — all green, including a new regression test that prepares a PR thread against a legacy-prefixed worktree and asserts it is reused
  • targeted vp lint, vp fmt --check, and vp run --filter t3 typecheck (0 errors)

No UI surface changed, so there are no screenshots.

Model: Claude Opus 5 (1M context), harness: Claude Code.

Managed workspaces are branded Aldo everywhere the client renders, but the
server still wrote T3 Code into the user's own repository: generated worktree
branches were `t3code/<name>`, cross-repository pull request checkouts were
`t3code/pr-<n>/<head>`, and every turn checkpoint was authored by
`T3 Code <t3code@users.noreply.github.com>`.
The generators now use `aldo`, while every matcher keeps reading the old prefix
from `LEGACY_WORKTREE_BRANCH_PREFIXES`. Existing temporary branches stay
regenerable, an existing pull request worktree is still found instead of
duplicated under the new prefix, and a reused worktree reports the name it
actually carries rather than the one this build would have generated.
Verified: vp test run on packages/shared, apps/server/src/git,
apps/server/src/vcs, apps/server/src/sourceControl, apps/server/src/orchestration
and apps/server/src/server.test.ts; targeted lint, fmt, and typecheck.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for security reviews. Please try again later.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L labels Aug 13, 2026

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

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:5f1708c423

ℹ️ About Codex in GitHub

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

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

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

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


export const WORKTREE_BRANCH_PREFIX = "t3code";
// Canonical form is `t3code/<8 hex>`. Older mobile builds generated `t3code/<uuid>`
export const WORKTREE_BRANCH_PREFIX = "aldo";

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Gate the Aldo branch prefix to managed servers

When a normal npx t3 or desktop server runs with managedDevPc === false, this shared constant is still aldo, so every temporary worktree, generated feature branch, and cross-repository PR worktree writes aldo/... into an ordinary T3 Code repository. The web already limits Aldo branding to VITE_DEVPC_MANAGED in apps/web/src/branding.ts, so the server prefix should likewise come from the managed configuration rather than changing the global default.

AGENTS.md reference: AGENTS.md:L23-L31

Useful? React with 👍 / 👎.

Comment on lines +672 to +675
GIT_AUTHOR_NAME: "Aldo",
GIT_AUTHOR_EMAIL: "aldo@users.noreply.github.com",
GIT_COMMITTER_NAME: "Aldo",
GIT_COMMITTER_EMAIL: "aldo@users.noreply.github.com",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Preserve T3 checkpoint attribution on unmanaged servers

On a standalone T3 Code installation, this driver executes without checking ServerConfig.managedDevPc, so every turn's hidden checkpoint commit is now authored and committed by Aldo as well. Inspecting, exporting, or otherwise retaining those refs therefore records the managed product's identity in normal users' repositories; select the identity from the server branding and retain T3 Code for unmanaged builds.

AGENTS.md reference: AGENTS.md:L23-L31

Useful? React with 👍 / 👎.

Comment on lines +438 to +441
return pullRequestWorktreeBranchNameCandidates(
input.pullRequestId,
sanitizeBranchFragment(input.headBranch),
)[0]!;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Reuse legacy Bitbucket checkout branches

When a fork PR was previously checked out locally by an older build, only a branch such as t3code/pr-42/main exists. This path always selects candidate zero, and the later listLocalBranchNames check consequently tests only the new Aldo name, so preparePullRequestThread in local mode fetches and switches to a duplicate aldo/... branch instead of reusing the legacy checkout. Select the first existing current-or-legacy candidate before fetching and configuring the upstream.

AGENTS.md reference: AGENTS.md:L67-L71

Useful? React with 👍 / 👎.

Comment on lines 1818 to 1820
const localBranch = result.refs.find(
(branch) => !branch.isRemote && branch.name === localPullRequestBranch,
(branch) => !branch.isRemote && localPullRequestBranchNames.includes(branch.name),
);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Prefer checked-out worktrees over newer bare legacy refs

When both branch names coexist—for example, a newer bare t3code/pr-… ref remains after its worktree was removed while the corresponding aldo/pr-… branch is currently checked out—this find selects the legacy ref because GitVcsDriver.listRefs sorts by commit recency rather than candidate order. It then materializes the Aldo branch instead of returning its existing worktree, and Git rejects the forced branch update because that branch is checked out; git worktree add -h likewise documents that checking out an already-used branch requires --force, which this path does not pass. Prefer a matching ref with a worktreePath before considering bare candidates.

Useful? React with 👍 / 👎.

@github-actions

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire11.8 KiB11.8 KiB−2 B (−0.0%)15.1 KiB
CodexThread snapshot wire5.9 KiB5.8 KiB−8 B (−0.1%)7.3 KiB
CodexLive turn WebSocket wire6.0 KiB6.0 KiB+6 B (+0.1%)7.8 KiB
CodexLive turn WebSocket decoded50.6 KiB50.6 KiB0 B (0.0%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire11.9 KiB11.9 KiB−12 B (−0.1%)15.1 KiB
ClaudeThread snapshot wire5.9 KiB5.9 KiB+2 B (+0.0%)7.3 KiB
ClaudeLive turn WebSocket wire6.0 KiB6.0 KiB−14 B (−0.2%)7.8 KiB
ClaudeLive turn WebSocket decoded51.4 KiB51.4 KiB0 B (0.0%)66.4 KiB
ClaudeLive turn messages16160 (0.0%)21

Baseline: 5a11800 · PR result: 5f1708c · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 96.9 KiB
  • Claude decoded thread snapshot: 97.6 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:Lvouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@logancsack@codex