Skip to content

chore(upstream): sync marcode through f035a0f4 - #51

Merged
maarco merged 146 commits into
mainfrom
claude/gracious-bohr-23bj7a
Aug 25, 2026
Merged

chore(upstream): sync marcode through f035a0f4#51
maarco merged 146 commits into
mainfrom
claude/gracious-bohr-23bj7a

Conversation

@maarco

@maarcomaarco commented Aug 24, 2026

Copy link
Copy Markdown
Owner

What Changed

Daily upstream sync: merges pingdotgg/t3code@f035a0f4 (143 commits above merge base 82b8a938) into Marcode via a two-parent --no-ff merge. 32 files conflicted; each was resolved by hand to combine upstream and Marcode intent — no whole-file ours/theirs.

Highlights of the conflict decisions:

  • Fork-boundary breaks that merged cleanly (no conflict) and were fixed:
    • launchd boot service exported T3CODE_HOME; changed to MARCODE_HOME (the service launcher reads it and exits without it) and added a test pinning it.
    • an upstream bootService test fixture hardcoded the systemd unit as t3code.service; corrected to marcode.service.
    • triage.ts read T3CODE_HOME; changed to MARCODE_HOME.
  • Migrations: upstream's new AuthSessionClientConnection migration was renumbered 041→042 (Marcode's ProjectWorkspaceLayout occupies 033, so shared ids sit one higher); focused test updated.
  • Navigation shell: kept Marcode's FloatingPillNav ownership — dropped upstream's re-added SidebarUtilityMenu, kept the title-only ChatHeader with thread actions portaled into the pill nav — while taking upstream's WorkspacePageHeader refactor and its cmd+enter background-thread flow.
  • Right panel: took upstream's surface-dropdown shortcuts (feat(web): add shortcuts to the surface dropdown pingdotgg/t3code#7318) and desktop tab mute (feat(desktop): mute a browser tab pingdotgg/t3code#7252); kept Marcode's hover-swap tab close and header-placed add-surface menu; kept the retired Files surface out.
  • Terminal drawer: kept Marcode's terminal chrome divergence but carried upstream's confirm-before-close (feat(web): confirm before closing a terminal pingdotgg/t3code#7592) into it.
  • Thread settling: replaced Marcode's one-hour warm-window heuristic with upstream's more precise anchor rule; rewrote the Marcode-owned tests.
  • Approvals/composer: took upstream's compact app-access approval panel (fix(codex): show app access approval prompts pingdotgg/t3code#8058) and top-drawer composer.
  • CI: took upstream's launchd-gated mobile lint job; kept GitHub-hosted runners (the fork has no Blacksmith access).
  • Lockfile: took upstream's Clerk bump and anthropic-sdk binary overrides; regenerated pnpm-lock.yaml with pnpm (kept Marcode's @aliimam/icons). No coupled vendored subtree moved.

The full per-path rationale is in the merge commit message.

