chore(upstream): sync marcode through f035a0f4 - #51
Merged
Conversation
…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>
…pingdotgg#7459) Co-authored-by: Claude Fable 5 <noreply@anthropic.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>
…ngdotgg#7477) 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>
Co-authored-by: GPT-5.6 <noreply@openai.com>
…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
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
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: Scenario and decoded snapshot size10 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.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
Owner
Author
|
Verification on PR head
No source changes were made during verification. |
maarco
marked this pull request as ready for review
August 25, 2026 01:09
This was referenced Aug 25, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What Changed
Daily upstream sync: merges
pingdotgg/t3code@f035a0f4(143 commits above merge base82b8a938) into Marcode via a two-parent--no-ffmerge. 32 files conflicted; each was resolved by hand to combine upstream and Marcode intent — no whole-file ours/theirs.Highlights of the conflict decisions:
T3CODE_HOME; changed toMARCODE_HOME(the service launcher reads it and exits without it) and added a test pinning it.bootServicetest fixture hardcoded the systemd unit ast3code.service; corrected tomarcode.service.triage.tsreadT3CODE_HOME; changed toMARCODE_HOME.AuthSessionClientConnectionmigration was renumbered 041→042 (Marcode'sProjectWorkspaceLayoutoccupies 033, so shared ids sit one higher); focused test updated.FloatingPillNavownership — dropped upstream's re-addedSidebarUtilityMenu, kept the title-onlyChatHeaderwith thread actions portaled into the pill nav — while taking upstream'sWorkspacePageHeaderrefactor and its cmd+enter background-thread flow.pnpm-lock.yamlwith 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/*, thet3package/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:
Testruns-onlist positionally against 4 entries; upstream added 3 jobs.2e3f60c2), so it trips on a Blacksmith label — the real failure mode — not on job count.Test Server 2Migrations.test.tsis deliberately fail-loud on any added migration.[42, "AuthSessionClientConnection"](2d94db2d).Test Server 3test_servermatrix; the shards inherited the tests but not Marcode's ripgrep install step, soWorkspaceFileSystem.searchContentdied withspawn rg ENOENT. The step is Marcode-only — upstream's Blacksmith images shiprg, GitHub-hosted runners do not.ci.jobs.testinstalls ripgrep" to "every job with aTeststep 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-blockedtracking issue forf035a0f4(#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), plusTest Server 1/2/3,Rust,Mobile Native Changes, andclaude-review. Thread-transfer budget report passes every ceiling. Nothing on this head failed.Locally, before pushing:
@t3tools/contracts,@t3tools/client-runtime,@t3tools/web,t3(server) — all clean (only pre-existing Effect lint suggestions remain).vp fmt --checkandvp linton changed files.spawn rg ENOENTfix was verified by reproducing the failure locally withrgremoved fromPATH(this container hasrginstalled, which is why the first local run passed while CI failed), then confirming both test-running jobs install it.ChatHeader.test.tscould not run here:@aliimam/icons@1.1.3(a pre-existing Marcode dep) shipsindex.js/index.mjsbut declaresmain: dist/index.cjs, so the resolver fails; this reproduces identically onmainand 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 onblacksmith-8vcpu-ubuntu-2404, a runner this fork cannot reach, so it queues indefinitely rather than failing. That is pre-existing onmain— 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 toci.yml:runs-on: ubuntu-24.04. The same applies toweb-preview.yml,mobile-eas-*.yml,publish-aur.yml, and most ofrelease.yml.Required-checks gap. Upstream split server tests out of
TestintoTest Server 1/2/3and addedRust. The manifest'srequiredPullRequestChecksstill lists onlyCheck,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
T3CODE_HOME,t3code.service,WORKTREE_BRANCH_PREFIX, boot-service naming) and corrected for Marcode🤖 Generated with Claude Code
https://claude.ai/code/session_01593jwWRpRNPgQqJAhV9n19