Skip to content

chore(upstream): sync marcode through b1670ac7 - #49

Closed
maarco wants to merge 112 commits into
mainfrom
claude/gracious-bohr-x80z9c
Closed

chore(upstream): sync marcode through b1670ac7#49
maarco wants to merge 112 commits into
mainfrom
claude/gracious-bohr-x80z9c

Conversation

@maarco

Copy link
Copy Markdown
Owner

What Changed

Merges pingdotgg/t3code@b1670ac7 (111 upstream commits, merge base 82b8a938) into main as a
normal two-parent merge on claude/gracious-bohr-x80z9c. 27 conflicted paths were resolved by hand;
no file was taken wholesale from either side.

The full per-path decision record is in the merge commit body. The parts that need a reviewer's eye:

Fork-identity breaks that merged clean and would have failed silently

  • apps/server/src/cloud/bootService.ts — upstream's new macOS launchd plist (feat(server): run the background service on macOS via launchd pingdotgg/t3code#6286) exports
    T3CODE_HOME. resolveLauncherBaseDir reads MARCODE_HOME and exits otherwise, so the launch
    agent would never have started a server. Renamed and pinned with a test.
  • apps/server/src/cli/triage.ts — upstream's new t3 triage command (feat(cli): npx t3 triage hands broken installs to your own coding agent pingdotgg/t3code#6563) read T3CODE_HOME.
  • apps/server/src/cloud/bootService.test.ts — an upstream assertion hardcoded
    systemctl --user disable --now t3code.service; Marcode's unit is marcode.service.
  • docs/user/background-service.md — new upstream doc pointed users at
    ~/.config/systemd/user/t3code.service.
  • apps/web/src/components/ChatView.tsx — upstream's cmd+enter background draft (feat(web): cmd+enter to create thread in background pingdotgg/t3code#7821) calls
    handleNewThread, which arrived in a hunk Marcode had restructured for the pill-nav header. It
    merged clean into a ChatView that never declared it (caught by typecheck).
  • .github/workflows/ci.yml — upstream added three jobs (test_server, rust,
    mobile_native_changes) on its Blacksmith fleet, which this fork cannot schedule on. All mapped to
    GitHub-hosted runners. Upstream also sharded apps/server out of test into test_server, which
    moved WorkspaceFileSystem's tests away from Marcode's ripgrep install step — the step follows
    them.

Marcode contracts held, upstream fixes taken on top

Tests added or rewritten to pin the boundary

  • ChatHeader.fork.test.tsx (new) — the header renders the title alone: no breadcrumb, rename, or
    action menu.
  • bootService.test.ts — the launchd plist exports MARCODE_HOME and no T3CODE_HOME.
  • workspaceTitlebar.fork.test.ts — rewritten to follow upstream's header refactor: the drag region
    now lives in WorkspacePageHeader, and each sidebarless call site must supply the unconditional
    inset. (This test failed on the raw merge — the pin worked.)
  • upstream-sync-workflow.test.ts — the two CI pins rewritten as invariants (no Blacksmith runner in
    ci.yml; whichever job runs --filter t3 test installs ripgrep) rather than positions, so they
    survive upstream adding jobs.
  • Migrations.test.ts — extended to cover id 42.

Why

The daily upstream sync found 111 new commits. This is the reviewable merge; it is a draft because
the per-hotspot decisions above want a human read, and because two things still need attention:

  • t3 triage points at upstream. The new apps/server/src/cli/triagePrompt.ts tells the user to
    search issues in pingdotgg/t3code, fetch PLAYBOOK.md from that repo, and file at
    github.com/pingdotgg/t3code/issues/new. Only the MARCODE_HOME read and the command description
    were retargeted — where Marcode users should file triage issues is a product call, and rewriting
    the whole playbook would be a large permanent edit surface in a brand-new upstream file.
  • No live client verification. This container has no browser or simulator, so the web and mobile
    surfaces touched here (composer drawers, right-panel tabs, terminal chrome, usage redesign,
    settings/usage headers) have not been driven. Worth one pass with test-t3-app before this comes
    out of draft.

UI Changes

Not captured — this container cannot drive a client. Upstream's own UI work in this range (usage
insights redesign pingdotgg#7147, composer state drawers pingdotgg#7150, unified workspace navigation pingdotgg#7153, collapsed
tool activity pingdotgg#7152) lands on surfaces Marcode customizes, so before/after images belong to the
verification pass above.

Checklist

  • This PR is small and focused — no: it is a 111-commit upstream sync, which is inherently broad.
  • I explained what changed and why
  • I included before/after screenshots for any UI changes — see above
  • I included a video for animation/interaction changes — not applicable

Verification

Run locally against the merge commit (e39df1e3):

  • Typecheck: contracts, client-runtime, web, server (t3), scripts, desktop, mobile,
    shared — all clean (suggestion-level Effect diagnostics only).
  • Tests: full apps/web suite (292 files, 2993 tests), full packages/client-runtime (53/685), full
    packages/contracts (20/290), full scripts (22 files), and focused apps/server under
    cli/, cloud/, persistence/, plus serviceLauncher.test.ts and CheckpointReactor.test.ts
    (41 files, 182 tests). All pass.
  • vp fmt --check clean across every changed file; vp lint clean (warnings only, all pre-existing).

One pre-existing failure, not caused by this merge:
scripts/update-release-package-versions.test.ts > preserves manifest write context and the filesystem cause chmods a file to 0o400 and expects the write to fail. This container runs as
root, which ignores the permission bit. The file is untouched by this merge and the test passes in
CI.

Coupled vendored subtrees: pnpm-workspace.yaml moved (Clerk bumps) but the effect version is
unchanged and infra/relay/package.json did not move, so neither sync:repos coupling triggered.
pnpm-lock.yaml was regenerated with pnpm install --lockfile-only.