Compatibility identifiers left upstream-shaped on purpose: com.t3tools.t3code.service (launchd label), @t3tools/*, the t3 package/CLI name, T3_BOOT_SERVICE_UNIT.

Follow-up commits (CI fixes on top of the merge)

The first CI run surfaced three failures, all of them fork pins firing or a fork step going missing during an upstream refactor. Each is fixed here:

FailureCauseFix
TestThe fork's runner pin compared the whole runs-on list positionally against 4 entries; upstream added 3 jobs.Rewritten as a label-membership rule (2e3f60c2), so it trips on a Blacksmith label — the real failure mode — not on job count.
Test Server 2Migrations.test.ts is deliberately fail-loud on any added migration.Window extended to include [42, "AuthSessionClientConnection"] (2d94db2d).
Test Server 3Real bug. Upstream split the server suite into a test_server matrix; the shards inherited the tests but not Marcode's ripgrep install step, so WorkspaceFileSystem.searchContent died with spawn rg ENOENT. The step is Marcode-only — upstream's Blacksmith images ship rg, GitHub-hosted runners do not.Install step moved to follow the tests, and the guard widened from "ci.jobs.test installs ripgrep" to "every job with a Test step installs ripgrep" (2d94db2d) — the narrow guard is exactly why the split slipped through.

Why

Marcode is a maintained fork of T3 Code. This keeps it current with upstream correctness, security, protocol, dependency, and operational fixes while preserving Marcode's intentional product behavior (floating nav, unified workspace, floating editor, retired right-panel file surfaces, branding). Resolves the upstream-sync-blocked tracking issue for f035a0f4 (#50).

UI Changes

No Marcode-visible UI change is intended: web navigation, composer, terminal, and right-panel surfaces keep Marcode's existing appearance and placement. Upstream UI features adopted where they don't touch a Marcode divergence (tab mute, surface-dropdown shortcuts, confirm-before-close, app-access approvals). Live client verification is deferred to review, since this environment is headless.

Verification

CI is green on 2d94db2d:Check, Test, Mobile Native Static Analysis, Release Smoke (the four required checks), plus Test Server 1/2/3, Rust, Mobile Native Changes, and claude-review. Thread-transfer budget report passes every ceiling. Nothing on this head failed.

Locally, before pushing:

  • Typecheck: @t3tools/contracts, @t3tools/client-runtime, @t3tools/web, t3 (server) — all clean (only pre-existing Effect lint suggestions remain).
  • Focused tests across the resolved paths, plus vp fmt --check and vp lint on changed files.
  • The spawn rg ENOENT fix was verified by reproducing the failure locally with rg removed from PATH (this container has rg installed, which is why the first local run passed while CI failed), then confirming both test-running jobs install it.
  • ChatHeader.test.ts could not run here: @aliimam/icons@1.1.3 (a pre-existing Marcode dep) ships index.js/index.mjs but declares main: dist/index.cjs, so the resolver fails; this reproduces identically on main and is unrelated to the merge. It passes in CI.

Reviewer notes

Why this PR reads "unstable" / "some checks haven't completed".Native fingerprint diff (mobile-fingerprint-check.yml) runs on blacksmith-8vcpu-ubuntu-2404, a runner this fork cannot reach, so it queues indefinitely rather than failing. That is pre-existing on main — this merge does not touch that workflow — so it is deliberately not fixed here, and it does not block merge (it is not a required check). The one-line fix, if you want it as its own PR, is the same override applied to ci.yml: runs-on: ubuntu-24.04. The same applies to web-preview.yml, mobile-eas-*.yml, publish-aur.yml, and most of release.yml.

Required-checks gap. Upstream split server tests out of Test into Test Server 1/2/3 and added Rust. The manifest's requiredPullRequestChecks still lists only Check, Test, Mobile Native Static Analysis, Release Smoke — so branch protection would not have blocked on the two genuine failures above. Changing that list means updating the manifest and the workflow literals together (the parity test enforces it) and changes what gates merges, so it is deliberately not folded into this sync PR.

Transfer budget headroom. The report shows the thread snapshot wire at 6.9 KiB against a 7.3 KiB ceiling (~94%, up ~10% from main) — passing, but with less headroom than before this sync.

Checklist

  • Conflicts resolved by hand, combining upstream and Marcode intent (no whole-file ours/theirs)
  • Fork-boundary identity swept (T3CODE_HOME, t3code.service, WORKTREE_BRANCH_PREFIX, boot-service naming) and corrected for Marcode
  • Compatibility identifiers kept upstream-shaped
  • Focused typechecks, tests, format, and lint run for the affected scope
  • Lockfile regenerated with pnpm, not hand-edited
  • CI green on the head commit
  • Live client (web/mobile) verification — deferred to review (headless environment)

🤖 Generated with Claude Code

https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19

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>
PollyGlotand others added 16 commits August 24, 2026 02:52
…pingdotgg#5585)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
…es (pingdotgg#8076)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Merge 143 upstream commits (merge base 82b8a93) into Marcode.
Conflict decisions (combining upstream + Marcode intent per path):
- AGENTS.md: kept Marcode's Dev Servers/Task Completion/Pull-request
sections; took upstream's new "Plans and work artifacts" rules and the
"never commit PR assets" hygiene line.
- .github/workflows/ci.yml: took upstream's launchd-gated mobile lint job
and needs/if wiring; kept GitHub-hosted runners (the fork has no
Blacksmith access) and marked the seam on every job.
- apps/server/src/cli/connect.ts, cli/service.ts: took upstream's
macOS/launchd-aware wording and platform branch; kept Marcode branding.
- apps/server/src/cli/triage.ts: read MARCODE_HOME, not upstream's
T3CODE_HOME.
- apps/server/src/cloud/bootService.ts: launchd plist now exports
MARCODE_HOME (the launcher reads it and exits without it); added a test
pinning that so a future sync can't silently revert it. Kept the
upstream-shaped com.t3tools.t3code.service launchd label.
- apps/server/src/cloud/bootService.test.ts: fixed an upstream test
fixture that hardcoded the systemd unit as t3code.service to marcode.service.
- apps/server/src/persistence/Migrations.ts: renamed upstream's new
041_AuthSessionClientConnection to 042 (Marcode's ProjectWorkspaceLayout
holds 033, so shared ids sit one higher); updated the focused test.
- apps/server/src/vcs/GitVcsDriverCore.ts: kept both independently-added
helpers (Marcode's stderr redaction, upstream's missing-worktree matcher).
- apps/mobile/src/components/CompactBrandTitle.tsx: kept Marcode's
off-production stage-badge gate; took upstream's allowFontScaling.
- packages/client-runtime/src/state/threadSettled.ts: replaced Marcode's
one-hour warm-window heuristic with upstream's anchor rule (a terminal PR
settles a thread only while it postdates every user event); rewrote the
Marcode-owned tests for the new behavior.
- apps/web SidebarChrome/SettingsSidebarNav: kept Marcode's FloatingPillNav
ownership (footer owns update state only; settings footer keeps just Back),
dropped upstream's re-added SidebarUtilityMenu.
- apps/web ChatHeader/ChatView: kept Marcode's title-only header with thread
actions portaled into FloatingPillNav; took upstream's WorkspacePageHeader
refactor and the cmd+enter background-thread flow (re-bound handleNewThread).
- apps/web RightPanelTabs: took upstream's surface-dropdown shortcuts (pingdotgg#7318)
and desktop tab mute (pingdotgg#7252); kept Marcode's hover-swap tab close and its
header-placed add-surface menu; kept the retired Files surface out.
- apps/web ThreadTerminalDrawer: kept Marcode's terminal chrome divergence;
carried upstream's confirm-before-close (pingdotgg#7592) into it.
- apps/web ComposerPendingApprovalPanel/ChatComposer: took upstream's
compact app-access approval panel (pingdotgg#8058) and top-drawer composer.
- apps/web settings.tsx/UsagePage.tsx/workspaceTitlebar.fork.test.ts: took
upstream's shared WorkspacePageHeader; kept Marcode's sidebarless titlebar
inset by passing it through, and updated the pin test to the new shape.
- apps/web index.css: declined upstream's zinc sidebar palette (Marcode owns
it); took upstream's preview-loading-progress animation.
- apps/web files/: kept Marcode's retirement of the right-panel file surfaces.
- versionSkew, environment.test, PullRequestService.test,
build-desktop-artifact.test: combined both sides' additions.
- pnpm-workspace.yaml / pnpm-lock.yaml: took upstream's Clerk bump and
anthropic-sdk binary overrides; regenerated the lockfile with pnpm (kept
Marcode's @aliimam/icons). No coupled vendored subtree moved.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 24, 2026
Upstream's sync added three CI jobs, which broke the fork's runner pin: it
compared the whole runs-on list positionally, so it failed on the count
before it could say anything about the labels.
Assert the actual invariant instead — every ci.yml job names a
GitHub-hosted runner the fork can reach — so a future upstream job trips
this only when it arrives on a Blacksmith label, which queues forever
rather than failing.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19
Upstream split the server suite out of `test` into a `test_server` matrix.
The shards inherited the tests but not Marcode's ripgrep install step, so
WorkspaceFileSystem's searchContent — which shells out to `rg` — failed
with `spawn rg ENOENT` on all three shards. The step is Marcode-only
because upstream runs on Blacksmith images that ship ripgrep and
GitHub-hosted runners do not.
Move the step to follow the tests, and widen the pin that guards it: it
checked only `ci.jobs.test`, which is why the split slipped through. It
now asserts every job running a Test step installs ripgrep.
Also extend the migration pin to cover upstream's new AuthSessionClientConnection
migration at Marcode's renumbered id 42; the pin is deliberately
fail-loud on any added migration and did its job here.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19
@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+858 B (+6.7%)15.1 KiB
CodexThread snapshot wire6.3 KiB6.9 KiB+627 B (+9.8%)7.3 KiB
CodexLive turn WebSocket wire6.3 KiB6.5 KiB+231 B (+3.6%)7.8 KiB
CodexLive turn WebSocket decoded51.8 KiB55.0 KiB+3.2 KiB (+6.1%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire12.6 KiB13.4 KiB+887 B (+6.9%)15.1 KiB
ClaudeThread snapshot wire6.3 KiB6.9 KiB+638 B (+9.9%)7.3 KiB
ClaudeLive turn WebSocket wire6.3 KiB6.5 KiB+249 B (+3.9%)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: 2d94db2 · 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

Verification on PR head 2d94db2d:

  • Web: ran the isolated PR worktree with the full dev stack, authenticated the controlled preview, confirmed the Marcode shell/project flow, opened the Files surface and unified workspace tree/editor, opened project actions, and saw no browser console errors.
  • Responsive: checked 820x800 and 390x844 viewports.
  • Mobile: live simulator verification is unavailable in this environment. XcodeBuildMCP reports 0 iOS simulators; Android tooling (adb/ANDROID_HOME) is not installed.
  • CI: all four protected checks are green. The queued Native fingerprint diff remains the pre-existing, non-required Blacksmith check documented in this PR.

No source changes were made during verification.

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

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

20 participants

@maarco@aoright@gbarros-dev@Bil0000@Rishet11@StiensWout@AugusDogus@tarik02@gsimone@t3dotgg@chrisdeeming@inayayousfi@RakshithBhat03@dbalders@maria-rcks@UtkarshUsername@SunkenInTime@lgwacker@jakeleventhal@sethwebster
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
chore(upstream): sync marcode through f035a0f4 by maarco · Pull Request #51 · maarco/marcode · GitHub
Skip to content

chore(upstream): sync marcode through f035a0f4 - #51

Merged
maarco merged 146 commits into
mainfrom
claude/gracious-bohr-23bj7a
Aug 25, 2026
Merged

chore(upstream): sync marcode through f035a0f4#51
maarco merged 146 commits into
mainfrom
claude/gracious-bohr-23bj7a

Conversation

@maarco

@maarcomaarco commented Aug 24, 2026

Copy link
Copy Markdown
Owner

What Changed

Daily upstream sync: merges pingdotgg/t3code@f035a0f4 (143 commits above merge base 82b8a938) into Marcode via a two-parent --no-ff merge. 32 files conflicted; each was resolved by hand to combine upstream and Marcode intent — no whole-file ours/theirs.

Highlights of the conflict decisions:

  • Fork-boundary breaks that merged cleanly (no conflict) and were fixed:
    • launchd boot service exported T3CODE_HOME; changed to MARCODE_HOME (the service launcher reads it and exits without it) and added a test pinning it.
    • an upstream bootService test fixture hardcoded the systemd unit as t3code.service; corrected to marcode.service.
    • triage.ts read T3CODE_HOME; changed to MARCODE_HOME.
  • Migrations: upstream's new AuthSessionClientConnection migration was renumbered 041→042 (Marcode's ProjectWorkspaceLayout occupies 033, so shared ids sit one higher); focused test updated.
  • Navigation shell: kept Marcode's FloatingPillNav ownership — dropped upstream's re-added SidebarUtilityMenu, kept the title-only ChatHeader with thread actions portaled into the pill nav — while taking upstream's WorkspacePageHeader refactor and its cmd+enter background-thread flow.
  • Right panel: took upstream's surface-dropdown shortcuts (feat(web): add shortcuts to the surface dropdown pingdotgg/t3code#7318) and desktop tab mute (feat(desktop): mute a browser tab pingdotgg/t3code#7252); kept Marcode's hover-swap tab close and header-placed add-surface menu; kept the retired Files surface out.
  • Terminal drawer: kept Marcode's terminal chrome divergence but carried upstream's confirm-before-close (feat(web): confirm before closing a terminal pingdotgg/t3code#7592) into it.
  • Thread settling: replaced Marcode's one-hour warm-window heuristic with upstream's more precise anchor rule; rewrote the Marcode-owned tests.
  • Approvals/composer: took upstream's compact app-access approval panel (fix(codex): show app access approval prompts pingdotgg/t3code#8058) and top-drawer composer.
  • CI: took upstream's launchd-gated mobile lint job; kept GitHub-hosted runners (the fork has no Blacksmith access).
  • Lockfile: took upstream's Clerk bump and anthropic-sdk binary overrides; regenerated pnpm-lock.yaml with pnpm (kept Marcode's @aliimam/icons). No coupled vendored subtree moved.

The full per-path rationale is in the merge commit message.

Compatibility identifiers left upstream-shaped on purpose: com.t3tools.t3code.service (launchd label), @t3tools/*, the t3 package/CLI name, T3_BOOT_SERVICE_UNIT.

Follow-up commits (CI fixes on top of the merge)

The first CI run surfaced three failures, all of them fork pins firing or a fork step going missing during an upstream refactor. Each is fixed here:

FailureCauseFix
TestThe fork's runner pin compared the whole runs-on list positionally against 4 entries; upstream added 3 jobs.Rewritten as a label-membership rule (2e3f60c2), so it trips on a Blacksmith label — the real failure mode — not on job count.
Test Server 2Migrations.test.ts is deliberately fail-loud on any added migration.Window extended to include [42, "AuthSessionClientConnection"] (2d94db2d).
Test Server 3Real bug. Upstream split the server suite into a test_server matrix; the shards inherited the tests but not Marcode's ripgrep install step, so WorkspaceFileSystem.searchContent died with spawn rg ENOENT. The step is Marcode-only — upstream's Blacksmith images ship rg, GitHub-hosted runners do not.Install step moved to follow the tests, and the guard widened from "ci.jobs.test installs ripgrep" to "every job with a Test step installs ripgrep" (2d94db2d) — the narrow guard is exactly why the split slipped through.

Why

Marcode is a maintained fork of T3 Code. This keeps it current with upstream correctness, security, protocol, dependency, and operational fixes while preserving Marcode's intentional product behavior (floating nav, unified workspace, floating editor, retired right-panel file surfaces, branding). Resolves the upstream-sync-blocked tracking issue for f035a0f4 (#50).

UI Changes

No Marcode-visible UI change is intended: web navigation, composer, terminal, and right-panel surfaces keep Marcode's existing appearance and placement. Upstream UI features adopted where they don't touch a Marcode divergence (tab mute, surface-dropdown shortcuts, confirm-before-close, app-access approvals). Live client verification is deferred to review, since this environment is headless.

Verification

CI is green on 2d94db2d:Check, Test, Mobile Native Static Analysis, Release Smoke (the four required checks), plus Test Server 1/2/3, Rust, Mobile Native Changes, and claude-review. Thread-transfer budget report passes every ceiling. Nothing on this head failed.

Locally, before pushing:

  • Typecheck: @t3tools/contracts, @t3tools/client-runtime, @t3tools/web, t3 (server) — all clean (only pre-existing Effect lint suggestions remain).
  • Focused tests across the resolved paths, plus vp fmt --check and vp lint on changed files.
  • The spawn rg ENOENT fix was verified by reproducing the failure locally with rg removed from PATH (this container has rg installed, which is why the first local run passed while CI failed), then confirming both test-running jobs install it.
  • ChatHeader.test.ts could not run here: @aliimam/icons@1.1.3 (a pre-existing Marcode dep) ships index.js/index.mjs but declares main: dist/index.cjs, so the resolver fails; this reproduces identically on main and is unrelated to the merge. It passes in CI.

Reviewer notes

Why this PR reads "unstable" / "some checks haven't completed".Native fingerprint diff (mobile-fingerprint-check.yml) runs on blacksmith-8vcpu-ubuntu-2404, a runner this fork cannot reach, so it queues indefinitely rather than failing. That is pre-existing on main — this merge does not touch that workflow — so it is deliberately not fixed here, and it does not block merge (it is not a required check). The one-line fix, if you want it as its own PR, is the same override applied to ci.yml: runs-on: ubuntu-24.04. The same applies to web-preview.yml, mobile-eas-*.yml, publish-aur.yml, and most of release.yml.

Required-checks gap. Upstream split server tests out of Test into Test Server 1/2/3 and added Rust. The manifest's requiredPullRequestChecks still lists only Check, Test, Mobile Native Static Analysis, Release Smoke — so branch protection would not have blocked on the two genuine failures above. Changing that list means updating the manifest and the workflow literals together (the parity test enforces it) and changes what gates merges, so it is deliberately not folded into this sync PR.

Transfer budget headroom. The report shows the thread snapshot wire at 6.9 KiB against a 7.3 KiB ceiling (~94%, up ~10% from main) — passing, but with less headroom than before this sync.

Checklist

  • Conflicts resolved by hand, combining upstream and Marcode intent (no whole-file ours/theirs)
  • Fork-boundary identity swept (T3CODE_HOME, t3code.service, WORKTREE_BRANCH_PREFIX, boot-service naming) and corrected for Marcode
  • Compatibility identifiers kept upstream-shaped
  • Focused typechecks, tests, format, and lint run for the affected scope
  • Lockfile regenerated with pnpm, not hand-edited
  • CI green on the head commit
  • Live client (web/mobile) verification — deferred to review (headless environment)

🤖 Generated with Claude Code

https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19

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>
PollyGlotand others added 16 commits August 24, 2026 02:52
…pingdotgg#5585)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
…es (pingdotgg#8076)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Merge 143 upstream commits (merge base 82b8a93) into Marcode.
Conflict decisions (combining upstream + Marcode intent per path):
- AGENTS.md: kept Marcode's Dev Servers/Task Completion/Pull-request
sections; took upstream's new "Plans and work artifacts" rules and the
"never commit PR assets" hygiene line.
- .github/workflows/ci.yml: took upstream's launchd-gated mobile lint job
and needs/if wiring; kept GitHub-hosted runners (the fork has no
Blacksmith access) and marked the seam on every job.
- apps/server/src/cli/connect.ts, cli/service.ts: took upstream's
macOS/launchd-aware wording and platform branch; kept Marcode branding.
- apps/server/src/cli/triage.ts: read MARCODE_HOME, not upstream's
T3CODE_HOME.
- apps/server/src/cloud/bootService.ts: launchd plist now exports
MARCODE_HOME (the launcher reads it and exits without it); added a test
pinning that so a future sync can't silently revert it. Kept the
upstream-shaped com.t3tools.t3code.service launchd label.
- apps/server/src/cloud/bootService.test.ts: fixed an upstream test
fixture that hardcoded the systemd unit as t3code.service to marcode.service.
- apps/server/src/persistence/Migrations.ts: renamed upstream's new
041_AuthSessionClientConnection to 042 (Marcode's ProjectWorkspaceLayout
holds 033, so shared ids sit one higher); updated the focused test.
- apps/server/src/vcs/GitVcsDriverCore.ts: kept both independently-added
helpers (Marcode's stderr redaction, upstream's missing-worktree matcher).
- apps/mobile/src/components/CompactBrandTitle.tsx: kept Marcode's
off-production stage-badge gate; took upstream's allowFontScaling.
- packages/client-runtime/src/state/threadSettled.ts: replaced Marcode's
one-hour warm-window heuristic with upstream's anchor rule (a terminal PR
settles a thread only while it postdates every user event); rewrote the
Marcode-owned tests for the new behavior.
- apps/web SidebarChrome/SettingsSidebarNav: kept Marcode's FloatingPillNav
ownership (footer owns update state only; settings footer keeps just Back),
dropped upstream's re-added SidebarUtilityMenu.
- apps/web ChatHeader/ChatView: kept Marcode's title-only header with thread
actions portaled into FloatingPillNav; took upstream's WorkspacePageHeader
refactor and the cmd+enter background-thread flow (re-bound handleNewThread).
- apps/web RightPanelTabs: took upstream's surface-dropdown shortcuts (pingdotgg#7318)
and desktop tab mute (pingdotgg#7252); kept Marcode's hover-swap tab close and its
header-placed add-surface menu; kept the retired Files surface out.
- apps/web ThreadTerminalDrawer: kept Marcode's terminal chrome divergence;
carried upstream's confirm-before-close (pingdotgg#7592) into it.
- apps/web ComposerPendingApprovalPanel/ChatComposer: took upstream's
compact app-access approval panel (pingdotgg#8058) and top-drawer composer.
- apps/web settings.tsx/UsagePage.tsx/workspaceTitlebar.fork.test.ts: took
upstream's shared WorkspacePageHeader; kept Marcode's sidebarless titlebar
inset by passing it through, and updated the pin test to the new shape.
- apps/web index.css: declined upstream's zinc sidebar palette (Marcode owns
it); took upstream's preview-loading-progress animation.
- apps/web files/: kept Marcode's retirement of the right-panel file surfaces.
- versionSkew, environment.test, PullRequestService.test,
build-desktop-artifact.test: combined both sides' additions.
- pnpm-workspace.yaml / pnpm-lock.yaml: took upstream's Clerk bump and
anthropic-sdk binary overrides; regenerated the lockfile with pnpm (kept
Marcode's @aliimam/icons). No coupled vendored subtree moved.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 24, 2026
Upstream's sync added three CI jobs, which broke the fork's runner pin: it
compared the whole runs-on list positionally, so it failed on the count
before it could say anything about the labels.
Assert the actual invariant instead — every ci.yml job names a
GitHub-hosted runner the fork can reach — so a future upstream job trips
this only when it arrives on a Blacksmith label, which queues forever
rather than failing.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19
Upstream split the server suite out of `test` into a `test_server` matrix.
The shards inherited the tests but not Marcode's ripgrep install step, so
WorkspaceFileSystem's searchContent — which shells out to `rg` — failed
with `spawn rg ENOENT` on all three shards. The step is Marcode-only
because upstream runs on Blacksmith images that ship ripgrep and
GitHub-hosted runners do not.
Move the step to follow the tests, and widen the pin that guards it: it
checked only `ci.jobs.test`, which is why the split slipped through. It
now asserts every job running a Test step installs ripgrep.
Also extend the migration pin to cover upstream's new AuthSessionClientConnection
migration at Marcode's renumbered id 42; the pin is deliberately
fail-loud on any added migration and did its job here.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19
@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+858 B (+6.7%)15.1 KiB
CodexThread snapshot wire6.3 KiB6.9 KiB+627 B (+9.8%)7.3 KiB
CodexLive turn WebSocket wire6.3 KiB6.5 KiB+231 B (+3.6%)7.8 KiB
CodexLive turn WebSocket decoded51.8 KiB55.0 KiB+3.2 KiB (+6.1%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire12.6 KiB13.4 KiB+887 B (+6.9%)15.1 KiB
ClaudeThread snapshot wire6.3 KiB6.9 KiB+638 B (+9.9%)7.3 KiB
ClaudeLive turn WebSocket wire6.3 KiB6.5 KiB+249 B (+3.9%)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: 2d94db2 · 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

Verification on PR head 2d94db2d:

  • Web: ran the isolated PR worktree with the full dev stack, authenticated the controlled preview, confirmed the Marcode shell/project flow, opened the Files surface and unified workspace tree/editor, opened project actions, and saw no browser console errors.
  • Responsive: checked 820x800 and 390x844 viewports.
  • Mobile: live simulator verification is unavailable in this environment. XcodeBuildMCP reports 0 iOS simulators; Android tooling (adb/ANDROID_HOME) is not installed.
  • CI: all four protected checks are green. The queued Native fingerprint diff remains the pre-existing, non-required Blacksmith check documented in this PR.

No source changes were made during verification.

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

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

20 participants

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

chore(upstream): sync marcode through f035a0f4 - #51

Merged
maarco merged 146 commits into
mainfrom
claude/gracious-bohr-23bj7a
Aug 25, 2026
Merged

chore(upstream): sync marcode through f035a0f4#51
maarco merged 146 commits into
mainfrom
claude/gracious-bohr-23bj7a

Conversation

@maarco

@maarcomaarco commented Aug 24, 2026

Copy link
Copy Markdown
Owner

What Changed

Daily upstream sync: merges pingdotgg/t3code@f035a0f4 (143 commits above merge base 82b8a938) into Marcode via a two-parent --no-ff merge. 32 files conflicted; each was resolved by hand to combine upstream and Marcode intent — no whole-file ours/theirs.

Highlights of the conflict decisions:

  • Fork-boundary breaks that merged cleanly (no conflict) and were fixed:
    • launchd boot service exported T3CODE_HOME; changed to MARCODE_HOME (the service launcher reads it and exits without it) and added a test pinning it.
    • an upstream bootService test fixture hardcoded the systemd unit as t3code.service; corrected to marcode.service.
    • triage.ts read T3CODE_HOME; changed to MARCODE_HOME.
  • Migrations: upstream's new AuthSessionClientConnection migration was renumbered 041→042 (Marcode's ProjectWorkspaceLayout occupies 033, so shared ids sit one higher); focused test updated.
  • Navigation shell: kept Marcode's FloatingPillNav ownership — dropped upstream's re-added SidebarUtilityMenu, kept the title-only ChatHeader with thread actions portaled into the pill nav — while taking upstream's WorkspacePageHeader refactor and its cmd+enter background-thread flow.
  • Right panel: took upstream's surface-dropdown shortcuts (feat(web): add shortcuts to the surface dropdown pingdotgg/t3code#7318) and desktop tab mute (feat(desktop): mute a browser tab pingdotgg/t3code#7252); kept Marcode's hover-swap tab close and header-placed add-surface menu; kept the retired Files surface out.
  • Terminal drawer: kept Marcode's terminal chrome divergence but carried upstream's confirm-before-close (feat(web): confirm before closing a terminal pingdotgg/t3code#7592) into it.
  • Thread settling: replaced Marcode's one-hour warm-window heuristic with upstream's more precise anchor rule; rewrote the Marcode-owned tests.
  • Approvals/composer: took upstream's compact app-access approval panel (fix(codex): show app access approval prompts pingdotgg/t3code#8058) and top-drawer composer.
  • CI: took upstream's launchd-gated mobile lint job; kept GitHub-hosted runners (the fork has no Blacksmith access).
  • Lockfile: took upstream's Clerk bump and anthropic-sdk binary overrides; regenerated pnpm-lock.yaml with pnpm (kept Marcode's @aliimam/icons). No coupled vendored subtree moved.

The full per-path rationale is in the merge commit message.

Compatibility identifiers left upstream-shaped on purpose: com.t3tools.t3code.service (launchd label), @t3tools/*, the t3 package/CLI name, T3_BOOT_SERVICE_UNIT.

Follow-up commits (CI fixes on top of the merge)

The first CI run surfaced three failures, all of them fork pins firing or a fork step going missing during an upstream refactor. Each is fixed here:

FailureCauseFix
TestThe fork's runner pin compared the whole runs-on list positionally against 4 entries; upstream added 3 jobs.Rewritten as a label-membership rule (2e3f60c2), so it trips on a Blacksmith label — the real failure mode — not on job count.
Test Server 2Migrations.test.ts is deliberately fail-loud on any added migration.Window extended to include [42, "AuthSessionClientConnection"] (2d94db2d).
Test Server 3Real bug. Upstream split the server suite into a test_server matrix; the shards inherited the tests but not Marcode's ripgrep install step, so WorkspaceFileSystem.searchContent died with spawn rg ENOENT. The step is Marcode-only — upstream's Blacksmith images ship rg, GitHub-hosted runners do not.Install step moved to follow the tests, and the guard widened from "ci.jobs.test installs ripgrep" to "every job with a Test step installs ripgrep" (2d94db2d) — the narrow guard is exactly why the split slipped through.

Why

Marcode is a maintained fork of T3 Code. This keeps it current with upstream correctness, security, protocol, dependency, and operational fixes while preserving Marcode's intentional product behavior (floating nav, unified workspace, floating editor, retired right-panel file surfaces, branding). Resolves the upstream-sync-blocked tracking issue for f035a0f4 (#50).

UI Changes

No Marcode-visible UI change is intended: web navigation, composer, terminal, and right-panel surfaces keep Marcode's existing appearance and placement. Upstream UI features adopted where they don't touch a Marcode divergence (tab mute, surface-dropdown shortcuts, confirm-before-close, app-access approvals). Live client verification is deferred to review, since this environment is headless.

Verification

CI is green on 2d94db2d:Check, Test, Mobile Native Static Analysis, Release Smoke (the four required checks), plus Test Server 1/2/3, Rust, Mobile Native Changes, and claude-review. Thread-transfer budget report passes every ceiling. Nothing on this head failed.

Locally, before pushing:

  • Typecheck: @t3tools/contracts, @t3tools/client-runtime, @t3tools/web, t3 (server) — all clean (only pre-existing Effect lint suggestions remain).
  • Focused tests across the resolved paths, plus vp fmt --check and vp lint on changed files.
  • The spawn rg ENOENT fix was verified by reproducing the failure locally with rg removed from PATH (this container has rg installed, which is why the first local run passed while CI failed), then confirming both test-running jobs install it.
  • ChatHeader.test.ts could not run here: @aliimam/icons@1.1.3 (a pre-existing Marcode dep) ships index.js/index.mjs but declares main: dist/index.cjs, so the resolver fails; this reproduces identically on main and is unrelated to the merge. It passes in CI.

Reviewer notes

Why this PR reads "unstable" / "some checks haven't completed".Native fingerprint diff (mobile-fingerprint-check.yml) runs on blacksmith-8vcpu-ubuntu-2404, a runner this fork cannot reach, so it queues indefinitely rather than failing. That is pre-existing on main — this merge does not touch that workflow — so it is deliberately not fixed here, and it does not block merge (it is not a required check). The one-line fix, if you want it as its own PR, is the same override applied to ci.yml: runs-on: ubuntu-24.04. The same applies to web-preview.yml, mobile-eas-*.yml, publish-aur.yml, and most of release.yml.

Required-checks gap. Upstream split server tests out of Test into Test Server 1/2/3 and added Rust. The manifest's requiredPullRequestChecks still lists only Check, Test, Mobile Native Static Analysis, Release Smoke — so branch protection would not have blocked on the two genuine failures above. Changing that list means updating the manifest and the workflow literals together (the parity test enforces it) and changes what gates merges, so it is deliberately not folded into this sync PR.

Transfer budget headroom. The report shows the thread snapshot wire at 6.9 KiB against a 7.3 KiB ceiling (~94%, up ~10% from main) — passing, but with less headroom than before this sync.

Checklist

  • Conflicts resolved by hand, combining upstream and Marcode intent (no whole-file ours/theirs)
  • Fork-boundary identity swept (T3CODE_HOME, t3code.service, WORKTREE_BRANCH_PREFIX, boot-service naming) and corrected for Marcode
  • Compatibility identifiers kept upstream-shaped
  • Focused typechecks, tests, format, and lint run for the affected scope
  • Lockfile regenerated with pnpm, not hand-edited
  • CI green on the head commit
  • Live client (web/mobile) verification — deferred to review (headless environment)

🤖 Generated with Claude Code

https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19

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>
PollyGlotand others added 16 commits August 24, 2026 02:52
…pingdotgg#5585)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
…es (pingdotgg#8076)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Merge 143 upstream commits (merge base 82b8a93) into Marcode.
Conflict decisions (combining upstream + Marcode intent per path):
- AGENTS.md: kept Marcode's Dev Servers/Task Completion/Pull-request
sections; took upstream's new "Plans and work artifacts" rules and the
"never commit PR assets" hygiene line.
- .github/workflows/ci.yml: took upstream's launchd-gated mobile lint job
and needs/if wiring; kept GitHub-hosted runners (the fork has no
Blacksmith access) and marked the seam on every job.
- apps/server/src/cli/connect.ts, cli/service.ts: took upstream's
macOS/launchd-aware wording and platform branch; kept Marcode branding.
- apps/server/src/cli/triage.ts: read MARCODE_HOME, not upstream's
T3CODE_HOME.
- apps/server/src/cloud/bootService.ts: launchd plist now exports
MARCODE_HOME (the launcher reads it and exits without it); added a test
pinning that so a future sync can't silently revert it. Kept the
upstream-shaped com.t3tools.t3code.service launchd label.
- apps/server/src/cloud/bootService.test.ts: fixed an upstream test
fixture that hardcoded the systemd unit as t3code.service to marcode.service.
- apps/server/src/persistence/Migrations.ts: renamed upstream's new
041_AuthSessionClientConnection to 042 (Marcode's ProjectWorkspaceLayout
holds 033, so shared ids sit one higher); updated the focused test.
- apps/server/src/vcs/GitVcsDriverCore.ts: kept both independently-added
helpers (Marcode's stderr redaction, upstream's missing-worktree matcher).
- apps/mobile/src/components/CompactBrandTitle.tsx: kept Marcode's
off-production stage-badge gate; took upstream's allowFontScaling.
- packages/client-runtime/src/state/threadSettled.ts: replaced Marcode's
one-hour warm-window heuristic with upstream's anchor rule (a terminal PR
settles a thread only while it postdates every user event); rewrote the
Marcode-owned tests for the new behavior.
- apps/web SidebarChrome/SettingsSidebarNav: kept Marcode's FloatingPillNav
ownership (footer owns update state only; settings footer keeps just Back),
dropped upstream's re-added SidebarUtilityMenu.
- apps/web ChatHeader/ChatView: kept Marcode's title-only header with thread
actions portaled into FloatingPillNav; took upstream's WorkspacePageHeader
refactor and the cmd+enter background-thread flow (re-bound handleNewThread).
- apps/web RightPanelTabs: took upstream's surface-dropdown shortcuts (pingdotgg#7318)
and desktop tab mute (pingdotgg#7252); kept Marcode's hover-swap tab close and its
header-placed add-surface menu; kept the retired Files surface out.
- apps/web ThreadTerminalDrawer: kept Marcode's terminal chrome divergence;
carried upstream's confirm-before-close (pingdotgg#7592) into it.
- apps/web ComposerPendingApprovalPanel/ChatComposer: took upstream's
compact app-access approval panel (pingdotgg#8058) and top-drawer composer.
- apps/web settings.tsx/UsagePage.tsx/workspaceTitlebar.fork.test.ts: took
upstream's shared WorkspacePageHeader; kept Marcode's sidebarless titlebar
inset by passing it through, and updated the pin test to the new shape.
- apps/web index.css: declined upstream's zinc sidebar palette (Marcode owns
it); took upstream's preview-loading-progress animation.
- apps/web files/: kept Marcode's retirement of the right-panel file surfaces.
- versionSkew, environment.test, PullRequestService.test,
build-desktop-artifact.test: combined both sides' additions.
- pnpm-workspace.yaml / pnpm-lock.yaml: took upstream's Clerk bump and
anthropic-sdk binary overrides; regenerated the lockfile with pnpm (kept
Marcode's @aliimam/icons). No coupled vendored subtree moved.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 24, 2026
Upstream's sync added three CI jobs, which broke the fork's runner pin: it
compared the whole runs-on list positionally, so it failed on the count
before it could say anything about the labels.
Assert the actual invariant instead — every ci.yml job names a
GitHub-hosted runner the fork can reach — so a future upstream job trips
this only when it arrives on a Blacksmith label, which queues forever
rather than failing.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19
Upstream split the server suite out of `test` into a `test_server` matrix.
The shards inherited the tests but not Marcode's ripgrep install step, so
WorkspaceFileSystem's searchContent — which shells out to `rg` — failed
with `spawn rg ENOENT` on all three shards. The step is Marcode-only
because upstream runs on Blacksmith images that ship ripgrep and
GitHub-hosted runners do not.
Move the step to follow the tests, and widen the pin that guards it: it
checked only `ci.jobs.test`, which is why the split slipped through. It
now asserts every job running a Test step installs ripgrep.
Also extend the migration pin to cover upstream's new AuthSessionClientConnection
migration at Marcode's renumbered id 42; the pin is deliberately
fail-loud on any added migration and did its job here.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19
@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+858 B (+6.7%)15.1 KiB
CodexThread snapshot wire6.3 KiB6.9 KiB+627 B (+9.8%)7.3 KiB
CodexLive turn WebSocket wire6.3 KiB6.5 KiB+231 B (+3.6%)7.8 KiB
CodexLive turn WebSocket decoded51.8 KiB55.0 KiB+3.2 KiB (+6.1%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire12.6 KiB13.4 KiB+887 B (+6.9%)15.1 KiB
ClaudeThread snapshot wire6.3 KiB6.9 KiB+638 B (+9.9%)7.3 KiB
ClaudeLive turn WebSocket wire6.3 KiB6.5 KiB+249 B (+3.9%)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: 2d94db2 · 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

Verification on PR head 2d94db2d:

  • Web: ran the isolated PR worktree with the full dev stack, authenticated the controlled preview, confirmed the Marcode shell/project flow, opened the Files surface and unified workspace tree/editor, opened project actions, and saw no browser console errors.
  • Responsive: checked 820x800 and 390x844 viewports.
  • Mobile: live simulator verification is unavailable in this environment. XcodeBuildMCP reports 0 iOS simulators; Android tooling (adb/ANDROID_HOME) is not installed.
  • CI: all four protected checks are green. The queued Native fingerprint diff remains the pre-existing, non-required Blacksmith check documented in this PR.

No source changes were made during verification.

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

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

20 participants

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

chore(upstream): sync marcode through f035a0f4 - #51

Merged
maarco merged 146 commits into
mainfrom
claude/gracious-bohr-23bj7a
Aug 25, 2026
Merged

chore(upstream): sync marcode through f035a0f4#51
maarco merged 146 commits into
mainfrom
claude/gracious-bohr-23bj7a

Conversation

@maarco

@maarcomaarco commented Aug 24, 2026

Copy link
Copy Markdown
Owner

What Changed

Daily upstream sync: merges pingdotgg/t3code@f035a0f4 (143 commits above merge base 82b8a938) into Marcode via a two-parent --no-ff merge. 32 files conflicted; each was resolved by hand to combine upstream and Marcode intent — no whole-file ours/theirs.

Highlights of the conflict decisions:

  • Fork-boundary breaks that merged cleanly (no conflict) and were fixed:
    • launchd boot service exported T3CODE_HOME; changed to MARCODE_HOME (the service launcher reads it and exits without it) and added a test pinning it.
    • an upstream bootService test fixture hardcoded the systemd unit as t3code.service; corrected to marcode.service.
    • triage.ts read T3CODE_HOME; changed to MARCODE_HOME.
  • Migrations: upstream's new AuthSessionClientConnection migration was renumbered 041→042 (Marcode's ProjectWorkspaceLayout occupies 033, so shared ids sit one higher); focused test updated.
  • Navigation shell: kept Marcode's FloatingPillNav ownership — dropped upstream's re-added SidebarUtilityMenu, kept the title-only ChatHeader with thread actions portaled into the pill nav — while taking upstream's WorkspacePageHeader refactor and its cmd+enter background-thread flow.
  • Right panel: took upstream's surface-dropdown shortcuts (feat(web): add shortcuts to the surface dropdown pingdotgg/t3code#7318) and desktop tab mute (feat(desktop): mute a browser tab pingdotgg/t3code#7252); kept Marcode's hover-swap tab close and header-placed add-surface menu; kept the retired Files surface out.
  • Terminal drawer: kept Marcode's terminal chrome divergence but carried upstream's confirm-before-close (feat(web): confirm before closing a terminal pingdotgg/t3code#7592) into it.
  • Thread settling: replaced Marcode's one-hour warm-window heuristic with upstream's more precise anchor rule; rewrote the Marcode-owned tests.
  • Approvals/composer: took upstream's compact app-access approval panel (fix(codex): show app access approval prompts pingdotgg/t3code#8058) and top-drawer composer.
  • CI: took upstream's launchd-gated mobile lint job; kept GitHub-hosted runners (the fork has no Blacksmith access).
  • Lockfile: took upstream's Clerk bump and anthropic-sdk binary overrides; regenerated pnpm-lock.yaml with pnpm (kept Marcode's @aliimam/icons). No coupled vendored subtree moved.

The full per-path rationale is in the merge commit message.

Compatibility identifiers left upstream-shaped on purpose: com.t3tools.t3code.service (launchd label), @t3tools/*, the t3 package/CLI name, T3_BOOT_SERVICE_UNIT.

Follow-up commits (CI fixes on top of the merge)

The first CI run surfaced three failures, all of them fork pins firing or a fork step going missing during an upstream refactor. Each is fixed here:

FailureCauseFix
TestThe fork's runner pin compared the whole runs-on list positionally against 4 entries; upstream added 3 jobs.Rewritten as a label-membership rule (2e3f60c2), so it trips on a Blacksmith label — the real failure mode — not on job count.
Test Server 2Migrations.test.ts is deliberately fail-loud on any added migration.Window extended to include [42, "AuthSessionClientConnection"] (2d94db2d).
Test Server 3Real bug. Upstream split the server suite into a test_server matrix; the shards inherited the tests but not Marcode's ripgrep install step, so WorkspaceFileSystem.searchContent died with spawn rg ENOENT. The step is Marcode-only — upstream's Blacksmith images ship rg, GitHub-hosted runners do not.Install step moved to follow the tests, and the guard widened from "ci.jobs.test installs ripgrep" to "every job with a Test step installs ripgrep" (2d94db2d) — the narrow guard is exactly why the split slipped through.

Why

Marcode is a maintained fork of T3 Code. This keeps it current with upstream correctness, security, protocol, dependency, and operational fixes while preserving Marcode's intentional product behavior (floating nav, unified workspace, floating editor, retired right-panel file surfaces, branding). Resolves the upstream-sync-blocked tracking issue for f035a0f4 (#50).

UI Changes

No Marcode-visible UI change is intended: web navigation, composer, terminal, and right-panel surfaces keep Marcode's existing appearance and placement. Upstream UI features adopted where they don't touch a Marcode divergence (tab mute, surface-dropdown shortcuts, confirm-before-close, app-access approvals). Live client verification is deferred to review, since this environment is headless.

Verification

CI is green on 2d94db2d:Check, Test, Mobile Native Static Analysis, Release Smoke (the four required checks), plus Test Server 1/2/3, Rust, Mobile Native Changes, and claude-review. Thread-transfer budget report passes every ceiling. Nothing on this head failed.

Locally, before pushing:

  • Typecheck: @t3tools/contracts, @t3tools/client-runtime, @t3tools/web, t3 (server) — all clean (only pre-existing Effect lint suggestions remain).
  • Focused tests across the resolved paths, plus vp fmt --check and vp lint on changed files.
  • The spawn rg ENOENT fix was verified by reproducing the failure locally with rg removed from PATH (this container has rg installed, which is why the first local run passed while CI failed), then confirming both test-running jobs install it.
  • ChatHeader.test.ts could not run here: @aliimam/icons@1.1.3 (a pre-existing Marcode dep) ships index.js/index.mjs but declares main: dist/index.cjs, so the resolver fails; this reproduces identically on main and is unrelated to the merge. It passes in CI.

Reviewer notes

Why this PR reads "unstable" / "some checks haven't completed".Native fingerprint diff (mobile-fingerprint-check.yml) runs on blacksmith-8vcpu-ubuntu-2404, a runner this fork cannot reach, so it queues indefinitely rather than failing. That is pre-existing on main — this merge does not touch that workflow — so it is deliberately not fixed here, and it does not block merge (it is not a required check). The one-line fix, if you want it as its own PR, is the same override applied to ci.yml: runs-on: ubuntu-24.04. The same applies to web-preview.yml, mobile-eas-*.yml, publish-aur.yml, and most of release.yml.

Required-checks gap. Upstream split server tests out of Test into Test Server 1/2/3 and added Rust. The manifest's requiredPullRequestChecks still lists only Check, Test, Mobile Native Static Analysis, Release Smoke — so branch protection would not have blocked on the two genuine failures above. Changing that list means updating the manifest and the workflow literals together (the parity test enforces it) and changes what gates merges, so it is deliberately not folded into this sync PR.

Transfer budget headroom. The report shows the thread snapshot wire at 6.9 KiB against a 7.3 KiB ceiling (~94%, up ~10% from main) — passing, but with less headroom than before this sync.

Checklist

  • Conflicts resolved by hand, combining upstream and Marcode intent (no whole-file ours/theirs)
  • Fork-boundary identity swept (T3CODE_HOME, t3code.service, WORKTREE_BRANCH_PREFIX, boot-service naming) and corrected for Marcode
  • Compatibility identifiers kept upstream-shaped
  • Focused typechecks, tests, format, and lint run for the affected scope
  • Lockfile regenerated with pnpm, not hand-edited
  • CI green on the head commit
  • Live client (web/mobile) verification — deferred to review (headless environment)

🤖 Generated with Claude Code

https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19

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>
PollyGlotand others added 16 commits August 24, 2026 02:52
…pingdotgg#5585)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
…es (pingdotgg#8076)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Merge 143 upstream commits (merge base 82b8a93) into Marcode.
Conflict decisions (combining upstream + Marcode intent per path):
- AGENTS.md: kept Marcode's Dev Servers/Task Completion/Pull-request
sections; took upstream's new "Plans and work artifacts" rules and the
"never commit PR assets" hygiene line.
- .github/workflows/ci.yml: took upstream's launchd-gated mobile lint job
and needs/if wiring; kept GitHub-hosted runners (the fork has no
Blacksmith access) and marked the seam on every job.
- apps/server/src/cli/connect.ts, cli/service.ts: took upstream's
macOS/launchd-aware wording and platform branch; kept Marcode branding.
- apps/server/src/cli/triage.ts: read MARCODE_HOME, not upstream's
T3CODE_HOME.
- apps/server/src/cloud/bootService.ts: launchd plist now exports
MARCODE_HOME (the launcher reads it and exits without it); added a test
pinning that so a future sync can't silently revert it. Kept the
upstream-shaped com.t3tools.t3code.service launchd label.
- apps/server/src/cloud/bootService.test.ts: fixed an upstream test
fixture that hardcoded the systemd unit as t3code.service to marcode.service.
- apps/server/src/persistence/Migrations.ts: renamed upstream's new
041_AuthSessionClientConnection to 042 (Marcode's ProjectWorkspaceLayout
holds 033, so shared ids sit one higher); updated the focused test.
- apps/server/src/vcs/GitVcsDriverCore.ts: kept both independently-added
helpers (Marcode's stderr redaction, upstream's missing-worktree matcher).
- apps/mobile/src/components/CompactBrandTitle.tsx: kept Marcode's
off-production stage-badge gate; took upstream's allowFontScaling.
- packages/client-runtime/src/state/threadSettled.ts: replaced Marcode's
one-hour warm-window heuristic with upstream's anchor rule (a terminal PR
settles a thread only while it postdates every user event); rewrote the
Marcode-owned tests for the new behavior.
- apps/web SidebarChrome/SettingsSidebarNav: kept Marcode's FloatingPillNav
ownership (footer owns update state only; settings footer keeps just Back),
dropped upstream's re-added SidebarUtilityMenu.
- apps/web ChatHeader/ChatView: kept Marcode's title-only header with thread
actions portaled into FloatingPillNav; took upstream's WorkspacePageHeader
refactor and the cmd+enter background-thread flow (re-bound handleNewThread).
- apps/web RightPanelTabs: took upstream's surface-dropdown shortcuts (pingdotgg#7318)
and desktop tab mute (pingdotgg#7252); kept Marcode's hover-swap tab close and its
header-placed add-surface menu; kept the retired Files surface out.
- apps/web ThreadTerminalDrawer: kept Marcode's terminal chrome divergence;
carried upstream's confirm-before-close (pingdotgg#7592) into it.
- apps/web ComposerPendingApprovalPanel/ChatComposer: took upstream's
compact app-access approval panel (pingdotgg#8058) and top-drawer composer.
- apps/web settings.tsx/UsagePage.tsx/workspaceTitlebar.fork.test.ts: took
upstream's shared WorkspacePageHeader; kept Marcode's sidebarless titlebar
inset by passing it through, and updated the pin test to the new shape.
- apps/web index.css: declined upstream's zinc sidebar palette (Marcode owns
it); took upstream's preview-loading-progress animation.
- apps/web files/: kept Marcode's retirement of the right-panel file surfaces.
- versionSkew, environment.test, PullRequestService.test,
build-desktop-artifact.test: combined both sides' additions.
- pnpm-workspace.yaml / pnpm-lock.yaml: took upstream's Clerk bump and
anthropic-sdk binary overrides; regenerated the lockfile with pnpm (kept
Marcode's @aliimam/icons). No coupled vendored subtree moved.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 24, 2026
Upstream's sync added three CI jobs, which broke the fork's runner pin: it
compared the whole runs-on list positionally, so it failed on the count
before it could say anything about the labels.
Assert the actual invariant instead — every ci.yml job names a
GitHub-hosted runner the fork can reach — so a future upstream job trips
this only when it arrives on a Blacksmith label, which queues forever
rather than failing.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19
Upstream split the server suite out of `test` into a `test_server` matrix.
The shards inherited the tests but not Marcode's ripgrep install step, so
WorkspaceFileSystem's searchContent — which shells out to `rg` — failed
with `spawn rg ENOENT` on all three shards. The step is Marcode-only
because upstream runs on Blacksmith images that ship ripgrep and
GitHub-hosted runners do not.
Move the step to follow the tests, and widen the pin that guards it: it
checked only `ci.jobs.test`, which is why the split slipped through. It
now asserts every job running a Test step installs ripgrep.
Also extend the migration pin to cover upstream's new AuthSessionClientConnection
migration at Marcode's renumbered id 42; the pin is deliberately
fail-loud on any added migration and did its job here.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19
@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+858 B (+6.7%)15.1 KiB
CodexThread snapshot wire6.3 KiB6.9 KiB+627 B (+9.8%)7.3 KiB
CodexLive turn WebSocket wire6.3 KiB6.5 KiB+231 B (+3.6%)7.8 KiB
CodexLive turn WebSocket decoded51.8 KiB55.0 KiB+3.2 KiB (+6.1%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire12.6 KiB13.4 KiB+887 B (+6.9%)15.1 KiB
ClaudeThread snapshot wire6.3 KiB6.9 KiB+638 B (+9.9%)7.3 KiB
ClaudeLive turn WebSocket wire6.3 KiB6.5 KiB+249 B (+3.9%)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: 2d94db2 · 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

Verification on PR head 2d94db2d:

  • Web: ran the isolated PR worktree with the full dev stack, authenticated the controlled preview, confirmed the Marcode shell/project flow, opened the Files surface and unified workspace tree/editor, opened project actions, and saw no browser console errors.
  • Responsive: checked 820x800 and 390x844 viewports.
  • Mobile: live simulator verification is unavailable in this environment. XcodeBuildMCP reports 0 iOS simulators; Android tooling (adb/ANDROID_HOME) is not installed.
  • CI: all four protected checks are green. The queued Native fingerprint diff remains the pre-existing, non-required Blacksmith check documented in this PR.

No source changes were made during verification.

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

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

20 participants

@maarco@aoright@gbarros-dev@Bil0000@Rishet11@StiensWout@AugusDogus@tarik02@gsimone@t3dotgg@chrisdeeming@inayayousfi@RakshithBhat03@dbalders@maria-rcks@UtkarshUsername@SunkenInTime@lgwacker@jakeleventhal@sethwebster
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' chore(upstream): sync marcode through f035a0f4 by maarco · Pull Request #51 · maarco/marcode · GitHub
Skip to content

chore(upstream): sync marcode through f035a0f4 - #51

Merged
maarco merged 146 commits into
mainfrom
claude/gracious-bohr-23bj7a
Aug 25, 2026
Merged

chore(upstream): sync marcode through f035a0f4#51
maarco merged 146 commits into
mainfrom
claude/gracious-bohr-23bj7a

Conversation

@maarco

@maarcomaarco commented Aug 24, 2026

Copy link
Copy Markdown
Owner

What Changed

Daily upstream sync: merges pingdotgg/t3code@f035a0f4 (143 commits above merge base 82b8a938) into Marcode via a two-parent --no-ff merge. 32 files conflicted; each was resolved by hand to combine upstream and Marcode intent — no whole-file ours/theirs.

Highlights of the conflict decisions:

  • Fork-boundary breaks that merged cleanly (no conflict) and were fixed:
    • launchd boot service exported T3CODE_HOME; changed to MARCODE_HOME (the service launcher reads it and exits without it) and added a test pinning it.
    • an upstream bootService test fixture hardcoded the systemd unit as t3code.service; corrected to marcode.service.
    • triage.ts read T3CODE_HOME; changed to MARCODE_HOME.
  • Migrations: upstream's new AuthSessionClientConnection migration was renumbered 041→042 (Marcode's ProjectWorkspaceLayout occupies 033, so shared ids sit one higher); focused test updated.
  • Navigation shell: kept Marcode's FloatingPillNav ownership — dropped upstream's re-added SidebarUtilityMenu, kept the title-only ChatHeader with thread actions portaled into the pill nav — while taking upstream's WorkspacePageHeader refactor and its cmd+enter background-thread flow.
  • Right panel: took upstream's surface-dropdown shortcuts (feat(web): add shortcuts to the surface dropdown pingdotgg/t3code#7318) and desktop tab mute (feat(desktop): mute a browser tab pingdotgg/t3code#7252); kept Marcode's hover-swap tab close and header-placed add-surface menu; kept the retired Files surface out.
  • Terminal drawer: kept Marcode's terminal chrome divergence but carried upstream's confirm-before-close (feat(web): confirm before closing a terminal pingdotgg/t3code#7592) into it.
  • Thread settling: replaced Marcode's one-hour warm-window heuristic with upstream's more precise anchor rule; rewrote the Marcode-owned tests.
  • Approvals/composer: took upstream's compact app-access approval panel (fix(codex): show app access approval prompts pingdotgg/t3code#8058) and top-drawer composer.
  • CI: took upstream's launchd-gated mobile lint job; kept GitHub-hosted runners (the fork has no Blacksmith access).
  • Lockfile: took upstream's Clerk bump and anthropic-sdk binary overrides; regenerated pnpm-lock.yaml with pnpm (kept Marcode's @aliimam/icons). No coupled vendored subtree moved.

The full per-path rationale is in the merge commit message.

Compatibility identifiers left upstream-shaped on purpose: com.t3tools.t3code.service (launchd label), @t3tools/*, the t3 package/CLI name, T3_BOOT_SERVICE_UNIT.

Follow-up commits (CI fixes on top of the merge)

The first CI run surfaced three failures, all of them fork pins firing or a fork step going missing during an upstream refactor. Each is fixed here:

FailureCauseFix
TestThe fork's runner pin compared the whole runs-on list positionally against 4 entries; upstream added 3 jobs.Rewritten as a label-membership rule (2e3f60c2), so it trips on a Blacksmith label — the real failure mode — not on job count.
Test Server 2Migrations.test.ts is deliberately fail-loud on any added migration.Window extended to include [42, "AuthSessionClientConnection"] (2d94db2d).
Test Server 3Real bug. Upstream split the server suite into a test_server matrix; the shards inherited the tests but not Marcode's ripgrep install step, so WorkspaceFileSystem.searchContent died with spawn rg ENOENT. The step is Marcode-only — upstream's Blacksmith images ship rg, GitHub-hosted runners do not.Install step moved to follow the tests, and the guard widened from "ci.jobs.test installs ripgrep" to "every job with a Test step installs ripgrep" (2d94db2d) — the narrow guard is exactly why the split slipped through.

Why

Marcode is a maintained fork of T3 Code. This keeps it current with upstream correctness, security, protocol, dependency, and operational fixes while preserving Marcode's intentional product behavior (floating nav, unified workspace, floating editor, retired right-panel file surfaces, branding). Resolves the upstream-sync-blocked tracking issue for f035a0f4 (#50).

UI Changes

No Marcode-visible UI change is intended: web navigation, composer, terminal, and right-panel surfaces keep Marcode's existing appearance and placement. Upstream UI features adopted where they don't touch a Marcode divergence (tab mute, surface-dropdown shortcuts, confirm-before-close, app-access approvals). Live client verification is deferred to review, since this environment is headless.

Verification

CI is green on 2d94db2d:Check, Test, Mobile Native Static Analysis, Release Smoke (the four required checks), plus Test Server 1/2/3, Rust, Mobile Native Changes, and claude-review. Thread-transfer budget report passes every ceiling. Nothing on this head failed.

Locally, before pushing:

  • Typecheck: @t3tools/contracts, @t3tools/client-runtime, @t3tools/web, t3 (server) — all clean (only pre-existing Effect lint suggestions remain).
  • Focused tests across the resolved paths, plus vp fmt --check and vp lint on changed files.
  • The spawn rg ENOENT fix was verified by reproducing the failure locally with rg removed from PATH (this container has rg installed, which is why the first local run passed while CI failed), then confirming both test-running jobs install it.
  • ChatHeader.test.ts could not run here: @aliimam/icons@1.1.3 (a pre-existing Marcode dep) ships index.js/index.mjs but declares main: dist/index.cjs, so the resolver fails; this reproduces identically on main and is unrelated to the merge. It passes in CI.

Reviewer notes

Why this PR reads "unstable" / "some checks haven't completed".Native fingerprint diff (mobile-fingerprint-check.yml) runs on blacksmith-8vcpu-ubuntu-2404, a runner this fork cannot reach, so it queues indefinitely rather than failing. That is pre-existing on main — this merge does not touch that workflow — so it is deliberately not fixed here, and it does not block merge (it is not a required check). The one-line fix, if you want it as its own PR, is the same override applied to ci.yml: runs-on: ubuntu-24.04. The same applies to web-preview.yml, mobile-eas-*.yml, publish-aur.yml, and most of release.yml.

Required-checks gap. Upstream split server tests out of Test into Test Server 1/2/3 and added Rust. The manifest's requiredPullRequestChecks still lists only Check, Test, Mobile Native Static Analysis, Release Smoke — so branch protection would not have blocked on the two genuine failures above. Changing that list means updating the manifest and the workflow literals together (the parity test enforces it) and changes what gates merges, so it is deliberately not folded into this sync PR.

Transfer budget headroom. The report shows the thread snapshot wire at 6.9 KiB against a 7.3 KiB ceiling (~94%, up ~10% from main) — passing, but with less headroom than before this sync.

Checklist

  • Conflicts resolved by hand, combining upstream and Marcode intent (no whole-file ours/theirs)
  • Fork-boundary identity swept (T3CODE_HOME, t3code.service, WORKTREE_BRANCH_PREFIX, boot-service naming) and corrected for Marcode
  • Compatibility identifiers kept upstream-shaped
  • Focused typechecks, tests, format, and lint run for the affected scope
  • Lockfile regenerated with pnpm, not hand-edited
  • CI green on the head commit
  • Live client (web/mobile) verification — deferred to review (headless environment)

🤖 Generated with Claude Code

https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19

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>
PollyGlotand others added 16 commits August 24, 2026 02:52
…pingdotgg#5585)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
…es (pingdotgg#8076)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Merge 143 upstream commits (merge base 82b8a93) into Marcode.
Conflict decisions (combining upstream + Marcode intent per path):
- AGENTS.md: kept Marcode's Dev Servers/Task Completion/Pull-request
sections; took upstream's new "Plans and work artifacts" rules and the
"never commit PR assets" hygiene line.
- .github/workflows/ci.yml: took upstream's launchd-gated mobile lint job
and needs/if wiring; kept GitHub-hosted runners (the fork has no
Blacksmith access) and marked the seam on every job.
- apps/server/src/cli/connect.ts, cli/service.ts: took upstream's
macOS/launchd-aware wording and platform branch; kept Marcode branding.
- apps/server/src/cli/triage.ts: read MARCODE_HOME, not upstream's
T3CODE_HOME.
- apps/server/src/cloud/bootService.ts: launchd plist now exports
MARCODE_HOME (the launcher reads it and exits without it); added a test
pinning that so a future sync can't silently revert it. Kept the
upstream-shaped com.t3tools.t3code.service launchd label.
- apps/server/src/cloud/bootService.test.ts: fixed an upstream test
fixture that hardcoded the systemd unit as t3code.service to marcode.service.
- apps/server/src/persistence/Migrations.ts: renamed upstream's new
041_AuthSessionClientConnection to 042 (Marcode's ProjectWorkspaceLayout
holds 033, so shared ids sit one higher); updated the focused test.
- apps/server/src/vcs/GitVcsDriverCore.ts: kept both independently-added
helpers (Marcode's stderr redaction, upstream's missing-worktree matcher).
- apps/mobile/src/components/CompactBrandTitle.tsx: kept Marcode's
off-production stage-badge gate; took upstream's allowFontScaling.
- packages/client-runtime/src/state/threadSettled.ts: replaced Marcode's
one-hour warm-window heuristic with upstream's anchor rule (a terminal PR
settles a thread only while it postdates every user event); rewrote the
Marcode-owned tests for the new behavior.
- apps/web SidebarChrome/SettingsSidebarNav: kept Marcode's FloatingPillNav
ownership (footer owns update state only; settings footer keeps just Back),
dropped upstream's re-added SidebarUtilityMenu.
- apps/web ChatHeader/ChatView: kept Marcode's title-only header with thread
actions portaled into FloatingPillNav; took upstream's WorkspacePageHeader
refactor and the cmd+enter background-thread flow (re-bound handleNewThread).
- apps/web RightPanelTabs: took upstream's surface-dropdown shortcuts (pingdotgg#7318)
and desktop tab mute (pingdotgg#7252); kept Marcode's hover-swap tab close and its
header-placed add-surface menu; kept the retired Files surface out.
- apps/web ThreadTerminalDrawer: kept Marcode's terminal chrome divergence;
carried upstream's confirm-before-close (pingdotgg#7592) into it.
- apps/web ComposerPendingApprovalPanel/ChatComposer: took upstream's
compact app-access approval panel (pingdotgg#8058) and top-drawer composer.
- apps/web settings.tsx/UsagePage.tsx/workspaceTitlebar.fork.test.ts: took
upstream's shared WorkspacePageHeader; kept Marcode's sidebarless titlebar
inset by passing it through, and updated the pin test to the new shape.
- apps/web index.css: declined upstream's zinc sidebar palette (Marcode owns
it); took upstream's preview-loading-progress animation.
- apps/web files/: kept Marcode's retirement of the right-panel file surfaces.
- versionSkew, environment.test, PullRequestService.test,
build-desktop-artifact.test: combined both sides' additions.
- pnpm-workspace.yaml / pnpm-lock.yaml: took upstream's Clerk bump and
anthropic-sdk binary overrides; regenerated the lockfile with pnpm (kept
Marcode's @aliimam/icons). No coupled vendored subtree moved.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 24, 2026
Upstream's sync added three CI jobs, which broke the fork's runner pin: it
compared the whole runs-on list positionally, so it failed on the count
before it could say anything about the labels.
Assert the actual invariant instead — every ci.yml job names a
GitHub-hosted runner the fork can reach — so a future upstream job trips
this only when it arrives on a Blacksmith label, which queues forever
rather than failing.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19
Upstream split the server suite out of `test` into a `test_server` matrix.
The shards inherited the tests but not Marcode's ripgrep install step, so
WorkspaceFileSystem's searchContent — which shells out to `rg` — failed
with `spawn rg ENOENT` on all three shards. The step is Marcode-only
because upstream runs on Blacksmith images that ship ripgrep and
GitHub-hosted runners do not.
Move the step to follow the tests, and widen the pin that guards it: it
checked only `ci.jobs.test`, which is why the split slipped through. It
now asserts every job running a Test step installs ripgrep.
Also extend the migration pin to cover upstream's new AuthSessionClientConnection
migration at Marcode's renumbered id 42; the pin is deliberately
fail-loud on any added migration and did its job here.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19
@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+858 B (+6.7%)15.1 KiB
CodexThread snapshot wire6.3 KiB6.9 KiB+627 B (+9.8%)7.3 KiB
CodexLive turn WebSocket wire6.3 KiB6.5 KiB+231 B (+3.6%)7.8 KiB
CodexLive turn WebSocket decoded51.8 KiB55.0 KiB+3.2 KiB (+6.1%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire12.6 KiB13.4 KiB+887 B (+6.9%)15.1 KiB
ClaudeThread snapshot wire6.3 KiB6.9 KiB+638 B (+9.9%)7.3 KiB
ClaudeLive turn WebSocket wire6.3 KiB6.5 KiB+249 B (+3.9%)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: 2d94db2 · 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

Verification on PR head 2d94db2d:

  • Web: ran the isolated PR worktree with the full dev stack, authenticated the controlled preview, confirmed the Marcode shell/project flow, opened the Files surface and unified workspace tree/editor, opened project actions, and saw no browser console errors.
  • Responsive: checked 820x800 and 390x844 viewports.
  • Mobile: live simulator verification is unavailable in this environment. XcodeBuildMCP reports 0 iOS simulators; Android tooling (adb/ANDROID_HOME) is not installed.
  • CI: all four protected checks are green. The queued Native fingerprint diff remains the pre-existing, non-required Blacksmith check documented in this PR.

No source changes were made during verification.

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

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

20 participants

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

chore(upstream): sync marcode through f035a0f4 - #51

Merged
maarco merged 146 commits into
mainfrom
claude/gracious-bohr-23bj7a
Aug 25, 2026
Merged

chore(upstream): sync marcode through f035a0f4#51
maarco merged 146 commits into
mainfrom
claude/gracious-bohr-23bj7a

Conversation

@maarco

@maarcomaarco commented Aug 24, 2026

Copy link
Copy Markdown
Owner

What Changed

Daily upstream sync: merges pingdotgg/t3code@f035a0f4 (143 commits above merge base 82b8a938) into Marcode via a two-parent --no-ff merge. 32 files conflicted; each was resolved by hand to combine upstream and Marcode intent — no whole-file ours/theirs.

Highlights of the conflict decisions:

  • Fork-boundary breaks that merged cleanly (no conflict) and were fixed:
    • launchd boot service exported T3CODE_HOME; changed to MARCODE_HOME (the service launcher reads it and exits without it) and added a test pinning it.
    • an upstream bootService test fixture hardcoded the systemd unit as t3code.service; corrected to marcode.service.
    • triage.ts read T3CODE_HOME; changed to MARCODE_HOME.
  • Migrations: upstream's new AuthSessionClientConnection migration was renumbered 041→042 (Marcode's ProjectWorkspaceLayout occupies 033, so shared ids sit one higher); focused test updated.
  • Navigation shell: kept Marcode's FloatingPillNav ownership — dropped upstream's re-added SidebarUtilityMenu, kept the title-only ChatHeader with thread actions portaled into the pill nav — while taking upstream's WorkspacePageHeader refactor and its cmd+enter background-thread flow.
  • Right panel: took upstream's surface-dropdown shortcuts (feat(web): add shortcuts to the surface dropdown pingdotgg/t3code#7318) and desktop tab mute (feat(desktop): mute a browser tab pingdotgg/t3code#7252); kept Marcode's hover-swap tab close and header-placed add-surface menu; kept the retired Files surface out.
  • Terminal drawer: kept Marcode's terminal chrome divergence but carried upstream's confirm-before-close (feat(web): confirm before closing a terminal pingdotgg/t3code#7592) into it.
  • Thread settling: replaced Marcode's one-hour warm-window heuristic with upstream's more precise anchor rule; rewrote the Marcode-owned tests.
  • Approvals/composer: took upstream's compact app-access approval panel (fix(codex): show app access approval prompts pingdotgg/t3code#8058) and top-drawer composer.
  • CI: took upstream's launchd-gated mobile lint job; kept GitHub-hosted runners (the fork has no Blacksmith access).
  • Lockfile: took upstream's Clerk bump and anthropic-sdk binary overrides; regenerated pnpm-lock.yaml with pnpm (kept Marcode's @aliimam/icons). No coupled vendored subtree moved.

The full per-path rationale is in the merge commit message.

Compatibility identifiers left upstream-shaped on purpose: com.t3tools.t3code.service (launchd label), @t3tools/*, the t3 package/CLI name, T3_BOOT_SERVICE_UNIT.

Follow-up commits (CI fixes on top of the merge)

The first CI run surfaced three failures, all of them fork pins firing or a fork step going missing during an upstream refactor. Each is fixed here:

FailureCauseFix
TestThe fork's runner pin compared the whole runs-on list positionally against 4 entries; upstream added 3 jobs.Rewritten as a label-membership rule (2e3f60c2), so it trips on a Blacksmith label — the real failure mode — not on job count.
Test Server 2Migrations.test.ts is deliberately fail-loud on any added migration.Window extended to include [42, "AuthSessionClientConnection"] (2d94db2d).
Test Server 3Real bug. Upstream split the server suite into a test_server matrix; the shards inherited the tests but not Marcode's ripgrep install step, so WorkspaceFileSystem.searchContent died with spawn rg ENOENT. The step is Marcode-only — upstream's Blacksmith images ship rg, GitHub-hosted runners do not.Install step moved to follow the tests, and the guard widened from "ci.jobs.test installs ripgrep" to "every job with a Test step installs ripgrep" (2d94db2d) — the narrow guard is exactly why the split slipped through.

Why

Marcode is a maintained fork of T3 Code. This keeps it current with upstream correctness, security, protocol, dependency, and operational fixes while preserving Marcode's intentional product behavior (floating nav, unified workspace, floating editor, retired right-panel file surfaces, branding). Resolves the upstream-sync-blocked tracking issue for f035a0f4 (#50).

UI Changes

No Marcode-visible UI change is intended: web navigation, composer, terminal, and right-panel surfaces keep Marcode's existing appearance and placement. Upstream UI features adopted where they don't touch a Marcode divergence (tab mute, surface-dropdown shortcuts, confirm-before-close, app-access approvals). Live client verification is deferred to review, since this environment is headless.

Verification

CI is green on 2d94db2d:Check, Test, Mobile Native Static Analysis, Release Smoke (the four required checks), plus Test Server 1/2/3, Rust, Mobile Native Changes, and claude-review. Thread-transfer budget report passes every ceiling. Nothing on this head failed.

Locally, before pushing:

  • Typecheck: @t3tools/contracts, @t3tools/client-runtime, @t3tools/web, t3 (server) — all clean (only pre-existing Effect lint suggestions remain).
  • Focused tests across the resolved paths, plus vp fmt --check and vp lint on changed files.
  • The spawn rg ENOENT fix was verified by reproducing the failure locally with rg removed from PATH (this container has rg installed, which is why the first local run passed while CI failed), then confirming both test-running jobs install it.
  • ChatHeader.test.ts could not run here: @aliimam/icons@1.1.3 (a pre-existing Marcode dep) ships index.js/index.mjs but declares main: dist/index.cjs, so the resolver fails; this reproduces identically on main and is unrelated to the merge. It passes in CI.

Reviewer notes

Why this PR reads "unstable" / "some checks haven't completed".Native fingerprint diff (mobile-fingerprint-check.yml) runs on blacksmith-8vcpu-ubuntu-2404, a runner this fork cannot reach, so it queues indefinitely rather than failing. That is pre-existing on main — this merge does not touch that workflow — so it is deliberately not fixed here, and it does not block merge (it is not a required check). The one-line fix, if you want it as its own PR, is the same override applied to ci.yml: runs-on: ubuntu-24.04. The same applies to web-preview.yml, mobile-eas-*.yml, publish-aur.yml, and most of release.yml.

Required-checks gap. Upstream split server tests out of Test into Test Server 1/2/3 and added Rust. The manifest's requiredPullRequestChecks still lists only Check, Test, Mobile Native Static Analysis, Release Smoke — so branch protection would not have blocked on the two genuine failures above. Changing that list means updating the manifest and the workflow literals together (the parity test enforces it) and changes what gates merges, so it is deliberately not folded into this sync PR.

Transfer budget headroom. The report shows the thread snapshot wire at 6.9 KiB against a 7.3 KiB ceiling (~94%, up ~10% from main) — passing, but with less headroom than before this sync.

Checklist

  • Conflicts resolved by hand, combining upstream and Marcode intent (no whole-file ours/theirs)
  • Fork-boundary identity swept (T3CODE_HOME, t3code.service, WORKTREE_BRANCH_PREFIX, boot-service naming) and corrected for Marcode
  • Compatibility identifiers kept upstream-shaped
  • Focused typechecks, tests, format, and lint run for the affected scope
  • Lockfile regenerated with pnpm, not hand-edited
  • CI green on the head commit
  • Live client (web/mobile) verification — deferred to review (headless environment)

🤖 Generated with Claude Code

https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19

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>
PollyGlotand others added 16 commits August 24, 2026 02:52
…pingdotgg#5585)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
…es (pingdotgg#8076)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Merge 143 upstream commits (merge base 82b8a93) into Marcode.
Conflict decisions (combining upstream + Marcode intent per path):
- AGENTS.md: kept Marcode's Dev Servers/Task Completion/Pull-request
sections; took upstream's new "Plans and work artifacts" rules and the
"never commit PR assets" hygiene line.
- .github/workflows/ci.yml: took upstream's launchd-gated mobile lint job
and needs/if wiring; kept GitHub-hosted runners (the fork has no
Blacksmith access) and marked the seam on every job.
- apps/server/src/cli/connect.ts, cli/service.ts: took upstream's
macOS/launchd-aware wording and platform branch; kept Marcode branding.
- apps/server/src/cli/triage.ts: read MARCODE_HOME, not upstream's
T3CODE_HOME.
- apps/server/src/cloud/bootService.ts: launchd plist now exports
MARCODE_HOME (the launcher reads it and exits without it); added a test
pinning that so a future sync can't silently revert it. Kept the
upstream-shaped com.t3tools.t3code.service launchd label.
- apps/server/src/cloud/bootService.test.ts: fixed an upstream test
fixture that hardcoded the systemd unit as t3code.service to marcode.service.
- apps/server/src/persistence/Migrations.ts: renamed upstream's new
041_AuthSessionClientConnection to 042 (Marcode's ProjectWorkspaceLayout
holds 033, so shared ids sit one higher); updated the focused test.
- apps/server/src/vcs/GitVcsDriverCore.ts: kept both independently-added
helpers (Marcode's stderr redaction, upstream's missing-worktree matcher).
- apps/mobile/src/components/CompactBrandTitle.tsx: kept Marcode's
off-production stage-badge gate; took upstream's allowFontScaling.
- packages/client-runtime/src/state/threadSettled.ts: replaced Marcode's
one-hour warm-window heuristic with upstream's anchor rule (a terminal PR
settles a thread only while it postdates every user event); rewrote the
Marcode-owned tests for the new behavior.
- apps/web SidebarChrome/SettingsSidebarNav: kept Marcode's FloatingPillNav
ownership (footer owns update state only; settings footer keeps just Back),
dropped upstream's re-added SidebarUtilityMenu.
- apps/web ChatHeader/ChatView: kept Marcode's title-only header with thread
actions portaled into FloatingPillNav; took upstream's WorkspacePageHeader
refactor and the cmd+enter background-thread flow (re-bound handleNewThread).
- apps/web RightPanelTabs: took upstream's surface-dropdown shortcuts (pingdotgg#7318)
and desktop tab mute (pingdotgg#7252); kept Marcode's hover-swap tab close and its
header-placed add-surface menu; kept the retired Files surface out.
- apps/web ThreadTerminalDrawer: kept Marcode's terminal chrome divergence;
carried upstream's confirm-before-close (pingdotgg#7592) into it.
- apps/web ComposerPendingApprovalPanel/ChatComposer: took upstream's
compact app-access approval panel (pingdotgg#8058) and top-drawer composer.
- apps/web settings.tsx/UsagePage.tsx/workspaceTitlebar.fork.test.ts: took
upstream's shared WorkspacePageHeader; kept Marcode's sidebarless titlebar
inset by passing it through, and updated the pin test to the new shape.
- apps/web index.css: declined upstream's zinc sidebar palette (Marcode owns
it); took upstream's preview-loading-progress animation.
- apps/web files/: kept Marcode's retirement of the right-panel file surfaces.
- versionSkew, environment.test, PullRequestService.test,
build-desktop-artifact.test: combined both sides' additions.
- pnpm-workspace.yaml / pnpm-lock.yaml: took upstream's Clerk bump and
anthropic-sdk binary overrides; regenerated the lockfile with pnpm (kept
Marcode's @aliimam/icons). No coupled vendored subtree moved.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 24, 2026
Upstream's sync added three CI jobs, which broke the fork's runner pin: it
compared the whole runs-on list positionally, so it failed on the count
before it could say anything about the labels.
Assert the actual invariant instead — every ci.yml job names a
GitHub-hosted runner the fork can reach — so a future upstream job trips
this only when it arrives on a Blacksmith label, which queues forever
rather than failing.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19
Upstream split the server suite out of `test` into a `test_server` matrix.
The shards inherited the tests but not Marcode's ripgrep install step, so
WorkspaceFileSystem's searchContent — which shells out to `rg` — failed
with `spawn rg ENOENT` on all three shards. The step is Marcode-only
because upstream runs on Blacksmith images that ship ripgrep and
GitHub-hosted runners do not.
Move the step to follow the tests, and widen the pin that guards it: it
checked only `ci.jobs.test`, which is why the split slipped through. It
now asserts every job running a Test step installs ripgrep.
Also extend the migration pin to cover upstream's new AuthSessionClientConnection
migration at Marcode's renumbered id 42; the pin is deliberately
fail-loud on any added migration and did its job here.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19
@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+858 B (+6.7%)15.1 KiB
CodexThread snapshot wire6.3 KiB6.9 KiB+627 B (+9.8%)7.3 KiB
CodexLive turn WebSocket wire6.3 KiB6.5 KiB+231 B (+3.6%)7.8 KiB
CodexLive turn WebSocket decoded51.8 KiB55.0 KiB+3.2 KiB (+6.1%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire12.6 KiB13.4 KiB+887 B (+6.9%)15.1 KiB
ClaudeThread snapshot wire6.3 KiB6.9 KiB+638 B (+9.9%)7.3 KiB
ClaudeLive turn WebSocket wire6.3 KiB6.5 KiB+249 B (+3.9%)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: 2d94db2 · 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

Verification on PR head 2d94db2d:

  • Web: ran the isolated PR worktree with the full dev stack, authenticated the controlled preview, confirmed the Marcode shell/project flow, opened the Files surface and unified workspace tree/editor, opened project actions, and saw no browser console errors.
  • Responsive: checked 820x800 and 390x844 viewports.
  • Mobile: live simulator verification is unavailable in this environment. XcodeBuildMCP reports 0 iOS simulators; Android tooling (adb/ANDROID_HOME) is not installed.
  • CI: all four protected checks are green. The queued Native fingerprint diff remains the pre-existing, non-required Blacksmith check documented in this PR.

No source changes were made during verification.

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

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

20 participants

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

chore(upstream): sync marcode through f035a0f4 - #51

Merged
maarco merged 146 commits into
mainfrom
claude/gracious-bohr-23bj7a
Aug 25, 2026
Merged

chore(upstream): sync marcode through f035a0f4#51
maarco merged 146 commits into
mainfrom
claude/gracious-bohr-23bj7a

Conversation

@maarco

@maarcomaarco commented Aug 24, 2026

Copy link
Copy Markdown
Owner

What Changed

Daily upstream sync: merges pingdotgg/t3code@f035a0f4 (143 commits above merge base 82b8a938) into Marcode via a two-parent --no-ff merge. 32 files conflicted; each was resolved by hand to combine upstream and Marcode intent — no whole-file ours/theirs.

Highlights of the conflict decisions:

  • Fork-boundary breaks that merged cleanly (no conflict) and were fixed:
    • launchd boot service exported T3CODE_HOME; changed to MARCODE_HOME (the service launcher reads it and exits without it) and added a test pinning it.
    • an upstream bootService test fixture hardcoded the systemd unit as t3code.service; corrected to marcode.service.
    • triage.ts read T3CODE_HOME; changed to MARCODE_HOME.
  • Migrations: upstream's new AuthSessionClientConnection migration was renumbered 041→042 (Marcode's ProjectWorkspaceLayout occupies 033, so shared ids sit one higher); focused test updated.
  • Navigation shell: kept Marcode's FloatingPillNav ownership — dropped upstream's re-added SidebarUtilityMenu, kept the title-only ChatHeader with thread actions portaled into the pill nav — while taking upstream's WorkspacePageHeader refactor and its cmd+enter background-thread flow.
  • Right panel: took upstream's surface-dropdown shortcuts (feat(web): add shortcuts to the surface dropdown pingdotgg/t3code#7318) and desktop tab mute (feat(desktop): mute a browser tab pingdotgg/t3code#7252); kept Marcode's hover-swap tab close and header-placed add-surface menu; kept the retired Files surface out.
  • Terminal drawer: kept Marcode's terminal chrome divergence but carried upstream's confirm-before-close (feat(web): confirm before closing a terminal pingdotgg/t3code#7592) into it.
  • Thread settling: replaced Marcode's one-hour warm-window heuristic with upstream's more precise anchor rule; rewrote the Marcode-owned tests.
  • Approvals/composer: took upstream's compact app-access approval panel (fix(codex): show app access approval prompts pingdotgg/t3code#8058) and top-drawer composer.
  • CI: took upstream's launchd-gated mobile lint job; kept GitHub-hosted runners (the fork has no Blacksmith access).
  • Lockfile: took upstream's Clerk bump and anthropic-sdk binary overrides; regenerated pnpm-lock.yaml with pnpm (kept Marcode's @aliimam/icons). No coupled vendored subtree moved.

The full per-path rationale is in the merge commit message.

Compatibility identifiers left upstream-shaped on purpose: com.t3tools.t3code.service (launchd label), @t3tools/*, the t3 package/CLI name, T3_BOOT_SERVICE_UNIT.

Follow-up commits (CI fixes on top of the merge)

The first CI run surfaced three failures, all of them fork pins firing or a fork step going missing during an upstream refactor. Each is fixed here:

FailureCauseFix
TestThe fork's runner pin compared the whole runs-on list positionally against 4 entries; upstream added 3 jobs.Rewritten as a label-membership rule (2e3f60c2), so it trips on a Blacksmith label — the real failure mode — not on job count.
Test Server 2Migrations.test.ts is deliberately fail-loud on any added migration.Window extended to include [42, "AuthSessionClientConnection"] (2d94db2d).
Test Server 3Real bug. Upstream split the server suite into a test_server matrix; the shards inherited the tests but not Marcode's ripgrep install step, so WorkspaceFileSystem.searchContent died with spawn rg ENOENT. The step is Marcode-only — upstream's Blacksmith images ship rg, GitHub-hosted runners do not.Install step moved to follow the tests, and the guard widened from "ci.jobs.test installs ripgrep" to "every job with a Test step installs ripgrep" (2d94db2d) — the narrow guard is exactly why the split slipped through.

Why

Marcode is a maintained fork of T3 Code. This keeps it current with upstream correctness, security, protocol, dependency, and operational fixes while preserving Marcode's intentional product behavior (floating nav, unified workspace, floating editor, retired right-panel file surfaces, branding). Resolves the upstream-sync-blocked tracking issue for f035a0f4 (#50).

UI Changes

No Marcode-visible UI change is intended: web navigation, composer, terminal, and right-panel surfaces keep Marcode's existing appearance and placement. Upstream UI features adopted where they don't touch a Marcode divergence (tab mute, surface-dropdown shortcuts, confirm-before-close, app-access approvals). Live client verification is deferred to review, since this environment is headless.

Verification

CI is green on 2d94db2d:Check, Test, Mobile Native Static Analysis, Release Smoke (the four required checks), plus Test Server 1/2/3, Rust, Mobile Native Changes, and claude-review. Thread-transfer budget report passes every ceiling. Nothing on this head failed.

Locally, before pushing:

  • Typecheck: @t3tools/contracts, @t3tools/client-runtime, @t3tools/web, t3 (server) — all clean (only pre-existing Effect lint suggestions remain).
  • Focused tests across the resolved paths, plus vp fmt --check and vp lint on changed files.
  • The spawn rg ENOENT fix was verified by reproducing the failure locally with rg removed from PATH (this container has rg installed, which is why the first local run passed while CI failed), then confirming both test-running jobs install it.
  • ChatHeader.test.ts could not run here: @aliimam/icons@1.1.3 (a pre-existing Marcode dep) ships index.js/index.mjs but declares main: dist/index.cjs, so the resolver fails; this reproduces identically on main and is unrelated to the merge. It passes in CI.

Reviewer notes

Why this PR reads "unstable" / "some checks haven't completed".Native fingerprint diff (mobile-fingerprint-check.yml) runs on blacksmith-8vcpu-ubuntu-2404, a runner this fork cannot reach, so it queues indefinitely rather than failing. That is pre-existing on main — this merge does not touch that workflow — so it is deliberately not fixed here, and it does not block merge (it is not a required check). The one-line fix, if you want it as its own PR, is the same override applied to ci.yml: runs-on: ubuntu-24.04. The same applies to web-preview.yml, mobile-eas-*.yml, publish-aur.yml, and most of release.yml.

Required-checks gap. Upstream split server tests out of Test into Test Server 1/2/3 and added Rust. The manifest's requiredPullRequestChecks still lists only Check, Test, Mobile Native Static Analysis, Release Smoke — so branch protection would not have blocked on the two genuine failures above. Changing that list means updating the manifest and the workflow literals together (the parity test enforces it) and changes what gates merges, so it is deliberately not folded into this sync PR.

Transfer budget headroom. The report shows the thread snapshot wire at 6.9 KiB against a 7.3 KiB ceiling (~94%, up ~10% from main) — passing, but with less headroom than before this sync.

Checklist

  • Conflicts resolved by hand, combining upstream and Marcode intent (no whole-file ours/theirs)
  • Fork-boundary identity swept (T3CODE_HOME, t3code.service, WORKTREE_BRANCH_PREFIX, boot-service naming) and corrected for Marcode
  • Compatibility identifiers kept upstream-shaped
  • Focused typechecks, tests, format, and lint run for the affected scope
  • Lockfile regenerated with pnpm, not hand-edited
  • CI green on the head commit
  • Live client (web/mobile) verification — deferred to review (headless environment)

🤖 Generated with Claude Code

https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19

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>
PollyGlotand others added 16 commits August 24, 2026 02:52
…pingdotgg#5585)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
…es (pingdotgg#8076)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Merge 143 upstream commits (merge base 82b8a93) into Marcode.
Conflict decisions (combining upstream + Marcode intent per path):
- AGENTS.md: kept Marcode's Dev Servers/Task Completion/Pull-request
sections; took upstream's new "Plans and work artifacts" rules and the
"never commit PR assets" hygiene line.
- .github/workflows/ci.yml: took upstream's launchd-gated mobile lint job
and needs/if wiring; kept GitHub-hosted runners (the fork has no
Blacksmith access) and marked the seam on every job.
- apps/server/src/cli/connect.ts, cli/service.ts: took upstream's
macOS/launchd-aware wording and platform branch; kept Marcode branding.
- apps/server/src/cli/triage.ts: read MARCODE_HOME, not upstream's
T3CODE_HOME.
- apps/server/src/cloud/bootService.ts: launchd plist now exports
MARCODE_HOME (the launcher reads it and exits without it); added a test
pinning that so a future sync can't silently revert it. Kept the
upstream-shaped com.t3tools.t3code.service launchd label.
- apps/server/src/cloud/bootService.test.ts: fixed an upstream test
fixture that hardcoded the systemd unit as t3code.service to marcode.service.
- apps/server/src/persistence/Migrations.ts: renamed upstream's new
041_AuthSessionClientConnection to 042 (Marcode's ProjectWorkspaceLayout
holds 033, so shared ids sit one higher); updated the focused test.
- apps/server/src/vcs/GitVcsDriverCore.ts: kept both independently-added
helpers (Marcode's stderr redaction, upstream's missing-worktree matcher).
- apps/mobile/src/components/CompactBrandTitle.tsx: kept Marcode's
off-production stage-badge gate; took upstream's allowFontScaling.
- packages/client-runtime/src/state/threadSettled.ts: replaced Marcode's
one-hour warm-window heuristic with upstream's anchor rule (a terminal PR
settles a thread only while it postdates every user event); rewrote the
Marcode-owned tests for the new behavior.
- apps/web SidebarChrome/SettingsSidebarNav: kept Marcode's FloatingPillNav
ownership (footer owns update state only; settings footer keeps just Back),
dropped upstream's re-added SidebarUtilityMenu.
- apps/web ChatHeader/ChatView: kept Marcode's title-only header with thread
actions portaled into FloatingPillNav; took upstream's WorkspacePageHeader
refactor and the cmd+enter background-thread flow (re-bound handleNewThread).
- apps/web RightPanelTabs: took upstream's surface-dropdown shortcuts (pingdotgg#7318)
and desktop tab mute (pingdotgg#7252); kept Marcode's hover-swap tab close and its
header-placed add-surface menu; kept the retired Files surface out.
- apps/web ThreadTerminalDrawer: kept Marcode's terminal chrome divergence;
carried upstream's confirm-before-close (pingdotgg#7592) into it.
- apps/web ComposerPendingApprovalPanel/ChatComposer: took upstream's
compact app-access approval panel (pingdotgg#8058) and top-drawer composer.
- apps/web settings.tsx/UsagePage.tsx/workspaceTitlebar.fork.test.ts: took
upstream's shared WorkspacePageHeader; kept Marcode's sidebarless titlebar
inset by passing it through, and updated the pin test to the new shape.
- apps/web index.css: declined upstream's zinc sidebar palette (Marcode owns
it); took upstream's preview-loading-progress animation.
- apps/web files/: kept Marcode's retirement of the right-panel file surfaces.
- versionSkew, environment.test, PullRequestService.test,
build-desktop-artifact.test: combined both sides' additions.
- pnpm-workspace.yaml / pnpm-lock.yaml: took upstream's Clerk bump and
anthropic-sdk binary overrides; regenerated the lockfile with pnpm (kept
Marcode's @aliimam/icons). No coupled vendored subtree moved.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 24, 2026
Upstream's sync added three CI jobs, which broke the fork's runner pin: it
compared the whole runs-on list positionally, so it failed on the count
before it could say anything about the labels.
Assert the actual invariant instead — every ci.yml job names a
GitHub-hosted runner the fork can reach — so a future upstream job trips
this only when it arrives on a Blacksmith label, which queues forever
rather than failing.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19
Upstream split the server suite out of `test` into a `test_server` matrix.
The shards inherited the tests but not Marcode's ripgrep install step, so
WorkspaceFileSystem's searchContent — which shells out to `rg` — failed
with `spawn rg ENOENT` on all three shards. The step is Marcode-only
because upstream runs on Blacksmith images that ship ripgrep and
GitHub-hosted runners do not.
Move the step to follow the tests, and widen the pin that guards it: it
checked only `ci.jobs.test`, which is why the split slipped through. It
now asserts every job running a Test step installs ripgrep.
Also extend the migration pin to cover upstream's new AuthSessionClientConnection
migration at Marcode's renumbered id 42; the pin is deliberately
fail-loud on any added migration and did its job here.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19
@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+858 B (+6.7%)15.1 KiB
CodexThread snapshot wire6.3 KiB6.9 KiB+627 B (+9.8%)7.3 KiB
CodexLive turn WebSocket wire6.3 KiB6.5 KiB+231 B (+3.6%)7.8 KiB
CodexLive turn WebSocket decoded51.8 KiB55.0 KiB+3.2 KiB (+6.1%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire12.6 KiB13.4 KiB+887 B (+6.9%)15.1 KiB
ClaudeThread snapshot wire6.3 KiB6.9 KiB+638 B (+9.9%)7.3 KiB
ClaudeLive turn WebSocket wire6.3 KiB6.5 KiB+249 B (+3.9%)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: 2d94db2 · 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

Verification on PR head 2d94db2d:

  • Web: ran the isolated PR worktree with the full dev stack, authenticated the controlled preview, confirmed the Marcode shell/project flow, opened the Files surface and unified workspace tree/editor, opened project actions, and saw no browser console errors.
  • Responsive: checked 820x800 and 390x844 viewports.
  • Mobile: live simulator verification is unavailable in this environment. XcodeBuildMCP reports 0 iOS simulators; Android tooling (adb/ANDROID_HOME) is not installed.
  • CI: all four protected checks are green. The queued Native fingerprint diff remains the pre-existing, non-required Blacksmith check documented in this PR.

No source changes were made during verification.

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

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

20 participants

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

chore(upstream): sync marcode through f035a0f4 - #51

Merged
maarco merged 146 commits into
mainfrom
claude/gracious-bohr-23bj7a
Aug 25, 2026
Merged

chore(upstream): sync marcode through f035a0f4#51
maarco merged 146 commits into
mainfrom
claude/gracious-bohr-23bj7a

Conversation

@maarco

@maarcomaarco commented Aug 24, 2026

Copy link
Copy Markdown
Owner

What Changed

Daily upstream sync: merges pingdotgg/t3code@f035a0f4 (143 commits above merge base 82b8a938) into Marcode via a two-parent --no-ff merge. 32 files conflicted; each was resolved by hand to combine upstream and Marcode intent — no whole-file ours/theirs.

Highlights of the conflict decisions:

  • Fork-boundary breaks that merged cleanly (no conflict) and were fixed:
    • launchd boot service exported T3CODE_HOME; changed to MARCODE_HOME (the service launcher reads it and exits without it) and added a test pinning it.
    • an upstream bootService test fixture hardcoded the systemd unit as t3code.service; corrected to marcode.service.
    • triage.ts read T3CODE_HOME; changed to MARCODE_HOME.
  • Migrations: upstream's new AuthSessionClientConnection migration was renumbered 041→042 (Marcode's ProjectWorkspaceLayout occupies 033, so shared ids sit one higher); focused test updated.
  • Navigation shell: kept Marcode's FloatingPillNav ownership — dropped upstream's re-added SidebarUtilityMenu, kept the title-only ChatHeader with thread actions portaled into the pill nav — while taking upstream's WorkspacePageHeader refactor and its cmd+enter background-thread flow.
  • Right panel: took upstream's surface-dropdown shortcuts (feat(web): add shortcuts to the surface dropdown pingdotgg/t3code#7318) and desktop tab mute (feat(desktop): mute a browser tab pingdotgg/t3code#7252); kept Marcode's hover-swap tab close and header-placed add-surface menu; kept the retired Files surface out.
  • Terminal drawer: kept Marcode's terminal chrome divergence but carried upstream's confirm-before-close (feat(web): confirm before closing a terminal pingdotgg/t3code#7592) into it.
  • Thread settling: replaced Marcode's one-hour warm-window heuristic with upstream's more precise anchor rule; rewrote the Marcode-owned tests.
  • Approvals/composer: took upstream's compact app-access approval panel (fix(codex): show app access approval prompts pingdotgg/t3code#8058) and top-drawer composer.
  • CI: took upstream's launchd-gated mobile lint job; kept GitHub-hosted runners (the fork has no Blacksmith access).
  • Lockfile: took upstream's Clerk bump and anthropic-sdk binary overrides; regenerated pnpm-lock.yaml with pnpm (kept Marcode's @aliimam/icons). No coupled vendored subtree moved.

The full per-path rationale is in the merge commit message.

Compatibility identifiers left upstream-shaped on purpose: com.t3tools.t3code.service (launchd label), @t3tools/*, the t3 package/CLI name, T3_BOOT_SERVICE_UNIT.

Follow-up commits (CI fixes on top of the merge)

The first CI run surfaced three failures, all of them fork pins firing or a fork step going missing during an upstream refactor. Each is fixed here:

FailureCauseFix
TestThe fork's runner pin compared the whole runs-on list positionally against 4 entries; upstream added 3 jobs.Rewritten as a label-membership rule (2e3f60c2), so it trips on a Blacksmith label — the real failure mode — not on job count.
Test Server 2Migrations.test.ts is deliberately fail-loud on any added migration.Window extended to include [42, "AuthSessionClientConnection"] (2d94db2d).
Test Server 3Real bug. Upstream split the server suite into a test_server matrix; the shards inherited the tests but not Marcode's ripgrep install step, so WorkspaceFileSystem.searchContent died with spawn rg ENOENT. The step is Marcode-only — upstream's Blacksmith images ship rg, GitHub-hosted runners do not.Install step moved to follow the tests, and the guard widened from "ci.jobs.test installs ripgrep" to "every job with a Test step installs ripgrep" (2d94db2d) — the narrow guard is exactly why the split slipped through.

Why

Marcode is a maintained fork of T3 Code. This keeps it current with upstream correctness, security, protocol, dependency, and operational fixes while preserving Marcode's intentional product behavior (floating nav, unified workspace, floating editor, retired right-panel file surfaces, branding). Resolves the upstream-sync-blocked tracking issue for f035a0f4 (#50).

UI Changes

No Marcode-visible UI change is intended: web navigation, composer, terminal, and right-panel surfaces keep Marcode's existing appearance and placement. Upstream UI features adopted where they don't touch a Marcode divergence (tab mute, surface-dropdown shortcuts, confirm-before-close, app-access approvals). Live client verification is deferred to review, since this environment is headless.

Verification

CI is green on 2d94db2d:Check, Test, Mobile Native Static Analysis, Release Smoke (the four required checks), plus Test Server 1/2/3, Rust, Mobile Native Changes, and claude-review. Thread-transfer budget report passes every ceiling. Nothing on this head failed.

Locally, before pushing:

  • Typecheck: @t3tools/contracts, @t3tools/client-runtime, @t3tools/web, t3 (server) — all clean (only pre-existing Effect lint suggestions remain).
  • Focused tests across the resolved paths, plus vp fmt --check and vp lint on changed files.
  • The spawn rg ENOENT fix was verified by reproducing the failure locally with rg removed from PATH (this container has rg installed, which is why the first local run passed while CI failed), then confirming both test-running jobs install it.
  • ChatHeader.test.ts could not run here: @aliimam/icons@1.1.3 (a pre-existing Marcode dep) ships index.js/index.mjs but declares main: dist/index.cjs, so the resolver fails; this reproduces identically on main and is unrelated to the merge. It passes in CI.

Reviewer notes

Why this PR reads "unstable" / "some checks haven't completed".Native fingerprint diff (mobile-fingerprint-check.yml) runs on blacksmith-8vcpu-ubuntu-2404, a runner this fork cannot reach, so it queues indefinitely rather than failing. That is pre-existing on main — this merge does not touch that workflow — so it is deliberately not fixed here, and it does not block merge (it is not a required check). The one-line fix, if you want it as its own PR, is the same override applied to ci.yml: runs-on: ubuntu-24.04. The same applies to web-preview.yml, mobile-eas-*.yml, publish-aur.yml, and most of release.yml.

Required-checks gap. Upstream split server tests out of Test into Test Server 1/2/3 and added Rust. The manifest's requiredPullRequestChecks still lists only Check, Test, Mobile Native Static Analysis, Release Smoke — so branch protection would not have blocked on the two genuine failures above. Changing that list means updating the manifest and the workflow literals together (the parity test enforces it) and changes what gates merges, so it is deliberately not folded into this sync PR.

Transfer budget headroom. The report shows the thread snapshot wire at 6.9 KiB against a 7.3 KiB ceiling (~94%, up ~10% from main) — passing, but with less headroom than before this sync.

Checklist

  • Conflicts resolved by hand, combining upstream and Marcode intent (no whole-file ours/theirs)
  • Fork-boundary identity swept (T3CODE_HOME, t3code.service, WORKTREE_BRANCH_PREFIX, boot-service naming) and corrected for Marcode
  • Compatibility identifiers kept upstream-shaped
  • Focused typechecks, tests, format, and lint run for the affected scope
  • Lockfile regenerated with pnpm, not hand-edited
  • CI green on the head commit
  • Live client (web/mobile) verification — deferred to review (headless environment)

🤖 Generated with Claude Code

https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19

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>
PollyGlotand others added 16 commits August 24, 2026 02:52
…pingdotgg#5585)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
…es (pingdotgg#8076)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Merge 143 upstream commits (merge base 82b8a93) into Marcode.
Conflict decisions (combining upstream + Marcode intent per path):
- AGENTS.md: kept Marcode's Dev Servers/Task Completion/Pull-request
sections; took upstream's new "Plans and work artifacts" rules and the
"never commit PR assets" hygiene line.
- .github/workflows/ci.yml: took upstream's launchd-gated mobile lint job
and needs/if wiring; kept GitHub-hosted runners (the fork has no
Blacksmith access) and marked the seam on every job.
- apps/server/src/cli/connect.ts, cli/service.ts: took upstream's
macOS/launchd-aware wording and platform branch; kept Marcode branding.
- apps/server/src/cli/triage.ts: read MARCODE_HOME, not upstream's
T3CODE_HOME.
- apps/server/src/cloud/bootService.ts: launchd plist now exports
MARCODE_HOME (the launcher reads it and exits without it); added a test
pinning that so a future sync can't silently revert it. Kept the
upstream-shaped com.t3tools.t3code.service launchd label.
- apps/server/src/cloud/bootService.test.ts: fixed an upstream test
fixture that hardcoded the systemd unit as t3code.service to marcode.service.
- apps/server/src/persistence/Migrations.ts: renamed upstream's new
041_AuthSessionClientConnection to 042 (Marcode's ProjectWorkspaceLayout
holds 033, so shared ids sit one higher); updated the focused test.
- apps/server/src/vcs/GitVcsDriverCore.ts: kept both independently-added
helpers (Marcode's stderr redaction, upstream's missing-worktree matcher).
- apps/mobile/src/components/CompactBrandTitle.tsx: kept Marcode's
off-production stage-badge gate; took upstream's allowFontScaling.
- packages/client-runtime/src/state/threadSettled.ts: replaced Marcode's
one-hour warm-window heuristic with upstream's anchor rule (a terminal PR
settles a thread only while it postdates every user event); rewrote the
Marcode-owned tests for the new behavior.
- apps/web SidebarChrome/SettingsSidebarNav: kept Marcode's FloatingPillNav
ownership (footer owns update state only; settings footer keeps just Back),
dropped upstream's re-added SidebarUtilityMenu.
- apps/web ChatHeader/ChatView: kept Marcode's title-only header with thread
actions portaled into FloatingPillNav; took upstream's WorkspacePageHeader
refactor and the cmd+enter background-thread flow (re-bound handleNewThread).
- apps/web RightPanelTabs: took upstream's surface-dropdown shortcuts (pingdotgg#7318)
and desktop tab mute (pingdotgg#7252); kept Marcode's hover-swap tab close and its
header-placed add-surface menu; kept the retired Files surface out.
- apps/web ThreadTerminalDrawer: kept Marcode's terminal chrome divergence;
carried upstream's confirm-before-close (pingdotgg#7592) into it.
- apps/web ComposerPendingApprovalPanel/ChatComposer: took upstream's
compact app-access approval panel (pingdotgg#8058) and top-drawer composer.
- apps/web settings.tsx/UsagePage.tsx/workspaceTitlebar.fork.test.ts: took
upstream's shared WorkspacePageHeader; kept Marcode's sidebarless titlebar
inset by passing it through, and updated the pin test to the new shape.
- apps/web index.css: declined upstream's zinc sidebar palette (Marcode owns
it); took upstream's preview-loading-progress animation.
- apps/web files/: kept Marcode's retirement of the right-panel file surfaces.
- versionSkew, environment.test, PullRequestService.test,
build-desktop-artifact.test: combined both sides' additions.
- pnpm-workspace.yaml / pnpm-lock.yaml: took upstream's Clerk bump and
anthropic-sdk binary overrides; regenerated the lockfile with pnpm (kept
Marcode's @aliimam/icons). No coupled vendored subtree moved.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 24, 2026
Upstream's sync added three CI jobs, which broke the fork's runner pin: it
compared the whole runs-on list positionally, so it failed on the count
before it could say anything about the labels.
Assert the actual invariant instead — every ci.yml job names a
GitHub-hosted runner the fork can reach — so a future upstream job trips
this only when it arrives on a Blacksmith label, which queues forever
rather than failing.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19
Upstream split the server suite out of `test` into a `test_server` matrix.
The shards inherited the tests but not Marcode's ripgrep install step, so
WorkspaceFileSystem's searchContent — which shells out to `rg` — failed
with `spawn rg ENOENT` on all three shards. The step is Marcode-only
because upstream runs on Blacksmith images that ship ripgrep and
GitHub-hosted runners do not.
Move the step to follow the tests, and widen the pin that guards it: it
checked only `ci.jobs.test`, which is why the split slipped through. It
now asserts every job running a Test step installs ripgrep.
Also extend the migration pin to cover upstream's new AuthSessionClientConnection
migration at Marcode's renumbered id 42; the pin is deliberately
fail-loud on any added migration and did its job here.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19
@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+858 B (+6.7%)15.1 KiB
CodexThread snapshot wire6.3 KiB6.9 KiB+627 B (+9.8%)7.3 KiB
CodexLive turn WebSocket wire6.3 KiB6.5 KiB+231 B (+3.6%)7.8 KiB
CodexLive turn WebSocket decoded51.8 KiB55.0 KiB+3.2 KiB (+6.1%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire12.6 KiB13.4 KiB+887 B (+6.9%)15.1 KiB
ClaudeThread snapshot wire6.3 KiB6.9 KiB+638 B (+9.9%)7.3 KiB
ClaudeLive turn WebSocket wire6.3 KiB6.5 KiB+249 B (+3.9%)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: 2d94db2 · 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

Verification on PR head 2d94db2d:

  • Web: ran the isolated PR worktree with the full dev stack, authenticated the controlled preview, confirmed the Marcode shell/project flow, opened the Files surface and unified workspace tree/editor, opened project actions, and saw no browser console errors.
  • Responsive: checked 820x800 and 390x844 viewports.
  • Mobile: live simulator verification is unavailable in this environment. XcodeBuildMCP reports 0 iOS simulators; Android tooling (adb/ANDROID_HOME) is not installed.
  • CI: all four protected checks are green. The queued Native fingerprint diff remains the pre-existing, non-required Blacksmith check documented in this PR.

No source changes were made during verification.

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

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

20 participants

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