chore(upstream): sync marcode through be7d35aa - #45

Closed
maarco wants to merge 77 commits into
mainfrom
claude/gracious-bohr-7j0afc
Closed

chore(upstream): sync marcode through be7d35aa#45
maarco wants to merge 77 commits into
mainfrom
claude/gracious-bohr-7j0afc

Conversation

@maarco

@maarcomaarco commented Aug 21, 2026

Copy link
Copy Markdown
Owner

What Changed

Merged pingdotgg/t3code@be7d35aa into Marcode — 75 upstream commits across 24 conflicted paths, resolved by hand. Draft on purpose: CI is green, but the live-client verification the runbook asks for on UI hotspots has not been run.

Conflict decisions

PathDecision
AGENTS.mdKept Marcode's structure. Adopted upstream's new Plans and work artifacts policy and its "never commit PR-only assets" rule. Dropped upstream's duplicate Verifying / Pull requests sections (Marcode has its own) and the user-count blurb.
.plans/effect-atom.mdAccepted upstream's deletion — Marcode's only edit was an identifier cleanup in a file upstream retired repo-wide.
.github/workflows/ci.ymlTook upstream's mobile-native change gate; kept Marcode's GitHub-hosted runner. See silent breaks below for the new jobs.
apps/server/src/cli/{connect,service}.tsAdopted upstream's macOS launchd support and platform-aware copy, rendered in Marcode's voice.
apps/web/src/components/files/{FileBrowserPanel,FilePreviewPanel}.tsxKept deleted. Upstream's refresh fix (pingdotgg#7490) targets the right-panel file surface Marcode retired; the floating editor's file tree has no refresh control, so there is no sibling to port it to.
ChatView.tsxKept Marcode's title-only ChatHeader and container-level panelLayoutControls, closing with upstream's WorkspacePageHeader. Composer shell keeps Marcode's transparent glass and takes upstream's attached-drawer modifier.
chat/ChatComposer.tsxTook upstream's new composer top drawer; re-applied Marcode's glass surface to the relocated composer surface div.
chat/ChatHeader.tsxKept Marcode's cluster. Upstream's inline rename and thread action menu belong to a header Marcode does not render, and those actions already have an entry point on the sidebar row.
chat/ComposerPendingApprovalPanel.tsxTook upstream's inline code chip. Marcode's only divergence was typography on a label the redesign removes.
chat/MessagesTimeline.tsxUpstream's dropped -mx-1 plus Marcode's text-sm.
RightPanelTabs.tsxAdopted upstream's tab mute control and add-surface keyboard shortcuts. Dropped the file-tab copy-path action, the Files surface and its icon — all owned by the retired right-panel file surface.
Sidebar.logic.ts, Sidebar.tsxKept both imports; upstream's cursor-pointer with Marcode's text-xs.
sidebar/SidebarChrome.tsxKept Marcode's footer. Upstream's whole delta was the footer nav and brand that FloatingPillNav owns.
ThreadTerminalDrawer.tsxKept Marcode's terminal chrome; adopted upstream's close confirmation and its terminal-background surface fix.
PullRequestListFilters.tsx, routes/_chat.pull-requests.tsxTook upstream's shared Button trigger and its relocation of the refresh control, moving Marcode's tooltip onto the control's new home.
usage/UsagePage.tsx, routes/settings.tsxTook upstream's move onto the shared WorkspacePageHeader; kept Marcode's tooltip on the refresh button.
index.cssBoth blocks kept — they collided only on insertion point.
routes/__root.tsxRender Marcode's DraftPromotionWatcherand upstream's new PlanAgentSelectionHeal.
threadSettled.tsTook upstream's changeRequestAutoSettles signature and its activity anchor; kept Marcode's one-hour warm window on top.

Clean merges that would have broken on Marcode

Five upstream changes produced no conflict and would have shipped broken. Four were caught by a fork-identity sweep of the merged tree; the fifth was caught by CI.

  1. macOS launch agent exported T3CODE_HOME. Marcode's launcher requires MARCODE_HOME and exits without it, so the background service would install and never start. Both unit renderers now export the same key, pinned by a test.
  2. Launch agent label was com.t3tools.t3code.service, which would make a Marcode install and an upstream install the same launchd job — the macOS half of the coexistence rule the systemd unit already holds. Now app.marcode.service, pinned by a test.
  3. New t3 triage CLI read T3CODE_HOME where every other Marcode entry point reads MARCODE_HOME.
  4. Three new CI jobs (Test Server, Rust, Mobile Native Changes) arrived with Blacksmith runner labels the fork cannot schedule — they would have queued forever. Remapped to ubuntu-24.04, and an upstream test still asserting systemctl --user disable --now t3code.service was corrected to marcode.service.
  5. Upstream's test-suite split moved apps/server's tests out from under Marcode's ripgrep install step (49471f6f). WorkspaceFileSystem.searchContent shells out to ripgrep, which the runner image does not carry; the step stayed on test, a job that now explicitly excludes t3, so the two searchContent tests ran without it and returned zero matches. Reproduced locally by hiding rg — same two assertions fail, 25/25 pass with it present.

Fork pins updated

  • workspaceTitlebar.fork.test.ts — upstream moved settings and usage onto the shared header, which hardcodes the collapsed-sidebar inset. Marcode carries its sidebarless inset forward as a sidebarless prop on that shared header; the test now pins both halves (the header honouring the flag, and each route passing it).
  • upstream-sync-workflow.test.tstwo pins were too narrow. The CI runner pin asserted an exact four-job list, so upstream adding a job broke it for the wrong reason; it now asserts that no job carries a label the fork cannot schedule. The ripgrep pin named ci.jobs.test by hand, so the test-suite split moved the search tests out from under it while the assertion stayed green and CI went red; it now derives the job list from the workflow — any job running package tests without excluding t3 must install ripgrep — and was verified to fail, naming the offending job, by removing the step.
  • SettingsSidebarNav.tsx — restored Marcode's page-level Back row after upstream replaced it with the SidebarUtilityMenu this fork does not mount.

Coupled subtrees:pnpm-workspace.yaml moved only Clerk versions; the Effect catalog and infra/relay/package.json are unchanged, so no vendored subtree sync is due.

Why

The scheduled sync found 75 new upstream commits with a conflicted delta, which the automation deliberately refuses to resolve. This is the hand-resolved integration branch that policy calls for: it keeps upstream's correctness, security and dependency work while preserving Marcode's floating navigation shell, retired right-panel file surfaces, unified workspace sidebar, and service identity.

Hotspot paths were treated as mandatory-review, not automatic keep-Marcode: upstream's macOS launchd support, terminal close confirmation, tab mute control, add-surface shortcuts, shared page header, and settled-thread activity anchor all landed inside customized files and were all taken.

UI Changes

Not captured. This merge touches several web surfaces (composer drawers, right-panel tabs, usage page, settings and pull-request headers, terminal chrome). The runbook's live-client pass has not been run in this environment, so before/after evidence still has to be produced — see Verification. Keeping the PR in draft until that lands.

Verification

CI green on 49471f6f — all four required checks (Check, Test, Mobile Native Static Analysis, Release Smoke) plus the new Test Server 1/2/3, Rust, and Mobile Native Changes. The thread-transfer budget report is within every ceiling.

Run locally (focused, per AGENTS.md):

  • vp test run over the touched surfaces, all passing: fork pins (workspaceTitlebar.fork, SidebarChrome.fork, upstream-sync-workflow), threadSettled, boot service / service launcher / service CLI, right panel store, the seven composer suites, RightPanelTabs, UsagePage, Sidebar.logic, ChatView.logic, threadActionMenu.logic, -chatIndexTitlebar, editor surface and open-floating-file, GitActionsControl.logic, shared/git, contracts/settings, contracts/orchestration, client-runtime/operations/projects.
  • vp run --filter typecheck: @t3tools/web, @t3tools/client-runtime, t3, @t3tools/contracts, @t3tools/shared — all clean.
  • vp fmt --check on the changed files, vp lint on apps/web/src, apps/server/src, packages/client-runtime/src, scripts — clean (warnings only, all pre-existing patterns).

Not verified:

  • Live web/mobile client verification, and the branding-asset check the runbook asks for on UI hotspots.
  • ThreadTerminalDrawer.test.ts could not run in the sync container (@aliimam/icons@1.1.3 ships a main pointing at a dist/index.cjs its tarball lacks). It passes in CI, which covers it.

Follow-up, not done here

Two pre-existing issues this PR surfaces but deliberately does not widen into:

  1. Native fingerprint diff will sit queued forever..github/workflows/mobile-fingerprint-check.yml is unchanged by this merge but still carries runs-on: blacksmith-8vcpu-ubuntu-2404, and the fork has no Blacksmith installation — the same class of break as item 4 above. It is advisory (the check is advisory: it always passes, the label is the signal) and not in requiredPullRequestChecks, so it leaves the PR unstable rather than blocked. Proposed patch: runs-on: ubuntu-24.04. Its only stated resource need is NODE_OPTIONS=--max-old-space-size=8192, and the GitHub-hosted image has 16 GB RAM, so the 8 GB heap fits — it will just be slower on 4 vCPU. Left alone here because the runbook says to audit those workflows individually rather than sweep the labels, and this one is not part of the upstream delta.
  2. The new upstream t3 triage CLI ships a playbook that names "T3 Code" throughout and points users at github.com/pingdotgg/t3code for filing issues. Only the functional MARCODE_HOME break was fixed; whether Marcode wants its own triage playbook and issue tracker is a product decision, and rebranding a 200-line upstream-owned file would widen this sync.

Checklist

  • This PR is small and focused — one concern: the upstream merge
  • I explained what changed and why
  • I included before/after screenshots for any UI changes — pending live-client pass
  • I included a video for animation/interaction changes — n/a

