chore(upstream): sync marcode through 5192f777f - #8
Merged
Conversation
…o their thread (pingdotgg#5159) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
…debug (pingdotgg#5076) Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Brings in 5 upstream commits (0ad91b6..5192f77): the service-launcher rework of remote updates, worktree branch-drift following, sidebar settle control focus handling, app icon glyph sizing, and cloudflared relay log levels. Conflict resolutions: - cloud/bootService.ts, cloud/selfUpdate.ts, serverRuntimeStartup.ts: took upstream's rewrites and re-applied Marcode's service identity on top. serverRuntimeStartup moved the pairing-URL block, so the Marcode wording is re-applied at its new location rather than lost with the old one. - cloud/*.test.ts: took upstream's rewritten tests with Marcode's unit name and base dir. Upstream dropped the exhaustive unit assertion that used to pin Marcode's branding, so a focused replacement now pins the unit file name, description, and MARCODE_HOME. - assets/prod/**: kept Marcode's mark. Upstream's change is geometry for the T3 wordmark and does not apply to a different glyph. Two fork-boundary breaks the merge would otherwise have shipped: - The new service launcher read T3CODE_HOME, but the unit Marcode installs exports MARCODE_HOME, so the background service would have exited before starting a server. Base-dir resolution is now a tested exported function. - CheckpointReactor's new branch-drift test hardcoded a t3code/<hex> placeholder, which Marcode's renamed WORKTREE_BRANCH_PREFIX no longer matches. The fixture derives from the constant instead. Compatibility identifiers (T3_BOOT_SERVICE_UNIT, T3_SERVICE_LAUNCHER_CONTEXT, @t3tools/*, the t3 package and CLI name) stay upstream-shaped. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YDbqQvDyoAYxXLiRfsecx9
maarco
marked this pull request as ready for review
August 2, 2026 03:06
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
Merges 5 upstream commits from
pingdotgg/t3code,ca72e381c..5192f777f, as one two-parent merge commit.0ad91b6ed303706478eb3eca283c7ac45192f777The bulk is
d3037064, which reworks remote updates around a new stable service launcher (serviceLauncher.ts,cloud/serviceLauncherClient.ts,cloud/serviceProtocol.ts,cloud/servicePreflight.ts) and rewritescloud/selfUpdate.tsandcloud/bootService.ts.Conflicts resolved (15 paths)
apps/server/src/cloud/**,serverRuntimeStartup.ts— hotspotserver-runtime. Marcode's divergence in these files was entirely service identity, so upstream's rewrites were taken and that identity re-applied on top:BOOT_SERVICE_NAME = "marcode",Description=Marcode server,Environment=MARCODE_HOME=, and the Marcode background-service error message.serverRuntimeStartup.tsneeded care: upstream moved the pairing-URL block rather than editing it in place. Accepting their side alone would have silently reverted Marcode's wording along with the old location, so the branded string is re-applied at the block's new home.In
selfUpdate.tsupstream deleted the systemd-sniffing block Marcode's only divergence lived in (capability detection moved into the launcher), so that file now matches upstream exactly — deliberately, not by taking a side.cloud/*.test.ts— upstream's rewritten tests, with Marcode's unit name and base dir. Upstream dropped the exhaustive unit-string assertion, which was the thing pinning Marcode's branding, so there is a focused replacement test covering the unit file name, description, andMARCODE_HOME. The next upstream rewrite of the renderer will conflict there instead of quietly rebranding an installed service.assets/prod/**(10 files) — hotspotrelease-branding. Kept Marcode's mark; the files are byte-identical tomain. Upstream's change is glyph geometry for the T3 wordmark (128×128 viewBox, scale 10 → 8.5) and carries no fix that transfers to a different mark.Two fork-boundary breaks this merge would otherwise have shipped
Neither surfaced as a conflict — both were silent.
The background service would not have started. Upstream's new
serviceLauncher.tsreadsT3CODE_HOMEand throws when it is unset, but the unit Marcode installs exportsMARCODE_HOME(the same variable the server reads atapps/server/src/cli/config.ts:107). The launcher would have exited before starting a server on every Marcode install. Base-dir resolution is now an exportedresolveLauncherBaseDirwith a test pinning it to the variable the unit actually exports.CheckpointReactor's new branch-drift test failed. It hardcoded at3code/0a1b2c3dplaceholder branch, but Marcode renamedWORKTREE_BRANCH_PREFIXtomarcode, soisTemporaryWorktreeBranchno longer classified the fixture as temporary and the reactor adopted it. The fixture now derives from the exported constant.Left deliberately upstream-shaped
T3_BOOT_SERVICE_UNIT,T3_SERVICE_LAUNCHER_CONTEXT,@t3tools/*, and thet3package/CLI name are compatibility identifiers. New upstream user-facing copy naming "the T3 Code background service" (selfUpdate.ts,cloud/servicePreflight.ts) was also left alone:mainalready wordsdocs/user/background-service.md,docs/user/updating.md, and the sibling "T3 Code desktop app" strings that way, so rebranding only the new lines would have made the fork less consistent, not more. Worth a separate decision if that copy should move to Marcode wording.Why
Routine upstream sync.
d3037064makes remote updates rollback-safe and0ad91b6estops a thread's PR being orphaned when an agent checks out a different branch in its worktree — both worth carrying, and both land in files Marcode has customized.UI Changes
78eb3ecatouchesapps/web/src/components/SidebarV2.tsx, swappingfocus-withinforfocus-visibleso settle controls stop covering the status label after a mouse click. The file has zero Marcode divergence from the merge base, so it merged without conflict and needed no reconciliation.No before/after images: this is an upstream-authored CSS state change carried unmodified, and it was not driven live in a browser here. Flagged below rather than assumed.
Checklist
Verification run
bootService,selfUpdate,serviceLauncher,servicePreflight,serviceLauncherClient,serverActivation,pinnedRuntime— 28/28 passCheckpointReactor— 16/16 pass (after the fixture fix)ManagedEndpointRuntime,client-runtime/state/server— passt3,@t3tools/contracts,@t3tools/client-runtime,@t3tools/shared,@t3tools/web— all exit 0, zero errorsvp fmt --checkon every changed file — cleanvp lintonapps/server/src,packages/shared/src,SidebarV2.tsx— exit 0pnpm-workspace.yamlmovement, so no coupled vendored-subtree findingsNot verified here
server.test.ts"reports workspace root stat failures without relabeling them as missing" fails locally. Pre-existing and environmental, not from this merge: the test predates the merge base, upstream did not touch it in this delta, and itchmod 0o000s a directory expectingstatto fail — which cannot happen under the uid 0 this container runs as. Expected to pass on CI.vp run icons:checkcould not run — it needs a macOS Icon Composer 2.x exporter. The asset files are byte-identical tomain, so there is nothing new for it to validate.SidebarV2hover/focus change.Generated by Claude Code