chore(upstream): sync marcode through a3a8cbd6 - #55
Conversation
Co-authored-by: mweinbach <maxweinbach5@gmail.com>
…gdotgg#8144) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…ingdotgg#8189) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…gg#7140) Co-authored-by: Dara Adedeji <daraaded@amazon.com> Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
pingdotgg#8227) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…#8231) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Brings in 32 upstream commits (f035a0f..a3a8cbd), including v0.0.34, the hosted legacy-model manifest, Claude pre-emptive compaction, thread↔pull request linking, un-settled thread ordering, and the macOS service PATH fix. Conflict decisions, upstream intent + Marcode intent combined: - apps/server/src/persistence/Migrations.ts Marcode's 033_ProjectWorkspaceLayout offsets every shared migration by one. Renumbered upstream's two new migrations on the way in: 042 → 043_ProjectionThreadLinkedPullRequest and 043 → 044_ProjectionThreadsUnsettledAt (043's colliding filename would have shadowed Marcode's 042_AuthSessionClientConnection). Updated the ported migration test's ids to match. - apps/server/src/cloud/bootService.ts / .test.ts Took upstream's launch-agent PATH export (pingdotgg#8173, keeps provider CLIs reachable from the macOS service) and kept Marcode's MARCODE_HOME key, which the service launcher requires. Both the Marcode env-name pin and upstream's new PATH assertion now run; the Marcode pin moved onto the shared render options so it exercises the same call shape. - apps/server/src/environment/ServerEnvironment.ts / .test.ts and packages/contracts/src/environment.ts Purely additive on both sides: kept workspaceLayoutMutations alongside upstream's threadPullRequestLinking capability. - apps/web/src/components/ChatView.tsx Kept Marcode's title-only ChatHeader (thread actions are portaled into FloatingPillNav) and took upstream's settleThread hook; handleNewThread is already declared a few lines below. Followed upstream's rename in Marcode's own ThreadActionsCluster call site: the project-scoped opener is now openProjectPullRequest/activeProjectRepository, while openThreadPullRequest resolves a thread's linked PR. Left unchanged, the pill nav would silently have switched to the linked-PR opener without a conflict. - apps/web/src/components/ChatMarkdown.tsx Took upstream's editor-label and remote-open imports plus the workspace basename lookup, and kept the floating-editor seam. Dropped upstream's useRightPanelStore/useActiveEnvironmentId imports: Marcode retired the right-panel file surface, so openFile has no call site here and environmentId now derives from threadRef. - apps/web/src/components/chat/OpenInPicker.tsx Took upstream's editorLabelForPlatform refactor (labels out of the option table) and kept Marcode's filled FolderOpenFilled glyph. - apps/web/src/components/ThreadTerminalDrawer.tsx Kept Marcode's xterm link provider. Upstream's change here only swaps an inline regex for isTerminalUrl inside its ghostty activation handler; Marcode classifies through extractTerminalLinks, which already picks up the case-insensitive URL pattern that merged cleanly into terminal-links.ts. - scripts/build-desktop-artifact.test.ts Kept both imports and both assertions; only the provisioning-profile fixture path stays Marcode-shaped. - pnpm-lock.yaml Kept Marcode's @xterm/* entries alongside upstream's Clerk bumps. pnpm install --frozen-lockfile succeeds against the merged tree. Coupled subtrees: pnpm-workspace.yaml moved only Clerk versions and infra/relay/package.json is unchanged, so neither effect-smol nor alchemy-effect needs a sync:repos. Fork-boundary sweep found no silent breaks: T3CODE_HOME, t3code.service, WORKTREE_BRANCH_PREFIX and the boot-service naming are all still Marcode- correct, and T3_BOOT_SERVICE_UNIT, @t3tools/*, the t3 package name and the t3code:* storage keys stay upstream-shaped. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019igZYiV29Gk5zAjFj2Kypi
CI is stalled repo-wide — not this PRStanding down on CI here, because the blocker is outside this branch. Recording it once rather than re-running again. What happened on
Why this is not this PR's failure:
So every Actions run on this repository since 15:29 UTC is stuck, regardless of workflow, trigger, or ref. Nothing in this diff can produce that. What would unblock it: most likely an account-level Actions problem — a spending/billing limit on included minutes, or a GitHub incident. Worth checking Settings → Billing → Actions spending limit, and githubstatus.com. Once runners are scheduling again, re-running 32985346461 should be enough; no push is needed. Local verification, for what it is worth while CI is unavailable (full detail in the PR description): My one re-run is spent. I am leaving the PR watched; if CI comes back red once runners recover, I will treat it as real and root-cause it rather than re-running. Generated by Claude Code |
What Changed
Daily upstream sync. Merges
pingdotgg/t3code@a3a8cbd60539b4af4de8f96c892dbd07a2b6c041(32 commits,f035a0f4..a3a8cbd6) intomainas a normal two-parent merge commit (c13db692).Notable upstream work in this delta: v0.0.34, the hosted legacy-model manifest (pingdotgg#8227), Claude pre-emptive compaction (pingdotgg#8144), thread↔pull-request linking (pingdotgg#8160), un-settled threads returning to the top of the list (pingdotgg#8231), the macOS service PATH fix that keeps provider CLIs reachable (pingdotgg#8173), the push fix that stopped writing a feature branch's commits to its base (pingdotgg#8228), and case-insensitive terminal/markdown link detection (pingdotgg#7488, pingdotgg#8081).
Twelve files conflicted. Each was resolved by hand, combining both intents — no whole-file ours/theirs, no
reset/restore/stash/clean/force push.Conflict decisions
apps/server/src/persistence/Migrations.ts(hotspot: persistence)Marcode's
033_ProjectWorkspaceLayoutoffsets every shared migration by one, so upstream's two new migrations were renumbered on the way in:042_ProjectionThreadLinkedPullRequest→043,043_ProjectionThreadsUnsettledAt→044. Upstream's042filename would otherwise have collided with Marcode's042_AuthSessionClientConnection. The ported migration test'stoMigrationInclusiveids were updated to match.apps/server/src/cloud/bootService.ts/.test.ts(hotspot: server-runtime)Took upstream's launch-agent
PATHexport and kept Marcode'sMARCODE_HOMEkey, whichresolveLauncherBaseDirrequires. Both assertions now run: Marcode's env-name pin and upstream's new PATH assertion. The Marcode pin moved onto the sharedmacRenderOptionsso it exercises the same call shape as the rest of the suite.apps/server/src/environment/ServerEnvironment.ts/.test.ts,packages/contracts/src/environment.tsPurely additive on both sides — kept
workspaceLayoutMutationsalongside upstream'sthreadPullRequestLinkingcapability.apps/web/src/components/ChatView.tsx(hotspot: web-runtime)Kept Marcode's title-only
ChatHeader(thread actions are portaled intoFloatingPillNav) and took upstream'ssettleThreadhook;handleNewThreadis already declared a few lines below, so only the new binding was taken.openProjectPullRequest/activeProjectRepositoryand introduced a newopenThreadPullRequestthat resolves a thread's linked PR. Marcode'sThreadActionsClustercall site used the old names and sits outside the conflict region, so a clean merge would have quietly repointed the pill nav at the linked-PR opener. Followed upstream's rename at Marcode's call site instead. This is the change most worth a second pair of eyes.apps/web/src/components/ChatMarkdown.tsx(hotspot: editor-runtime)Took upstream's editor-label and remote-open imports plus the workspace basename lookup, and kept the floating-editor seam. Dropped upstream's
useRightPanelStore/useActiveEnvironmentIdimports: Marcode retired the right-panel file surface, soopenFilehas no call site here andenvironmentIdnow derives fromthreadRef. The existingrightPanelStore.test.tspin (store.openFileisundefined) is what makes re-introducing upstream's path a type error rather than a silent regression.apps/web/src/components/chat/OpenInPicker.tsxTook upstream's
editorLabelForPlatformrefactor (labels lifted out of the option table) and kept Marcode's filledFolderOpenFilledglyph.apps/web/src/components/ThreadTerminalDrawer.tsxKept Marcode's xterm link provider (the documented deliberate divergence, retained for terminal search). Upstream's change here only swaps an inline regex for
isTerminalUrlinside its ghostty activation handler; Marcode classifies throughextractTerminalLinks, which already picks up the case-insensitiveURL_PATTERNthat merged cleanly intoterminal-links.ts. So the fix lands on Marcode's path too, via the shared producer.scripts/build-desktop-artifact.test.tsKept both imports and both assertions; only the provisioning-profile fixture path stays Marcode-shaped.
pnpm-lock.yamlKept Marcode's
@xterm/*entries alongside upstream's Clerk bumps.pnpm install --frozen-lockfilesucceeds against the merged tree, which is what validates this resolution.Coupled changes
Neither coupling fired.
pnpm-workspace.yamlmoved only Clerk versions (Effect catalog entries unchanged), andinfra/relay/package.jsonis untouched — so nosync:reposforeffect-smoloralchemy-effect.Fork-boundary sweep
Grepped the merged tree for upstream identity Marcode renames. No silent breaks:
T3CODE_HOME,t3code.service,WORKTREE_BRANCH_PREFIX, boot-service naming — all still Marcode-correct.T3_BOOT_SERVICE_UNIT,T3_SERVICE_LAUNCHER_CONTEXT,@t3tools/*, thet3package/CLI name,refs/t3code/*andt3code:*storage keys — deliberately left upstream-shaped. Upstream's newt3code:resume-compaction-dismissed:*key follows that same convention, so it was kept as-is.Two decisions worth a maintainer's call
apps/server/src/provider/ModelManifest.tsfetches fromraw.githubusercontent.com/pingdotgg/t3code/main/.... Left pointing at upstream: it is a schema-validated, read-only GET of a public "which models are current vs legacy" file, with the checked-inmodel-manifest.jsonas fallback. Repointing it atmaarco/marcodewould make the remote copy identical to the bundled one and defeat the feature. Flagging it because it is a new outbound call the fork inherits..github/workflows/desktop-macos-preview.yml(new) runs onblacksmith-12vcpu-macos-26, a runner label the fork cannot reach. Left as-is: it is gated behind apreview:maclabel that nobody applies here, it is not a required check, and it matches howrelease.ymlandmobile-showcase-screenshots.ymlare already carried. Rewriting it would add merge surface for a workflow that never fires. Theci.ymlrunner pin inscripts/upstream-sync-workflow.test.tsis unaffected and still green.Why
.github/upstream-sync.ymlschedules a daily merge of upstream into the fork. This delta conflicted, so perdocs/operations/upstream-sync.mdit was resolved by hand on a branch and opened as a draft review PR rather than pushed automatically.UI Changes
No Marcode-authored UI change. The conflict resolutions preserve existing Marcode surfaces (title-only chat header, pill-nav thread actions, floating editor, xterm terminal, filled folder glyph) rather than altering them. Upstream's own user-visible additions in this delta — the resume-compaction banner, thread↔PR linking, HEIC attachment support, the settle/restore shortcut — have not been driven in a browser here; per the runbook's step 5, that runtime verification is still owed before this leaves draft.
Verification
Focused, per the changed scope. Not the full workspace suite — CI owns that.
pnpm install --frozen-lockfile— clean@t3tools/contracts,@t3tools/web,t3(server),@t3tools/scripts— no errors (Effect lint suggestions only, all pre-existing)vp test run— 30 files / 524 tests passing across:bootService,ServerEnvironment, all 13persistence/Migrations/,ProjectionRepositories,ProjectionSnapshotQuery,decider.settled,projector.settled,serverSettings,ChatMarkdown(+ workspace-images),terminal-links,editorLabels,Sidebar.logic,rightPanelStore,versionSkew,contracts/settings,contracts/orchestration,build-desktop-artifact,upstream-sync-workflow,sign-macosvp fmt --checkon all 14 resolved files — cleanvp linton the changed directories — warnings only, all pre-existing atmain(includingThreadTerminalDrawer's unusedContextMenuItemtype import, verified againstHEAD~)Not verified here
vp run icons:check—assets/**andapps/desktop/resources/**are untouched by this delta, so it should not apply, but it was not run.chmod-based permission test appeared in the focused set, so nothing was suppressed on that basis.Checklist
Generated by Claude Code