aorightand others added 30 commits August 18, 2026 13:38
…in GitHubPullRequestCli (pingdotgg#7385)
Signed-off-by: aoright <102943475+aoright@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
…t full speed (pingdotgg#7460)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…nt (pingdotgg#6563)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…tgg#6286)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: GPT-5.6 <noreply@openai.com>
t3dotggand others added 20 commits August 20, 2026 23:19
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: John William Creighton (s243a) <s243a@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ngdotgg#6326)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex Southwell <4596216+saphid@users.noreply.github.com>
Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>
…nment (pingdotgg#7292)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…otgg#7286)
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
…pingdotgg#7283)
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
75 upstream commits, 24 conflicted paths. Every conflict was resolved by hand,
combining upstream's intent with Marcode's, and the fork-boundary sweep caught
four upstream changes that merged cleanly but would have broken on Marcode.
Conflict decisions
- AGENTS.md: kept Marcode's structure; adopted upstream's new "Plans and work
artifacts" policy and its "never commit PR-only assets" rule. Dropped
upstream's duplicate Verifying/Pull requests sections (Marcode has its own)
and its user-count blurb.
- .plans/effect-atom.md: accepted upstream's deletion. Marcode's only edit was
an identifier cleanup in a file upstream retired repo-wide.
- .github/workflows/ci.yml: took upstream's mobile-native change gate; kept
Marcode's GitHub-hosted runner. Upstream's three new jobs arrived with
Blacksmith labels the fork cannot schedule — remapped to ubuntu-24.04.
- apps/server/src/cli/{connect,service}.ts: adopted upstream's macOS launchd
support and platform-aware copy, in Marcode's voice.
- apps/web/src/components/files/{FileBrowserPanel,FilePreviewPanel}.tsx: kept
deleted. Upstream's refresh fix (pingdotgg#7490) targets the right-panel file surface
Marcode retired; the floating editor's file tree has no refresh control, so
there is no sibling to port it to.
- ChatView.tsx: kept Marcode's title-only ChatHeader and container-level
panelLayoutControls, closing with upstream's WorkspacePageHeader. Composer
shell keeps Marcode's transparent glass and takes upstream's attached-drawer
modifier.
- ChatComposer.tsx: took upstream's new composer top drawer and re-applied
Marcode's glass surface to the relocated composer surface div.
- ChatHeader.tsx: kept Marcode's cluster. Upstream's inline rename and thread
action menu belong to a header Marcode does not render; those actions already
have an entry point on the sidebar row.
- ComposerPendingApprovalPanel.tsx: took upstream's inline code chip. Marcode's
only divergence was typography on a label the redesign removes.
- MessagesTimeline.tsx: upstream's dropped -mx-1 plus Marcode's text-sm.
- RightPanelTabs.tsx: adopted upstream's tab mute control and add-surface
keyboard shortcuts; dropped the file-tab copy-path action, the Files surface
and its icon, which the retired right-panel file surface owned.
- Sidebar.logic.ts / Sidebar.tsx: kept both imports; upstream's cursor-pointer
with Marcode's text-xs.
- sidebar/SidebarChrome.tsx: kept Marcode's footer. Upstream's whole delta was
the footer nav and brand FloatingPillNav owns.
- ThreadTerminalDrawer.tsx: kept Marcode's terminal chrome and adopted
upstream's close confirmation and terminal-background surface fix.
- PullRequestListFilters.tsx / _chat.pull-requests.tsx: took upstream's shared
Button trigger and its relocation of the refresh control, moving Marcode's
tooltip onto the control's new home.
- usage/UsagePage.tsx, routes/settings.tsx: took upstream's move onto the
shared WorkspacePageHeader and kept Marcode's tooltip on the refresh button.
- index.css: both blocks kept; they collided only on insertion point.
- routes/__root.tsx: render Marcode's DraftPromotionWatcher and upstream's new
PlanAgentSelectionHeal.
- threadSettled.ts: took upstream's changeRequestAutoSettles signature and its
activity anchor, keeping Marcode's one-hour warm window on top.
Clean merges that would have broken on Marcode
- The new macOS launch agent exported T3CODE_HOME; Marcode's launcher requires
MARCODE_HOME and exits without it, so the service would install and never
start. Both unit renderers now export the same key, pinned by a test.
- The launch agent label was com.t3tools.t3code.service, which would have made
a Marcode install and an upstream install the same launchd job — the macOS
half of the coexistence rule the systemd unit already holds. Now
app.marcode.service, pinned by a test.
- The new `t3 triage` CLI read T3CODE_HOME where every other Marcode entry
point reads MARCODE_HOME.
- An upstream test still asserted `systemctl --user disable --now
t3code.service`; Marcode installs marcode.service.
Fork pins updated
- workspaceTitlebar.fork.test.ts: upstream moved settings and usage onto the
shared header, which hardcodes the collapsed-sidebar inset. Marcode carries
its sidebarless inset forward as a `sidebarless` prop on that shared header;
the test now pins both the header honouring the flag and each route passing
it.
- upstream-sync-workflow.test.ts: the CI runner pin asserted an exact four-job
list, so upstream adding a job broke it for the wrong reason. It now asserts
no job carries a label the fork cannot schedule.
- SettingsSidebarNav.tsx: restored Marcode's page-level Back row after upstream
replaced it with the SidebarUtilityMenu this fork does not mount.
Coupled subtrees: pnpm-workspace.yaml moved only Clerk versions; the Effect
catalog and infra/relay/package.json are unchanged, so no vendored subtree sync
is due.
@github-actions

github-actionsBot commented Aug 21, 2026

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire12.6 KiB13.4 KiB+850 B (+6.6%)15.1 KiB
CodexThread snapshot wire6.3 KiB6.9 KiB+619 B (+9.6%)7.3 KiB
CodexLive turn WebSocket wire6.3 KiB6.5 KiB+231 B (+3.6%)7.8 KiB
CodexLive turn WebSocket decoded51.8 KiB55.0 KiB+3.2 KiB (+6.1%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire12.6 KiB13.5 KiB+873 B (+6.8%)15.1 KiB
ClaudeThread snapshot wire6.3 KiB6.9 KiB+632 B (+9.8%)7.3 KiB
ClaudeLive turn WebSocket wire6.3 KiB6.6 KiB+241 B (+3.7%)7.8 KiB
ClaudeLive turn WebSocket decoded52.7 KiB55.8 KiB+3.2 KiB (+6.0%)66.4 KiB
ClaudeLive turn messages16160 (0.0%)21

Baseline: 2ffb140 · PR result: 49471f6 · 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: 109.4 KiB
  • Claude decoded thread snapshot: 110.1 KiB

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

Upstream's test-suite split moved apps/server's tests into a new
`test_server` job. Marcode installs ripgrep for
`WorkspaceFileSystem.searchContent`, which shells out to it, and that step
stayed on `test` — a job that now explicitly excludes `t3`. The two
searchContent tests ran without ripgrep and returned zero matches.
Reproduced locally by hiding `rg`: the same two assertions fail, and all 25
pass with it present.
The existing pin named the `test` job by hand, so it stayed green through
the split. It now derives the job list from the workflow — any job running
package tests without excluding `t3` must install ripgrep — and fails
naming the offending job, which is verified by removing the step.
@maarcoChatGPT Codex Connector

Copy link
Copy Markdown
OwnerAuthor

Superseded by PR #51, the newer upstream sync through f035a0f4, which has now merged to main. Closing this older draft to keep the sync queue clean.

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

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

20 participants

@maarco@aoright@gbarros-dev@Bil0000@Rishet11@StiensWout@AugusDogus@tarik02@gsimone@t3dotgg@chrisdeeming@inayayousfi@RakshithBhat03@dbalders@maria-rcks@UtkarshUsername@SunkenInTime@lgwacker@jakeleventhal@sethwebster
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} 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

chore(upstream): sync marcode through be7d35aa - #45

Closed
maarco wants to merge 77 commits into
mainfrom
claude/gracious-bohr-7j0afc
Closed

chore(upstream): sync marcode through be7d35aa#45
maarco wants to merge 77 commits into
mainfrom
claude/gracious-bohr-7j0afc

Conversation

@maarco

@maarcomaarco commented Aug 21, 2026

Copy link
Copy Markdown
Owner

What Changed

Merged pingdotgg/t3code@be7d35aa into Marcode — 75 upstream commits across 24 conflicted paths, resolved by hand. Draft on purpose: CI is green, but the live-client verification the runbook asks for on UI hotspots has not been run.

Conflict decisions

PathDecision
AGENTS.mdKept Marcode's structure. Adopted upstream's new Plans and work artifacts policy and its "never commit PR-only assets" rule. Dropped upstream's duplicate Verifying / Pull requests sections (Marcode has its own) and the user-count blurb.
.plans/effect-atom.mdAccepted upstream's deletion — Marcode's only edit was an identifier cleanup in a file upstream retired repo-wide.
.github/workflows/ci.ymlTook upstream's mobile-native change gate; kept Marcode's GitHub-hosted runner. See silent breaks below for the new jobs.
apps/server/src/cli/{connect,service}.tsAdopted upstream's macOS launchd support and platform-aware copy, rendered in Marcode's voice.
apps/web/src/components/files/{FileBrowserPanel,FilePreviewPanel}.tsxKept deleted. Upstream's refresh fix (pingdotgg#7490) targets the right-panel file surface Marcode retired; the floating editor's file tree has no refresh control, so there is no sibling to port it to.
ChatView.tsxKept Marcode's title-only ChatHeader and container-level panelLayoutControls, closing with upstream's WorkspacePageHeader. Composer shell keeps Marcode's transparent glass and takes upstream's attached-drawer modifier.
chat/ChatComposer.tsxTook upstream's new composer top drawer; re-applied Marcode's glass surface to the relocated composer surface div.
chat/ChatHeader.tsxKept Marcode's cluster. Upstream's inline rename and thread action menu belong to a header Marcode does not render, and those actions already have an entry point on the sidebar row.
chat/ComposerPendingApprovalPanel.tsxTook upstream's inline code chip. Marcode's only divergence was typography on a label the redesign removes.
chat/MessagesTimeline.tsxUpstream's dropped -mx-1 plus Marcode's text-sm.
RightPanelTabs.tsxAdopted upstream's tab mute control and add-surface keyboard shortcuts. Dropped the file-tab copy-path action, the Files surface and its icon — all owned by the retired right-panel file surface.
Sidebar.logic.ts, Sidebar.tsxKept both imports; upstream's cursor-pointer with Marcode's text-xs.
sidebar/SidebarChrome.tsxKept Marcode's footer. Upstream's whole delta was the footer nav and brand that FloatingPillNav owns.
ThreadTerminalDrawer.tsxKept Marcode's terminal chrome; adopted upstream's close confirmation and its terminal-background surface fix.
PullRequestListFilters.tsx, routes/_chat.pull-requests.tsxTook upstream's shared Button trigger and its relocation of the refresh control, moving Marcode's tooltip onto the control's new home.
usage/UsagePage.tsx, routes/settings.tsxTook upstream's move onto the shared WorkspacePageHeader; kept Marcode's tooltip on the refresh button.
index.cssBoth blocks kept — they collided only on insertion point.
routes/__root.tsxRender Marcode's DraftPromotionWatcherand upstream's new PlanAgentSelectionHeal.
threadSettled.tsTook upstream's changeRequestAutoSettles signature and its activity anchor; kept Marcode's one-hour warm window on top.

Clean merges that would have broken on Marcode

Five upstream changes produced no conflict and would have shipped broken. Four were caught by a fork-identity sweep of the merged tree; the fifth was caught by CI.

  1. macOS launch agent exported T3CODE_HOME. Marcode's launcher requires MARCODE_HOME and exits without it, so the background service would install and never start. Both unit renderers now export the same key, pinned by a test.
  2. Launch agent label was com.t3tools.t3code.service, which would make a Marcode install and an upstream install the same launchd job — the macOS half of the coexistence rule the systemd unit already holds. Now app.marcode.service, pinned by a test.
  3. New t3 triage CLI read T3CODE_HOME where every other Marcode entry point reads MARCODE_HOME.
  4. Three new CI jobs (Test Server, Rust, Mobile Native Changes) arrived with Blacksmith runner labels the fork cannot schedule — they would have queued forever. Remapped to ubuntu-24.04, and an upstream test still asserting systemctl --user disable --now t3code.service was corrected to marcode.service.
  5. Upstream's test-suite split moved apps/server's tests out from under Marcode's ripgrep install step (49471f6f). WorkspaceFileSystem.searchContent shells out to ripgrep, which the runner image does not carry; the step stayed on test, a job that now explicitly excludes t3, so the two searchContent tests ran without it and returned zero matches. Reproduced locally by hiding rg — same two assertions fail, 25/25 pass with it present.

Fork pins updated

  • workspaceTitlebar.fork.test.ts — upstream moved settings and usage onto the shared header, which hardcodes the collapsed-sidebar inset. Marcode carries its sidebarless inset forward as a sidebarless prop on that shared header; the test now pins both halves (the header honouring the flag, and each route passing it).
  • upstream-sync-workflow.test.tstwo pins were too narrow. The CI runner pin asserted an exact four-job list, so upstream adding a job broke it for the wrong reason; it now asserts that no job carries a label the fork cannot schedule. The ripgrep pin named ci.jobs.test by hand, so the test-suite split moved the search tests out from under it while the assertion stayed green and CI went red; it now derives the job list from the workflow — any job running package tests without excluding t3 must install ripgrep — and was verified to fail, naming the offending job, by removing the step.
  • SettingsSidebarNav.tsx — restored Marcode's page-level Back row after upstream replaced it with the SidebarUtilityMenu this fork does not mount.

Coupled subtrees:pnpm-workspace.yaml moved only Clerk versions; the Effect catalog and infra/relay/package.json are unchanged, so no vendored subtree sync is due.

Why

The scheduled sync found 75 new upstream commits with a conflicted delta, which the automation deliberately refuses to resolve. This is the hand-resolved integration branch that policy calls for: it keeps upstream's correctness, security and dependency work while preserving Marcode's floating navigation shell, retired right-panel file surfaces, unified workspace sidebar, and service identity.

Hotspot paths were treated as mandatory-review, not automatic keep-Marcode: upstream's macOS launchd support, terminal close confirmation, tab mute control, add-surface shortcuts, shared page header, and settled-thread activity anchor all landed inside customized files and were all taken.

UI Changes

Not captured. This merge touches several web surfaces (composer drawers, right-panel tabs, usage page, settings and pull-request headers, terminal chrome). The runbook's live-client pass has not been run in this environment, so before/after evidence still has to be produced — see Verification. Keeping the PR in draft until that lands.

Verification

CI green on 49471f6f — all four required checks (Check, Test, Mobile Native Static Analysis, Release Smoke) plus the new Test Server 1/2/3, Rust, and Mobile Native Changes. The thread-transfer budget report is within every ceiling.

Run locally (focused, per AGENTS.md):

  • vp test run over the touched surfaces, all passing: fork pins (workspaceTitlebar.fork, SidebarChrome.fork, upstream-sync-workflow), threadSettled, boot service / service launcher / service CLI, right panel store, the seven composer suites, RightPanelTabs, UsagePage, Sidebar.logic, ChatView.logic, threadActionMenu.logic, -chatIndexTitlebar, editor surface and open-floating-file, GitActionsControl.logic, shared/git, contracts/settings, contracts/orchestration, client-runtime/operations/projects.
  • vp run --filter typecheck: @t3tools/web, @t3tools/client-runtime, t3, @t3tools/contracts, @t3tools/shared — all clean.
  • vp fmt --check on the changed files, vp lint on apps/web/src, apps/server/src, packages/client-runtime/src, scripts — clean (warnings only, all pre-existing patterns).

Not verified:

  • Live web/mobile client verification, and the branding-asset check the runbook asks for on UI hotspots.
  • ThreadTerminalDrawer.test.ts could not run in the sync container (@aliimam/icons@1.1.3 ships a main pointing at a dist/index.cjs its tarball lacks). It passes in CI, which covers it.

Follow-up, not done here

Two pre-existing issues this PR surfaces but deliberately does not widen into:

  1. Native fingerprint diff will sit queued forever..github/workflows/mobile-fingerprint-check.yml is unchanged by this merge but still carries runs-on: blacksmith-8vcpu-ubuntu-2404, and the fork has no Blacksmith installation — the same class of break as item 4 above. It is advisory (the check is advisory: it always passes, the label is the signal) and not in requiredPullRequestChecks, so it leaves the PR unstable rather than blocked. Proposed patch: runs-on: ubuntu-24.04. Its only stated resource need is NODE_OPTIONS=--max-old-space-size=8192, and the GitHub-hosted image has 16 GB RAM, so the 8 GB heap fits — it will just be slower on 4 vCPU. Left alone here because the runbook says to audit those workflows individually rather than sweep the labels, and this one is not part of the upstream delta.
  2. The new upstream t3 triage CLI ships a playbook that names "T3 Code" throughout and points users at github.com/pingdotgg/t3code for filing issues. Only the functional MARCODE_HOME break was fixed; whether Marcode wants its own triage playbook and issue tracker is a product decision, and rebranding a 200-line upstream-owned file would widen this sync.

Checklist

  • This PR is small and focused — one concern: the upstream merge
  • I explained what changed and why
  • I included before/after screenshots for any UI changes — pending live-client pass
  • I included a video for animation/interaction changes — n/a

aorightand others added 30 commits August 18, 2026 13:38
…in GitHubPullRequestCli (pingdotgg#7385)
Signed-off-by: aoright <102943475+aoright@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
…t full speed (pingdotgg#7460)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…nt (pingdotgg#6563)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…tgg#6286)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: GPT-5.6 <noreply@openai.com>
t3dotggand others added 20 commits August 20, 2026 23:19
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: John William Creighton (s243a) <s243a@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ngdotgg#6326)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex Southwell <4596216+saphid@users.noreply.github.com>
Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>
…nment (pingdotgg#7292)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…otgg#7286)
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
…pingdotgg#7283)
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
75 upstream commits, 24 conflicted paths. Every conflict was resolved by hand,
combining upstream's intent with Marcode's, and the fork-boundary sweep caught
four upstream changes that merged cleanly but would have broken on Marcode.
Conflict decisions
- AGENTS.md: kept Marcode's structure; adopted upstream's new "Plans and work
artifacts" policy and its "never commit PR-only assets" rule. Dropped
upstream's duplicate Verifying/Pull requests sections (Marcode has its own)
and its user-count blurb.
- .plans/effect-atom.md: accepted upstream's deletion. Marcode's only edit was
an identifier cleanup in a file upstream retired repo-wide.
- .github/workflows/ci.yml: took upstream's mobile-native change gate; kept
Marcode's GitHub-hosted runner. Upstream's three new jobs arrived with
Blacksmith labels the fork cannot schedule — remapped to ubuntu-24.04.
- apps/server/src/cli/{connect,service}.ts: adopted upstream's macOS launchd
support and platform-aware copy, in Marcode's voice.
- apps/web/src/components/files/{FileBrowserPanel,FilePreviewPanel}.tsx: kept
deleted. Upstream's refresh fix (pingdotgg#7490) targets the right-panel file surface
Marcode retired; the floating editor's file tree has no refresh control, so
there is no sibling to port it to.
- ChatView.tsx: kept Marcode's title-only ChatHeader and container-level
panelLayoutControls, closing with upstream's WorkspacePageHeader. Composer
shell keeps Marcode's transparent glass and takes upstream's attached-drawer
modifier.
- ChatComposer.tsx: took upstream's new composer top drawer and re-applied
Marcode's glass surface to the relocated composer surface div.
- ChatHeader.tsx: kept Marcode's cluster. Upstream's inline rename and thread
action menu belong to a header Marcode does not render; those actions already
have an entry point on the sidebar row.
- ComposerPendingApprovalPanel.tsx: took upstream's inline code chip. Marcode's
only divergence was typography on a label the redesign removes.
- MessagesTimeline.tsx: upstream's dropped -mx-1 plus Marcode's text-sm.
- RightPanelTabs.tsx: adopted upstream's tab mute control and add-surface
keyboard shortcuts; dropped the file-tab copy-path action, the Files surface
and its icon, which the retired right-panel file surface owned.
- Sidebar.logic.ts / Sidebar.tsx: kept both imports; upstream's cursor-pointer
with Marcode's text-xs.
- sidebar/SidebarChrome.tsx: kept Marcode's footer. Upstream's whole delta was
the footer nav and brand FloatingPillNav owns.
- ThreadTerminalDrawer.tsx: kept Marcode's terminal chrome and adopted
upstream's close confirmation and terminal-background surface fix.
- PullRequestListFilters.tsx / _chat.pull-requests.tsx: took upstream's shared
Button trigger and its relocation of the refresh control, moving Marcode's
tooltip onto the control's new home.
- usage/UsagePage.tsx, routes/settings.tsx: took upstream's move onto the
shared WorkspacePageHeader and kept Marcode's tooltip on the refresh button.
- index.css: both blocks kept; they collided only on insertion point.
- routes/__root.tsx: render Marcode's DraftPromotionWatcher and upstream's new
PlanAgentSelectionHeal.
- threadSettled.ts: took upstream's changeRequestAutoSettles signature and its
activity anchor, keeping Marcode's one-hour warm window on top.
Clean merges that would have broken on Marcode
- The new macOS launch agent exported T3CODE_HOME; Marcode's launcher requires
MARCODE_HOME and exits without it, so the service would install and never
start. Both unit renderers now export the same key, pinned by a test.
- The launch agent label was com.t3tools.t3code.service, which would have made
a Marcode install and an upstream install the same launchd job — the macOS
half of the coexistence rule the systemd unit already holds. Now
app.marcode.service, pinned by a test.
- The new `t3 triage` CLI read T3CODE_HOME where every other Marcode entry
point reads MARCODE_HOME.
- An upstream test still asserted `systemctl --user disable --now
t3code.service`; Marcode installs marcode.service.
Fork pins updated
- workspaceTitlebar.fork.test.ts: upstream moved settings and usage onto the
shared header, which hardcodes the collapsed-sidebar inset. Marcode carries
its sidebarless inset forward as a `sidebarless` prop on that shared header;
the test now pins both the header honouring the flag and each route passing
it.
- upstream-sync-workflow.test.ts: the CI runner pin asserted an exact four-job
list, so upstream adding a job broke it for the wrong reason. It now asserts
no job carries a label the fork cannot schedule.
- SettingsSidebarNav.tsx: restored Marcode's page-level Back row after upstream
replaced it with the SidebarUtilityMenu this fork does not mount.
Coupled subtrees: pnpm-workspace.yaml moved only Clerk versions; the Effect
catalog and infra/relay/package.json are unchanged, so no vendored subtree sync
is due.
@github-actions

github-actionsBot commented Aug 21, 2026

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire12.6 KiB13.4 KiB+850 B (+6.6%)15.1 KiB
CodexThread snapshot wire6.3 KiB6.9 KiB+619 B (+9.6%)7.3 KiB
CodexLive turn WebSocket wire6.3 KiB6.5 KiB+231 B (+3.6%)7.8 KiB
CodexLive turn WebSocket decoded51.8 KiB55.0 KiB+3.2 KiB (+6.1%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire12.6 KiB13.5 KiB+873 B (+6.8%)15.1 KiB
ClaudeThread snapshot wire6.3 KiB6.9 KiB+632 B (+9.8%)7.3 KiB
ClaudeLive turn WebSocket wire6.3 KiB6.6 KiB+241 B (+3.7%)7.8 KiB
ClaudeLive turn WebSocket decoded52.7 KiB55.8 KiB+3.2 KiB (+6.0%)66.4 KiB
ClaudeLive turn messages16160 (0.0%)21

Baseline: 2ffb140 · PR result: 49471f6 · 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: 109.4 KiB
  • Claude decoded thread snapshot: 110.1 KiB

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

Upstream's test-suite split moved apps/server's tests into a new
`test_server` job. Marcode installs ripgrep for
`WorkspaceFileSystem.searchContent`, which shells out to it, and that step
stayed on `test` — a job that now explicitly excludes `t3`. The two
searchContent tests ran without ripgrep and returned zero matches.
Reproduced locally by hiding `rg`: the same two assertions fail, and all 25
pass with it present.
The existing pin named the `test` job by hand, so it stayed green through
the split. It now derives the job list from the workflow — any job running
package tests without excluding `t3` must install ripgrep — and fails
naming the offending job, which is verified by removing the step.
@maarcoChatGPT Codex Connector

Copy link
Copy Markdown
OwnerAuthor

Superseded by PR #51, the newer upstream sync through f035a0f4, which has now merged to main. Closing this older draft to keep the sync queue clean.

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

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

20 participants

@maarco@aoright@gbarros-dev@Bil0000@Rishet11@StiensWout@AugusDogus@tarik02@gsimone@t3dotgg@chrisdeeming@inayayousfi@RakshithBhat03@dbalders@maria-rcks@UtkarshUsername@SunkenInTime@lgwacker@jakeleventhal@sethwebster
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore(upstream): sync marcode through be7d35aa - #45

Closed
maarco wants to merge 77 commits into
mainfrom
claude/gracious-bohr-7j0afc
Closed

chore(upstream): sync marcode through be7d35aa#45
maarco wants to merge 77 commits into
mainfrom
claude/gracious-bohr-7j0afc

Conversation

@maarco

@maarcomaarco commented Aug 21, 2026

Copy link
Copy Markdown
Owner

What Changed

Merged pingdotgg/t3code@be7d35aa into Marcode — 75 upstream commits across 24 conflicted paths, resolved by hand. Draft on purpose: CI is green, but the live-client verification the runbook asks for on UI hotspots has not been run.

Conflict decisions

PathDecision
AGENTS.mdKept Marcode's structure. Adopted upstream's new Plans and work artifacts policy and its "never commit PR-only assets" rule. Dropped upstream's duplicate Verifying / Pull requests sections (Marcode has its own) and the user-count blurb.
.plans/effect-atom.mdAccepted upstream's deletion — Marcode's only edit was an identifier cleanup in a file upstream retired repo-wide.
.github/workflows/ci.ymlTook upstream's mobile-native change gate; kept Marcode's GitHub-hosted runner. See silent breaks below for the new jobs.
apps/server/src/cli/{connect,service}.tsAdopted upstream's macOS launchd support and platform-aware copy, rendered in Marcode's voice.
apps/web/src/components/files/{FileBrowserPanel,FilePreviewPanel}.tsxKept deleted. Upstream's refresh fix (pingdotgg#7490) targets the right-panel file surface Marcode retired; the floating editor's file tree has no refresh control, so there is no sibling to port it to.
ChatView.tsxKept Marcode's title-only ChatHeader and container-level panelLayoutControls, closing with upstream's WorkspacePageHeader. Composer shell keeps Marcode's transparent glass and takes upstream's attached-drawer modifier.
chat/ChatComposer.tsxTook upstream's new composer top drawer; re-applied Marcode's glass surface to the relocated composer surface div.
chat/ChatHeader.tsxKept Marcode's cluster. Upstream's inline rename and thread action menu belong to a header Marcode does not render, and those actions already have an entry point on the sidebar row.
chat/ComposerPendingApprovalPanel.tsxTook upstream's inline code chip. Marcode's only divergence was typography on a label the redesign removes.
chat/MessagesTimeline.tsxUpstream's dropped -mx-1 plus Marcode's text-sm.
RightPanelTabs.tsxAdopted upstream's tab mute control and add-surface keyboard shortcuts. Dropped the file-tab copy-path action, the Files surface and its icon — all owned by the retired right-panel file surface.
Sidebar.logic.ts, Sidebar.tsxKept both imports; upstream's cursor-pointer with Marcode's text-xs.
sidebar/SidebarChrome.tsxKept Marcode's footer. Upstream's whole delta was the footer nav and brand that FloatingPillNav owns.
ThreadTerminalDrawer.tsxKept Marcode's terminal chrome; adopted upstream's close confirmation and its terminal-background surface fix.
PullRequestListFilters.tsx, routes/_chat.pull-requests.tsxTook upstream's shared Button trigger and its relocation of the refresh control, moving Marcode's tooltip onto the control's new home.
usage/UsagePage.tsx, routes/settings.tsxTook upstream's move onto the shared WorkspacePageHeader; kept Marcode's tooltip on the refresh button.
index.cssBoth blocks kept — they collided only on insertion point.
routes/__root.tsxRender Marcode's DraftPromotionWatcherand upstream's new PlanAgentSelectionHeal.
threadSettled.tsTook upstream's changeRequestAutoSettles signature and its activity anchor; kept Marcode's one-hour warm window on top.

Clean merges that would have broken on Marcode

Five upstream changes produced no conflict and would have shipped broken. Four were caught by a fork-identity sweep of the merged tree; the fifth was caught by CI.

  1. macOS launch agent exported T3CODE_HOME. Marcode's launcher requires MARCODE_HOME and exits without it, so the background service would install and never start. Both unit renderers now export the same key, pinned by a test.
  2. Launch agent label was com.t3tools.t3code.service, which would make a Marcode install and an upstream install the same launchd job — the macOS half of the coexistence rule the systemd unit already holds. Now app.marcode.service, pinned by a test.
  3. New t3 triage CLI read T3CODE_HOME where every other Marcode entry point reads MARCODE_HOME.
  4. Three new CI jobs (Test Server, Rust, Mobile Native Changes) arrived with Blacksmith runner labels the fork cannot schedule — they would have queued forever. Remapped to ubuntu-24.04, and an upstream test still asserting systemctl --user disable --now t3code.service was corrected to marcode.service.
  5. Upstream's test-suite split moved apps/server's tests out from under Marcode's ripgrep install step (49471f6f). WorkspaceFileSystem.searchContent shells out to ripgrep, which the runner image does not carry; the step stayed on test, a job that now explicitly excludes t3, so the two searchContent tests ran without it and returned zero matches. Reproduced locally by hiding rg — same two assertions fail, 25/25 pass with it present.

Fork pins updated

  • workspaceTitlebar.fork.test.ts — upstream moved settings and usage onto the shared header, which hardcodes the collapsed-sidebar inset. Marcode carries its sidebarless inset forward as a sidebarless prop on that shared header; the test now pins both halves (the header honouring the flag, and each route passing it).
  • upstream-sync-workflow.test.tstwo pins were too narrow. The CI runner pin asserted an exact four-job list, so upstream adding a job broke it for the wrong reason; it now asserts that no job carries a label the fork cannot schedule. The ripgrep pin named ci.jobs.test by hand, so the test-suite split moved the search tests out from under it while the assertion stayed green and CI went red; it now derives the job list from the workflow — any job running package tests without excluding t3 must install ripgrep — and was verified to fail, naming the offending job, by removing the step.
  • SettingsSidebarNav.tsx — restored Marcode's page-level Back row after upstream replaced it with the SidebarUtilityMenu this fork does not mount.

Coupled subtrees:pnpm-workspace.yaml moved only Clerk versions; the Effect catalog and infra/relay/package.json are unchanged, so no vendored subtree sync is due.

Why

The scheduled sync found 75 new upstream commits with a conflicted delta, which the automation deliberately refuses to resolve. This is the hand-resolved integration branch that policy calls for: it keeps upstream's correctness, security and dependency work while preserving Marcode's floating navigation shell, retired right-panel file surfaces, unified workspace sidebar, and service identity.

Hotspot paths were treated as mandatory-review, not automatic keep-Marcode: upstream's macOS launchd support, terminal close confirmation, tab mute control, add-surface shortcuts, shared page header, and settled-thread activity anchor all landed inside customized files and were all taken.

UI Changes

Not captured. This merge touches several web surfaces (composer drawers, right-panel tabs, usage page, settings and pull-request headers, terminal chrome). The runbook's live-client pass has not been run in this environment, so before/after evidence still has to be produced — see Verification. Keeping the PR in draft until that lands.

Verification

CI green on 49471f6f — all four required checks (Check, Test, Mobile Native Static Analysis, Release Smoke) plus the new Test Server 1/2/3, Rust, and Mobile Native Changes. The thread-transfer budget report is within every ceiling.

Run locally (focused, per AGENTS.md):

  • vp test run over the touched surfaces, all passing: fork pins (workspaceTitlebar.fork, SidebarChrome.fork, upstream-sync-workflow), threadSettled, boot service / service launcher / service CLI, right panel store, the seven composer suites, RightPanelTabs, UsagePage, Sidebar.logic, ChatView.logic, threadActionMenu.logic, -chatIndexTitlebar, editor surface and open-floating-file, GitActionsControl.logic, shared/git, contracts/settings, contracts/orchestration, client-runtime/operations/projects.
  • vp run --filter typecheck: @t3tools/web, @t3tools/client-runtime, t3, @t3tools/contracts, @t3tools/shared — all clean.
  • vp fmt --check on the changed files, vp lint on apps/web/src, apps/server/src, packages/client-runtime/src, scripts — clean (warnings only, all pre-existing patterns).

Not verified:

  • Live web/mobile client verification, and the branding-asset check the runbook asks for on UI hotspots.
  • ThreadTerminalDrawer.test.ts could not run in the sync container (@aliimam/icons@1.1.3 ships a main pointing at a dist/index.cjs its tarball lacks). It passes in CI, which covers it.

Follow-up, not done here

Two pre-existing issues this PR surfaces but deliberately does not widen into:

  1. Native fingerprint diff will sit queued forever..github/workflows/mobile-fingerprint-check.yml is unchanged by this merge but still carries runs-on: blacksmith-8vcpu-ubuntu-2404, and the fork has no Blacksmith installation — the same class of break as item 4 above. It is advisory (the check is advisory: it always passes, the label is the signal) and not in requiredPullRequestChecks, so it leaves the PR unstable rather than blocked. Proposed patch: runs-on: ubuntu-24.04. Its only stated resource need is NODE_OPTIONS=--max-old-space-size=8192, and the GitHub-hosted image has 16 GB RAM, so the 8 GB heap fits — it will just be slower on 4 vCPU. Left alone here because the runbook says to audit those workflows individually rather than sweep the labels, and this one is not part of the upstream delta.
  2. The new upstream t3 triage CLI ships a playbook that names "T3 Code" throughout and points users at github.com/pingdotgg/t3code for filing issues. Only the functional MARCODE_HOME break was fixed; whether Marcode wants its own triage playbook and issue tracker is a product decision, and rebranding a 200-line upstream-owned file would widen this sync.

Checklist

  • This PR is small and focused — one concern: the upstream merge
  • I explained what changed and why
  • I included before/after screenshots for any UI changes — pending live-client pass
  • I included a video for animation/interaction changes — n/a

aorightand others added 30 commits August 18, 2026 13:38
…in GitHubPullRequestCli (pingdotgg#7385)
Signed-off-by: aoright <102943475+aoright@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
…t full speed (pingdotgg#7460)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…nt (pingdotgg#6563)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…tgg#6286)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: GPT-5.6 <noreply@openai.com>
t3dotggand others added 20 commits August 20, 2026 23:19
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: John William Creighton (s243a) <s243a@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ngdotgg#6326)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex Southwell <4596216+saphid@users.noreply.github.com>
Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>
…nment (pingdotgg#7292)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…otgg#7286)
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
…pingdotgg#7283)
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
75 upstream commits, 24 conflicted paths. Every conflict was resolved by hand,
combining upstream's intent with Marcode's, and the fork-boundary sweep caught
four upstream changes that merged cleanly but would have broken on Marcode.
Conflict decisions
- AGENTS.md: kept Marcode's structure; adopted upstream's new "Plans and work
artifacts" policy and its "never commit PR-only assets" rule. Dropped
upstream's duplicate Verifying/Pull requests sections (Marcode has its own)
and its user-count blurb.
- .plans/effect-atom.md: accepted upstream's deletion. Marcode's only edit was
an identifier cleanup in a file upstream retired repo-wide.
- .github/workflows/ci.yml: took upstream's mobile-native change gate; kept
Marcode's GitHub-hosted runner. Upstream's three new jobs arrived with
Blacksmith labels the fork cannot schedule — remapped to ubuntu-24.04.
- apps/server/src/cli/{connect,service}.ts: adopted upstream's macOS launchd
support and platform-aware copy, in Marcode's voice.
- apps/web/src/components/files/{FileBrowserPanel,FilePreviewPanel}.tsx: kept
deleted. Upstream's refresh fix (pingdotgg#7490) targets the right-panel file surface
Marcode retired; the floating editor's file tree has no refresh control, so
there is no sibling to port it to.
- ChatView.tsx: kept Marcode's title-only ChatHeader and container-level
panelLayoutControls, closing with upstream's WorkspacePageHeader. Composer
shell keeps Marcode's transparent glass and takes upstream's attached-drawer
modifier.
- ChatComposer.tsx: took upstream's new composer top drawer and re-applied
Marcode's glass surface to the relocated composer surface div.
- ChatHeader.tsx: kept Marcode's cluster. Upstream's inline rename and thread
action menu belong to a header Marcode does not render; those actions already
have an entry point on the sidebar row.
- ComposerPendingApprovalPanel.tsx: took upstream's inline code chip. Marcode's
only divergence was typography on a label the redesign removes.
- MessagesTimeline.tsx: upstream's dropped -mx-1 plus Marcode's text-sm.
- RightPanelTabs.tsx: adopted upstream's tab mute control and add-surface
keyboard shortcuts; dropped the file-tab copy-path action, the Files surface
and its icon, which the retired right-panel file surface owned.
- Sidebar.logic.ts / Sidebar.tsx: kept both imports; upstream's cursor-pointer
with Marcode's text-xs.
- sidebar/SidebarChrome.tsx: kept Marcode's footer. Upstream's whole delta was
the footer nav and brand FloatingPillNav owns.
- ThreadTerminalDrawer.tsx: kept Marcode's terminal chrome and adopted
upstream's close confirmation and terminal-background surface fix.
- PullRequestListFilters.tsx / _chat.pull-requests.tsx: took upstream's shared
Button trigger and its relocation of the refresh control, moving Marcode's
tooltip onto the control's new home.
- usage/UsagePage.tsx, routes/settings.tsx: took upstream's move onto the
shared WorkspacePageHeader and kept Marcode's tooltip on the refresh button.
- index.css: both blocks kept; they collided only on insertion point.
- routes/__root.tsx: render Marcode's DraftPromotionWatcher and upstream's new
PlanAgentSelectionHeal.
- threadSettled.ts: took upstream's changeRequestAutoSettles signature and its
activity anchor, keeping Marcode's one-hour warm window on top.
Clean merges that would have broken on Marcode
- The new macOS launch agent exported T3CODE_HOME; Marcode's launcher requires
MARCODE_HOME and exits without it, so the service would install and never
start. Both unit renderers now export the same key, pinned by a test.
- The launch agent label was com.t3tools.t3code.service, which would have made
a Marcode install and an upstream install the same launchd job — the macOS
half of the coexistence rule the systemd unit already holds. Now
app.marcode.service, pinned by a test.
- The new `t3 triage` CLI read T3CODE_HOME where every other Marcode entry
point reads MARCODE_HOME.
- An upstream test still asserted `systemctl --user disable --now
t3code.service`; Marcode installs marcode.service.
Fork pins updated
- workspaceTitlebar.fork.test.ts: upstream moved settings and usage onto the
shared header, which hardcodes the collapsed-sidebar inset. Marcode carries
its sidebarless inset forward as a `sidebarless` prop on that shared header;
the test now pins both the header honouring the flag and each route passing
it.
- upstream-sync-workflow.test.ts: the CI runner pin asserted an exact four-job
list, so upstream adding a job broke it for the wrong reason. It now asserts
no job carries a label the fork cannot schedule.
- SettingsSidebarNav.tsx: restored Marcode's page-level Back row after upstream
replaced it with the SidebarUtilityMenu this fork does not mount.
Coupled subtrees: pnpm-workspace.yaml moved only Clerk versions; the Effect
catalog and infra/relay/package.json are unchanged, so no vendored subtree sync
is due.
@github-actions

github-actionsBot commented Aug 21, 2026

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire12.6 KiB13.4 KiB+850 B (+6.6%)15.1 KiB
CodexThread snapshot wire6.3 KiB6.9 KiB+619 B (+9.6%)7.3 KiB
CodexLive turn WebSocket wire6.3 KiB6.5 KiB+231 B (+3.6%)7.8 KiB
CodexLive turn WebSocket decoded51.8 KiB55.0 KiB+3.2 KiB (+6.1%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire12.6 KiB13.5 KiB+873 B (+6.8%)15.1 KiB
ClaudeThread snapshot wire6.3 KiB6.9 KiB+632 B (+9.8%)7.3 KiB
ClaudeLive turn WebSocket wire6.3 KiB6.6 KiB+241 B (+3.7%)7.8 KiB
ClaudeLive turn WebSocket decoded52.7 KiB55.8 KiB+3.2 KiB (+6.0%)66.4 KiB
ClaudeLive turn messages16160 (0.0%)21

Baseline: 2ffb140 · PR result: 49471f6 · 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: 109.4 KiB
  • Claude decoded thread snapshot: 110.1 KiB

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

Upstream's test-suite split moved apps/server's tests into a new
`test_server` job. Marcode installs ripgrep for
`WorkspaceFileSystem.searchContent`, which shells out to it, and that step
stayed on `test` — a job that now explicitly excludes `t3`. The two
searchContent tests ran without ripgrep and returned zero matches.
Reproduced locally by hiding `rg`: the same two assertions fail, and all 25
pass with it present.
The existing pin named the `test` job by hand, so it stayed green through
the split. It now derives the job list from the workflow — any job running
package tests without excluding `t3` must install ripgrep — and fails
naming the offending job, which is verified by removing the step.
@maarcoChatGPT Codex Connector

Copy link
Copy Markdown
OwnerAuthor

Superseded by PR #51, the newer upstream sync through f035a0f4, which has now merged to main. Closing this older draft to keep the sync queue clean.

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

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

20 participants

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

chore(upstream): sync marcode through be7d35aa - #45

Closed
maarco wants to merge 77 commits into
mainfrom
claude/gracious-bohr-7j0afc
Closed

chore(upstream): sync marcode through be7d35aa#45
maarco wants to merge 77 commits into
mainfrom
claude/gracious-bohr-7j0afc

Conversation

@maarco

@maarcomaarco commented Aug 21, 2026

Copy link
Copy Markdown
Owner

What Changed

Merged pingdotgg/t3code@be7d35aa into Marcode — 75 upstream commits across 24 conflicted paths, resolved by hand. Draft on purpose: CI is green, but the live-client verification the runbook asks for on UI hotspots has not been run.

Conflict decisions

PathDecision
AGENTS.mdKept Marcode's structure. Adopted upstream's new Plans and work artifacts policy and its "never commit PR-only assets" rule. Dropped upstream's duplicate Verifying / Pull requests sections (Marcode has its own) and the user-count blurb.
.plans/effect-atom.mdAccepted upstream's deletion — Marcode's only edit was an identifier cleanup in a file upstream retired repo-wide.
.github/workflows/ci.ymlTook upstream's mobile-native change gate; kept Marcode's GitHub-hosted runner. See silent breaks below for the new jobs.
apps/server/src/cli/{connect,service}.tsAdopted upstream's macOS launchd support and platform-aware copy, rendered in Marcode's voice.
apps/web/src/components/files/{FileBrowserPanel,FilePreviewPanel}.tsxKept deleted. Upstream's refresh fix (pingdotgg#7490) targets the right-panel file surface Marcode retired; the floating editor's file tree has no refresh control, so there is no sibling to port it to.
ChatView.tsxKept Marcode's title-only ChatHeader and container-level panelLayoutControls, closing with upstream's WorkspacePageHeader. Composer shell keeps Marcode's transparent glass and takes upstream's attached-drawer modifier.
chat/ChatComposer.tsxTook upstream's new composer top drawer; re-applied Marcode's glass surface to the relocated composer surface div.
chat/ChatHeader.tsxKept Marcode's cluster. Upstream's inline rename and thread action menu belong to a header Marcode does not render, and those actions already have an entry point on the sidebar row.
chat/ComposerPendingApprovalPanel.tsxTook upstream's inline code chip. Marcode's only divergence was typography on a label the redesign removes.
chat/MessagesTimeline.tsxUpstream's dropped -mx-1 plus Marcode's text-sm.
RightPanelTabs.tsxAdopted upstream's tab mute control and add-surface keyboard shortcuts. Dropped the file-tab copy-path action, the Files surface and its icon — all owned by the retired right-panel file surface.
Sidebar.logic.ts, Sidebar.tsxKept both imports; upstream's cursor-pointer with Marcode's text-xs.
sidebar/SidebarChrome.tsxKept Marcode's footer. Upstream's whole delta was the footer nav and brand that FloatingPillNav owns.
ThreadTerminalDrawer.tsxKept Marcode's terminal chrome; adopted upstream's close confirmation and its terminal-background surface fix.
PullRequestListFilters.tsx, routes/_chat.pull-requests.tsxTook upstream's shared Button trigger and its relocation of the refresh control, moving Marcode's tooltip onto the control's new home.
usage/UsagePage.tsx, routes/settings.tsxTook upstream's move onto the shared WorkspacePageHeader; kept Marcode's tooltip on the refresh button.
index.cssBoth blocks kept — they collided only on insertion point.
routes/__root.tsxRender Marcode's DraftPromotionWatcherand upstream's new PlanAgentSelectionHeal.
threadSettled.tsTook upstream's changeRequestAutoSettles signature and its activity anchor; kept Marcode's one-hour warm window on top.

Clean merges that would have broken on Marcode

Five upstream changes produced no conflict and would have shipped broken. Four were caught by a fork-identity sweep of the merged tree; the fifth was caught by CI.

  1. macOS launch agent exported T3CODE_HOME. Marcode's launcher requires MARCODE_HOME and exits without it, so the background service would install and never start. Both unit renderers now export the same key, pinned by a test.
  2. Launch agent label was com.t3tools.t3code.service, which would make a Marcode install and an upstream install the same launchd job — the macOS half of the coexistence rule the systemd unit already holds. Now app.marcode.service, pinned by a test.
  3. New t3 triage CLI read T3CODE_HOME where every other Marcode entry point reads MARCODE_HOME.
  4. Three new CI jobs (Test Server, Rust, Mobile Native Changes) arrived with Blacksmith runner labels the fork cannot schedule — they would have queued forever. Remapped to ubuntu-24.04, and an upstream test still asserting systemctl --user disable --now t3code.service was corrected to marcode.service.
  5. Upstream's test-suite split moved apps/server's tests out from under Marcode's ripgrep install step (49471f6f). WorkspaceFileSystem.searchContent shells out to ripgrep, which the runner image does not carry; the step stayed on test, a job that now explicitly excludes t3, so the two searchContent tests ran without it and returned zero matches. Reproduced locally by hiding rg — same two assertions fail, 25/25 pass with it present.

Fork pins updated

  • workspaceTitlebar.fork.test.ts — upstream moved settings and usage onto the shared header, which hardcodes the collapsed-sidebar inset. Marcode carries its sidebarless inset forward as a sidebarless prop on that shared header; the test now pins both halves (the header honouring the flag, and each route passing it).
  • upstream-sync-workflow.test.tstwo pins were too narrow. The CI runner pin asserted an exact four-job list, so upstream adding a job broke it for the wrong reason; it now asserts that no job carries a label the fork cannot schedule. The ripgrep pin named ci.jobs.test by hand, so the test-suite split moved the search tests out from under it while the assertion stayed green and CI went red; it now derives the job list from the workflow — any job running package tests without excluding t3 must install ripgrep — and was verified to fail, naming the offending job, by removing the step.
  • SettingsSidebarNav.tsx — restored Marcode's page-level Back row after upstream replaced it with the SidebarUtilityMenu this fork does not mount.

Coupled subtrees:pnpm-workspace.yaml moved only Clerk versions; the Effect catalog and infra/relay/package.json are unchanged, so no vendored subtree sync is due.

Why

The scheduled sync found 75 new upstream commits with a conflicted delta, which the automation deliberately refuses to resolve. This is the hand-resolved integration branch that policy calls for: it keeps upstream's correctness, security and dependency work while preserving Marcode's floating navigation shell, retired right-panel file surfaces, unified workspace sidebar, and service identity.

Hotspot paths were treated as mandatory-review, not automatic keep-Marcode: upstream's macOS launchd support, terminal close confirmation, tab mute control, add-surface shortcuts, shared page header, and settled-thread activity anchor all landed inside customized files and were all taken.

UI Changes

Not captured. This merge touches several web surfaces (composer drawers, right-panel tabs, usage page, settings and pull-request headers, terminal chrome). The runbook's live-client pass has not been run in this environment, so before/after evidence still has to be produced — see Verification. Keeping the PR in draft until that lands.

Verification

CI green on 49471f6f — all four required checks (Check, Test, Mobile Native Static Analysis, Release Smoke) plus the new Test Server 1/2/3, Rust, and Mobile Native Changes. The thread-transfer budget report is within every ceiling.

Run locally (focused, per AGENTS.md):

  • vp test run over the touched surfaces, all passing: fork pins (workspaceTitlebar.fork, SidebarChrome.fork, upstream-sync-workflow), threadSettled, boot service / service launcher / service CLI, right panel store, the seven composer suites, RightPanelTabs, UsagePage, Sidebar.logic, ChatView.logic, threadActionMenu.logic, -chatIndexTitlebar, editor surface and open-floating-file, GitActionsControl.logic, shared/git, contracts/settings, contracts/orchestration, client-runtime/operations/projects.
  • vp run --filter typecheck: @t3tools/web, @t3tools/client-runtime, t3, @t3tools/contracts, @t3tools/shared — all clean.
  • vp fmt --check on the changed files, vp lint on apps/web/src, apps/server/src, packages/client-runtime/src, scripts — clean (warnings only, all pre-existing patterns).

Not verified:

  • Live web/mobile client verification, and the branding-asset check the runbook asks for on UI hotspots.
  • ThreadTerminalDrawer.test.ts could not run in the sync container (@aliimam/icons@1.1.3 ships a main pointing at a dist/index.cjs its tarball lacks). It passes in CI, which covers it.

Follow-up, not done here

Two pre-existing issues this PR surfaces but deliberately does not widen into:

  1. Native fingerprint diff will sit queued forever..github/workflows/mobile-fingerprint-check.yml is unchanged by this merge but still carries runs-on: blacksmith-8vcpu-ubuntu-2404, and the fork has no Blacksmith installation — the same class of break as item 4 above. It is advisory (the check is advisory: it always passes, the label is the signal) and not in requiredPullRequestChecks, so it leaves the PR unstable rather than blocked. Proposed patch: runs-on: ubuntu-24.04. Its only stated resource need is NODE_OPTIONS=--max-old-space-size=8192, and the GitHub-hosted image has 16 GB RAM, so the 8 GB heap fits — it will just be slower on 4 vCPU. Left alone here because the runbook says to audit those workflows individually rather than sweep the labels, and this one is not part of the upstream delta.
  2. The new upstream t3 triage CLI ships a playbook that names "T3 Code" throughout and points users at github.com/pingdotgg/t3code for filing issues. Only the functional MARCODE_HOME break was fixed; whether Marcode wants its own triage playbook and issue tracker is a product decision, and rebranding a 200-line upstream-owned file would widen this sync.

Checklist

  • This PR is small and focused — one concern: the upstream merge
  • I explained what changed and why
  • I included before/after screenshots for any UI changes — pending live-client pass
  • I included a video for animation/interaction changes — n/a

aorightand others added 30 commits August 18, 2026 13:38
…in GitHubPullRequestCli (pingdotgg#7385)
Signed-off-by: aoright <102943475+aoright@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
…t full speed (pingdotgg#7460)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…nt (pingdotgg#6563)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…tgg#6286)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: GPT-5.6 <noreply@openai.com>
t3dotggand others added 20 commits August 20, 2026 23:19
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: John William Creighton (s243a) <s243a@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ngdotgg#6326)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex Southwell <4596216+saphid@users.noreply.github.com>
Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>
…nment (pingdotgg#7292)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…otgg#7286)
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
…pingdotgg#7283)
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
75 upstream commits, 24 conflicted paths. Every conflict was resolved by hand,
combining upstream's intent with Marcode's, and the fork-boundary sweep caught
four upstream changes that merged cleanly but would have broken on Marcode.
Conflict decisions
- AGENTS.md: kept Marcode's structure; adopted upstream's new "Plans and work
artifacts" policy and its "never commit PR-only assets" rule. Dropped
upstream's duplicate Verifying/Pull requests sections (Marcode has its own)
and its user-count blurb.
- .plans/effect-atom.md: accepted upstream's deletion. Marcode's only edit was
an identifier cleanup in a file upstream retired repo-wide.
- .github/workflows/ci.yml: took upstream's mobile-native change gate; kept
Marcode's GitHub-hosted runner. Upstream's three new jobs arrived with
Blacksmith labels the fork cannot schedule — remapped to ubuntu-24.04.
- apps/server/src/cli/{connect,service}.ts: adopted upstream's macOS launchd
support and platform-aware copy, in Marcode's voice.
- apps/web/src/components/files/{FileBrowserPanel,FilePreviewPanel}.tsx: kept
deleted. Upstream's refresh fix (pingdotgg#7490) targets the right-panel file surface
Marcode retired; the floating editor's file tree has no refresh control, so
there is no sibling to port it to.
- ChatView.tsx: kept Marcode's title-only ChatHeader and container-level
panelLayoutControls, closing with upstream's WorkspacePageHeader. Composer
shell keeps Marcode's transparent glass and takes upstream's attached-drawer
modifier.
- ChatComposer.tsx: took upstream's new composer top drawer and re-applied
Marcode's glass surface to the relocated composer surface div.
- ChatHeader.tsx: kept Marcode's cluster. Upstream's inline rename and thread
action menu belong to a header Marcode does not render; those actions already
have an entry point on the sidebar row.
- ComposerPendingApprovalPanel.tsx: took upstream's inline code chip. Marcode's
only divergence was typography on a label the redesign removes.
- MessagesTimeline.tsx: upstream's dropped -mx-1 plus Marcode's text-sm.
- RightPanelTabs.tsx: adopted upstream's tab mute control and add-surface
keyboard shortcuts; dropped the file-tab copy-path action, the Files surface
and its icon, which the retired right-panel file surface owned.
- Sidebar.logic.ts / Sidebar.tsx: kept both imports; upstream's cursor-pointer
with Marcode's text-xs.
- sidebar/SidebarChrome.tsx: kept Marcode's footer. Upstream's whole delta was
the footer nav and brand FloatingPillNav owns.
- ThreadTerminalDrawer.tsx: kept Marcode's terminal chrome and adopted
upstream's close confirmation and terminal-background surface fix.
- PullRequestListFilters.tsx / _chat.pull-requests.tsx: took upstream's shared
Button trigger and its relocation of the refresh control, moving Marcode's
tooltip onto the control's new home.
- usage/UsagePage.tsx, routes/settings.tsx: took upstream's move onto the
shared WorkspacePageHeader and kept Marcode's tooltip on the refresh button.
- index.css: both blocks kept; they collided only on insertion point.
- routes/__root.tsx: render Marcode's DraftPromotionWatcher and upstream's new
PlanAgentSelectionHeal.
- threadSettled.ts: took upstream's changeRequestAutoSettles signature and its
activity anchor, keeping Marcode's one-hour warm window on top.
Clean merges that would have broken on Marcode
- The new macOS launch agent exported T3CODE_HOME; Marcode's launcher requires
MARCODE_HOME and exits without it, so the service would install and never
start. Both unit renderers now export the same key, pinned by a test.
- The launch agent label was com.t3tools.t3code.service, which would have made
a Marcode install and an upstream install the same launchd job — the macOS
half of the coexistence rule the systemd unit already holds. Now
app.marcode.service, pinned by a test.
- The new `t3 triage` CLI read T3CODE_HOME where every other Marcode entry
point reads MARCODE_HOME.
- An upstream test still asserted `systemctl --user disable --now
t3code.service`; Marcode installs marcode.service.
Fork pins updated
- workspaceTitlebar.fork.test.ts: upstream moved settings and usage onto the
shared header, which hardcodes the collapsed-sidebar inset. Marcode carries
its sidebarless inset forward as a `sidebarless` prop on that shared header;
the test now pins both the header honouring the flag and each route passing
it.
- upstream-sync-workflow.test.ts: the CI runner pin asserted an exact four-job
list, so upstream adding a job broke it for the wrong reason. It now asserts
no job carries a label the fork cannot schedule.
- SettingsSidebarNav.tsx: restored Marcode's page-level Back row after upstream
replaced it with the SidebarUtilityMenu this fork does not mount.
Coupled subtrees: pnpm-workspace.yaml moved only Clerk versions; the Effect
catalog and infra/relay/package.json are unchanged, so no vendored subtree sync
is due.
@github-actions

github-actionsBot commented Aug 21, 2026

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire12.6 KiB13.4 KiB+850 B (+6.6%)15.1 KiB
CodexThread snapshot wire6.3 KiB6.9 KiB+619 B (+9.6%)7.3 KiB
CodexLive turn WebSocket wire6.3 KiB6.5 KiB+231 B (+3.6%)7.8 KiB
CodexLive turn WebSocket decoded51.8 KiB55.0 KiB+3.2 KiB (+6.1%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire12.6 KiB13.5 KiB+873 B (+6.8%)15.1 KiB
ClaudeThread snapshot wire6.3 KiB6.9 KiB+632 B (+9.8%)7.3 KiB
ClaudeLive turn WebSocket wire6.3 KiB6.6 KiB+241 B (+3.7%)7.8 KiB
ClaudeLive turn WebSocket decoded52.7 KiB55.8 KiB+3.2 KiB (+6.0%)66.4 KiB
ClaudeLive turn messages16160 (0.0%)21

Baseline: 2ffb140 · PR result: 49471f6 · 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: 109.4 KiB
  • Claude decoded thread snapshot: 110.1 KiB

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

Upstream's test-suite split moved apps/server's tests into a new
`test_server` job. Marcode installs ripgrep for
`WorkspaceFileSystem.searchContent`, which shells out to it, and that step
stayed on `test` — a job that now explicitly excludes `t3`. The two
searchContent tests ran without ripgrep and returned zero matches.
Reproduced locally by hiding `rg`: the same two assertions fail, and all 25
pass with it present.
The existing pin named the `test` job by hand, so it stayed green through
the split. It now derives the job list from the workflow — any job running
package tests without excluding `t3` must install ripgrep — and fails
naming the offending job, which is verified by removing the step.
@maarcoChatGPT Codex Connector

Copy link
Copy Markdown
OwnerAuthor

Superseded by PR #51, the newer upstream sync through f035a0f4, which has now merged to main. Closing this older draft to keep the sync queue clean.

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

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

20 participants

@maarco@aoright@gbarros-dev@Bil0000@Rishet11@StiensWout@AugusDogus@tarik02@gsimone@t3dotgg@chrisdeeming@inayayousfi@RakshithBhat03@dbalders@maria-rcks@UtkarshUsername@SunkenInTime@lgwacker@jakeleventhal@sethwebster
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } 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

chore(upstream): sync marcode through be7d35aa - #45

Closed
maarco wants to merge 77 commits into
mainfrom
claude/gracious-bohr-7j0afc
Closed

chore(upstream): sync marcode through be7d35aa#45
maarco wants to merge 77 commits into
mainfrom
claude/gracious-bohr-7j0afc

Conversation

@maarco

@maarcomaarco commented Aug 21, 2026

Copy link
Copy Markdown
Owner

What Changed

Merged pingdotgg/t3code@be7d35aa into Marcode — 75 upstream commits across 24 conflicted paths, resolved by hand. Draft on purpose: CI is green, but the live-client verification the runbook asks for on UI hotspots has not been run.

Conflict decisions

PathDecision
AGENTS.mdKept Marcode's structure. Adopted upstream's new Plans and work artifacts policy and its "never commit PR-only assets" rule. Dropped upstream's duplicate Verifying / Pull requests sections (Marcode has its own) and the user-count blurb.
.plans/effect-atom.mdAccepted upstream's deletion — Marcode's only edit was an identifier cleanup in a file upstream retired repo-wide.
.github/workflows/ci.ymlTook upstream's mobile-native change gate; kept Marcode's GitHub-hosted runner. See silent breaks below for the new jobs.
apps/server/src/cli/{connect,service}.tsAdopted upstream's macOS launchd support and platform-aware copy, rendered in Marcode's voice.
apps/web/src/components/files/{FileBrowserPanel,FilePreviewPanel}.tsxKept deleted. Upstream's refresh fix (pingdotgg#7490) targets the right-panel file surface Marcode retired; the floating editor's file tree has no refresh control, so there is no sibling to port it to.
ChatView.tsxKept Marcode's title-only ChatHeader and container-level panelLayoutControls, closing with upstream's WorkspacePageHeader. Composer shell keeps Marcode's transparent glass and takes upstream's attached-drawer modifier.
chat/ChatComposer.tsxTook upstream's new composer top drawer; re-applied Marcode's glass surface to the relocated composer surface div.
chat/ChatHeader.tsxKept Marcode's cluster. Upstream's inline rename and thread action menu belong to a header Marcode does not render, and those actions already have an entry point on the sidebar row.
chat/ComposerPendingApprovalPanel.tsxTook upstream's inline code chip. Marcode's only divergence was typography on a label the redesign removes.
chat/MessagesTimeline.tsxUpstream's dropped -mx-1 plus Marcode's text-sm.
RightPanelTabs.tsxAdopted upstream's tab mute control and add-surface keyboard shortcuts. Dropped the file-tab copy-path action, the Files surface and its icon — all owned by the retired right-panel file surface.
Sidebar.logic.ts, Sidebar.tsxKept both imports; upstream's cursor-pointer with Marcode's text-xs.
sidebar/SidebarChrome.tsxKept Marcode's footer. Upstream's whole delta was the footer nav and brand that FloatingPillNav owns.
ThreadTerminalDrawer.tsxKept Marcode's terminal chrome; adopted upstream's close confirmation and its terminal-background surface fix.
PullRequestListFilters.tsx, routes/_chat.pull-requests.tsxTook upstream's shared Button trigger and its relocation of the refresh control, moving Marcode's tooltip onto the control's new home.
usage/UsagePage.tsx, routes/settings.tsxTook upstream's move onto the shared WorkspacePageHeader; kept Marcode's tooltip on the refresh button.
index.cssBoth blocks kept — they collided only on insertion point.
routes/__root.tsxRender Marcode's DraftPromotionWatcherand upstream's new PlanAgentSelectionHeal.
threadSettled.tsTook upstream's changeRequestAutoSettles signature and its activity anchor; kept Marcode's one-hour warm window on top.

Clean merges that would have broken on Marcode

Five upstream changes produced no conflict and would have shipped broken. Four were caught by a fork-identity sweep of the merged tree; the fifth was caught by CI.

  1. macOS launch agent exported T3CODE_HOME. Marcode's launcher requires MARCODE_HOME and exits without it, so the background service would install and never start. Both unit renderers now export the same key, pinned by a test.
  2. Launch agent label was com.t3tools.t3code.service, which would make a Marcode install and an upstream install the same launchd job — the macOS half of the coexistence rule the systemd unit already holds. Now app.marcode.service, pinned by a test.
  3. New t3 triage CLI read T3CODE_HOME where every other Marcode entry point reads MARCODE_HOME.
  4. Three new CI jobs (Test Server, Rust, Mobile Native Changes) arrived with Blacksmith runner labels the fork cannot schedule — they would have queued forever. Remapped to ubuntu-24.04, and an upstream test still asserting systemctl --user disable --now t3code.service was corrected to marcode.service.
  5. Upstream's test-suite split moved apps/server's tests out from under Marcode's ripgrep install step (49471f6f). WorkspaceFileSystem.searchContent shells out to ripgrep, which the runner image does not carry; the step stayed on test, a job that now explicitly excludes t3, so the two searchContent tests ran without it and returned zero matches. Reproduced locally by hiding rg — same two assertions fail, 25/25 pass with it present.

Fork pins updated

  • workspaceTitlebar.fork.test.ts — upstream moved settings and usage onto the shared header, which hardcodes the collapsed-sidebar inset. Marcode carries its sidebarless inset forward as a sidebarless prop on that shared header; the test now pins both halves (the header honouring the flag, and each route passing it).
  • upstream-sync-workflow.test.tstwo pins were too narrow. The CI runner pin asserted an exact four-job list, so upstream adding a job broke it for the wrong reason; it now asserts that no job carries a label the fork cannot schedule. The ripgrep pin named ci.jobs.test by hand, so the test-suite split moved the search tests out from under it while the assertion stayed green and CI went red; it now derives the job list from the workflow — any job running package tests without excluding t3 must install ripgrep — and was verified to fail, naming the offending job, by removing the step.
  • SettingsSidebarNav.tsx — restored Marcode's page-level Back row after upstream replaced it with the SidebarUtilityMenu this fork does not mount.

Coupled subtrees:pnpm-workspace.yaml moved only Clerk versions; the Effect catalog and infra/relay/package.json are unchanged, so no vendored subtree sync is due.

Why

The scheduled sync found 75 new upstream commits with a conflicted delta, which the automation deliberately refuses to resolve. This is the hand-resolved integration branch that policy calls for: it keeps upstream's correctness, security and dependency work while preserving Marcode's floating navigation shell, retired right-panel file surfaces, unified workspace sidebar, and service identity.

Hotspot paths were treated as mandatory-review, not automatic keep-Marcode: upstream's macOS launchd support, terminal close confirmation, tab mute control, add-surface shortcuts, shared page header, and settled-thread activity anchor all landed inside customized files and were all taken.

UI Changes

Not captured. This merge touches several web surfaces (composer drawers, right-panel tabs, usage page, settings and pull-request headers, terminal chrome). The runbook's live-client pass has not been run in this environment, so before/after evidence still has to be produced — see Verification. Keeping the PR in draft until that lands.

Verification

CI green on 49471f6f — all four required checks (Check, Test, Mobile Native Static Analysis, Release Smoke) plus the new Test Server 1/2/3, Rust, and Mobile Native Changes. The thread-transfer budget report is within every ceiling.

Run locally (focused, per AGENTS.md):

  • vp test run over the touched surfaces, all passing: fork pins (workspaceTitlebar.fork, SidebarChrome.fork, upstream-sync-workflow), threadSettled, boot service / service launcher / service CLI, right panel store, the seven composer suites, RightPanelTabs, UsagePage, Sidebar.logic, ChatView.logic, threadActionMenu.logic, -chatIndexTitlebar, editor surface and open-floating-file, GitActionsControl.logic, shared/git, contracts/settings, contracts/orchestration, client-runtime/operations/projects.
  • vp run --filter typecheck: @t3tools/web, @t3tools/client-runtime, t3, @t3tools/contracts, @t3tools/shared — all clean.
  • vp fmt --check on the changed files, vp lint on apps/web/src, apps/server/src, packages/client-runtime/src, scripts — clean (warnings only, all pre-existing patterns).

Not verified:

  • Live web/mobile client verification, and the branding-asset check the runbook asks for on UI hotspots.
  • ThreadTerminalDrawer.test.ts could not run in the sync container (@aliimam/icons@1.1.3 ships a main pointing at a dist/index.cjs its tarball lacks). It passes in CI, which covers it.

Follow-up, not done here

Two pre-existing issues this PR surfaces but deliberately does not widen into:

  1. Native fingerprint diff will sit queued forever..github/workflows/mobile-fingerprint-check.yml is unchanged by this merge but still carries runs-on: blacksmith-8vcpu-ubuntu-2404, and the fork has no Blacksmith installation — the same class of break as item 4 above. It is advisory (the check is advisory: it always passes, the label is the signal) and not in requiredPullRequestChecks, so it leaves the PR unstable rather than blocked. Proposed patch: runs-on: ubuntu-24.04. Its only stated resource need is NODE_OPTIONS=--max-old-space-size=8192, and the GitHub-hosted image has 16 GB RAM, so the 8 GB heap fits — it will just be slower on 4 vCPU. Left alone here because the runbook says to audit those workflows individually rather than sweep the labels, and this one is not part of the upstream delta.
  2. The new upstream t3 triage CLI ships a playbook that names "T3 Code" throughout and points users at github.com/pingdotgg/t3code for filing issues. Only the functional MARCODE_HOME break was fixed; whether Marcode wants its own triage playbook and issue tracker is a product decision, and rebranding a 200-line upstream-owned file would widen this sync.

Checklist

  • This PR is small and focused — one concern: the upstream merge
  • I explained what changed and why
  • I included before/after screenshots for any UI changes — pending live-client pass
  • I included a video for animation/interaction changes — n/a

aorightand others added 30 commits August 18, 2026 13:38
…in GitHubPullRequestCli (pingdotgg#7385)
Signed-off-by: aoright <102943475+aoright@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
…t full speed (pingdotgg#7460)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…nt (pingdotgg#6563)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…tgg#6286)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: GPT-5.6 <noreply@openai.com>
t3dotggand others added 20 commits August 20, 2026 23:19
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: John William Creighton (s243a) <s243a@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ngdotgg#6326)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex Southwell <4596216+saphid@users.noreply.github.com>
Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>
…nment (pingdotgg#7292)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…otgg#7286)
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
…pingdotgg#7283)
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
75 upstream commits, 24 conflicted paths. Every conflict was resolved by hand,
combining upstream's intent with Marcode's, and the fork-boundary sweep caught
four upstream changes that merged cleanly but would have broken on Marcode.
Conflict decisions
- AGENTS.md: kept Marcode's structure; adopted upstream's new "Plans and work
artifacts" policy and its "never commit PR-only assets" rule. Dropped
upstream's duplicate Verifying/Pull requests sections (Marcode has its own)
and its user-count blurb.
- .plans/effect-atom.md: accepted upstream's deletion. Marcode's only edit was
an identifier cleanup in a file upstream retired repo-wide.
- .github/workflows/ci.yml: took upstream's mobile-native change gate; kept
Marcode's GitHub-hosted runner. Upstream's three new jobs arrived with
Blacksmith labels the fork cannot schedule — remapped to ubuntu-24.04.
- apps/server/src/cli/{connect,service}.ts: adopted upstream's macOS launchd
support and platform-aware copy, in Marcode's voice.
- apps/web/src/components/files/{FileBrowserPanel,FilePreviewPanel}.tsx: kept
deleted. Upstream's refresh fix (pingdotgg#7490) targets the right-panel file surface
Marcode retired; the floating editor's file tree has no refresh control, so
there is no sibling to port it to.
- ChatView.tsx: kept Marcode's title-only ChatHeader and container-level
panelLayoutControls, closing with upstream's WorkspacePageHeader. Composer
shell keeps Marcode's transparent glass and takes upstream's attached-drawer
modifier.
- ChatComposer.tsx: took upstream's new composer top drawer and re-applied
Marcode's glass surface to the relocated composer surface div.
- ChatHeader.tsx: kept Marcode's cluster. Upstream's inline rename and thread
action menu belong to a header Marcode does not render; those actions already
have an entry point on the sidebar row.
- ComposerPendingApprovalPanel.tsx: took upstream's inline code chip. Marcode's
only divergence was typography on a label the redesign removes.
- MessagesTimeline.tsx: upstream's dropped -mx-1 plus Marcode's text-sm.
- RightPanelTabs.tsx: adopted upstream's tab mute control and add-surface
keyboard shortcuts; dropped the file-tab copy-path action, the Files surface
and its icon, which the retired right-panel file surface owned.
- Sidebar.logic.ts / Sidebar.tsx: kept both imports; upstream's cursor-pointer
with Marcode's text-xs.
- sidebar/SidebarChrome.tsx: kept Marcode's footer. Upstream's whole delta was
the footer nav and brand FloatingPillNav owns.
- ThreadTerminalDrawer.tsx: kept Marcode's terminal chrome and adopted
upstream's close confirmation and terminal-background surface fix.
- PullRequestListFilters.tsx / _chat.pull-requests.tsx: took upstream's shared
Button trigger and its relocation of the refresh control, moving Marcode's
tooltip onto the control's new home.
- usage/UsagePage.tsx, routes/settings.tsx: took upstream's move onto the
shared WorkspacePageHeader and kept Marcode's tooltip on the refresh button.
- index.css: both blocks kept; they collided only on insertion point.
- routes/__root.tsx: render Marcode's DraftPromotionWatcher and upstream's new
PlanAgentSelectionHeal.
- threadSettled.ts: took upstream's changeRequestAutoSettles signature and its
activity anchor, keeping Marcode's one-hour warm window on top.
Clean merges that would have broken on Marcode
- The new macOS launch agent exported T3CODE_HOME; Marcode's launcher requires
MARCODE_HOME and exits without it, so the service would install and never
start. Both unit renderers now export the same key, pinned by a test.
- The launch agent label was com.t3tools.t3code.service, which would have made
a Marcode install and an upstream install the same launchd job — the macOS
half of the coexistence rule the systemd unit already holds. Now
app.marcode.service, pinned by a test.
- The new `t3 triage` CLI read T3CODE_HOME where every other Marcode entry
point reads MARCODE_HOME.
- An upstream test still asserted `systemctl --user disable --now
t3code.service`; Marcode installs marcode.service.
Fork pins updated
- workspaceTitlebar.fork.test.ts: upstream moved settings and usage onto the
shared header, which hardcodes the collapsed-sidebar inset. Marcode carries
its sidebarless inset forward as a `sidebarless` prop on that shared header;
the test now pins both the header honouring the flag and each route passing
it.
- upstream-sync-workflow.test.ts: the CI runner pin asserted an exact four-job
list, so upstream adding a job broke it for the wrong reason. It now asserts
no job carries a label the fork cannot schedule.
- SettingsSidebarNav.tsx: restored Marcode's page-level Back row after upstream
replaced it with the SidebarUtilityMenu this fork does not mount.
Coupled subtrees: pnpm-workspace.yaml moved only Clerk versions; the Effect
catalog and infra/relay/package.json are unchanged, so no vendored subtree sync
is due.
@github-actions

github-actionsBot commented Aug 21, 2026

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire12.6 KiB13.4 KiB+850 B (+6.6%)15.1 KiB
CodexThread snapshot wire6.3 KiB6.9 KiB+619 B (+9.6%)7.3 KiB
CodexLive turn WebSocket wire6.3 KiB6.5 KiB+231 B (+3.6%)7.8 KiB
CodexLive turn WebSocket decoded51.8 KiB55.0 KiB+3.2 KiB (+6.1%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire12.6 KiB13.5 KiB+873 B (+6.8%)15.1 KiB
ClaudeThread snapshot wire6.3 KiB6.9 KiB+632 B (+9.8%)7.3 KiB
ClaudeLive turn WebSocket wire6.3 KiB6.6 KiB+241 B (+3.7%)7.8 KiB
ClaudeLive turn WebSocket decoded52.7 KiB55.8 KiB+3.2 KiB (+6.0%)66.4 KiB
ClaudeLive turn messages16160 (0.0%)21

Baseline: 2ffb140 · PR result: 49471f6 · 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: 109.4 KiB
  • Claude decoded thread snapshot: 110.1 KiB

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

Upstream's test-suite split moved apps/server's tests into a new
`test_server` job. Marcode installs ripgrep for
`WorkspaceFileSystem.searchContent`, which shells out to it, and that step
stayed on `test` — a job that now explicitly excludes `t3`. The two
searchContent tests ran without ripgrep and returned zero matches.
Reproduced locally by hiding `rg`: the same two assertions fail, and all 25
pass with it present.
The existing pin named the `test` job by hand, so it stayed green through
the split. It now derives the job list from the workflow — any job running
package tests without excluding `t3` must install ripgrep — and fails
naming the offending job, which is verified by removing the step.
@maarcoChatGPT Codex Connector

Copy link
Copy Markdown
OwnerAuthor

Superseded by PR #51, the newer upstream sync through f035a0f4, which has now merged to main. Closing this older draft to keep the sync queue clean.

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

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

20 participants

@maarco@aoright@gbarros-dev@Bil0000@Rishet11@StiensWout@AugusDogus@tarik02@gsimone@t3dotgg@chrisdeeming@inayayousfi@RakshithBhat03@dbalders@maria-rcks@UtkarshUsername@SunkenInTime@lgwacker@jakeleventhal@sethwebster
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore(upstream): sync marcode through be7d35aa - #45

Closed
maarco wants to merge 77 commits into
mainfrom
claude/gracious-bohr-7j0afc
Closed

chore(upstream): sync marcode through be7d35aa#45
maarco wants to merge 77 commits into
mainfrom
claude/gracious-bohr-7j0afc

Conversation

@maarco

@maarcomaarco commented Aug 21, 2026

Copy link
Copy Markdown
Owner

What Changed

Merged pingdotgg/t3code@be7d35aa into Marcode — 75 upstream commits across 24 conflicted paths, resolved by hand. Draft on purpose: CI is green, but the live-client verification the runbook asks for on UI hotspots has not been run.

Conflict decisions

PathDecision
AGENTS.mdKept Marcode's structure. Adopted upstream's new Plans and work artifacts policy and its "never commit PR-only assets" rule. Dropped upstream's duplicate Verifying / Pull requests sections (Marcode has its own) and the user-count blurb.
.plans/effect-atom.mdAccepted upstream's deletion — Marcode's only edit was an identifier cleanup in a file upstream retired repo-wide.
.github/workflows/ci.ymlTook upstream's mobile-native change gate; kept Marcode's GitHub-hosted runner. See silent breaks below for the new jobs.
apps/server/src/cli/{connect,service}.tsAdopted upstream's macOS launchd support and platform-aware copy, rendered in Marcode's voice.
apps/web/src/components/files/{FileBrowserPanel,FilePreviewPanel}.tsxKept deleted. Upstream's refresh fix (pingdotgg#7490) targets the right-panel file surface Marcode retired; the floating editor's file tree has no refresh control, so there is no sibling to port it to.
ChatView.tsxKept Marcode's title-only ChatHeader and container-level panelLayoutControls, closing with upstream's WorkspacePageHeader. Composer shell keeps Marcode's transparent glass and takes upstream's attached-drawer modifier.
chat/ChatComposer.tsxTook upstream's new composer top drawer; re-applied Marcode's glass surface to the relocated composer surface div.
chat/ChatHeader.tsxKept Marcode's cluster. Upstream's inline rename and thread action menu belong to a header Marcode does not render, and those actions already have an entry point on the sidebar row.
chat/ComposerPendingApprovalPanel.tsxTook upstream's inline code chip. Marcode's only divergence was typography on a label the redesign removes.
chat/MessagesTimeline.tsxUpstream's dropped -mx-1 plus Marcode's text-sm.
RightPanelTabs.tsxAdopted upstream's tab mute control and add-surface keyboard shortcuts. Dropped the file-tab copy-path action, the Files surface and its icon — all owned by the retired right-panel file surface.
Sidebar.logic.ts, Sidebar.tsxKept both imports; upstream's cursor-pointer with Marcode's text-xs.
sidebar/SidebarChrome.tsxKept Marcode's footer. Upstream's whole delta was the footer nav and brand that FloatingPillNav owns.
ThreadTerminalDrawer.tsxKept Marcode's terminal chrome; adopted upstream's close confirmation and its terminal-background surface fix.
PullRequestListFilters.tsx, routes/_chat.pull-requests.tsxTook upstream's shared Button trigger and its relocation of the refresh control, moving Marcode's tooltip onto the control's new home.
usage/UsagePage.tsx, routes/settings.tsxTook upstream's move onto the shared WorkspacePageHeader; kept Marcode's tooltip on the refresh button.
index.cssBoth blocks kept — they collided only on insertion point.
routes/__root.tsxRender Marcode's DraftPromotionWatcherand upstream's new PlanAgentSelectionHeal.
threadSettled.tsTook upstream's changeRequestAutoSettles signature and its activity anchor; kept Marcode's one-hour warm window on top.

Clean merges that would have broken on Marcode

Five upstream changes produced no conflict and would have shipped broken. Four were caught by a fork-identity sweep of the merged tree; the fifth was caught by CI.

  1. macOS launch agent exported T3CODE_HOME. Marcode's launcher requires MARCODE_HOME and exits without it, so the background service would install and never start. Both unit renderers now export the same key, pinned by a test.
  2. Launch agent label was com.t3tools.t3code.service, which would make a Marcode install and an upstream install the same launchd job — the macOS half of the coexistence rule the systemd unit already holds. Now app.marcode.service, pinned by a test.
  3. New t3 triage CLI read T3CODE_HOME where every other Marcode entry point reads MARCODE_HOME.
  4. Three new CI jobs (Test Server, Rust, Mobile Native Changes) arrived with Blacksmith runner labels the fork cannot schedule — they would have queued forever. Remapped to ubuntu-24.04, and an upstream test still asserting systemctl --user disable --now t3code.service was corrected to marcode.service.
  5. Upstream's test-suite split moved apps/server's tests out from under Marcode's ripgrep install step (49471f6f). WorkspaceFileSystem.searchContent shells out to ripgrep, which the runner image does not carry; the step stayed on test, a job that now explicitly excludes t3, so the two searchContent tests ran without it and returned zero matches. Reproduced locally by hiding rg — same two assertions fail, 25/25 pass with it present.

Fork pins updated

  • workspaceTitlebar.fork.test.ts — upstream moved settings and usage onto the shared header, which hardcodes the collapsed-sidebar inset. Marcode carries its sidebarless inset forward as a sidebarless prop on that shared header; the test now pins both halves (the header honouring the flag, and each route passing it).
  • upstream-sync-workflow.test.tstwo pins were too narrow. The CI runner pin asserted an exact four-job list, so upstream adding a job broke it for the wrong reason; it now asserts that no job carries a label the fork cannot schedule. The ripgrep pin named ci.jobs.test by hand, so the test-suite split moved the search tests out from under it while the assertion stayed green and CI went red; it now derives the job list from the workflow — any job running package tests without excluding t3 must install ripgrep — and was verified to fail, naming the offending job, by removing the step.
  • SettingsSidebarNav.tsx — restored Marcode's page-level Back row after upstream replaced it with the SidebarUtilityMenu this fork does not mount.

Coupled subtrees:pnpm-workspace.yaml moved only Clerk versions; the Effect catalog and infra/relay/package.json are unchanged, so no vendored subtree sync is due.

Why

The scheduled sync found 75 new upstream commits with a conflicted delta, which the automation deliberately refuses to resolve. This is the hand-resolved integration branch that policy calls for: it keeps upstream's correctness, security and dependency work while preserving Marcode's floating navigation shell, retired right-panel file surfaces, unified workspace sidebar, and service identity.

Hotspot paths were treated as mandatory-review, not automatic keep-Marcode: upstream's macOS launchd support, terminal close confirmation, tab mute control, add-surface shortcuts, shared page header, and settled-thread activity anchor all landed inside customized files and were all taken.

UI Changes

Not captured. This merge touches several web surfaces (composer drawers, right-panel tabs, usage page, settings and pull-request headers, terminal chrome). The runbook's live-client pass has not been run in this environment, so before/after evidence still has to be produced — see Verification. Keeping the PR in draft until that lands.

Verification

CI green on 49471f6f — all four required checks (Check, Test, Mobile Native Static Analysis, Release Smoke) plus the new Test Server 1/2/3, Rust, and Mobile Native Changes. The thread-transfer budget report is within every ceiling.

Run locally (focused, per AGENTS.md):

  • vp test run over the touched surfaces, all passing: fork pins (workspaceTitlebar.fork, SidebarChrome.fork, upstream-sync-workflow), threadSettled, boot service / service launcher / service CLI, right panel store, the seven composer suites, RightPanelTabs, UsagePage, Sidebar.logic, ChatView.logic, threadActionMenu.logic, -chatIndexTitlebar, editor surface and open-floating-file, GitActionsControl.logic, shared/git, contracts/settings, contracts/orchestration, client-runtime/operations/projects.
  • vp run --filter typecheck: @t3tools/web, @t3tools/client-runtime, t3, @t3tools/contracts, @t3tools/shared — all clean.
  • vp fmt --check on the changed files, vp lint on apps/web/src, apps/server/src, packages/client-runtime/src, scripts — clean (warnings only, all pre-existing patterns).

Not verified:

  • Live web/mobile client verification, and the branding-asset check the runbook asks for on UI hotspots.
  • ThreadTerminalDrawer.test.ts could not run in the sync container (@aliimam/icons@1.1.3 ships a main pointing at a dist/index.cjs its tarball lacks). It passes in CI, which covers it.

Follow-up, not done here

Two pre-existing issues this PR surfaces but deliberately does not widen into:

  1. Native fingerprint diff will sit queued forever..github/workflows/mobile-fingerprint-check.yml is unchanged by this merge but still carries runs-on: blacksmith-8vcpu-ubuntu-2404, and the fork has no Blacksmith installation — the same class of break as item 4 above. It is advisory (the check is advisory: it always passes, the label is the signal) and not in requiredPullRequestChecks, so it leaves the PR unstable rather than blocked. Proposed patch: runs-on: ubuntu-24.04. Its only stated resource need is NODE_OPTIONS=--max-old-space-size=8192, and the GitHub-hosted image has 16 GB RAM, so the 8 GB heap fits — it will just be slower on 4 vCPU. Left alone here because the runbook says to audit those workflows individually rather than sweep the labels, and this one is not part of the upstream delta.
  2. The new upstream t3 triage CLI ships a playbook that names "T3 Code" throughout and points users at github.com/pingdotgg/t3code for filing issues. Only the functional MARCODE_HOME break was fixed; whether Marcode wants its own triage playbook and issue tracker is a product decision, and rebranding a 200-line upstream-owned file would widen this sync.

Checklist

  • This PR is small and focused — one concern: the upstream merge
  • I explained what changed and why
  • I included before/after screenshots for any UI changes — pending live-client pass
  • I included a video for animation/interaction changes — n/a

aorightand others added 30 commits August 18, 2026 13:38
…in GitHubPullRequestCli (pingdotgg#7385)
Signed-off-by: aoright <102943475+aoright@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
…t full speed (pingdotgg#7460)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…nt (pingdotgg#6563)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…tgg#6286)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: GPT-5.6 <noreply@openai.com>
t3dotggand others added 20 commits August 20, 2026 23:19
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: John William Creighton (s243a) <s243a@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ngdotgg#6326)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex Southwell <4596216+saphid@users.noreply.github.com>
Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>
…nment (pingdotgg#7292)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…otgg#7286)
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
…pingdotgg#7283)
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
75 upstream commits, 24 conflicted paths. Every conflict was resolved by hand,
combining upstream's intent with Marcode's, and the fork-boundary sweep caught
four upstream changes that merged cleanly but would have broken on Marcode.
Conflict decisions
- AGENTS.md: kept Marcode's structure; adopted upstream's new "Plans and work
artifacts" policy and its "never commit PR-only assets" rule. Dropped
upstream's duplicate Verifying/Pull requests sections (Marcode has its own)
and its user-count blurb.
- .plans/effect-atom.md: accepted upstream's deletion. Marcode's only edit was
an identifier cleanup in a file upstream retired repo-wide.
- .github/workflows/ci.yml: took upstream's mobile-native change gate; kept
Marcode's GitHub-hosted runner. Upstream's three new jobs arrived with
Blacksmith labels the fork cannot schedule — remapped to ubuntu-24.04.
- apps/server/src/cli/{connect,service}.ts: adopted upstream's macOS launchd
support and platform-aware copy, in Marcode's voice.
- apps/web/src/components/files/{FileBrowserPanel,FilePreviewPanel}.tsx: kept
deleted. Upstream's refresh fix (pingdotgg#7490) targets the right-panel file surface
Marcode retired; the floating editor's file tree has no refresh control, so
there is no sibling to port it to.
- ChatView.tsx: kept Marcode's title-only ChatHeader and container-level
panelLayoutControls, closing with upstream's WorkspacePageHeader. Composer
shell keeps Marcode's transparent glass and takes upstream's attached-drawer
modifier.
- ChatComposer.tsx: took upstream's new composer top drawer and re-applied
Marcode's glass surface to the relocated composer surface div.
- ChatHeader.tsx: kept Marcode's cluster. Upstream's inline rename and thread
action menu belong to a header Marcode does not render; those actions already
have an entry point on the sidebar row.
- ComposerPendingApprovalPanel.tsx: took upstream's inline code chip. Marcode's
only divergence was typography on a label the redesign removes.
- MessagesTimeline.tsx: upstream's dropped -mx-1 plus Marcode's text-sm.
- RightPanelTabs.tsx: adopted upstream's tab mute control and add-surface
keyboard shortcuts; dropped the file-tab copy-path action, the Files surface
and its icon, which the retired right-panel file surface owned.
- Sidebar.logic.ts / Sidebar.tsx: kept both imports; upstream's cursor-pointer
with Marcode's text-xs.
- sidebar/SidebarChrome.tsx: kept Marcode's footer. Upstream's whole delta was
the footer nav and brand FloatingPillNav owns.
- ThreadTerminalDrawer.tsx: kept Marcode's terminal chrome and adopted
upstream's close confirmation and terminal-background surface fix.
- PullRequestListFilters.tsx / _chat.pull-requests.tsx: took upstream's shared
Button trigger and its relocation of the refresh control, moving Marcode's
tooltip onto the control's new home.
- usage/UsagePage.tsx, routes/settings.tsx: took upstream's move onto the
shared WorkspacePageHeader and kept Marcode's tooltip on the refresh button.
- index.css: both blocks kept; they collided only on insertion point.
- routes/__root.tsx: render Marcode's DraftPromotionWatcher and upstream's new
PlanAgentSelectionHeal.
- threadSettled.ts: took upstream's changeRequestAutoSettles signature and its
activity anchor, keeping Marcode's one-hour warm window on top.
Clean merges that would have broken on Marcode
- The new macOS launch agent exported T3CODE_HOME; Marcode's launcher requires
MARCODE_HOME and exits without it, so the service would install and never
start. Both unit renderers now export the same key, pinned by a test.
- The launch agent label was com.t3tools.t3code.service, which would have made
a Marcode install and an upstream install the same launchd job — the macOS
half of the coexistence rule the systemd unit already holds. Now
app.marcode.service, pinned by a test.
- The new `t3 triage` CLI read T3CODE_HOME where every other Marcode entry
point reads MARCODE_HOME.
- An upstream test still asserted `systemctl --user disable --now
t3code.service`; Marcode installs marcode.service.
Fork pins updated
- workspaceTitlebar.fork.test.ts: upstream moved settings and usage onto the
shared header, which hardcodes the collapsed-sidebar inset. Marcode carries
its sidebarless inset forward as a `sidebarless` prop on that shared header;
the test now pins both the header honouring the flag and each route passing
it.
- upstream-sync-workflow.test.ts: the CI runner pin asserted an exact four-job
list, so upstream adding a job broke it for the wrong reason. It now asserts
no job carries a label the fork cannot schedule.
- SettingsSidebarNav.tsx: restored Marcode's page-level Back row after upstream
replaced it with the SidebarUtilityMenu this fork does not mount.
Coupled subtrees: pnpm-workspace.yaml moved only Clerk versions; the Effect
catalog and infra/relay/package.json are unchanged, so no vendored subtree sync
is due.
@github-actions

github-actionsBot commented Aug 21, 2026

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire12.6 KiB13.4 KiB+850 B (+6.6%)15.1 KiB
CodexThread snapshot wire6.3 KiB6.9 KiB+619 B (+9.6%)7.3 KiB
CodexLive turn WebSocket wire6.3 KiB6.5 KiB+231 B (+3.6%)7.8 KiB
CodexLive turn WebSocket decoded51.8 KiB55.0 KiB+3.2 KiB (+6.1%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire12.6 KiB13.5 KiB+873 B (+6.8%)15.1 KiB
ClaudeThread snapshot wire6.3 KiB6.9 KiB+632 B (+9.8%)7.3 KiB
ClaudeLive turn WebSocket wire6.3 KiB6.6 KiB+241 B (+3.7%)7.8 KiB
ClaudeLive turn WebSocket decoded52.7 KiB55.8 KiB+3.2 KiB (+6.0%)66.4 KiB
ClaudeLive turn messages16160 (0.0%)21

Baseline: 2ffb140 · PR result: 49471f6 · 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: 109.4 KiB
  • Claude decoded thread snapshot: 110.1 KiB

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

Upstream's test-suite split moved apps/server's tests into a new
`test_server` job. Marcode installs ripgrep for
`WorkspaceFileSystem.searchContent`, which shells out to it, and that step
stayed on `test` — a job that now explicitly excludes `t3`. The two
searchContent tests ran without ripgrep and returned zero matches.
Reproduced locally by hiding `rg`: the same two assertions fail, and all 25
pass with it present.
The existing pin named the `test` job by hand, so it stayed green through
the split. It now derives the job list from the workflow — any job running
package tests without excluding `t3` must install ripgrep — and fails
naming the offending job, which is verified by removing the step.
@maarcoChatGPT Codex Connector

Copy link
Copy Markdown
OwnerAuthor

Superseded by PR #51, the newer upstream sync through f035a0f4, which has now merged to main. Closing this older draft to keep the sync queue clean.

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

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

20 participants

@maarco@aoright@gbarros-dev@Bil0000@Rishet11@StiensWout@AugusDogus@tarik02@gsimone@t3dotgg@chrisdeeming@inayayousfi@RakshithBhat03@dbalders@maria-rcks@UtkarshUsername@SunkenInTime@lgwacker@jakeleventhal@sethwebster
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore(upstream): sync marcode through be7d35aa - #45

Closed
maarco wants to merge 77 commits into
mainfrom
claude/gracious-bohr-7j0afc
Closed

chore(upstream): sync marcode through be7d35aa#45
maarco wants to merge 77 commits into
mainfrom
claude/gracious-bohr-7j0afc

Conversation

@maarco

@maarcomaarco commented Aug 21, 2026

Copy link
Copy Markdown
Owner

What Changed

Merged pingdotgg/t3code@be7d35aa into Marcode — 75 upstream commits across 24 conflicted paths, resolved by hand. Draft on purpose: CI is green, but the live-client verification the runbook asks for on UI hotspots has not been run.

Conflict decisions

PathDecision
AGENTS.mdKept Marcode's structure. Adopted upstream's new Plans and work artifacts policy and its "never commit PR-only assets" rule. Dropped upstream's duplicate Verifying / Pull requests sections (Marcode has its own) and the user-count blurb.
.plans/effect-atom.mdAccepted upstream's deletion — Marcode's only edit was an identifier cleanup in a file upstream retired repo-wide.
.github/workflows/ci.ymlTook upstream's mobile-native change gate; kept Marcode's GitHub-hosted runner. See silent breaks below for the new jobs.
apps/server/src/cli/{connect,service}.tsAdopted upstream's macOS launchd support and platform-aware copy, rendered in Marcode's voice.
apps/web/src/components/files/{FileBrowserPanel,FilePreviewPanel}.tsxKept deleted. Upstream's refresh fix (pingdotgg#7490) targets the right-panel file surface Marcode retired; the floating editor's file tree has no refresh control, so there is no sibling to port it to.
ChatView.tsxKept Marcode's title-only ChatHeader and container-level panelLayoutControls, closing with upstream's WorkspacePageHeader. Composer shell keeps Marcode's transparent glass and takes upstream's attached-drawer modifier.
chat/ChatComposer.tsxTook upstream's new composer top drawer; re-applied Marcode's glass surface to the relocated composer surface div.
chat/ChatHeader.tsxKept Marcode's cluster. Upstream's inline rename and thread action menu belong to a header Marcode does not render, and those actions already have an entry point on the sidebar row.
chat/ComposerPendingApprovalPanel.tsxTook upstream's inline code chip. Marcode's only divergence was typography on a label the redesign removes.
chat/MessagesTimeline.tsxUpstream's dropped -mx-1 plus Marcode's text-sm.
RightPanelTabs.tsxAdopted upstream's tab mute control and add-surface keyboard shortcuts. Dropped the file-tab copy-path action, the Files surface and its icon — all owned by the retired right-panel file surface.
Sidebar.logic.ts, Sidebar.tsxKept both imports; upstream's cursor-pointer with Marcode's text-xs.
sidebar/SidebarChrome.tsxKept Marcode's footer. Upstream's whole delta was the footer nav and brand that FloatingPillNav owns.
ThreadTerminalDrawer.tsxKept Marcode's terminal chrome; adopted upstream's close confirmation and its terminal-background surface fix.
PullRequestListFilters.tsx, routes/_chat.pull-requests.tsxTook upstream's shared Button trigger and its relocation of the refresh control, moving Marcode's tooltip onto the control's new home.
usage/UsagePage.tsx, routes/settings.tsxTook upstream's move onto the shared WorkspacePageHeader; kept Marcode's tooltip on the refresh button.
index.cssBoth blocks kept — they collided only on insertion point.
routes/__root.tsxRender Marcode's DraftPromotionWatcherand upstream's new PlanAgentSelectionHeal.
threadSettled.tsTook upstream's changeRequestAutoSettles signature and its activity anchor; kept Marcode's one-hour warm window on top.

Clean merges that would have broken on Marcode

Five upstream changes produced no conflict and would have shipped broken. Four were caught by a fork-identity sweep of the merged tree; the fifth was caught by CI.

  1. macOS launch agent exported T3CODE_HOME. Marcode's launcher requires MARCODE_HOME and exits without it, so the background service would install and never start. Both unit renderers now export the same key, pinned by a test.
  2. Launch agent label was com.t3tools.t3code.service, which would make a Marcode install and an upstream install the same launchd job — the macOS half of the coexistence rule the systemd unit already holds. Now app.marcode.service, pinned by a test.
  3. New t3 triage CLI read T3CODE_HOME where every other Marcode entry point reads MARCODE_HOME.
  4. Three new CI jobs (Test Server, Rust, Mobile Native Changes) arrived with Blacksmith runner labels the fork cannot schedule — they would have queued forever. Remapped to ubuntu-24.04, and an upstream test still asserting systemctl --user disable --now t3code.service was corrected to marcode.service.
  5. Upstream's test-suite split moved apps/server's tests out from under Marcode's ripgrep install step (49471f6f). WorkspaceFileSystem.searchContent shells out to ripgrep, which the runner image does not carry; the step stayed on test, a job that now explicitly excludes t3, so the two searchContent tests ran without it and returned zero matches. Reproduced locally by hiding rg — same two assertions fail, 25/25 pass with it present.

Fork pins updated

  • workspaceTitlebar.fork.test.ts — upstream moved settings and usage onto the shared header, which hardcodes the collapsed-sidebar inset. Marcode carries its sidebarless inset forward as a sidebarless prop on that shared header; the test now pins both halves (the header honouring the flag, and each route passing it).
  • upstream-sync-workflow.test.tstwo pins were too narrow. The CI runner pin asserted an exact four-job list, so upstream adding a job broke it for the wrong reason; it now asserts that no job carries a label the fork cannot schedule. The ripgrep pin named ci.jobs.test by hand, so the test-suite split moved the search tests out from under it while the assertion stayed green and CI went red; it now derives the job list from the workflow — any job running package tests without excluding t3 must install ripgrep — and was verified to fail, naming the offending job, by removing the step.
  • SettingsSidebarNav.tsx — restored Marcode's page-level Back row after upstream replaced it with the SidebarUtilityMenu this fork does not mount.

Coupled subtrees:pnpm-workspace.yaml moved only Clerk versions; the Effect catalog and infra/relay/package.json are unchanged, so no vendored subtree sync is due.

Why

The scheduled sync found 75 new upstream commits with a conflicted delta, which the automation deliberately refuses to resolve. This is the hand-resolved integration branch that policy calls for: it keeps upstream's correctness, security and dependency work while preserving Marcode's floating navigation shell, retired right-panel file surfaces, unified workspace sidebar, and service identity.

Hotspot paths were treated as mandatory-review, not automatic keep-Marcode: upstream's macOS launchd support, terminal close confirmation, tab mute control, add-surface shortcuts, shared page header, and settled-thread activity anchor all landed inside customized files and were all taken.

UI Changes

Not captured. This merge touches several web surfaces (composer drawers, right-panel tabs, usage page, settings and pull-request headers, terminal chrome). The runbook's live-client pass has not been run in this environment, so before/after evidence still has to be produced — see Verification. Keeping the PR in draft until that lands.

Verification

CI green on 49471f6f — all four required checks (Check, Test, Mobile Native Static Analysis, Release Smoke) plus the new Test Server 1/2/3, Rust, and Mobile Native Changes. The thread-transfer budget report is within every ceiling.

Run locally (focused, per AGENTS.md):

  • vp test run over the touched surfaces, all passing: fork pins (workspaceTitlebar.fork, SidebarChrome.fork, upstream-sync-workflow), threadSettled, boot service / service launcher / service CLI, right panel store, the seven composer suites, RightPanelTabs, UsagePage, Sidebar.logic, ChatView.logic, threadActionMenu.logic, -chatIndexTitlebar, editor surface and open-floating-file, GitActionsControl.logic, shared/git, contracts/settings, contracts/orchestration, client-runtime/operations/projects.
  • vp run --filter typecheck: @t3tools/web, @t3tools/client-runtime, t3, @t3tools/contracts, @t3tools/shared — all clean.
  • vp fmt --check on the changed files, vp lint on apps/web/src, apps/server/src, packages/client-runtime/src, scripts — clean (warnings only, all pre-existing patterns).

Not verified:

  • Live web/mobile client verification, and the branding-asset check the runbook asks for on UI hotspots.
  • ThreadTerminalDrawer.test.ts could not run in the sync container (@aliimam/icons@1.1.3 ships a main pointing at a dist/index.cjs its tarball lacks). It passes in CI, which covers it.

Follow-up, not done here

Two pre-existing issues this PR surfaces but deliberately does not widen into:

  1. Native fingerprint diff will sit queued forever..github/workflows/mobile-fingerprint-check.yml is unchanged by this merge but still carries runs-on: blacksmith-8vcpu-ubuntu-2404, and the fork has no Blacksmith installation — the same class of break as item 4 above. It is advisory (the check is advisory: it always passes, the label is the signal) and not in requiredPullRequestChecks, so it leaves the PR unstable rather than blocked. Proposed patch: runs-on: ubuntu-24.04. Its only stated resource need is NODE_OPTIONS=--max-old-space-size=8192, and the GitHub-hosted image has 16 GB RAM, so the 8 GB heap fits — it will just be slower on 4 vCPU. Left alone here because the runbook says to audit those workflows individually rather than sweep the labels, and this one is not part of the upstream delta.
  2. The new upstream t3 triage CLI ships a playbook that names "T3 Code" throughout and points users at github.com/pingdotgg/t3code for filing issues. Only the functional MARCODE_HOME break was fixed; whether Marcode wants its own triage playbook and issue tracker is a product decision, and rebranding a 200-line upstream-owned file would widen this sync.

Checklist

  • This PR is small and focused — one concern: the upstream merge
  • I explained what changed and why
  • I included before/after screenshots for any UI changes — pending live-client pass
  • I included a video for animation/interaction changes — n/a

aorightand others added 30 commits August 18, 2026 13:38
…in GitHubPullRequestCli (pingdotgg#7385)
Signed-off-by: aoright <102943475+aoright@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
…t full speed (pingdotgg#7460)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…nt (pingdotgg#6563)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…tgg#6286)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: GPT-5.6 <noreply@openai.com>
t3dotggand others added 20 commits August 20, 2026 23:19
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: John William Creighton (s243a) <s243a@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ngdotgg#6326)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex Southwell <4596216+saphid@users.noreply.github.com>
Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>
…nment (pingdotgg#7292)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…otgg#7286)
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
…pingdotgg#7283)
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
75 upstream commits, 24 conflicted paths. Every conflict was resolved by hand,
combining upstream's intent with Marcode's, and the fork-boundary sweep caught
four upstream changes that merged cleanly but would have broken on Marcode.
Conflict decisions
- AGENTS.md: kept Marcode's structure; adopted upstream's new "Plans and work
artifacts" policy and its "never commit PR-only assets" rule. Dropped
upstream's duplicate Verifying/Pull requests sections (Marcode has its own)
and its user-count blurb.
- .plans/effect-atom.md: accepted upstream's deletion. Marcode's only edit was
an identifier cleanup in a file upstream retired repo-wide.
- .github/workflows/ci.yml: took upstream's mobile-native change gate; kept
Marcode's GitHub-hosted runner. Upstream's three new jobs arrived with
Blacksmith labels the fork cannot schedule — remapped to ubuntu-24.04.
- apps/server/src/cli/{connect,service}.ts: adopted upstream's macOS launchd
support and platform-aware copy, in Marcode's voice.
- apps/web/src/components/files/{FileBrowserPanel,FilePreviewPanel}.tsx: kept
deleted. Upstream's refresh fix (pingdotgg#7490) targets the right-panel file surface
Marcode retired; the floating editor's file tree has no refresh control, so
there is no sibling to port it to.
- ChatView.tsx: kept Marcode's title-only ChatHeader and container-level
panelLayoutControls, closing with upstream's WorkspacePageHeader. Composer
shell keeps Marcode's transparent glass and takes upstream's attached-drawer
modifier.
- ChatComposer.tsx: took upstream's new composer top drawer and re-applied
Marcode's glass surface to the relocated composer surface div.
- ChatHeader.tsx: kept Marcode's cluster. Upstream's inline rename and thread
action menu belong to a header Marcode does not render; those actions already
have an entry point on the sidebar row.
- ComposerPendingApprovalPanel.tsx: took upstream's inline code chip. Marcode's
only divergence was typography on a label the redesign removes.
- MessagesTimeline.tsx: upstream's dropped -mx-1 plus Marcode's text-sm.
- RightPanelTabs.tsx: adopted upstream's tab mute control and add-surface
keyboard shortcuts; dropped the file-tab copy-path action, the Files surface
and its icon, which the retired right-panel file surface owned.
- Sidebar.logic.ts / Sidebar.tsx: kept both imports; upstream's cursor-pointer
with Marcode's text-xs.
- sidebar/SidebarChrome.tsx: kept Marcode's footer. Upstream's whole delta was
the footer nav and brand FloatingPillNav owns.
- ThreadTerminalDrawer.tsx: kept Marcode's terminal chrome and adopted
upstream's close confirmation and terminal-background surface fix.
- PullRequestListFilters.tsx / _chat.pull-requests.tsx: took upstream's shared
Button trigger and its relocation of the refresh control, moving Marcode's
tooltip onto the control's new home.
- usage/UsagePage.tsx, routes/settings.tsx: took upstream's move onto the
shared WorkspacePageHeader and kept Marcode's tooltip on the refresh button.
- index.css: both blocks kept; they collided only on insertion point.
- routes/__root.tsx: render Marcode's DraftPromotionWatcher and upstream's new
PlanAgentSelectionHeal.
- threadSettled.ts: took upstream's changeRequestAutoSettles signature and its
activity anchor, keeping Marcode's one-hour warm window on top.
Clean merges that would have broken on Marcode
- The new macOS launch agent exported T3CODE_HOME; Marcode's launcher requires
MARCODE_HOME and exits without it, so the service would install and never
start. Both unit renderers now export the same key, pinned by a test.
- The launch agent label was com.t3tools.t3code.service, which would have made
a Marcode install and an upstream install the same launchd job — the macOS
half of the coexistence rule the systemd unit already holds. Now
app.marcode.service, pinned by a test.
- The new `t3 triage` CLI read T3CODE_HOME where every other Marcode entry
point reads MARCODE_HOME.
- An upstream test still asserted `systemctl --user disable --now
t3code.service`; Marcode installs marcode.service.
Fork pins updated
- workspaceTitlebar.fork.test.ts: upstream moved settings and usage onto the
shared header, which hardcodes the collapsed-sidebar inset. Marcode carries
its sidebarless inset forward as a `sidebarless` prop on that shared header;
the test now pins both the header honouring the flag and each route passing
it.
- upstream-sync-workflow.test.ts: the CI runner pin asserted an exact four-job
list, so upstream adding a job broke it for the wrong reason. It now asserts
no job carries a label the fork cannot schedule.
- SettingsSidebarNav.tsx: restored Marcode's page-level Back row after upstream
replaced it with the SidebarUtilityMenu this fork does not mount.
Coupled subtrees: pnpm-workspace.yaml moved only Clerk versions; the Effect
catalog and infra/relay/package.json are unchanged, so no vendored subtree sync
is due.
@github-actions

github-actionsBot commented Aug 21, 2026

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire12.6 KiB13.4 KiB+850 B (+6.6%)15.1 KiB
CodexThread snapshot wire6.3 KiB6.9 KiB+619 B (+9.6%)7.3 KiB
CodexLive turn WebSocket wire6.3 KiB6.5 KiB+231 B (+3.6%)7.8 KiB
CodexLive turn WebSocket decoded51.8 KiB55.0 KiB+3.2 KiB (+6.1%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire12.6 KiB13.5 KiB+873 B (+6.8%)15.1 KiB
ClaudeThread snapshot wire6.3 KiB6.9 KiB+632 B (+9.8%)7.3 KiB
ClaudeLive turn WebSocket wire6.3 KiB6.6 KiB+241 B (+3.7%)7.8 KiB
ClaudeLive turn WebSocket decoded52.7 KiB55.8 KiB+3.2 KiB (+6.0%)66.4 KiB
ClaudeLive turn messages16160 (0.0%)21

Baseline: 2ffb140 · PR result: 49471f6 · 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: 109.4 KiB
  • Claude decoded thread snapshot: 110.1 KiB

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

Upstream's test-suite split moved apps/server's tests into a new
`test_server` job. Marcode installs ripgrep for
`WorkspaceFileSystem.searchContent`, which shells out to it, and that step
stayed on `test` — a job that now explicitly excludes `t3`. The two
searchContent tests ran without ripgrep and returned zero matches.
Reproduced locally by hiding `rg`: the same two assertions fail, and all 25
pass with it present.
The existing pin named the `test` job by hand, so it stayed green through
the split. It now derives the job list from the workflow — any job running
package tests without excluding `t3` must install ripgrep — and fails
naming the offending job, which is verified by removing the step.
@maarcoChatGPT Codex Connector

Copy link
Copy Markdown
OwnerAuthor

Superseded by PR #51, the newer upstream sync through f035a0f4, which has now merged to main. Closing this older draft to keep the sync queue clean.

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

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

20 participants

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

chore(upstream): sync marcode through be7d35aa - #45

Closed
maarco wants to merge 77 commits into
mainfrom
claude/gracious-bohr-7j0afc
Closed

chore(upstream): sync marcode through be7d35aa#45
maarco wants to merge 77 commits into
mainfrom
claude/gracious-bohr-7j0afc

Conversation

@maarco

@maarcomaarco commented Aug 21, 2026

Copy link
Copy Markdown
Owner

What Changed

Merged pingdotgg/t3code@be7d35aa into Marcode — 75 upstream commits across 24 conflicted paths, resolved by hand. Draft on purpose: CI is green, but the live-client verification the runbook asks for on UI hotspots has not been run.

Conflict decisions

PathDecision
AGENTS.mdKept Marcode's structure. Adopted upstream's new Plans and work artifacts policy and its "never commit PR-only assets" rule. Dropped upstream's duplicate Verifying / Pull requests sections (Marcode has its own) and the user-count blurb.
.plans/effect-atom.mdAccepted upstream's deletion — Marcode's only edit was an identifier cleanup in a file upstream retired repo-wide.
.github/workflows/ci.ymlTook upstream's mobile-native change gate; kept Marcode's GitHub-hosted runner. See silent breaks below for the new jobs.
apps/server/src/cli/{connect,service}.tsAdopted upstream's macOS launchd support and platform-aware copy, rendered in Marcode's voice.
apps/web/src/components/files/{FileBrowserPanel,FilePreviewPanel}.tsxKept deleted. Upstream's refresh fix (pingdotgg#7490) targets the right-panel file surface Marcode retired; the floating editor's file tree has no refresh control, so there is no sibling to port it to.
ChatView.tsxKept Marcode's title-only ChatHeader and container-level panelLayoutControls, closing with upstream's WorkspacePageHeader. Composer shell keeps Marcode's transparent glass and takes upstream's attached-drawer modifier.
chat/ChatComposer.tsxTook upstream's new composer top drawer; re-applied Marcode's glass surface to the relocated composer surface div.
chat/ChatHeader.tsxKept Marcode's cluster. Upstream's inline rename and thread action menu belong to a header Marcode does not render, and those actions already have an entry point on the sidebar row.
chat/ComposerPendingApprovalPanel.tsxTook upstream's inline code chip. Marcode's only divergence was typography on a label the redesign removes.
chat/MessagesTimeline.tsxUpstream's dropped -mx-1 plus Marcode's text-sm.
RightPanelTabs.tsxAdopted upstream's tab mute control and add-surface keyboard shortcuts. Dropped the file-tab copy-path action, the Files surface and its icon — all owned by the retired right-panel file surface.
Sidebar.logic.ts, Sidebar.tsxKept both imports; upstream's cursor-pointer with Marcode's text-xs.
sidebar/SidebarChrome.tsxKept Marcode's footer. Upstream's whole delta was the footer nav and brand that FloatingPillNav owns.
ThreadTerminalDrawer.tsxKept Marcode's terminal chrome; adopted upstream's close confirmation and its terminal-background surface fix.
PullRequestListFilters.tsx, routes/_chat.pull-requests.tsxTook upstream's shared Button trigger and its relocation of the refresh control, moving Marcode's tooltip onto the control's new home.
usage/UsagePage.tsx, routes/settings.tsxTook upstream's move onto the shared WorkspacePageHeader; kept Marcode's tooltip on the refresh button.
index.cssBoth blocks kept — they collided only on insertion point.
routes/__root.tsxRender Marcode's DraftPromotionWatcherand upstream's new PlanAgentSelectionHeal.
threadSettled.tsTook upstream's changeRequestAutoSettles signature and its activity anchor; kept Marcode's one-hour warm window on top.

Clean merges that would have broken on Marcode

Five upstream changes produced no conflict and would have shipped broken. Four were caught by a fork-identity sweep of the merged tree; the fifth was caught by CI.

  1. macOS launch agent exported T3CODE_HOME. Marcode's launcher requires MARCODE_HOME and exits without it, so the background service would install and never start. Both unit renderers now export the same key, pinned by a test.
  2. Launch agent label was com.t3tools.t3code.service, which would make a Marcode install and an upstream install the same launchd job — the macOS half of the coexistence rule the systemd unit already holds. Now app.marcode.service, pinned by a test.
  3. New t3 triage CLI read T3CODE_HOME where every other Marcode entry point reads MARCODE_HOME.
  4. Three new CI jobs (Test Server, Rust, Mobile Native Changes) arrived with Blacksmith runner labels the fork cannot schedule — they would have queued forever. Remapped to ubuntu-24.04, and an upstream test still asserting systemctl --user disable --now t3code.service was corrected to marcode.service.
  5. Upstream's test-suite split moved apps/server's tests out from under Marcode's ripgrep install step (49471f6f). WorkspaceFileSystem.searchContent shells out to ripgrep, which the runner image does not carry; the step stayed on test, a job that now explicitly excludes t3, so the two searchContent tests ran without it and returned zero matches. Reproduced locally by hiding rg — same two assertions fail, 25/25 pass with it present.

Fork pins updated

  • workspaceTitlebar.fork.test.ts — upstream moved settings and usage onto the shared header, which hardcodes the collapsed-sidebar inset. Marcode carries its sidebarless inset forward as a sidebarless prop on that shared header; the test now pins both halves (the header honouring the flag, and each route passing it).
  • upstream-sync-workflow.test.tstwo pins were too narrow. The CI runner pin asserted an exact four-job list, so upstream adding a job broke it for the wrong reason; it now asserts that no job carries a label the fork cannot schedule. The ripgrep pin named ci.jobs.test by hand, so the test-suite split moved the search tests out from under it while the assertion stayed green and CI went red; it now derives the job list from the workflow — any job running package tests without excluding t3 must install ripgrep — and was verified to fail, naming the offending job, by removing the step.
  • SettingsSidebarNav.tsx — restored Marcode's page-level Back row after upstream replaced it with the SidebarUtilityMenu this fork does not mount.

Coupled subtrees:pnpm-workspace.yaml moved only Clerk versions; the Effect catalog and infra/relay/package.json are unchanged, so no vendored subtree sync is due.

Why

The scheduled sync found 75 new upstream commits with a conflicted delta, which the automation deliberately refuses to resolve. This is the hand-resolved integration branch that policy calls for: it keeps upstream's correctness, security and dependency work while preserving Marcode's floating navigation shell, retired right-panel file surfaces, unified workspace sidebar, and service identity.

Hotspot paths were treated as mandatory-review, not automatic keep-Marcode: upstream's macOS launchd support, terminal close confirmation, tab mute control, add-surface shortcuts, shared page header, and settled-thread activity anchor all landed inside customized files and were all taken.

UI Changes

Not captured. This merge touches several web surfaces (composer drawers, right-panel tabs, usage page, settings and pull-request headers, terminal chrome). The runbook's live-client pass has not been run in this environment, so before/after evidence still has to be produced — see Verification. Keeping the PR in draft until that lands.

Verification

CI green on 49471f6f — all four required checks (Check, Test, Mobile Native Static Analysis, Release Smoke) plus the new Test Server 1/2/3, Rust, and Mobile Native Changes. The thread-transfer budget report is within every ceiling.

Run locally (focused, per AGENTS.md):

  • vp test run over the touched surfaces, all passing: fork pins (workspaceTitlebar.fork, SidebarChrome.fork, upstream-sync-workflow), threadSettled, boot service / service launcher / service CLI, right panel store, the seven composer suites, RightPanelTabs, UsagePage, Sidebar.logic, ChatView.logic, threadActionMenu.logic, -chatIndexTitlebar, editor surface and open-floating-file, GitActionsControl.logic, shared/git, contracts/settings, contracts/orchestration, client-runtime/operations/projects.
  • vp run --filter typecheck: @t3tools/web, @t3tools/client-runtime, t3, @t3tools/contracts, @t3tools/shared — all clean.
  • vp fmt --check on the changed files, vp lint on apps/web/src, apps/server/src, packages/client-runtime/src, scripts — clean (warnings only, all pre-existing patterns).

Not verified:

  • Live web/mobile client verification, and the branding-asset check the runbook asks for on UI hotspots.
  • ThreadTerminalDrawer.test.ts could not run in the sync container (@aliimam/icons@1.1.3 ships a main pointing at a dist/index.cjs its tarball lacks). It passes in CI, which covers it.

Follow-up, not done here

Two pre-existing issues this PR surfaces but deliberately does not widen into:

  1. Native fingerprint diff will sit queued forever..github/workflows/mobile-fingerprint-check.yml is unchanged by this merge but still carries runs-on: blacksmith-8vcpu-ubuntu-2404, and the fork has no Blacksmith installation — the same class of break as item 4 above. It is advisory (the check is advisory: it always passes, the label is the signal) and not in requiredPullRequestChecks, so it leaves the PR unstable rather than blocked. Proposed patch: runs-on: ubuntu-24.04. Its only stated resource need is NODE_OPTIONS=--max-old-space-size=8192, and the GitHub-hosted image has 16 GB RAM, so the 8 GB heap fits — it will just be slower on 4 vCPU. Left alone here because the runbook says to audit those workflows individually rather than sweep the labels, and this one is not part of the upstream delta.
  2. The new upstream t3 triage CLI ships a playbook that names "T3 Code" throughout and points users at github.com/pingdotgg/t3code for filing issues. Only the functional MARCODE_HOME break was fixed; whether Marcode wants its own triage playbook and issue tracker is a product decision, and rebranding a 200-line upstream-owned file would widen this sync.

Checklist

  • This PR is small and focused — one concern: the upstream merge
  • I explained what changed and why
  • I included before/after screenshots for any UI changes — pending live-client pass
  • I included a video for animation/interaction changes — n/a

aorightand others added 30 commits August 18, 2026 13:38
…in GitHubPullRequestCli (pingdotgg#7385)
Signed-off-by: aoright <102943475+aoright@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
…t full speed (pingdotgg#7460)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…nt (pingdotgg#6563)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…tgg#6286)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: GPT-5.6 <noreply@openai.com>
t3dotggand others added 20 commits August 20, 2026 23:19
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: John William Creighton (s243a) <s243a@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ngdotgg#6326)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex Southwell <4596216+saphid@users.noreply.github.com>
Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>
…nment (pingdotgg#7292)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…otgg#7286)
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
…pingdotgg#7283)
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
75 upstream commits, 24 conflicted paths. Every conflict was resolved by hand,
combining upstream's intent with Marcode's, and the fork-boundary sweep caught
four upstream changes that merged cleanly but would have broken on Marcode.
Conflict decisions
- AGENTS.md: kept Marcode's structure; adopted upstream's new "Plans and work
artifacts" policy and its "never commit PR-only assets" rule. Dropped
upstream's duplicate Verifying/Pull requests sections (Marcode has its own)
and its user-count blurb.
- .plans/effect-atom.md: accepted upstream's deletion. Marcode's only edit was
an identifier cleanup in a file upstream retired repo-wide.
- .github/workflows/ci.yml: took upstream's mobile-native change gate; kept
Marcode's GitHub-hosted runner. Upstream's three new jobs arrived with
Blacksmith labels the fork cannot schedule — remapped to ubuntu-24.04.
- apps/server/src/cli/{connect,service}.ts: adopted upstream's macOS launchd
support and platform-aware copy, in Marcode's voice.
- apps/web/src/components/files/{FileBrowserPanel,FilePreviewPanel}.tsx: kept
deleted. Upstream's refresh fix (pingdotgg#7490) targets the right-panel file surface
Marcode retired; the floating editor's file tree has no refresh control, so
there is no sibling to port it to.
- ChatView.tsx: kept Marcode's title-only ChatHeader and container-level
panelLayoutControls, closing with upstream's WorkspacePageHeader. Composer
shell keeps Marcode's transparent glass and takes upstream's attached-drawer
modifier.
- ChatComposer.tsx: took upstream's new composer top drawer and re-applied
Marcode's glass surface to the relocated composer surface div.
- ChatHeader.tsx: kept Marcode's cluster. Upstream's inline rename and thread
action menu belong to a header Marcode does not render; those actions already
have an entry point on the sidebar row.
- ComposerPendingApprovalPanel.tsx: took upstream's inline code chip. Marcode's
only divergence was typography on a label the redesign removes.
- MessagesTimeline.tsx: upstream's dropped -mx-1 plus Marcode's text-sm.
- RightPanelTabs.tsx: adopted upstream's tab mute control and add-surface
keyboard shortcuts; dropped the file-tab copy-path action, the Files surface
and its icon, which the retired right-panel file surface owned.
- Sidebar.logic.ts / Sidebar.tsx: kept both imports; upstream's cursor-pointer
with Marcode's text-xs.
- sidebar/SidebarChrome.tsx: kept Marcode's footer. Upstream's whole delta was
the footer nav and brand FloatingPillNav owns.
- ThreadTerminalDrawer.tsx: kept Marcode's terminal chrome and adopted
upstream's close confirmation and terminal-background surface fix.
- PullRequestListFilters.tsx / _chat.pull-requests.tsx: took upstream's shared
Button trigger and its relocation of the refresh control, moving Marcode's
tooltip onto the control's new home.
- usage/UsagePage.tsx, routes/settings.tsx: took upstream's move onto the
shared WorkspacePageHeader and kept Marcode's tooltip on the refresh button.
- index.css: both blocks kept; they collided only on insertion point.
- routes/__root.tsx: render Marcode's DraftPromotionWatcher and upstream's new
PlanAgentSelectionHeal.
- threadSettled.ts: took upstream's changeRequestAutoSettles signature and its
activity anchor, keeping Marcode's one-hour warm window on top.
Clean merges that would have broken on Marcode
- The new macOS launch agent exported T3CODE_HOME; Marcode's launcher requires
MARCODE_HOME and exits without it, so the service would install and never
start. Both unit renderers now export the same key, pinned by a test.
- The launch agent label was com.t3tools.t3code.service, which would have made
a Marcode install and an upstream install the same launchd job — the macOS
half of the coexistence rule the systemd unit already holds. Now
app.marcode.service, pinned by a test.
- The new `t3 triage` CLI read T3CODE_HOME where every other Marcode entry
point reads MARCODE_HOME.
- An upstream test still asserted `systemctl --user disable --now
t3code.service`; Marcode installs marcode.service.
Fork pins updated
- workspaceTitlebar.fork.test.ts: upstream moved settings and usage onto the
shared header, which hardcodes the collapsed-sidebar inset. Marcode carries
its sidebarless inset forward as a `sidebarless` prop on that shared header;
the test now pins both the header honouring the flag and each route passing
it.
- upstream-sync-workflow.test.ts: the CI runner pin asserted an exact four-job
list, so upstream adding a job broke it for the wrong reason. It now asserts
no job carries a label the fork cannot schedule.
- SettingsSidebarNav.tsx: restored Marcode's page-level Back row after upstream
replaced it with the SidebarUtilityMenu this fork does not mount.
Coupled subtrees: pnpm-workspace.yaml moved only Clerk versions; the Effect
catalog and infra/relay/package.json are unchanged, so no vendored subtree sync
is due.
@github-actions

github-actionsBot commented Aug 21, 2026

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire12.6 KiB13.4 KiB+850 B (+6.6%)15.1 KiB
CodexThread snapshot wire6.3 KiB6.9 KiB+619 B (+9.6%)7.3 KiB
CodexLive turn WebSocket wire6.3 KiB6.5 KiB+231 B (+3.6%)7.8 KiB
CodexLive turn WebSocket decoded51.8 KiB55.0 KiB+3.2 KiB (+6.1%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire12.6 KiB13.5 KiB+873 B (+6.8%)15.1 KiB
ClaudeThread snapshot wire6.3 KiB6.9 KiB+632 B (+9.8%)7.3 KiB
ClaudeLive turn WebSocket wire6.3 KiB6.6 KiB+241 B (+3.7%)7.8 KiB
ClaudeLive turn WebSocket decoded52.7 KiB55.8 KiB+3.2 KiB (+6.0%)66.4 KiB
ClaudeLive turn messages16160 (0.0%)21

Baseline: 2ffb140 · PR result: 49471f6 · 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: 109.4 KiB
  • Claude decoded thread snapshot: 110.1 KiB

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

Upstream's test-suite split moved apps/server's tests into a new
`test_server` job. Marcode installs ripgrep for
`WorkspaceFileSystem.searchContent`, which shells out to it, and that step
stayed on `test` — a job that now explicitly excludes `t3`. The two
searchContent tests ran without ripgrep and returned zero matches.
Reproduced locally by hiding `rg`: the same two assertions fail, and all 25
pass with it present.
The existing pin named the `test` job by hand, so it stayed green through
the split. It now derives the job list from the workflow — any job running
package tests without excluding `t3` must install ripgrep — and fails
naming the offending job, which is verified by removing the step.
@maarcoChatGPT Codex Connector

Copy link
Copy Markdown
OwnerAuthor

Superseded by PR #51, the newer upstream sync through f035a0f4, which has now merged to main. Closing this older draft to keep the sync queue clean.

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

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

20 participants

@maarco@aoright@gbarros-dev@Bil0000@Rishet11@StiensWout@AugusDogus@tarik02@gsimone@t3dotgg@chrisdeeming@inayayousfi@RakshithBhat03@dbalders@maria-rcks@UtkarshUsername@SunkenInTime@lgwacker@jakeleventhal@sethwebster