Generated by Claude Code

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>
t3-codeBotand others added 22 commits August 22, 2026 10:30
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.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>
Merges 111 upstream commits (merge base 82b8a93) into main. Every conflict was
resolved by hand, combining upstream intent with Marcode's product contracts;
no file was taken wholesale from either side.
Conflict decisions
------------------
Structural / deletions
- .plans/effect-atom.md: took upstream's deletion. Upstream moved
implementation plans out of the repository (pingdotgg#7665); Marcode's only edit to
that file was rewriting `.t3` paths to `.marcode`, so nothing survives it.
- apps/web/src/components/files/FileBrowserPanel.tsx, FilePreviewPanel.tsx:
stayed deleted. Marcode retired the right-panel file surfaces. Upstream's
edits there were a refresh-the-open-file wiring (pingdotgg#7490) and a
`--contrast-foreground` token swap for its own tree; Marcode's floating
editor has neither affordance, so there was nothing to port.
CI runners and the workspace search dependency
- .github/workflows/ci.yml: took upstream's `mobile_native_changes` gate on
the macOS lint job, kept Marcode's GitHub-hosted `macos-26` runner. The
three jobs upstream added in the same range (`test_server`, `rust`,
`mobile_native_changes`) merged clean on Blacksmith runners the fork cannot
schedule on; all mapped to `ubuntu-24.04`.
- Upstream sharded apps/server out of `test` into `test_server` (pingdotgg#7286), which
moved WorkspaceFileSystem's tests away from Marcode's ripgrep install step.
The step follows the tests into `test_server`.
- scripts/upstream-sync-workflow.test.ts: both pins rewritten as invariants
rather than positions — no ci.yml job may use a Blacksmith runner, and
whichever job runs `--filter t3 test` must install ripgrep. The positional
list would have broken on every upstream job addition.
Fork identity (clean merges that would have failed silently)
- apps/server/src/cloud/bootService.ts: upstream's new launchd plist (pingdotgg#6286)
exports `T3CODE_HOME`. resolveLauncherBaseDir reads `MARCODE_HOME` and exits
otherwise, so the launch agent would never have started a server. Renamed,
and pinned with a test asserting the plist carries MARCODE_HOME and no
T3CODE_HOME.
- apps/server/src/cloud/bootService.test.ts: an upstream assertion hardcoded
`systemctl --user disable --now t3code.service`; Marcode's unit is
marcode.service.
- apps/server/src/cli/triage.ts: upstream's new `t3 triage` command (pingdotgg#6563)
read `T3CODE_HOME`. Every other Marcode CLI path reads `MARCODE_HOME`.
- docs/user/background-service.md: new upstream doc pointed users at
`~/.config/systemd/user/t3code.service`. The launchd label stays
upstream-shaped (compatibility identifier); the systemd unit name does not.
- apps/web/src/components/ChatView.tsx: upstream's cmd+enter background draft
(pingdotgg#7821) calls `handleNewThread`, declared in a hunk Marcode had restructured
for the pill-nav header. It merged clean into a ChatView that never declared
it; restored `useNewThreadHandler()`.
Migrations
- Migrations.ts / Migrations.test.ts: upstream's 041_AuthSessionClientConnection
collided with Marcode's 041_ProjectionProjectFaviconPath. Renumbered to 042,
keeping the established +1 offset from Marcode owning id 33; the pin test now
covers it.
Server CLI copy
- cli/connect.ts, cli/service.ts: took upstream's platform-aware launchd copy
(a launch agent only runs while logged in) with Marcode's product name.
"T3 Connect" stays as-is — it is the product name of the service, not fork
branding.
Web surfaces
- routes/settings.tsx, components/usage/UsagePage.tsx: adopted upstream's
WorkspacePageHeader (pingdotgg#7153) and passed SIDEBARLESS_TITLEBAR_INSET_CLASS as an
override. Both routes mount no sidebar, so the header's collapsed-sidebar
inset never matches and the breadcrumb would sit under the traffic lights.
workspaceTitlebar.fork.test.ts rewritten to follow the refactor: the drag
region now lives in WorkspacePageHeader, and each sidebarless call site must
supply the unconditional inset.
- components/chat/ChatComposer.tsx: took upstream's composer top drawer
(pingdotgg#7150); Marcode's glass surface classes moved onto the surface div upstream
nested inside the new frame.
- components/chat/ComposerPendingApprovalPanel.tsx: took upstream's redesign.
Marcode's only change here shrank a "PENDING APPROVAL" label the redesign
deletes.
- components/chat/ChatHeader.tsx: kept Marcode's title-only header. Upstream
added a breadcrumb, inline rename, and a title action menu; Marcode portals
the header into FloatingPillNav and thread actions already have an entry
point on the sidebar row's context menu. Added ChatHeader.fork.test.tsx so
the next sync fails here instead of shipping two entry points.
- components/sidebar/SidebarChrome.tsx: kept Marcode's update-pill-only footer
(already pinned by SidebarChrome.fork.test.tsx). Upstream's SidebarUtilityMenu
stays exported so their SettingsSidebarNav keeps compiling unedited; their
SidebarBrand/T3Wordmark were dropped, reachable only from a header Marcode
replaced.
- components/RightPanelTabs.tsx: took upstream's tab mute (pingdotgg#7252) and the
shortcut-driven add-surface menu (pingdotgg#7318), dropped their `copy-path` action and
"Files" entry — Marcode has no right-panel file surface. The menu keeps
Marcode's placement beside the surface list rather than inline in the tab
strip, where the collision-aware shelf owns the layout.
- components/ThreadTerminalDrawer.tsx: kept Marcode's terminal chrome (placement
slot, find) and routed all three of its close affordances through upstream's
new confirm-before-close (pingdotgg#7592). `onSessionExited` stays direct. Took
upstream's `--terminal-background` token, kept the p-2 FitAddon padding.
- components/chat/MessagesTimeline.tsx: took upstream's `-mx-1` removal (the
subagent row border fix, pingdotgg#7207), kept Marcode's text size.
- components/Sidebar.tsx: took upstream's `cursor-pointer` fix (pingdotgg#5545), kept
Marcode's text size.
- routes/_chat.pull-requests.tsx, pullRequest/PullRequestListFilters.tsx: took
upstream's extracted PullRequestRefreshControl and Button-based filter
trigger; re-applied Marcode's styled Tooltip at the shared producer so both
call sites keep it.
- routes/__root.tsx: kept both watchers.
- index.css: both conflicts were unrelated blocks git aligned on a shared brace.
Kept Marcode's sidebar surface rules and floating chrome, took upstream's
preview-loading-progress animation. Upstream's `@variant dark` sidebar tokens
ride inside the zinc override block Marcode already declines.
- packages/client-runtime/src/state/threadSettled.ts: took upstream's
settle-only-once rule (pingdotgg#7454) — the terminal PR state must be the thread's
latest event — and kept Marcode's one-hour warm window on top. Migrated the
Marcode tests to the new `changeRequest` option shape and added a case pinning
the combination.
Other
- pnpm-lock.yaml regenerated with pnpm install --lockfile-only.
- pnpm-workspace.yaml moved (Clerk bumps), but the effect version is unchanged
and infra/relay/package.json did not move, so neither coupled vendored subtree
needed a sync.
- AGENTS.md: adopted upstream's "Plans and work artifacts" section and their
no-committed-PR-assets rule; their duplicate "Verifying"/"Pull requests"
sections and user-count blurb do not apply to Marcode's rewritten document.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xswf8VNiCmKDPUvzUR8o7W
@maarcomaarco added the upstream-sync Upstream T3 Code sync label Aug 23, 2026 — with Claude
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 23, 2026
@github-actions

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+865 B (+6.7%)15.1 KiB
CodexThread snapshot wire6.3 KiB6.9 KiB+629 B (+9.8%)7.3 KiB
CodexLive turn WebSocket wire6.3 KiB6.5 KiB+236 B (+3.7%)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.4 KiB+875 B (+6.8%)15.1 KiB
ClaudeThread snapshot wire6.3 KiB6.9 KiB+631 B (+9.8%)7.3 KiB
ClaudeLive turn WebSocket wire6.3 KiB6.5 KiB+244 B (+3.8%)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: 5bcc188 · PR result: e39df1e · 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.

@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:XXLupstream-syncUpstream T3 Code syncvouch: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" + '
chore(upstream): sync marcode through b1670ac7 by maarco · Pull Request #49 · maarco/marcode · GitHub
Skip to content

chore(upstream): sync marcode through b1670ac7 - #49

Closed
maarco wants to merge 112 commits into
mainfrom
claude/gracious-bohr-x80z9c
Closed

chore(upstream): sync marcode through b1670ac7#49
maarco wants to merge 112 commits into
mainfrom
claude/gracious-bohr-x80z9c

Conversation

@maarco

Copy link
Copy Markdown
Owner

What Changed

Merges pingdotgg/t3code@b1670ac7 (111 upstream commits, merge base 82b8a938) into main as a
normal two-parent merge on claude/gracious-bohr-x80z9c. 27 conflicted paths were resolved by hand;
no file was taken wholesale from either side.

The full per-path decision record is in the merge commit body. The parts that need a reviewer's eye:

Fork-identity breaks that merged clean and would have failed silently

  • apps/server/src/cloud/bootService.ts — upstream's new macOS launchd plist (feat(server): run the background service on macOS via launchd pingdotgg/t3code#6286) exports
    T3CODE_HOME. resolveLauncherBaseDir reads MARCODE_HOME and exits otherwise, so the launch
    agent would never have started a server. Renamed and pinned with a test.
  • apps/server/src/cli/triage.ts — upstream's new t3 triage command (feat(cli): npx t3 triage hands broken installs to your own coding agent pingdotgg/t3code#6563) read T3CODE_HOME.
  • apps/server/src/cloud/bootService.test.ts — an upstream assertion hardcoded
    systemctl --user disable --now t3code.service; Marcode's unit is marcode.service.
  • docs/user/background-service.md — new upstream doc pointed users at
    ~/.config/systemd/user/t3code.service.
  • apps/web/src/components/ChatView.tsx — upstream's cmd+enter background draft (feat(web): cmd+enter to create thread in background pingdotgg/t3code#7821) calls
    handleNewThread, which arrived in a hunk Marcode had restructured for the pill-nav header. It
    merged clean into a ChatView that never declared it (caught by typecheck).
  • .github/workflows/ci.yml — upstream added three jobs (test_server, rust,
    mobile_native_changes) on its Blacksmith fleet, which this fork cannot schedule on. All mapped to
    GitHub-hosted runners. Upstream also sharded apps/server out of test into test_server, which
    moved WorkspaceFileSystem's tests away from Marcode's ripgrep install step — the step follows
    them.

Marcode contracts held, upstream fixes taken on top

Tests added or rewritten to pin the boundary

  • ChatHeader.fork.test.tsx (new) — the header renders the title alone: no breadcrumb, rename, or
    action menu.
  • bootService.test.ts — the launchd plist exports MARCODE_HOME and no T3CODE_HOME.
  • workspaceTitlebar.fork.test.ts — rewritten to follow upstream's header refactor: the drag region
    now lives in WorkspacePageHeader, and each sidebarless call site must supply the unconditional
    inset. (This test failed on the raw merge — the pin worked.)
  • upstream-sync-workflow.test.ts — the two CI pins rewritten as invariants (no Blacksmith runner in
    ci.yml; whichever job runs --filter t3 test installs ripgrep) rather than positions, so they
    survive upstream adding jobs.
  • Migrations.test.ts — extended to cover id 42.

Why

The daily upstream sync found 111 new commits. This is the reviewable merge; it is a draft because
the per-hotspot decisions above want a human read, and because two things still need attention:

  • t3 triage points at upstream. The new apps/server/src/cli/triagePrompt.ts tells the user to
    search issues in pingdotgg/t3code, fetch PLAYBOOK.md from that repo, and file at
    github.com/pingdotgg/t3code/issues/new. Only the MARCODE_HOME read and the command description
    were retargeted — where Marcode users should file triage issues is a product call, and rewriting
    the whole playbook would be a large permanent edit surface in a brand-new upstream file.
  • No live client verification. This container has no browser or simulator, so the web and mobile
    surfaces touched here (composer drawers, right-panel tabs, terminal chrome, usage redesign,
    settings/usage headers) have not been driven. Worth one pass with test-t3-app before this comes
    out of draft.

UI Changes

Not captured — this container cannot drive a client. Upstream's own UI work in this range (usage
insights redesign pingdotgg#7147, composer state drawers pingdotgg#7150, unified workspace navigation pingdotgg#7153, collapsed
tool activity pingdotgg#7152) lands on surfaces Marcode customizes, so before/after images belong to the
verification pass above.

Checklist

  • This PR is small and focused — no: it is a 111-commit upstream sync, which is inherently broad.
  • I explained what changed and why
  • I included before/after screenshots for any UI changes — see above
  • I included a video for animation/interaction changes — not applicable

Verification

Run locally against the merge commit (e39df1e3):

  • Typecheck: contracts, client-runtime, web, server (t3), scripts, desktop, mobile,
    shared — all clean (suggestion-level Effect diagnostics only).
  • Tests: full apps/web suite (292 files, 2993 tests), full packages/client-runtime (53/685), full
    packages/contracts (20/290), full scripts (22 files), and focused apps/server under
    cli/, cloud/, persistence/, plus serviceLauncher.test.ts and CheckpointReactor.test.ts
    (41 files, 182 tests). All pass.
  • vp fmt --check clean across every changed file; vp lint clean (warnings only, all pre-existing).

One pre-existing failure, not caused by this merge:
scripts/update-release-package-versions.test.ts > preserves manifest write context and the filesystem cause chmods a file to 0o400 and expects the write to fail. This container runs as
root, which ignores the permission bit. The file is untouched by this merge and the test passes in
CI.

Coupled vendored subtrees: pnpm-workspace.yaml moved (Clerk bumps) but the effect version is
unchanged and infra/relay/package.json did not move, so neither sync:repos coupling triggered.
pnpm-lock.yaml was regenerated with pnpm install --lockfile-only.


Generated by Claude Code

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>
t3-codeBotand others added 22 commits August 22, 2026 10:30
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.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>
Merges 111 upstream commits (merge base 82b8a93) into main. Every conflict was
resolved by hand, combining upstream intent with Marcode's product contracts;
no file was taken wholesale from either side.
Conflict decisions
------------------
Structural / deletions
- .plans/effect-atom.md: took upstream's deletion. Upstream moved
implementation plans out of the repository (pingdotgg#7665); Marcode's only edit to
that file was rewriting `.t3` paths to `.marcode`, so nothing survives it.
- apps/web/src/components/files/FileBrowserPanel.tsx, FilePreviewPanel.tsx:
stayed deleted. Marcode retired the right-panel file surfaces. Upstream's
edits there were a refresh-the-open-file wiring (pingdotgg#7490) and a
`--contrast-foreground` token swap for its own tree; Marcode's floating
editor has neither affordance, so there was nothing to port.
CI runners and the workspace search dependency
- .github/workflows/ci.yml: took upstream's `mobile_native_changes` gate on
the macOS lint job, kept Marcode's GitHub-hosted `macos-26` runner. The
three jobs upstream added in the same range (`test_server`, `rust`,
`mobile_native_changes`) merged clean on Blacksmith runners the fork cannot
schedule on; all mapped to `ubuntu-24.04`.
- Upstream sharded apps/server out of `test` into `test_server` (pingdotgg#7286), which
moved WorkspaceFileSystem's tests away from Marcode's ripgrep install step.
The step follows the tests into `test_server`.
- scripts/upstream-sync-workflow.test.ts: both pins rewritten as invariants
rather than positions — no ci.yml job may use a Blacksmith runner, and
whichever job runs `--filter t3 test` must install ripgrep. The positional
list would have broken on every upstream job addition.
Fork identity (clean merges that would have failed silently)
- apps/server/src/cloud/bootService.ts: upstream's new launchd plist (pingdotgg#6286)
exports `T3CODE_HOME`. resolveLauncherBaseDir reads `MARCODE_HOME` and exits
otherwise, so the launch agent would never have started a server. Renamed,
and pinned with a test asserting the plist carries MARCODE_HOME and no
T3CODE_HOME.
- apps/server/src/cloud/bootService.test.ts: an upstream assertion hardcoded
`systemctl --user disable --now t3code.service`; Marcode's unit is
marcode.service.
- apps/server/src/cli/triage.ts: upstream's new `t3 triage` command (pingdotgg#6563)
read `T3CODE_HOME`. Every other Marcode CLI path reads `MARCODE_HOME`.
- docs/user/background-service.md: new upstream doc pointed users at
`~/.config/systemd/user/t3code.service`. The launchd label stays
upstream-shaped (compatibility identifier); the systemd unit name does not.
- apps/web/src/components/ChatView.tsx: upstream's cmd+enter background draft
(pingdotgg#7821) calls `handleNewThread`, declared in a hunk Marcode had restructured
for the pill-nav header. It merged clean into a ChatView that never declared
it; restored `useNewThreadHandler()`.
Migrations
- Migrations.ts / Migrations.test.ts: upstream's 041_AuthSessionClientConnection
collided with Marcode's 041_ProjectionProjectFaviconPath. Renumbered to 042,
keeping the established +1 offset from Marcode owning id 33; the pin test now
covers it.
Server CLI copy
- cli/connect.ts, cli/service.ts: took upstream's platform-aware launchd copy
(a launch agent only runs while logged in) with Marcode's product name.
"T3 Connect" stays as-is — it is the product name of the service, not fork
branding.
Web surfaces
- routes/settings.tsx, components/usage/UsagePage.tsx: adopted upstream's
WorkspacePageHeader (pingdotgg#7153) and passed SIDEBARLESS_TITLEBAR_INSET_CLASS as an
override. Both routes mount no sidebar, so the header's collapsed-sidebar
inset never matches and the breadcrumb would sit under the traffic lights.
workspaceTitlebar.fork.test.ts rewritten to follow the refactor: the drag
region now lives in WorkspacePageHeader, and each sidebarless call site must
supply the unconditional inset.
- components/chat/ChatComposer.tsx: took upstream's composer top drawer
(pingdotgg#7150); Marcode's glass surface classes moved onto the surface div upstream
nested inside the new frame.
- components/chat/ComposerPendingApprovalPanel.tsx: took upstream's redesign.
Marcode's only change here shrank a "PENDING APPROVAL" label the redesign
deletes.
- components/chat/ChatHeader.tsx: kept Marcode's title-only header. Upstream
added a breadcrumb, inline rename, and a title action menu; Marcode portals
the header into FloatingPillNav and thread actions already have an entry
point on the sidebar row's context menu. Added ChatHeader.fork.test.tsx so
the next sync fails here instead of shipping two entry points.
- components/sidebar/SidebarChrome.tsx: kept Marcode's update-pill-only footer
(already pinned by SidebarChrome.fork.test.tsx). Upstream's SidebarUtilityMenu
stays exported so their SettingsSidebarNav keeps compiling unedited; their
SidebarBrand/T3Wordmark were dropped, reachable only from a header Marcode
replaced.
- components/RightPanelTabs.tsx: took upstream's tab mute (pingdotgg#7252) and the
shortcut-driven add-surface menu (pingdotgg#7318), dropped their `copy-path` action and
"Files" entry — Marcode has no right-panel file surface. The menu keeps
Marcode's placement beside the surface list rather than inline in the tab
strip, where the collision-aware shelf owns the layout.
- components/ThreadTerminalDrawer.tsx: kept Marcode's terminal chrome (placement
slot, find) and routed all three of its close affordances through upstream's
new confirm-before-close (pingdotgg#7592). `onSessionExited` stays direct. Took
upstream's `--terminal-background` token, kept the p-2 FitAddon padding.
- components/chat/MessagesTimeline.tsx: took upstream's `-mx-1` removal (the
subagent row border fix, pingdotgg#7207), kept Marcode's text size.
- components/Sidebar.tsx: took upstream's `cursor-pointer` fix (pingdotgg#5545), kept
Marcode's text size.
- routes/_chat.pull-requests.tsx, pullRequest/PullRequestListFilters.tsx: took
upstream's extracted PullRequestRefreshControl and Button-based filter
trigger; re-applied Marcode's styled Tooltip at the shared producer so both
call sites keep it.
- routes/__root.tsx: kept both watchers.
- index.css: both conflicts were unrelated blocks git aligned on a shared brace.
Kept Marcode's sidebar surface rules and floating chrome, took upstream's
preview-loading-progress animation. Upstream's `@variant dark` sidebar tokens
ride inside the zinc override block Marcode already declines.
- packages/client-runtime/src/state/threadSettled.ts: took upstream's
settle-only-once rule (pingdotgg#7454) — the terminal PR state must be the thread's
latest event — and kept Marcode's one-hour warm window on top. Migrated the
Marcode tests to the new `changeRequest` option shape and added a case pinning
the combination.
Other
- pnpm-lock.yaml regenerated with pnpm install --lockfile-only.
- pnpm-workspace.yaml moved (Clerk bumps), but the effect version is unchanged
and infra/relay/package.json did not move, so neither coupled vendored subtree
needed a sync.
- AGENTS.md: adopted upstream's "Plans and work artifacts" section and their
no-committed-PR-assets rule; their duplicate "Verifying"/"Pull requests"
sections and user-count blurb do not apply to Marcode's rewritten document.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xswf8VNiCmKDPUvzUR8o7W
@maarcomaarco added the upstream-sync Upstream T3 Code sync label Aug 23, 2026 — with Claude
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 23, 2026
@github-actions

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+865 B (+6.7%)15.1 KiB
CodexThread snapshot wire6.3 KiB6.9 KiB+629 B (+9.8%)7.3 KiB
CodexLive turn WebSocket wire6.3 KiB6.5 KiB+236 B (+3.7%)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.4 KiB+875 B (+6.8%)15.1 KiB
ClaudeThread snapshot wire6.3 KiB6.9 KiB+631 B (+9.8%)7.3 KiB
ClaudeLive turn WebSocket wire6.3 KiB6.5 KiB+244 B (+3.8%)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: 5bcc188 · PR result: e39df1e · 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.

@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:XXLupstream-syncUpstream T3 Code syncvouch: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('^' + ".*" + ' chore(upstream): sync marcode through b1670ac7 by maarco · Pull Request #49 · maarco/marcode · GitHub
Skip to content

chore(upstream): sync marcode through b1670ac7 - #49

Closed
maarco wants to merge 112 commits into
mainfrom
claude/gracious-bohr-x80z9c
Closed

chore(upstream): sync marcode through b1670ac7#49
maarco wants to merge 112 commits into
mainfrom
claude/gracious-bohr-x80z9c

Conversation

@maarco

Copy link
Copy Markdown
Owner

What Changed

Merges pingdotgg/t3code@b1670ac7 (111 upstream commits, merge base 82b8a938) into main as a
normal two-parent merge on claude/gracious-bohr-x80z9c. 27 conflicted paths were resolved by hand;
no file was taken wholesale from either side.

The full per-path decision record is in the merge commit body. The parts that need a reviewer's eye:

Fork-identity breaks that merged clean and would have failed silently

  • apps/server/src/cloud/bootService.ts — upstream's new macOS launchd plist (feat(server): run the background service on macOS via launchd pingdotgg/t3code#6286) exports
    T3CODE_HOME. resolveLauncherBaseDir reads MARCODE_HOME and exits otherwise, so the launch
    agent would never have started a server. Renamed and pinned with a test.
  • apps/server/src/cli/triage.ts — upstream's new t3 triage command (feat(cli): npx t3 triage hands broken installs to your own coding agent pingdotgg/t3code#6563) read T3CODE_HOME.
  • apps/server/src/cloud/bootService.test.ts — an upstream assertion hardcoded
    systemctl --user disable --now t3code.service; Marcode's unit is marcode.service.
  • docs/user/background-service.md — new upstream doc pointed users at
    ~/.config/systemd/user/t3code.service.
  • apps/web/src/components/ChatView.tsx — upstream's cmd+enter background draft (feat(web): cmd+enter to create thread in background pingdotgg/t3code#7821) calls
    handleNewThread, which arrived in a hunk Marcode had restructured for the pill-nav header. It
    merged clean into a ChatView that never declared it (caught by typecheck).
  • .github/workflows/ci.yml — upstream added three jobs (test_server, rust,
    mobile_native_changes) on its Blacksmith fleet, which this fork cannot schedule on. All mapped to
    GitHub-hosted runners. Upstream also sharded apps/server out of test into test_server, which
    moved WorkspaceFileSystem's tests away from Marcode's ripgrep install step — the step follows
    them.

Marcode contracts held, upstream fixes taken on top

Tests added or rewritten to pin the boundary

  • ChatHeader.fork.test.tsx (new) — the header renders the title alone: no breadcrumb, rename, or
    action menu.
  • bootService.test.ts — the launchd plist exports MARCODE_HOME and no T3CODE_HOME.
  • workspaceTitlebar.fork.test.ts — rewritten to follow upstream's header refactor: the drag region
    now lives in WorkspacePageHeader, and each sidebarless call site must supply the unconditional
    inset. (This test failed on the raw merge — the pin worked.)
  • upstream-sync-workflow.test.ts — the two CI pins rewritten as invariants (no Blacksmith runner in
    ci.yml; whichever job runs --filter t3 test installs ripgrep) rather than positions, so they
    survive upstream adding jobs.
  • Migrations.test.ts — extended to cover id 42.

Why

The daily upstream sync found 111 new commits. This is the reviewable merge; it is a draft because
the per-hotspot decisions above want a human read, and because two things still need attention:

  • t3 triage points at upstream. The new apps/server/src/cli/triagePrompt.ts tells the user to
    search issues in pingdotgg/t3code, fetch PLAYBOOK.md from that repo, and file at
    github.com/pingdotgg/t3code/issues/new. Only the MARCODE_HOME read and the command description
    were retargeted — where Marcode users should file triage issues is a product call, and rewriting
    the whole playbook would be a large permanent edit surface in a brand-new upstream file.
  • No live client verification. This container has no browser or simulator, so the web and mobile
    surfaces touched here (composer drawers, right-panel tabs, terminal chrome, usage redesign,
    settings/usage headers) have not been driven. Worth one pass with test-t3-app before this comes
    out of draft.

UI Changes

Not captured — this container cannot drive a client. Upstream's own UI work in this range (usage
insights redesign pingdotgg#7147, composer state drawers pingdotgg#7150, unified workspace navigation pingdotgg#7153, collapsed
tool activity pingdotgg#7152) lands on surfaces Marcode customizes, so before/after images belong to the
verification pass above.

Checklist

  • This PR is small and focused — no: it is a 111-commit upstream sync, which is inherently broad.
  • I explained what changed and why
  • I included before/after screenshots for any UI changes — see above
  • I included a video for animation/interaction changes — not applicable

Verification

Run locally against the merge commit (e39df1e3):

  • Typecheck: contracts, client-runtime, web, server (t3), scripts, desktop, mobile,
    shared — all clean (suggestion-level Effect diagnostics only).
  • Tests: full apps/web suite (292 files, 2993 tests), full packages/client-runtime (53/685), full
    packages/contracts (20/290), full scripts (22 files), and focused apps/server under
    cli/, cloud/, persistence/, plus serviceLauncher.test.ts and CheckpointReactor.test.ts
    (41 files, 182 tests). All pass.
  • vp fmt --check clean across every changed file; vp lint clean (warnings only, all pre-existing).

One pre-existing failure, not caused by this merge:
scripts/update-release-package-versions.test.ts > preserves manifest write context and the filesystem cause chmods a file to 0o400 and expects the write to fail. This container runs as
root, which ignores the permission bit. The file is untouched by this merge and the test passes in
CI.

Coupled vendored subtrees: pnpm-workspace.yaml moved (Clerk bumps) but the effect version is
unchanged and infra/relay/package.json did not move, so neither sync:repos coupling triggered.
pnpm-lock.yaml was regenerated with pnpm install --lockfile-only.


Generated by Claude Code

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>
t3-codeBotand others added 22 commits August 22, 2026 10:30
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.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>
Merges 111 upstream commits (merge base 82b8a93) into main. Every conflict was
resolved by hand, combining upstream intent with Marcode's product contracts;
no file was taken wholesale from either side.
Conflict decisions
------------------
Structural / deletions
- .plans/effect-atom.md: took upstream's deletion. Upstream moved
implementation plans out of the repository (pingdotgg#7665); Marcode's only edit to
that file was rewriting `.t3` paths to `.marcode`, so nothing survives it.
- apps/web/src/components/files/FileBrowserPanel.tsx, FilePreviewPanel.tsx:
stayed deleted. Marcode retired the right-panel file surfaces. Upstream's
edits there were a refresh-the-open-file wiring (pingdotgg#7490) and a
`--contrast-foreground` token swap for its own tree; Marcode's floating
editor has neither affordance, so there was nothing to port.
CI runners and the workspace search dependency
- .github/workflows/ci.yml: took upstream's `mobile_native_changes` gate on
the macOS lint job, kept Marcode's GitHub-hosted `macos-26` runner. The
three jobs upstream added in the same range (`test_server`, `rust`,
`mobile_native_changes`) merged clean on Blacksmith runners the fork cannot
schedule on; all mapped to `ubuntu-24.04`.
- Upstream sharded apps/server out of `test` into `test_server` (pingdotgg#7286), which
moved WorkspaceFileSystem's tests away from Marcode's ripgrep install step.
The step follows the tests into `test_server`.
- scripts/upstream-sync-workflow.test.ts: both pins rewritten as invariants
rather than positions — no ci.yml job may use a Blacksmith runner, and
whichever job runs `--filter t3 test` must install ripgrep. The positional
list would have broken on every upstream job addition.
Fork identity (clean merges that would have failed silently)
- apps/server/src/cloud/bootService.ts: upstream's new launchd plist (pingdotgg#6286)
exports `T3CODE_HOME`. resolveLauncherBaseDir reads `MARCODE_HOME` and exits
otherwise, so the launch agent would never have started a server. Renamed,
and pinned with a test asserting the plist carries MARCODE_HOME and no
T3CODE_HOME.
- apps/server/src/cloud/bootService.test.ts: an upstream assertion hardcoded
`systemctl --user disable --now t3code.service`; Marcode's unit is
marcode.service.
- apps/server/src/cli/triage.ts: upstream's new `t3 triage` command (pingdotgg#6563)
read `T3CODE_HOME`. Every other Marcode CLI path reads `MARCODE_HOME`.
- docs/user/background-service.md: new upstream doc pointed users at
`~/.config/systemd/user/t3code.service`. The launchd label stays
upstream-shaped (compatibility identifier); the systemd unit name does not.
- apps/web/src/components/ChatView.tsx: upstream's cmd+enter background draft
(pingdotgg#7821) calls `handleNewThread`, declared in a hunk Marcode had restructured
for the pill-nav header. It merged clean into a ChatView that never declared
it; restored `useNewThreadHandler()`.
Migrations
- Migrations.ts / Migrations.test.ts: upstream's 041_AuthSessionClientConnection
collided with Marcode's 041_ProjectionProjectFaviconPath. Renumbered to 042,
keeping the established +1 offset from Marcode owning id 33; the pin test now
covers it.
Server CLI copy
- cli/connect.ts, cli/service.ts: took upstream's platform-aware launchd copy
(a launch agent only runs while logged in) with Marcode's product name.
"T3 Connect" stays as-is — it is the product name of the service, not fork
branding.
Web surfaces
- routes/settings.tsx, components/usage/UsagePage.tsx: adopted upstream's
WorkspacePageHeader (pingdotgg#7153) and passed SIDEBARLESS_TITLEBAR_INSET_CLASS as an
override. Both routes mount no sidebar, so the header's collapsed-sidebar
inset never matches and the breadcrumb would sit under the traffic lights.
workspaceTitlebar.fork.test.ts rewritten to follow the refactor: the drag
region now lives in WorkspacePageHeader, and each sidebarless call site must
supply the unconditional inset.
- components/chat/ChatComposer.tsx: took upstream's composer top drawer
(pingdotgg#7150); Marcode's glass surface classes moved onto the surface div upstream
nested inside the new frame.
- components/chat/ComposerPendingApprovalPanel.tsx: took upstream's redesign.
Marcode's only change here shrank a "PENDING APPROVAL" label the redesign
deletes.
- components/chat/ChatHeader.tsx: kept Marcode's title-only header. Upstream
added a breadcrumb, inline rename, and a title action menu; Marcode portals
the header into FloatingPillNav and thread actions already have an entry
point on the sidebar row's context menu. Added ChatHeader.fork.test.tsx so
the next sync fails here instead of shipping two entry points.
- components/sidebar/SidebarChrome.tsx: kept Marcode's update-pill-only footer
(already pinned by SidebarChrome.fork.test.tsx). Upstream's SidebarUtilityMenu
stays exported so their SettingsSidebarNav keeps compiling unedited; their
SidebarBrand/T3Wordmark were dropped, reachable only from a header Marcode
replaced.
- components/RightPanelTabs.tsx: took upstream's tab mute (pingdotgg#7252) and the
shortcut-driven add-surface menu (pingdotgg#7318), dropped their `copy-path` action and
"Files" entry — Marcode has no right-panel file surface. The menu keeps
Marcode's placement beside the surface list rather than inline in the tab
strip, where the collision-aware shelf owns the layout.
- components/ThreadTerminalDrawer.tsx: kept Marcode's terminal chrome (placement
slot, find) and routed all three of its close affordances through upstream's
new confirm-before-close (pingdotgg#7592). `onSessionExited` stays direct. Took
upstream's `--terminal-background` token, kept the p-2 FitAddon padding.
- components/chat/MessagesTimeline.tsx: took upstream's `-mx-1` removal (the
subagent row border fix, pingdotgg#7207), kept Marcode's text size.
- components/Sidebar.tsx: took upstream's `cursor-pointer` fix (pingdotgg#5545), kept
Marcode's text size.
- routes/_chat.pull-requests.tsx, pullRequest/PullRequestListFilters.tsx: took
upstream's extracted PullRequestRefreshControl and Button-based filter
trigger; re-applied Marcode's styled Tooltip at the shared producer so both
call sites keep it.
- routes/__root.tsx: kept both watchers.
- index.css: both conflicts were unrelated blocks git aligned on a shared brace.
Kept Marcode's sidebar surface rules and floating chrome, took upstream's
preview-loading-progress animation. Upstream's `@variant dark` sidebar tokens
ride inside the zinc override block Marcode already declines.
- packages/client-runtime/src/state/threadSettled.ts: took upstream's
settle-only-once rule (pingdotgg#7454) — the terminal PR state must be the thread's
latest event — and kept Marcode's one-hour warm window on top. Migrated the
Marcode tests to the new `changeRequest` option shape and added a case pinning
the combination.
Other
- pnpm-lock.yaml regenerated with pnpm install --lockfile-only.
- pnpm-workspace.yaml moved (Clerk bumps), but the effect version is unchanged
and infra/relay/package.json did not move, so neither coupled vendored subtree
needed a sync.
- AGENTS.md: adopted upstream's "Plans and work artifacts" section and their
no-committed-PR-assets rule; their duplicate "Verifying"/"Pull requests"
sections and user-count blurb do not apply to Marcode's rewritten document.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xswf8VNiCmKDPUvzUR8o7W
@maarcomaarco added the upstream-sync Upstream T3 Code sync label Aug 23, 2026 — with Claude
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 23, 2026
@github-actions

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+865 B (+6.7%)15.1 KiB
CodexThread snapshot wire6.3 KiB6.9 KiB+629 B (+9.8%)7.3 KiB
CodexLive turn WebSocket wire6.3 KiB6.5 KiB+236 B (+3.7%)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.4 KiB+875 B (+6.8%)15.1 KiB
ClaudeThread snapshot wire6.3 KiB6.9 KiB+631 B (+9.8%)7.3 KiB
ClaudeLive turn WebSocket wire6.3 KiB6.5 KiB+244 B (+3.8%)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: 5bcc188 · PR result: e39df1e · 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.

@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:XXLupstream-syncUpstream T3 Code syncvouch: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('^' + ".*" + ' chore(upstream): sync marcode through b1670ac7 by maarco · Pull Request #49 · maarco/marcode · GitHub
Skip to content

chore(upstream): sync marcode through b1670ac7 - #49

Closed
maarco wants to merge 112 commits into
mainfrom
claude/gracious-bohr-x80z9c
Closed

chore(upstream): sync marcode through b1670ac7#49
maarco wants to merge 112 commits into
mainfrom
claude/gracious-bohr-x80z9c

Conversation

@maarco

Copy link
Copy Markdown
Owner

What Changed

Merges pingdotgg/t3code@b1670ac7 (111 upstream commits, merge base 82b8a938) into main as a
normal two-parent merge on claude/gracious-bohr-x80z9c. 27 conflicted paths were resolved by hand;
no file was taken wholesale from either side.

The full per-path decision record is in the merge commit body. The parts that need a reviewer's eye:

Fork-identity breaks that merged clean and would have failed silently

  • apps/server/src/cloud/bootService.ts — upstream's new macOS launchd plist (feat(server): run the background service on macOS via launchd pingdotgg/t3code#6286) exports
    T3CODE_HOME. resolveLauncherBaseDir reads MARCODE_HOME and exits otherwise, so the launch
    agent would never have started a server. Renamed and pinned with a test.
  • apps/server/src/cli/triage.ts — upstream's new t3 triage command (feat(cli): npx t3 triage hands broken installs to your own coding agent pingdotgg/t3code#6563) read T3CODE_HOME.
  • apps/server/src/cloud/bootService.test.ts — an upstream assertion hardcoded
    systemctl --user disable --now t3code.service; Marcode's unit is marcode.service.
  • docs/user/background-service.md — new upstream doc pointed users at
    ~/.config/systemd/user/t3code.service.
  • apps/web/src/components/ChatView.tsx — upstream's cmd+enter background draft (feat(web): cmd+enter to create thread in background pingdotgg/t3code#7821) calls
    handleNewThread, which arrived in a hunk Marcode had restructured for the pill-nav header. It
    merged clean into a ChatView that never declared it (caught by typecheck).
  • .github/workflows/ci.yml — upstream added three jobs (test_server, rust,
    mobile_native_changes) on its Blacksmith fleet, which this fork cannot schedule on. All mapped to
    GitHub-hosted runners. Upstream also sharded apps/server out of test into test_server, which
    moved WorkspaceFileSystem's tests away from Marcode's ripgrep install step — the step follows
    them.

Marcode contracts held, upstream fixes taken on top

Tests added or rewritten to pin the boundary

  • ChatHeader.fork.test.tsx (new) — the header renders the title alone: no breadcrumb, rename, or
    action menu.
  • bootService.test.ts — the launchd plist exports MARCODE_HOME and no T3CODE_HOME.
  • workspaceTitlebar.fork.test.ts — rewritten to follow upstream's header refactor: the drag region
    now lives in WorkspacePageHeader, and each sidebarless call site must supply the unconditional
    inset. (This test failed on the raw merge — the pin worked.)
  • upstream-sync-workflow.test.ts — the two CI pins rewritten as invariants (no Blacksmith runner in
    ci.yml; whichever job runs --filter t3 test installs ripgrep) rather than positions, so they
    survive upstream adding jobs.
  • Migrations.test.ts — extended to cover id 42.

Why

The daily upstream sync found 111 new commits. This is the reviewable merge; it is a draft because
the per-hotspot decisions above want a human read, and because two things still need attention:

  • t3 triage points at upstream. The new apps/server/src/cli/triagePrompt.ts tells the user to
    search issues in pingdotgg/t3code, fetch PLAYBOOK.md from that repo, and file at
    github.com/pingdotgg/t3code/issues/new. Only the MARCODE_HOME read and the command description
    were retargeted — where Marcode users should file triage issues is a product call, and rewriting
    the whole playbook would be a large permanent edit surface in a brand-new upstream file.
  • No live client verification. This container has no browser or simulator, so the web and mobile
    surfaces touched here (composer drawers, right-panel tabs, terminal chrome, usage redesign,
    settings/usage headers) have not been driven. Worth one pass with test-t3-app before this comes
    out of draft.

UI Changes

Not captured — this container cannot drive a client. Upstream's own UI work in this range (usage
insights redesign pingdotgg#7147, composer state drawers pingdotgg#7150, unified workspace navigation pingdotgg#7153, collapsed
tool activity pingdotgg#7152) lands on surfaces Marcode customizes, so before/after images belong to the
verification pass above.

Checklist

  • This PR is small and focused — no: it is a 111-commit upstream sync, which is inherently broad.
  • I explained what changed and why
  • I included before/after screenshots for any UI changes — see above
  • I included a video for animation/interaction changes — not applicable

Verification

Run locally against the merge commit (e39df1e3):

  • Typecheck: contracts, client-runtime, web, server (t3), scripts, desktop, mobile,
    shared — all clean (suggestion-level Effect diagnostics only).
  • Tests: full apps/web suite (292 files, 2993 tests), full packages/client-runtime (53/685), full
    packages/contracts (20/290), full scripts (22 files), and focused apps/server under
    cli/, cloud/, persistence/, plus serviceLauncher.test.ts and CheckpointReactor.test.ts
    (41 files, 182 tests). All pass.
  • vp fmt --check clean across every changed file; vp lint clean (warnings only, all pre-existing).

One pre-existing failure, not caused by this merge:
scripts/update-release-package-versions.test.ts > preserves manifest write context and the filesystem cause chmods a file to 0o400 and expects the write to fail. This container runs as
root, which ignores the permission bit. The file is untouched by this merge and the test passes in
CI.

Coupled vendored subtrees: pnpm-workspace.yaml moved (Clerk bumps) but the effect version is
unchanged and infra/relay/package.json did not move, so neither sync:repos coupling triggered.
pnpm-lock.yaml was regenerated with pnpm install --lockfile-only.


Generated by Claude Code

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>
t3-codeBotand others added 22 commits August 22, 2026 10:30
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.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>
Merges 111 upstream commits (merge base 82b8a93) into main. Every conflict was
resolved by hand, combining upstream intent with Marcode's product contracts;
no file was taken wholesale from either side.
Conflict decisions
------------------
Structural / deletions
- .plans/effect-atom.md: took upstream's deletion. Upstream moved
implementation plans out of the repository (pingdotgg#7665); Marcode's only edit to
that file was rewriting `.t3` paths to `.marcode`, so nothing survives it.
- apps/web/src/components/files/FileBrowserPanel.tsx, FilePreviewPanel.tsx:
stayed deleted. Marcode retired the right-panel file surfaces. Upstream's
edits there were a refresh-the-open-file wiring (pingdotgg#7490) and a
`--contrast-foreground` token swap for its own tree; Marcode's floating
editor has neither affordance, so there was nothing to port.
CI runners and the workspace search dependency
- .github/workflows/ci.yml: took upstream's `mobile_native_changes` gate on
the macOS lint job, kept Marcode's GitHub-hosted `macos-26` runner. The
three jobs upstream added in the same range (`test_server`, `rust`,
`mobile_native_changes`) merged clean on Blacksmith runners the fork cannot
schedule on; all mapped to `ubuntu-24.04`.
- Upstream sharded apps/server out of `test` into `test_server` (pingdotgg#7286), which
moved WorkspaceFileSystem's tests away from Marcode's ripgrep install step.
The step follows the tests into `test_server`.
- scripts/upstream-sync-workflow.test.ts: both pins rewritten as invariants
rather than positions — no ci.yml job may use a Blacksmith runner, and
whichever job runs `--filter t3 test` must install ripgrep. The positional
list would have broken on every upstream job addition.
Fork identity (clean merges that would have failed silently)
- apps/server/src/cloud/bootService.ts: upstream's new launchd plist (pingdotgg#6286)
exports `T3CODE_HOME`. resolveLauncherBaseDir reads `MARCODE_HOME` and exits
otherwise, so the launch agent would never have started a server. Renamed,
and pinned with a test asserting the plist carries MARCODE_HOME and no
T3CODE_HOME.
- apps/server/src/cloud/bootService.test.ts: an upstream assertion hardcoded
`systemctl --user disable --now t3code.service`; Marcode's unit is
marcode.service.
- apps/server/src/cli/triage.ts: upstream's new `t3 triage` command (pingdotgg#6563)
read `T3CODE_HOME`. Every other Marcode CLI path reads `MARCODE_HOME`.
- docs/user/background-service.md: new upstream doc pointed users at
`~/.config/systemd/user/t3code.service`. The launchd label stays
upstream-shaped (compatibility identifier); the systemd unit name does not.
- apps/web/src/components/ChatView.tsx: upstream's cmd+enter background draft
(pingdotgg#7821) calls `handleNewThread`, declared in a hunk Marcode had restructured
for the pill-nav header. It merged clean into a ChatView that never declared
it; restored `useNewThreadHandler()`.
Migrations
- Migrations.ts / Migrations.test.ts: upstream's 041_AuthSessionClientConnection
collided with Marcode's 041_ProjectionProjectFaviconPath. Renumbered to 042,
keeping the established +1 offset from Marcode owning id 33; the pin test now
covers it.
Server CLI copy
- cli/connect.ts, cli/service.ts: took upstream's platform-aware launchd copy
(a launch agent only runs while logged in) with Marcode's product name.
"T3 Connect" stays as-is — it is the product name of the service, not fork
branding.
Web surfaces
- routes/settings.tsx, components/usage/UsagePage.tsx: adopted upstream's
WorkspacePageHeader (pingdotgg#7153) and passed SIDEBARLESS_TITLEBAR_INSET_CLASS as an
override. Both routes mount no sidebar, so the header's collapsed-sidebar
inset never matches and the breadcrumb would sit under the traffic lights.
workspaceTitlebar.fork.test.ts rewritten to follow the refactor: the drag
region now lives in WorkspacePageHeader, and each sidebarless call site must
supply the unconditional inset.
- components/chat/ChatComposer.tsx: took upstream's composer top drawer
(pingdotgg#7150); Marcode's glass surface classes moved onto the surface div upstream
nested inside the new frame.
- components/chat/ComposerPendingApprovalPanel.tsx: took upstream's redesign.
Marcode's only change here shrank a "PENDING APPROVAL" label the redesign
deletes.
- components/chat/ChatHeader.tsx: kept Marcode's title-only header. Upstream
added a breadcrumb, inline rename, and a title action menu; Marcode portals
the header into FloatingPillNav and thread actions already have an entry
point on the sidebar row's context menu. Added ChatHeader.fork.test.tsx so
the next sync fails here instead of shipping two entry points.
- components/sidebar/SidebarChrome.tsx: kept Marcode's update-pill-only footer
(already pinned by SidebarChrome.fork.test.tsx). Upstream's SidebarUtilityMenu
stays exported so their SettingsSidebarNav keeps compiling unedited; their
SidebarBrand/T3Wordmark were dropped, reachable only from a header Marcode
replaced.
- components/RightPanelTabs.tsx: took upstream's tab mute (pingdotgg#7252) and the
shortcut-driven add-surface menu (pingdotgg#7318), dropped their `copy-path` action and
"Files" entry — Marcode has no right-panel file surface. The menu keeps
Marcode's placement beside the surface list rather than inline in the tab
strip, where the collision-aware shelf owns the layout.
- components/ThreadTerminalDrawer.tsx: kept Marcode's terminal chrome (placement
slot, find) and routed all three of its close affordances through upstream's
new confirm-before-close (pingdotgg#7592). `onSessionExited` stays direct. Took
upstream's `--terminal-background` token, kept the p-2 FitAddon padding.
- components/chat/MessagesTimeline.tsx: took upstream's `-mx-1` removal (the
subagent row border fix, pingdotgg#7207), kept Marcode's text size.
- components/Sidebar.tsx: took upstream's `cursor-pointer` fix (pingdotgg#5545), kept
Marcode's text size.
- routes/_chat.pull-requests.tsx, pullRequest/PullRequestListFilters.tsx: took
upstream's extracted PullRequestRefreshControl and Button-based filter
trigger; re-applied Marcode's styled Tooltip at the shared producer so both
call sites keep it.
- routes/__root.tsx: kept both watchers.
- index.css: both conflicts were unrelated blocks git aligned on a shared brace.
Kept Marcode's sidebar surface rules and floating chrome, took upstream's
preview-loading-progress animation. Upstream's `@variant dark` sidebar tokens
ride inside the zinc override block Marcode already declines.
- packages/client-runtime/src/state/threadSettled.ts: took upstream's
settle-only-once rule (pingdotgg#7454) — the terminal PR state must be the thread's
latest event — and kept Marcode's one-hour warm window on top. Migrated the
Marcode tests to the new `changeRequest` option shape and added a case pinning
the combination.
Other
- pnpm-lock.yaml regenerated with pnpm install --lockfile-only.
- pnpm-workspace.yaml moved (Clerk bumps), but the effect version is unchanged
and infra/relay/package.json did not move, so neither coupled vendored subtree
needed a sync.
- AGENTS.md: adopted upstream's "Plans and work artifacts" section and their
no-committed-PR-assets rule; their duplicate "Verifying"/"Pull requests"
sections and user-count blurb do not apply to Marcode's rewritten document.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xswf8VNiCmKDPUvzUR8o7W
@maarcomaarco added the upstream-sync Upstream T3 Code sync label Aug 23, 2026 — with Claude
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 23, 2026
@github-actions

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+865 B (+6.7%)15.1 KiB
CodexThread snapshot wire6.3 KiB6.9 KiB+629 B (+9.8%)7.3 KiB
CodexLive turn WebSocket wire6.3 KiB6.5 KiB+236 B (+3.7%)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.4 KiB+875 B (+6.8%)15.1 KiB
ClaudeThread snapshot wire6.3 KiB6.9 KiB+631 B (+9.8%)7.3 KiB
ClaudeLive turn WebSocket wire6.3 KiB6.5 KiB+244 B (+3.8%)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: 5bcc188 · PR result: e39df1e · 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.

@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:XXLupstream-syncUpstream T3 Code syncvouch: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" + ' chore(upstream): sync marcode through b1670ac7 by maarco · Pull Request #49 · maarco/marcode · GitHub
Skip to content

chore(upstream): sync marcode through b1670ac7 - #49

Closed
maarco wants to merge 112 commits into
mainfrom
claude/gracious-bohr-x80z9c
Closed

chore(upstream): sync marcode through b1670ac7#49
maarco wants to merge 112 commits into
mainfrom
claude/gracious-bohr-x80z9c

Conversation

@maarco

Copy link
Copy Markdown
Owner

What Changed

Merges pingdotgg/t3code@b1670ac7 (111 upstream commits, merge base 82b8a938) into main as a
normal two-parent merge on claude/gracious-bohr-x80z9c. 27 conflicted paths were resolved by hand;
no file was taken wholesale from either side.

The full per-path decision record is in the merge commit body. The parts that need a reviewer's eye:

Fork-identity breaks that merged clean and would have failed silently

  • apps/server/src/cloud/bootService.ts — upstream's new macOS launchd plist (feat(server): run the background service on macOS via launchd pingdotgg/t3code#6286) exports
    T3CODE_HOME. resolveLauncherBaseDir reads MARCODE_HOME and exits otherwise, so the launch
    agent would never have started a server. Renamed and pinned with a test.
  • apps/server/src/cli/triage.ts — upstream's new t3 triage command (feat(cli): npx t3 triage hands broken installs to your own coding agent pingdotgg/t3code#6563) read T3CODE_HOME.
  • apps/server/src/cloud/bootService.test.ts — an upstream assertion hardcoded
    systemctl --user disable --now t3code.service; Marcode's unit is marcode.service.
  • docs/user/background-service.md — new upstream doc pointed users at
    ~/.config/systemd/user/t3code.service.
  • apps/web/src/components/ChatView.tsx — upstream's cmd+enter background draft (feat(web): cmd+enter to create thread in background pingdotgg/t3code#7821) calls
    handleNewThread, which arrived in a hunk Marcode had restructured for the pill-nav header. It
    merged clean into a ChatView that never declared it (caught by typecheck).
  • .github/workflows/ci.yml — upstream added three jobs (test_server, rust,
    mobile_native_changes) on its Blacksmith fleet, which this fork cannot schedule on. All mapped to
    GitHub-hosted runners. Upstream also sharded apps/server out of test into test_server, which
    moved WorkspaceFileSystem's tests away from Marcode's ripgrep install step — the step follows
    them.

Marcode contracts held, upstream fixes taken on top

Tests added or rewritten to pin the boundary

  • ChatHeader.fork.test.tsx (new) — the header renders the title alone: no breadcrumb, rename, or
    action menu.
  • bootService.test.ts — the launchd plist exports MARCODE_HOME and no T3CODE_HOME.
  • workspaceTitlebar.fork.test.ts — rewritten to follow upstream's header refactor: the drag region
    now lives in WorkspacePageHeader, and each sidebarless call site must supply the unconditional
    inset. (This test failed on the raw merge — the pin worked.)
  • upstream-sync-workflow.test.ts — the two CI pins rewritten as invariants (no Blacksmith runner in
    ci.yml; whichever job runs --filter t3 test installs ripgrep) rather than positions, so they
    survive upstream adding jobs.
  • Migrations.test.ts — extended to cover id 42.

Why

The daily upstream sync found 111 new commits. This is the reviewable merge; it is a draft because
the per-hotspot decisions above want a human read, and because two things still need attention:

  • t3 triage points at upstream. The new apps/server/src/cli/triagePrompt.ts tells the user to
    search issues in pingdotgg/t3code, fetch PLAYBOOK.md from that repo, and file at
    github.com/pingdotgg/t3code/issues/new. Only the MARCODE_HOME read and the command description
    were retargeted — where Marcode users should file triage issues is a product call, and rewriting
    the whole playbook would be a large permanent edit surface in a brand-new upstream file.
  • No live client verification. This container has no browser or simulator, so the web and mobile
    surfaces touched here (composer drawers, right-panel tabs, terminal chrome, usage redesign,
    settings/usage headers) have not been driven. Worth one pass with test-t3-app before this comes
    out of draft.

UI Changes

Not captured — this container cannot drive a client. Upstream's own UI work in this range (usage
insights redesign pingdotgg#7147, composer state drawers pingdotgg#7150, unified workspace navigation pingdotgg#7153, collapsed
tool activity pingdotgg#7152) lands on surfaces Marcode customizes, so before/after images belong to the
verification pass above.

Checklist

  • This PR is small and focused — no: it is a 111-commit upstream sync, which is inherently broad.
  • I explained what changed and why
  • I included before/after screenshots for any UI changes — see above
  • I included a video for animation/interaction changes — not applicable

Verification

Run locally against the merge commit (e39df1e3):

  • Typecheck: contracts, client-runtime, web, server (t3), scripts, desktop, mobile,
    shared — all clean (suggestion-level Effect diagnostics only).
  • Tests: full apps/web suite (292 files, 2993 tests), full packages/client-runtime (53/685), full
    packages/contracts (20/290), full scripts (22 files), and focused apps/server under
    cli/, cloud/, persistence/, plus serviceLauncher.test.ts and CheckpointReactor.test.ts
    (41 files, 182 tests). All pass.
  • vp fmt --check clean across every changed file; vp lint clean (warnings only, all pre-existing).

One pre-existing failure, not caused by this merge:
scripts/update-release-package-versions.test.ts > preserves manifest write context and the filesystem cause chmods a file to 0o400 and expects the write to fail. This container runs as
root, which ignores the permission bit. The file is untouched by this merge and the test passes in
CI.

Coupled vendored subtrees: pnpm-workspace.yaml moved (Clerk bumps) but the effect version is
unchanged and infra/relay/package.json did not move, so neither sync:repos coupling triggered.
pnpm-lock.yaml was regenerated with pnpm install --lockfile-only.


Generated by Claude Code

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>
t3-codeBotand others added 22 commits August 22, 2026 10:30
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.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>
Merges 111 upstream commits (merge base 82b8a93) into main. Every conflict was
resolved by hand, combining upstream intent with Marcode's product contracts;
no file was taken wholesale from either side.
Conflict decisions
------------------
Structural / deletions
- .plans/effect-atom.md: took upstream's deletion. Upstream moved
implementation plans out of the repository (pingdotgg#7665); Marcode's only edit to
that file was rewriting `.t3` paths to `.marcode`, so nothing survives it.
- apps/web/src/components/files/FileBrowserPanel.tsx, FilePreviewPanel.tsx:
stayed deleted. Marcode retired the right-panel file surfaces. Upstream's
edits there were a refresh-the-open-file wiring (pingdotgg#7490) and a
`--contrast-foreground` token swap for its own tree; Marcode's floating
editor has neither affordance, so there was nothing to port.
CI runners and the workspace search dependency
- .github/workflows/ci.yml: took upstream's `mobile_native_changes` gate on
the macOS lint job, kept Marcode's GitHub-hosted `macos-26` runner. The
three jobs upstream added in the same range (`test_server`, `rust`,
`mobile_native_changes`) merged clean on Blacksmith runners the fork cannot
schedule on; all mapped to `ubuntu-24.04`.
- Upstream sharded apps/server out of `test` into `test_server` (pingdotgg#7286), which
moved WorkspaceFileSystem's tests away from Marcode's ripgrep install step.
The step follows the tests into `test_server`.
- scripts/upstream-sync-workflow.test.ts: both pins rewritten as invariants
rather than positions — no ci.yml job may use a Blacksmith runner, and
whichever job runs `--filter t3 test` must install ripgrep. The positional
list would have broken on every upstream job addition.
Fork identity (clean merges that would have failed silently)
- apps/server/src/cloud/bootService.ts: upstream's new launchd plist (pingdotgg#6286)
exports `T3CODE_HOME`. resolveLauncherBaseDir reads `MARCODE_HOME` and exits
otherwise, so the launch agent would never have started a server. Renamed,
and pinned with a test asserting the plist carries MARCODE_HOME and no
T3CODE_HOME.
- apps/server/src/cloud/bootService.test.ts: an upstream assertion hardcoded
`systemctl --user disable --now t3code.service`; Marcode's unit is
marcode.service.
- apps/server/src/cli/triage.ts: upstream's new `t3 triage` command (pingdotgg#6563)
read `T3CODE_HOME`. Every other Marcode CLI path reads `MARCODE_HOME`.
- docs/user/background-service.md: new upstream doc pointed users at
`~/.config/systemd/user/t3code.service`. The launchd label stays
upstream-shaped (compatibility identifier); the systemd unit name does not.
- apps/web/src/components/ChatView.tsx: upstream's cmd+enter background draft
(pingdotgg#7821) calls `handleNewThread`, declared in a hunk Marcode had restructured
for the pill-nav header. It merged clean into a ChatView that never declared
it; restored `useNewThreadHandler()`.
Migrations
- Migrations.ts / Migrations.test.ts: upstream's 041_AuthSessionClientConnection
collided with Marcode's 041_ProjectionProjectFaviconPath. Renumbered to 042,
keeping the established +1 offset from Marcode owning id 33; the pin test now
covers it.
Server CLI copy
- cli/connect.ts, cli/service.ts: took upstream's platform-aware launchd copy
(a launch agent only runs while logged in) with Marcode's product name.
"T3 Connect" stays as-is — it is the product name of the service, not fork
branding.
Web surfaces
- routes/settings.tsx, components/usage/UsagePage.tsx: adopted upstream's
WorkspacePageHeader (pingdotgg#7153) and passed SIDEBARLESS_TITLEBAR_INSET_CLASS as an
override. Both routes mount no sidebar, so the header's collapsed-sidebar
inset never matches and the breadcrumb would sit under the traffic lights.
workspaceTitlebar.fork.test.ts rewritten to follow the refactor: the drag
region now lives in WorkspacePageHeader, and each sidebarless call site must
supply the unconditional inset.
- components/chat/ChatComposer.tsx: took upstream's composer top drawer
(pingdotgg#7150); Marcode's glass surface classes moved onto the surface div upstream
nested inside the new frame.
- components/chat/ComposerPendingApprovalPanel.tsx: took upstream's redesign.
Marcode's only change here shrank a "PENDING APPROVAL" label the redesign
deletes.
- components/chat/ChatHeader.tsx: kept Marcode's title-only header. Upstream
added a breadcrumb, inline rename, and a title action menu; Marcode portals
the header into FloatingPillNav and thread actions already have an entry
point on the sidebar row's context menu. Added ChatHeader.fork.test.tsx so
the next sync fails here instead of shipping two entry points.
- components/sidebar/SidebarChrome.tsx: kept Marcode's update-pill-only footer
(already pinned by SidebarChrome.fork.test.tsx). Upstream's SidebarUtilityMenu
stays exported so their SettingsSidebarNav keeps compiling unedited; their
SidebarBrand/T3Wordmark were dropped, reachable only from a header Marcode
replaced.
- components/RightPanelTabs.tsx: took upstream's tab mute (pingdotgg#7252) and the
shortcut-driven add-surface menu (pingdotgg#7318), dropped their `copy-path` action and
"Files" entry — Marcode has no right-panel file surface. The menu keeps
Marcode's placement beside the surface list rather than inline in the tab
strip, where the collision-aware shelf owns the layout.
- components/ThreadTerminalDrawer.tsx: kept Marcode's terminal chrome (placement
slot, find) and routed all three of its close affordances through upstream's
new confirm-before-close (pingdotgg#7592). `onSessionExited` stays direct. Took
upstream's `--terminal-background` token, kept the p-2 FitAddon padding.
- components/chat/MessagesTimeline.tsx: took upstream's `-mx-1` removal (the
subagent row border fix, pingdotgg#7207), kept Marcode's text size.
- components/Sidebar.tsx: took upstream's `cursor-pointer` fix (pingdotgg#5545), kept
Marcode's text size.
- routes/_chat.pull-requests.tsx, pullRequest/PullRequestListFilters.tsx: took
upstream's extracted PullRequestRefreshControl and Button-based filter
trigger; re-applied Marcode's styled Tooltip at the shared producer so both
call sites keep it.
- routes/__root.tsx: kept both watchers.
- index.css: both conflicts were unrelated blocks git aligned on a shared brace.
Kept Marcode's sidebar surface rules and floating chrome, took upstream's
preview-loading-progress animation. Upstream's `@variant dark` sidebar tokens
ride inside the zinc override block Marcode already declines.
- packages/client-runtime/src/state/threadSettled.ts: took upstream's
settle-only-once rule (pingdotgg#7454) — the terminal PR state must be the thread's
latest event — and kept Marcode's one-hour warm window on top. Migrated the
Marcode tests to the new `changeRequest` option shape and added a case pinning
the combination.
Other
- pnpm-lock.yaml regenerated with pnpm install --lockfile-only.
- pnpm-workspace.yaml moved (Clerk bumps), but the effect version is unchanged
and infra/relay/package.json did not move, so neither coupled vendored subtree
needed a sync.
- AGENTS.md: adopted upstream's "Plans and work artifacts" section and their
no-committed-PR-assets rule; their duplicate "Verifying"/"Pull requests"
sections and user-count blurb do not apply to Marcode's rewritten document.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xswf8VNiCmKDPUvzUR8o7W
@maarcomaarco added the upstream-sync Upstream T3 Code sync label Aug 23, 2026 — with Claude
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 23, 2026
@github-actions

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+865 B (+6.7%)15.1 KiB
CodexThread snapshot wire6.3 KiB6.9 KiB+629 B (+9.8%)7.3 KiB
CodexLive turn WebSocket wire6.3 KiB6.5 KiB+236 B (+3.7%)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.4 KiB+875 B (+6.8%)15.1 KiB
ClaudeThread snapshot wire6.3 KiB6.9 KiB+631 B (+9.8%)7.3 KiB
ClaudeLive turn WebSocket wire6.3 KiB6.5 KiB+244 B (+3.8%)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: 5bcc188 · PR result: e39df1e · 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.

@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:XXLupstream-syncUpstream T3 Code syncvouch: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('^' + ".*" + ' chore(upstream): sync marcode through b1670ac7 by maarco · Pull Request #49 · maarco/marcode · GitHub
Skip to content

chore(upstream): sync marcode through b1670ac7 - #49

Closed
maarco wants to merge 112 commits into
mainfrom
claude/gracious-bohr-x80z9c
Closed

chore(upstream): sync marcode through b1670ac7#49
maarco wants to merge 112 commits into
mainfrom
claude/gracious-bohr-x80z9c

Conversation

@maarco

Copy link
Copy Markdown
Owner

What Changed

Merges pingdotgg/t3code@b1670ac7 (111 upstream commits, merge base 82b8a938) into main as a
normal two-parent merge on claude/gracious-bohr-x80z9c. 27 conflicted paths were resolved by hand;
no file was taken wholesale from either side.

The full per-path decision record is in the merge commit body. The parts that need a reviewer's eye:

Fork-identity breaks that merged clean and would have failed silently

  • apps/server/src/cloud/bootService.ts — upstream's new macOS launchd plist (feat(server): run the background service on macOS via launchd pingdotgg/t3code#6286) exports
    T3CODE_HOME. resolveLauncherBaseDir reads MARCODE_HOME and exits otherwise, so the launch
    agent would never have started a server. Renamed and pinned with a test.
  • apps/server/src/cli/triage.ts — upstream's new t3 triage command (feat(cli): npx t3 triage hands broken installs to your own coding agent pingdotgg/t3code#6563) read T3CODE_HOME.
  • apps/server/src/cloud/bootService.test.ts — an upstream assertion hardcoded
    systemctl --user disable --now t3code.service; Marcode's unit is marcode.service.
  • docs/user/background-service.md — new upstream doc pointed users at
    ~/.config/systemd/user/t3code.service.
  • apps/web/src/components/ChatView.tsx — upstream's cmd+enter background draft (feat(web): cmd+enter to create thread in background pingdotgg/t3code#7821) calls
    handleNewThread, which arrived in a hunk Marcode had restructured for the pill-nav header. It
    merged clean into a ChatView that never declared it (caught by typecheck).
  • .github/workflows/ci.yml — upstream added three jobs (test_server, rust,
    mobile_native_changes) on its Blacksmith fleet, which this fork cannot schedule on. All mapped to
    GitHub-hosted runners. Upstream also sharded apps/server out of test into test_server, which
    moved WorkspaceFileSystem's tests away from Marcode's ripgrep install step — the step follows
    them.

Marcode contracts held, upstream fixes taken on top

Tests added or rewritten to pin the boundary

  • ChatHeader.fork.test.tsx (new) — the header renders the title alone: no breadcrumb, rename, or
    action menu.
  • bootService.test.ts — the launchd plist exports MARCODE_HOME and no T3CODE_HOME.
  • workspaceTitlebar.fork.test.ts — rewritten to follow upstream's header refactor: the drag region
    now lives in WorkspacePageHeader, and each sidebarless call site must supply the unconditional
    inset. (This test failed on the raw merge — the pin worked.)
  • upstream-sync-workflow.test.ts — the two CI pins rewritten as invariants (no Blacksmith runner in
    ci.yml; whichever job runs --filter t3 test installs ripgrep) rather than positions, so they
    survive upstream adding jobs.
  • Migrations.test.ts — extended to cover id 42.

Why

The daily upstream sync found 111 new commits. This is the reviewable merge; it is a draft because
the per-hotspot decisions above want a human read, and because two things still need attention:

  • t3 triage points at upstream. The new apps/server/src/cli/triagePrompt.ts tells the user to
    search issues in pingdotgg/t3code, fetch PLAYBOOK.md from that repo, and file at
    github.com/pingdotgg/t3code/issues/new. Only the MARCODE_HOME read and the command description
    were retargeted — where Marcode users should file triage issues is a product call, and rewriting
    the whole playbook would be a large permanent edit surface in a brand-new upstream file.
  • No live client verification. This container has no browser or simulator, so the web and mobile
    surfaces touched here (composer drawers, right-panel tabs, terminal chrome, usage redesign,
    settings/usage headers) have not been driven. Worth one pass with test-t3-app before this comes
    out of draft.

UI Changes

Not captured — this container cannot drive a client. Upstream's own UI work in this range (usage
insights redesign pingdotgg#7147, composer state drawers pingdotgg#7150, unified workspace navigation pingdotgg#7153, collapsed
tool activity pingdotgg#7152) lands on surfaces Marcode customizes, so before/after images belong to the
verification pass above.

Checklist

  • This PR is small and focused — no: it is a 111-commit upstream sync, which is inherently broad.
  • I explained what changed and why
  • I included before/after screenshots for any UI changes — see above
  • I included a video for animation/interaction changes — not applicable

Verification

Run locally against the merge commit (e39df1e3):

  • Typecheck: contracts, client-runtime, web, server (t3), scripts, desktop, mobile,
    shared — all clean (suggestion-level Effect diagnostics only).
  • Tests: full apps/web suite (292 files, 2993 tests), full packages/client-runtime (53/685), full
    packages/contracts (20/290), full scripts (22 files), and focused apps/server under
    cli/, cloud/, persistence/, plus serviceLauncher.test.ts and CheckpointReactor.test.ts
    (41 files, 182 tests). All pass.
  • vp fmt --check clean across every changed file; vp lint clean (warnings only, all pre-existing).

One pre-existing failure, not caused by this merge:
scripts/update-release-package-versions.test.ts > preserves manifest write context and the filesystem cause chmods a file to 0o400 and expects the write to fail. This container runs as
root, which ignores the permission bit. The file is untouched by this merge and the test passes in
CI.

Coupled vendored subtrees: pnpm-workspace.yaml moved (Clerk bumps) but the effect version is
unchanged and infra/relay/package.json did not move, so neither sync:repos coupling triggered.
pnpm-lock.yaml was regenerated with pnpm install --lockfile-only.


Generated by Claude Code

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>
t3-codeBotand others added 22 commits August 22, 2026 10:30
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.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>
Merges 111 upstream commits (merge base 82b8a93) into main. Every conflict was
resolved by hand, combining upstream intent with Marcode's product contracts;
no file was taken wholesale from either side.
Conflict decisions
------------------
Structural / deletions
- .plans/effect-atom.md: took upstream's deletion. Upstream moved
implementation plans out of the repository (pingdotgg#7665); Marcode's only edit to
that file was rewriting `.t3` paths to `.marcode`, so nothing survives it.
- apps/web/src/components/files/FileBrowserPanel.tsx, FilePreviewPanel.tsx:
stayed deleted. Marcode retired the right-panel file surfaces. Upstream's
edits there were a refresh-the-open-file wiring (pingdotgg#7490) and a
`--contrast-foreground` token swap for its own tree; Marcode's floating
editor has neither affordance, so there was nothing to port.
CI runners and the workspace search dependency
- .github/workflows/ci.yml: took upstream's `mobile_native_changes` gate on
the macOS lint job, kept Marcode's GitHub-hosted `macos-26` runner. The
three jobs upstream added in the same range (`test_server`, `rust`,
`mobile_native_changes`) merged clean on Blacksmith runners the fork cannot
schedule on; all mapped to `ubuntu-24.04`.
- Upstream sharded apps/server out of `test` into `test_server` (pingdotgg#7286), which
moved WorkspaceFileSystem's tests away from Marcode's ripgrep install step.
The step follows the tests into `test_server`.
- scripts/upstream-sync-workflow.test.ts: both pins rewritten as invariants
rather than positions — no ci.yml job may use a Blacksmith runner, and
whichever job runs `--filter t3 test` must install ripgrep. The positional
list would have broken on every upstream job addition.
Fork identity (clean merges that would have failed silently)
- apps/server/src/cloud/bootService.ts: upstream's new launchd plist (pingdotgg#6286)
exports `T3CODE_HOME`. resolveLauncherBaseDir reads `MARCODE_HOME` and exits
otherwise, so the launch agent would never have started a server. Renamed,
and pinned with a test asserting the plist carries MARCODE_HOME and no
T3CODE_HOME.
- apps/server/src/cloud/bootService.test.ts: an upstream assertion hardcoded
`systemctl --user disable --now t3code.service`; Marcode's unit is
marcode.service.
- apps/server/src/cli/triage.ts: upstream's new `t3 triage` command (pingdotgg#6563)
read `T3CODE_HOME`. Every other Marcode CLI path reads `MARCODE_HOME`.
- docs/user/background-service.md: new upstream doc pointed users at
`~/.config/systemd/user/t3code.service`. The launchd label stays
upstream-shaped (compatibility identifier); the systemd unit name does not.
- apps/web/src/components/ChatView.tsx: upstream's cmd+enter background draft
(pingdotgg#7821) calls `handleNewThread`, declared in a hunk Marcode had restructured
for the pill-nav header. It merged clean into a ChatView that never declared
it; restored `useNewThreadHandler()`.
Migrations
- Migrations.ts / Migrations.test.ts: upstream's 041_AuthSessionClientConnection
collided with Marcode's 041_ProjectionProjectFaviconPath. Renumbered to 042,
keeping the established +1 offset from Marcode owning id 33; the pin test now
covers it.
Server CLI copy
- cli/connect.ts, cli/service.ts: took upstream's platform-aware launchd copy
(a launch agent only runs while logged in) with Marcode's product name.
"T3 Connect" stays as-is — it is the product name of the service, not fork
branding.
Web surfaces
- routes/settings.tsx, components/usage/UsagePage.tsx: adopted upstream's
WorkspacePageHeader (pingdotgg#7153) and passed SIDEBARLESS_TITLEBAR_INSET_CLASS as an
override. Both routes mount no sidebar, so the header's collapsed-sidebar
inset never matches and the breadcrumb would sit under the traffic lights.
workspaceTitlebar.fork.test.ts rewritten to follow the refactor: the drag
region now lives in WorkspacePageHeader, and each sidebarless call site must
supply the unconditional inset.
- components/chat/ChatComposer.tsx: took upstream's composer top drawer
(pingdotgg#7150); Marcode's glass surface classes moved onto the surface div upstream
nested inside the new frame.
- components/chat/ComposerPendingApprovalPanel.tsx: took upstream's redesign.
Marcode's only change here shrank a "PENDING APPROVAL" label the redesign
deletes.
- components/chat/ChatHeader.tsx: kept Marcode's title-only header. Upstream
added a breadcrumb, inline rename, and a title action menu; Marcode portals
the header into FloatingPillNav and thread actions already have an entry
point on the sidebar row's context menu. Added ChatHeader.fork.test.tsx so
the next sync fails here instead of shipping two entry points.
- components/sidebar/SidebarChrome.tsx: kept Marcode's update-pill-only footer
(already pinned by SidebarChrome.fork.test.tsx). Upstream's SidebarUtilityMenu
stays exported so their SettingsSidebarNav keeps compiling unedited; their
SidebarBrand/T3Wordmark were dropped, reachable only from a header Marcode
replaced.
- components/RightPanelTabs.tsx: took upstream's tab mute (pingdotgg#7252) and the
shortcut-driven add-surface menu (pingdotgg#7318), dropped their `copy-path` action and
"Files" entry — Marcode has no right-panel file surface. The menu keeps
Marcode's placement beside the surface list rather than inline in the tab
strip, where the collision-aware shelf owns the layout.
- components/ThreadTerminalDrawer.tsx: kept Marcode's terminal chrome (placement
slot, find) and routed all three of its close affordances through upstream's
new confirm-before-close (pingdotgg#7592). `onSessionExited` stays direct. Took
upstream's `--terminal-background` token, kept the p-2 FitAddon padding.
- components/chat/MessagesTimeline.tsx: took upstream's `-mx-1` removal (the
subagent row border fix, pingdotgg#7207), kept Marcode's text size.
- components/Sidebar.tsx: took upstream's `cursor-pointer` fix (pingdotgg#5545), kept
Marcode's text size.
- routes/_chat.pull-requests.tsx, pullRequest/PullRequestListFilters.tsx: took
upstream's extracted PullRequestRefreshControl and Button-based filter
trigger; re-applied Marcode's styled Tooltip at the shared producer so both
call sites keep it.
- routes/__root.tsx: kept both watchers.
- index.css: both conflicts were unrelated blocks git aligned on a shared brace.
Kept Marcode's sidebar surface rules and floating chrome, took upstream's
preview-loading-progress animation. Upstream's `@variant dark` sidebar tokens
ride inside the zinc override block Marcode already declines.
- packages/client-runtime/src/state/threadSettled.ts: took upstream's
settle-only-once rule (pingdotgg#7454) — the terminal PR state must be the thread's
latest event — and kept Marcode's one-hour warm window on top. Migrated the
Marcode tests to the new `changeRequest` option shape and added a case pinning
the combination.
Other
- pnpm-lock.yaml regenerated with pnpm install --lockfile-only.
- pnpm-workspace.yaml moved (Clerk bumps), but the effect version is unchanged
and infra/relay/package.json did not move, so neither coupled vendored subtree
needed a sync.
- AGENTS.md: adopted upstream's "Plans and work artifacts" section and their
no-committed-PR-assets rule; their duplicate "Verifying"/"Pull requests"
sections and user-count blurb do not apply to Marcode's rewritten document.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xswf8VNiCmKDPUvzUR8o7W
@maarcomaarco added the upstream-sync Upstream T3 Code sync label Aug 23, 2026 — with Claude
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 23, 2026
@github-actions

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+865 B (+6.7%)15.1 KiB
CodexThread snapshot wire6.3 KiB6.9 KiB+629 B (+9.8%)7.3 KiB
CodexLive turn WebSocket wire6.3 KiB6.5 KiB+236 B (+3.7%)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.4 KiB+875 B (+6.8%)15.1 KiB
ClaudeThread snapshot wire6.3 KiB6.9 KiB+631 B (+9.8%)7.3 KiB
ClaudeLive turn WebSocket wire6.3 KiB6.5 KiB+244 B (+3.8%)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: 5bcc188 · PR result: e39df1e · 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.

@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:XXLupstream-syncUpstream T3 Code syncvouch: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('^' + ".*" + ' chore(upstream): sync marcode through b1670ac7 by maarco · Pull Request #49 · maarco/marcode · GitHub
Skip to content

chore(upstream): sync marcode through b1670ac7 - #49

Closed
maarco wants to merge 112 commits into
mainfrom
claude/gracious-bohr-x80z9c
Closed

chore(upstream): sync marcode through b1670ac7#49
maarco wants to merge 112 commits into
mainfrom
claude/gracious-bohr-x80z9c

Conversation

@maarco

Copy link
Copy Markdown
Owner

What Changed

Merges pingdotgg/t3code@b1670ac7 (111 upstream commits, merge base 82b8a938) into main as a
normal two-parent merge on claude/gracious-bohr-x80z9c. 27 conflicted paths were resolved by hand;
no file was taken wholesale from either side.

The full per-path decision record is in the merge commit body. The parts that need a reviewer's eye:

Fork-identity breaks that merged clean and would have failed silently

  • apps/server/src/cloud/bootService.ts — upstream's new macOS launchd plist (feat(server): run the background service on macOS via launchd pingdotgg/t3code#6286) exports
    T3CODE_HOME. resolveLauncherBaseDir reads MARCODE_HOME and exits otherwise, so the launch
    agent would never have started a server. Renamed and pinned with a test.
  • apps/server/src/cli/triage.ts — upstream's new t3 triage command (feat(cli): npx t3 triage hands broken installs to your own coding agent pingdotgg/t3code#6563) read T3CODE_HOME.
  • apps/server/src/cloud/bootService.test.ts — an upstream assertion hardcoded
    systemctl --user disable --now t3code.service; Marcode's unit is marcode.service.
  • docs/user/background-service.md — new upstream doc pointed users at
    ~/.config/systemd/user/t3code.service.
  • apps/web/src/components/ChatView.tsx — upstream's cmd+enter background draft (feat(web): cmd+enter to create thread in background pingdotgg/t3code#7821) calls
    handleNewThread, which arrived in a hunk Marcode had restructured for the pill-nav header. It
    merged clean into a ChatView that never declared it (caught by typecheck).
  • .github/workflows/ci.yml — upstream added three jobs (test_server, rust,
    mobile_native_changes) on its Blacksmith fleet, which this fork cannot schedule on. All mapped to
    GitHub-hosted runners. Upstream also sharded apps/server out of test into test_server, which
    moved WorkspaceFileSystem's tests away from Marcode's ripgrep install step — the step follows
    them.

Marcode contracts held, upstream fixes taken on top

Tests added or rewritten to pin the boundary

  • ChatHeader.fork.test.tsx (new) — the header renders the title alone: no breadcrumb, rename, or
    action menu.
  • bootService.test.ts — the launchd plist exports MARCODE_HOME and no T3CODE_HOME.
  • workspaceTitlebar.fork.test.ts — rewritten to follow upstream's header refactor: the drag region
    now lives in WorkspacePageHeader, and each sidebarless call site must supply the unconditional
    inset. (This test failed on the raw merge — the pin worked.)
  • upstream-sync-workflow.test.ts — the two CI pins rewritten as invariants (no Blacksmith runner in
    ci.yml; whichever job runs --filter t3 test installs ripgrep) rather than positions, so they
    survive upstream adding jobs.
  • Migrations.test.ts — extended to cover id 42.

Why

The daily upstream sync found 111 new commits. This is the reviewable merge; it is a draft because
the per-hotspot decisions above want a human read, and because two things still need attention:

  • t3 triage points at upstream. The new apps/server/src/cli/triagePrompt.ts tells the user to
    search issues in pingdotgg/t3code, fetch PLAYBOOK.md from that repo, and file at
    github.com/pingdotgg/t3code/issues/new. Only the MARCODE_HOME read and the command description
    were retargeted — where Marcode users should file triage issues is a product call, and rewriting
    the whole playbook would be a large permanent edit surface in a brand-new upstream file.
  • No live client verification. This container has no browser or simulator, so the web and mobile
    surfaces touched here (composer drawers, right-panel tabs, terminal chrome, usage redesign,
    settings/usage headers) have not been driven. Worth one pass with test-t3-app before this comes
    out of draft.

UI Changes

Not captured — this container cannot drive a client. Upstream's own UI work in this range (usage
insights redesign pingdotgg#7147, composer state drawers pingdotgg#7150, unified workspace navigation pingdotgg#7153, collapsed
tool activity pingdotgg#7152) lands on surfaces Marcode customizes, so before/after images belong to the
verification pass above.

Checklist

  • This PR is small and focused — no: it is a 111-commit upstream sync, which is inherently broad.
  • I explained what changed and why
  • I included before/after screenshots for any UI changes — see above
  • I included a video for animation/interaction changes — not applicable

Verification

Run locally against the merge commit (e39df1e3):

  • Typecheck: contracts, client-runtime, web, server (t3), scripts, desktop, mobile,
    shared — all clean (suggestion-level Effect diagnostics only).
  • Tests: full apps/web suite (292 files, 2993 tests), full packages/client-runtime (53/685), full
    packages/contracts (20/290), full scripts (22 files), and focused apps/server under
    cli/, cloud/, persistence/, plus serviceLauncher.test.ts and CheckpointReactor.test.ts
    (41 files, 182 tests). All pass.
  • vp fmt --check clean across every changed file; vp lint clean (warnings only, all pre-existing).

One pre-existing failure, not caused by this merge:
scripts/update-release-package-versions.test.ts > preserves manifest write context and the filesystem cause chmods a file to 0o400 and expects the write to fail. This container runs as
root, which ignores the permission bit. The file is untouched by this merge and the test passes in
CI.

Coupled vendored subtrees: pnpm-workspace.yaml moved (Clerk bumps) but the effect version is
unchanged and infra/relay/package.json did not move, so neither sync:repos coupling triggered.
pnpm-lock.yaml was regenerated with pnpm install --lockfile-only.


Generated by Claude Code

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>
t3-codeBotand others added 22 commits August 22, 2026 10:30
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.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>
Merges 111 upstream commits (merge base 82b8a93) into main. Every conflict was
resolved by hand, combining upstream intent with Marcode's product contracts;
no file was taken wholesale from either side.
Conflict decisions
------------------
Structural / deletions
- .plans/effect-atom.md: took upstream's deletion. Upstream moved
implementation plans out of the repository (pingdotgg#7665); Marcode's only edit to
that file was rewriting `.t3` paths to `.marcode`, so nothing survives it.
- apps/web/src/components/files/FileBrowserPanel.tsx, FilePreviewPanel.tsx:
stayed deleted. Marcode retired the right-panel file surfaces. Upstream's
edits there were a refresh-the-open-file wiring (pingdotgg#7490) and a
`--contrast-foreground` token swap for its own tree; Marcode's floating
editor has neither affordance, so there was nothing to port.
CI runners and the workspace search dependency
- .github/workflows/ci.yml: took upstream's `mobile_native_changes` gate on
the macOS lint job, kept Marcode's GitHub-hosted `macos-26` runner. The
three jobs upstream added in the same range (`test_server`, `rust`,
`mobile_native_changes`) merged clean on Blacksmith runners the fork cannot
schedule on; all mapped to `ubuntu-24.04`.
- Upstream sharded apps/server out of `test` into `test_server` (pingdotgg#7286), which
moved WorkspaceFileSystem's tests away from Marcode's ripgrep install step.
The step follows the tests into `test_server`.
- scripts/upstream-sync-workflow.test.ts: both pins rewritten as invariants
rather than positions — no ci.yml job may use a Blacksmith runner, and
whichever job runs `--filter t3 test` must install ripgrep. The positional
list would have broken on every upstream job addition.
Fork identity (clean merges that would have failed silently)
- apps/server/src/cloud/bootService.ts: upstream's new launchd plist (pingdotgg#6286)
exports `T3CODE_HOME`. resolveLauncherBaseDir reads `MARCODE_HOME` and exits
otherwise, so the launch agent would never have started a server. Renamed,
and pinned with a test asserting the plist carries MARCODE_HOME and no
T3CODE_HOME.
- apps/server/src/cloud/bootService.test.ts: an upstream assertion hardcoded
`systemctl --user disable --now t3code.service`; Marcode's unit is
marcode.service.
- apps/server/src/cli/triage.ts: upstream's new `t3 triage` command (pingdotgg#6563)
read `T3CODE_HOME`. Every other Marcode CLI path reads `MARCODE_HOME`.
- docs/user/background-service.md: new upstream doc pointed users at
`~/.config/systemd/user/t3code.service`. The launchd label stays
upstream-shaped (compatibility identifier); the systemd unit name does not.
- apps/web/src/components/ChatView.tsx: upstream's cmd+enter background draft
(pingdotgg#7821) calls `handleNewThread`, declared in a hunk Marcode had restructured
for the pill-nav header. It merged clean into a ChatView that never declared
it; restored `useNewThreadHandler()`.
Migrations
- Migrations.ts / Migrations.test.ts: upstream's 041_AuthSessionClientConnection
collided with Marcode's 041_ProjectionProjectFaviconPath. Renumbered to 042,
keeping the established +1 offset from Marcode owning id 33; the pin test now
covers it.
Server CLI copy
- cli/connect.ts, cli/service.ts: took upstream's platform-aware launchd copy
(a launch agent only runs while logged in) with Marcode's product name.
"T3 Connect" stays as-is — it is the product name of the service, not fork
branding.
Web surfaces
- routes/settings.tsx, components/usage/UsagePage.tsx: adopted upstream's
WorkspacePageHeader (pingdotgg#7153) and passed SIDEBARLESS_TITLEBAR_INSET_CLASS as an
override. Both routes mount no sidebar, so the header's collapsed-sidebar
inset never matches and the breadcrumb would sit under the traffic lights.
workspaceTitlebar.fork.test.ts rewritten to follow the refactor: the drag
region now lives in WorkspacePageHeader, and each sidebarless call site must
supply the unconditional inset.
- components/chat/ChatComposer.tsx: took upstream's composer top drawer
(pingdotgg#7150); Marcode's glass surface classes moved onto the surface div upstream
nested inside the new frame.
- components/chat/ComposerPendingApprovalPanel.tsx: took upstream's redesign.
Marcode's only change here shrank a "PENDING APPROVAL" label the redesign
deletes.
- components/chat/ChatHeader.tsx: kept Marcode's title-only header. Upstream
added a breadcrumb, inline rename, and a title action menu; Marcode portals
the header into FloatingPillNav and thread actions already have an entry
point on the sidebar row's context menu. Added ChatHeader.fork.test.tsx so
the next sync fails here instead of shipping two entry points.
- components/sidebar/SidebarChrome.tsx: kept Marcode's update-pill-only footer
(already pinned by SidebarChrome.fork.test.tsx). Upstream's SidebarUtilityMenu
stays exported so their SettingsSidebarNav keeps compiling unedited; their
SidebarBrand/T3Wordmark were dropped, reachable only from a header Marcode
replaced.
- components/RightPanelTabs.tsx: took upstream's tab mute (pingdotgg#7252) and the
shortcut-driven add-surface menu (pingdotgg#7318), dropped their `copy-path` action and
"Files" entry — Marcode has no right-panel file surface. The menu keeps
Marcode's placement beside the surface list rather than inline in the tab
strip, where the collision-aware shelf owns the layout.
- components/ThreadTerminalDrawer.tsx: kept Marcode's terminal chrome (placement
slot, find) and routed all three of its close affordances through upstream's
new confirm-before-close (pingdotgg#7592). `onSessionExited` stays direct. Took
upstream's `--terminal-background` token, kept the p-2 FitAddon padding.
- components/chat/MessagesTimeline.tsx: took upstream's `-mx-1` removal (the
subagent row border fix, pingdotgg#7207), kept Marcode's text size.
- components/Sidebar.tsx: took upstream's `cursor-pointer` fix (pingdotgg#5545), kept
Marcode's text size.
- routes/_chat.pull-requests.tsx, pullRequest/PullRequestListFilters.tsx: took
upstream's extracted PullRequestRefreshControl and Button-based filter
trigger; re-applied Marcode's styled Tooltip at the shared producer so both
call sites keep it.
- routes/__root.tsx: kept both watchers.
- index.css: both conflicts were unrelated blocks git aligned on a shared brace.
Kept Marcode's sidebar surface rules and floating chrome, took upstream's
preview-loading-progress animation. Upstream's `@variant dark` sidebar tokens
ride inside the zinc override block Marcode already declines.
- packages/client-runtime/src/state/threadSettled.ts: took upstream's
settle-only-once rule (pingdotgg#7454) — the terminal PR state must be the thread's
latest event — and kept Marcode's one-hour warm window on top. Migrated the
Marcode tests to the new `changeRequest` option shape and added a case pinning
the combination.
Other
- pnpm-lock.yaml regenerated with pnpm install --lockfile-only.
- pnpm-workspace.yaml moved (Clerk bumps), but the effect version is unchanged
and infra/relay/package.json did not move, so neither coupled vendored subtree
needed a sync.
- AGENTS.md: adopted upstream's "Plans and work artifacts" section and their
no-committed-PR-assets rule; their duplicate "Verifying"/"Pull requests"
sections and user-count blurb do not apply to Marcode's rewritten document.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xswf8VNiCmKDPUvzUR8o7W
@maarcomaarco added the upstream-sync Upstream T3 Code sync label Aug 23, 2026 — with Claude
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 23, 2026
@github-actions

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+865 B (+6.7%)15.1 KiB
CodexThread snapshot wire6.3 KiB6.9 KiB+629 B (+9.8%)7.3 KiB
CodexLive turn WebSocket wire6.3 KiB6.5 KiB+236 B (+3.7%)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.4 KiB+875 B (+6.8%)15.1 KiB
ClaudeThread snapshot wire6.3 KiB6.9 KiB+631 B (+9.8%)7.3 KiB
ClaudeLive turn WebSocket wire6.3 KiB6.5 KiB+244 B (+3.8%)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: 5bcc188 · PR result: e39df1e · 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.

@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:XXLupstream-syncUpstream T3 Code syncvouch: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); } })(); })(); chore(upstream): sync marcode through b1670ac7 by maarco · Pull Request #49 · maarco/marcode · GitHub
Skip to content

chore(upstream): sync marcode through b1670ac7 - #49

Closed
maarco wants to merge 112 commits into
mainfrom
claude/gracious-bohr-x80z9c
Closed

chore(upstream): sync marcode through b1670ac7#49
maarco wants to merge 112 commits into
mainfrom
claude/gracious-bohr-x80z9c

Conversation

@maarco

Copy link
Copy Markdown
Owner

What Changed

Merges pingdotgg/t3code@b1670ac7 (111 upstream commits, merge base 82b8a938) into main as a
normal two-parent merge on claude/gracious-bohr-x80z9c. 27 conflicted paths were resolved by hand;
no file was taken wholesale from either side.

The full per-path decision record is in the merge commit body. The parts that need a reviewer's eye:

Fork-identity breaks that merged clean and would have failed silently

  • apps/server/src/cloud/bootService.ts — upstream's new macOS launchd plist (feat(server): run the background service on macOS via launchd pingdotgg/t3code#6286) exports
    T3CODE_HOME. resolveLauncherBaseDir reads MARCODE_HOME and exits otherwise, so the launch
    agent would never have started a server. Renamed and pinned with a test.
  • apps/server/src/cli/triage.ts — upstream's new t3 triage command (feat(cli): npx t3 triage hands broken installs to your own coding agent pingdotgg/t3code#6563) read T3CODE_HOME.
  • apps/server/src/cloud/bootService.test.ts — an upstream assertion hardcoded
    systemctl --user disable --now t3code.service; Marcode's unit is marcode.service.
  • docs/user/background-service.md — new upstream doc pointed users at
    ~/.config/systemd/user/t3code.service.
  • apps/web/src/components/ChatView.tsx — upstream's cmd+enter background draft (feat(web): cmd+enter to create thread in background pingdotgg/t3code#7821) calls
    handleNewThread, which arrived in a hunk Marcode had restructured for the pill-nav header. It
    merged clean into a ChatView that never declared it (caught by typecheck).
  • .github/workflows/ci.yml — upstream added three jobs (test_server, rust,
    mobile_native_changes) on its Blacksmith fleet, which this fork cannot schedule on. All mapped to
    GitHub-hosted runners. Upstream also sharded apps/server out of test into test_server, which
    moved WorkspaceFileSystem's tests away from Marcode's ripgrep install step — the step follows
    them.

Marcode contracts held, upstream fixes taken on top

Tests added or rewritten to pin the boundary

  • ChatHeader.fork.test.tsx (new) — the header renders the title alone: no breadcrumb, rename, or
    action menu.
  • bootService.test.ts — the launchd plist exports MARCODE_HOME and no T3CODE_HOME.
  • workspaceTitlebar.fork.test.ts — rewritten to follow upstream's header refactor: the drag region
    now lives in WorkspacePageHeader, and each sidebarless call site must supply the unconditional
    inset. (This test failed on the raw merge — the pin worked.)
  • upstream-sync-workflow.test.ts — the two CI pins rewritten as invariants (no Blacksmith runner in
    ci.yml; whichever job runs --filter t3 test installs ripgrep) rather than positions, so they
    survive upstream adding jobs.
  • Migrations.test.ts — extended to cover id 42.

Why

The daily upstream sync found 111 new commits. This is the reviewable merge; it is a draft because
the per-hotspot decisions above want a human read, and because two things still need attention:

  • t3 triage points at upstream. The new apps/server/src/cli/triagePrompt.ts tells the user to
    search issues in pingdotgg/t3code, fetch PLAYBOOK.md from that repo, and file at
    github.com/pingdotgg/t3code/issues/new. Only the MARCODE_HOME read and the command description
    were retargeted — where Marcode users should file triage issues is a product call, and rewriting
    the whole playbook would be a large permanent edit surface in a brand-new upstream file.
  • No live client verification. This container has no browser or simulator, so the web and mobile
    surfaces touched here (composer drawers, right-panel tabs, terminal chrome, usage redesign,
    settings/usage headers) have not been driven. Worth one pass with test-t3-app before this comes
    out of draft.

UI Changes

Not captured — this container cannot drive a client. Upstream's own UI work in this range (usage
insights redesign pingdotgg#7147, composer state drawers pingdotgg#7150, unified workspace navigation pingdotgg#7153, collapsed
tool activity pingdotgg#7152) lands on surfaces Marcode customizes, so before/after images belong to the
verification pass above.

Checklist

  • This PR is small and focused — no: it is a 111-commit upstream sync, which is inherently broad.
  • I explained what changed and why
  • I included before/after screenshots for any UI changes — see above
  • I included a video for animation/interaction changes — not applicable

Verification

Run locally against the merge commit (e39df1e3):

  • Typecheck: contracts, client-runtime, web, server (t3), scripts, desktop, mobile,
    shared — all clean (suggestion-level Effect diagnostics only).
  • Tests: full apps/web suite (292 files, 2993 tests), full packages/client-runtime (53/685), full
    packages/contracts (20/290), full scripts (22 files), and focused apps/server under
    cli/, cloud/, persistence/, plus serviceLauncher.test.ts and CheckpointReactor.test.ts
    (41 files, 182 tests). All pass.
  • vp fmt --check clean across every changed file; vp lint clean (warnings only, all pre-existing).

One pre-existing failure, not caused by this merge:
scripts/update-release-package-versions.test.ts > preserves manifest write context and the filesystem cause chmods a file to 0o400 and expects the write to fail. This container runs as
root, which ignores the permission bit. The file is untouched by this merge and the test passes in
CI.

Coupled vendored subtrees: pnpm-workspace.yaml moved (Clerk bumps) but the effect version is
unchanged and infra/relay/package.json did not move, so neither sync:repos coupling triggered.
pnpm-lock.yaml was regenerated with pnpm install --lockfile-only.


Generated by Claude Code

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>
t3-codeBotand others added 22 commits August 22, 2026 10:30
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.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>
Merges 111 upstream commits (merge base 82b8a93) into main. Every conflict was
resolved by hand, combining upstream intent with Marcode's product contracts;
no file was taken wholesale from either side.
Conflict decisions
------------------
Structural / deletions
- .plans/effect-atom.md: took upstream's deletion. Upstream moved
implementation plans out of the repository (pingdotgg#7665); Marcode's only edit to
that file was rewriting `.t3` paths to `.marcode`, so nothing survives it.
- apps/web/src/components/files/FileBrowserPanel.tsx, FilePreviewPanel.tsx:
stayed deleted. Marcode retired the right-panel file surfaces. Upstream's
edits there were a refresh-the-open-file wiring (pingdotgg#7490) and a
`--contrast-foreground` token swap for its own tree; Marcode's floating
editor has neither affordance, so there was nothing to port.
CI runners and the workspace search dependency
- .github/workflows/ci.yml: took upstream's `mobile_native_changes` gate on
the macOS lint job, kept Marcode's GitHub-hosted `macos-26` runner. The
three jobs upstream added in the same range (`test_server`, `rust`,
`mobile_native_changes`) merged clean on Blacksmith runners the fork cannot
schedule on; all mapped to `ubuntu-24.04`.
- Upstream sharded apps/server out of `test` into `test_server` (pingdotgg#7286), which
moved WorkspaceFileSystem's tests away from Marcode's ripgrep install step.
The step follows the tests into `test_server`.
- scripts/upstream-sync-workflow.test.ts: both pins rewritten as invariants
rather than positions — no ci.yml job may use a Blacksmith runner, and
whichever job runs `--filter t3 test` must install ripgrep. The positional
list would have broken on every upstream job addition.
Fork identity (clean merges that would have failed silently)
- apps/server/src/cloud/bootService.ts: upstream's new launchd plist (pingdotgg#6286)
exports `T3CODE_HOME`. resolveLauncherBaseDir reads `MARCODE_HOME` and exits
otherwise, so the launch agent would never have started a server. Renamed,
and pinned with a test asserting the plist carries MARCODE_HOME and no
T3CODE_HOME.
- apps/server/src/cloud/bootService.test.ts: an upstream assertion hardcoded
`systemctl --user disable --now t3code.service`; Marcode's unit is
marcode.service.
- apps/server/src/cli/triage.ts: upstream's new `t3 triage` command (pingdotgg#6563)
read `T3CODE_HOME`. Every other Marcode CLI path reads `MARCODE_HOME`.
- docs/user/background-service.md: new upstream doc pointed users at
`~/.config/systemd/user/t3code.service`. The launchd label stays
upstream-shaped (compatibility identifier); the systemd unit name does not.
- apps/web/src/components/ChatView.tsx: upstream's cmd+enter background draft
(pingdotgg#7821) calls `handleNewThread`, declared in a hunk Marcode had restructured
for the pill-nav header. It merged clean into a ChatView that never declared
it; restored `useNewThreadHandler()`.
Migrations
- Migrations.ts / Migrations.test.ts: upstream's 041_AuthSessionClientConnection
collided with Marcode's 041_ProjectionProjectFaviconPath. Renumbered to 042,
keeping the established +1 offset from Marcode owning id 33; the pin test now
covers it.
Server CLI copy
- cli/connect.ts, cli/service.ts: took upstream's platform-aware launchd copy
(a launch agent only runs while logged in) with Marcode's product name.
"T3 Connect" stays as-is — it is the product name of the service, not fork
branding.
Web surfaces
- routes/settings.tsx, components/usage/UsagePage.tsx: adopted upstream's
WorkspacePageHeader (pingdotgg#7153) and passed SIDEBARLESS_TITLEBAR_INSET_CLASS as an
override. Both routes mount no sidebar, so the header's collapsed-sidebar
inset never matches and the breadcrumb would sit under the traffic lights.
workspaceTitlebar.fork.test.ts rewritten to follow the refactor: the drag
region now lives in WorkspacePageHeader, and each sidebarless call site must
supply the unconditional inset.
- components/chat/ChatComposer.tsx: took upstream's composer top drawer
(pingdotgg#7150); Marcode's glass surface classes moved onto the surface div upstream
nested inside the new frame.
- components/chat/ComposerPendingApprovalPanel.tsx: took upstream's redesign.
Marcode's only change here shrank a "PENDING APPROVAL" label the redesign
deletes.
- components/chat/ChatHeader.tsx: kept Marcode's title-only header. Upstream
added a breadcrumb, inline rename, and a title action menu; Marcode portals
the header into FloatingPillNav and thread actions already have an entry
point on the sidebar row's context menu. Added ChatHeader.fork.test.tsx so
the next sync fails here instead of shipping two entry points.
- components/sidebar/SidebarChrome.tsx: kept Marcode's update-pill-only footer
(already pinned by SidebarChrome.fork.test.tsx). Upstream's SidebarUtilityMenu
stays exported so their SettingsSidebarNav keeps compiling unedited; their
SidebarBrand/T3Wordmark were dropped, reachable only from a header Marcode
replaced.
- components/RightPanelTabs.tsx: took upstream's tab mute (pingdotgg#7252) and the
shortcut-driven add-surface menu (pingdotgg#7318), dropped their `copy-path` action and
"Files" entry — Marcode has no right-panel file surface. The menu keeps
Marcode's placement beside the surface list rather than inline in the tab
strip, where the collision-aware shelf owns the layout.
- components/ThreadTerminalDrawer.tsx: kept Marcode's terminal chrome (placement
slot, find) and routed all three of its close affordances through upstream's
new confirm-before-close (pingdotgg#7592). `onSessionExited` stays direct. Took
upstream's `--terminal-background` token, kept the p-2 FitAddon padding.
- components/chat/MessagesTimeline.tsx: took upstream's `-mx-1` removal (the
subagent row border fix, pingdotgg#7207), kept Marcode's text size.
- components/Sidebar.tsx: took upstream's `cursor-pointer` fix (pingdotgg#5545), kept
Marcode's text size.
- routes/_chat.pull-requests.tsx, pullRequest/PullRequestListFilters.tsx: took
upstream's extracted PullRequestRefreshControl and Button-based filter
trigger; re-applied Marcode's styled Tooltip at the shared producer so both
call sites keep it.
- routes/__root.tsx: kept both watchers.
- index.css: both conflicts were unrelated blocks git aligned on a shared brace.
Kept Marcode's sidebar surface rules and floating chrome, took upstream's
preview-loading-progress animation. Upstream's `@variant dark` sidebar tokens
ride inside the zinc override block Marcode already declines.
- packages/client-runtime/src/state/threadSettled.ts: took upstream's
settle-only-once rule (pingdotgg#7454) — the terminal PR state must be the thread's
latest event — and kept Marcode's one-hour warm window on top. Migrated the
Marcode tests to the new `changeRequest` option shape and added a case pinning
the combination.
Other
- pnpm-lock.yaml regenerated with pnpm install --lockfile-only.
- pnpm-workspace.yaml moved (Clerk bumps), but the effect version is unchanged
and infra/relay/package.json did not move, so neither coupled vendored subtree
needed a sync.
- AGENTS.md: adopted upstream's "Plans and work artifacts" section and their
no-committed-PR-assets rule; their duplicate "Verifying"/"Pull requests"
sections and user-count blurb do not apply to Marcode's rewritten document.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xswf8VNiCmKDPUvzUR8o7W
@maarcomaarco added the upstream-sync Upstream T3 Code sync label Aug 23, 2026 — with Claude
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 23, 2026
@github-actions

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+865 B (+6.7%)15.1 KiB
CodexThread snapshot wire6.3 KiB6.9 KiB+629 B (+9.8%)7.3 KiB
CodexLive turn WebSocket wire6.3 KiB6.5 KiB+236 B (+3.7%)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.4 KiB+875 B (+6.8%)15.1 KiB
ClaudeThread snapshot wire6.3 KiB6.9 KiB+631 B (+9.8%)7.3 KiB
ClaudeLive turn WebSocket wire6.3 KiB6.5 KiB+244 B (+3.8%)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: 5bcc188 · PR result: e39df1e · 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.

@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:XXLupstream-syncUpstream T3 Code syncvouch: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