chore(upstream): sync marcode through 82b8a938 - #39
Merged
Conversation
Co-authored-by: t3-code[bot] <219304759+t3-code[bot]@users.noreply.github.com> Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com> Co-authored-by: Exotic <118054752+extoci@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>
…otgg#4844) Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: codex <codex@users.noreply.github.com>
…isting, update branch, reactions, in-place editing, smarter diffs (pingdotgg#6039) Co-authored-by: Julius Marminge <julius0216@outlook.com>
…ingdotgg#6330) Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com> Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
…6393) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…tgg#6423) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
…ngdotgg#6495) Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>
Co-authored-by: t3-code[bot] <236186684+t3-code[bot]@users.noreply.github.com> Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
…ingdotgg#6520) Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com> Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
…#6392) Co-authored-by: Shivam Sharma <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
…ingdotgg#7082) Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
…g#7083) Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Merges 169 upstream commits (merge base b73232b) into main. Every conflict was resolved by hand, combining upstream intent with Marcode's product contracts; no file was taken wholesale from either side. Conflict decisions ------------------ Structural / deletions - apps/desktop/resources/icon.{icns,ico,png}: took upstream's deletion. Upstream now generates the desktop icons at build time from assets/ (DesktopAssets.ts, ensureMacIconIcns). Marcode's marks live in assets/, and stageMacIcons still composites them onto the opaque white matte, so the packaged icon is unchanged. - apps/web/src/components/files/FileBrowserPanel.tsx, FilePreviewPanel.tsx: stayed deleted. Marcode retired the right-panel file surfaces; upstream's edits there were subheader styling plus a remote-open gate, both of which live on Marcode's floating-editor path. - oxlint-plugin-marcode/rules/no-native-title-tooltip.{ts,test.ts}: took upstream's new rule into the renamed plugin directory. The test hardcoded the `t3code/` plugin prefix; retargeted to `marcode/`. Fork identity - vite.config.ts: registered the new rule under the `marcode/` plugin name. Landed it at "warn" rather than upstream's "error": 35 native `title` tooltips remain on Marcode-only surfaces (floating editor, floating terminal shell, git actions, open-in picker) that upstream never had. The rule still reports every one; raise to "error" once they migrate. - .agents/skills/test-t3-mobile/scripts/pair-client.sh: upstream's new pairing helper read T3CODE_PORT and launched com.t3tools.t3code.dev. Marcode's server reads MARCODE_PORT and its dev package is com.t3tools.marcode.dev. Merged cleanly; would have silently failed. - apps/desktop/src/wsl/DesktopWslServerTree.test.ts: upstream's fixture set T3CODE_HOME/T3CODE_MODE, but DesktopConfig reads MARCODE_HOME. Merged cleanly; retargeted. - apps/web/src/components/desktopUpdate.logic.test.ts: upstream's replacement test asserted the exact "restart T3 Code?" string. Merged cleanly; rebranded. - apps/server/src/provider/Layers/CodexSessionRuntime.test.ts: took upstream's codexDefaultModeDeveloperInstructions(browserToolsAvailable) refactor, kept Marcode's /Marcode/ assertion, and retargeted the doesNotMatch assertion to "Marcode collaborative browser". - scripts/build-desktop-artifact.test.ts: upstream's new DMG assertion expected "T3 Code (Alpha) 1.2.3 Installer"; Marcode's productName is Marcode. Merged cleanly; retargeted. - apps/desktop/resources/dmg/dmg-background-{latest,nightly}.svg: upstream's new installer art said "Drag T3 Code to Applications". Rebranded. - apps/mobile/src/lib/mobileTheme.ts: upstream's new built-in theme list labelled the default theme "T3 Code". Rebranded to Marcode. - apps/web/src/components/clerk/T3ConnectUserProfilePage.tsx and T3ConnectSidebarSignIn.tsx: upstream's new Connect environments page and its sidebar entry ship "T3 Connect" copy; rebranded to Marcode Connect to match ConnectionsSettings. - apps/server/src/sourceControl/BitbucketSourceControlProvider.ts: kept MARCODE_BITBUCKET_* env names, took upstream's added "user read" scope. - apps/desktop/scripts/electron-launcher.mjs: took upstream's resolveMacLauncherIconPaths/ensureMacIconIcns refactor and LAUNCHER_VERSION 15; kept Marcode's bundle ids, protocol schemes, and plugin-name disable directive. - packaging/aur/**: left upstream-shaped. Marcode publishes no AUR package, so this is upstream packaging carried along, not a Marcode surface. Marcode product contracts kept (upstream fixes ported on top) - packages/client-runtime/src/state/threadSettled.ts: took upstream's changeRequestAutoSettles + autoSettleOnMerge setting, then applied it through Marcode's one-hour warm window instead of settling immediately. Upstream's new test asserted an immediate settle on a closed PR one millisecond after activity; retargeted it past the warm window and added a test pinning that the window outranks both PR-state signals. - apps/web/src/diffFileActions.ts / .test.ts: took upstream's resolveDiffPathForWorkspace (repository-relative diff paths in nested projects and worktrees) and landed the resolved path in the floating editor rather than the removed right-panel file surface. Rewrote the two upstream tests that asserted right-panel state. - apps/web/src/components/ChatMarkdown.tsx: took upstream's workspace basename lookup for bare filenames and routed its result into the floating editor. Upstream's openFileInPanel called useRightPanelStore.openFile, which Marcode's store no longer has. - apps/web/src/components/RightPanelTabs.tsx: took upstream's desktop favicon plumbing and Button-based add-panel trigger; dropped the `theme` prop and PierreEntryIcon import, which upstream threads in only for the retired file surface. - apps/web/src/components/ChatView.tsx: took upstream's surface-keyed pull-request tab status fix and the workspace file drop target; kept Marcode's hero background, composer inset utility, and pill-nav-only layout controls, tagged with upstream's new data-workspace-titlebar-controls attribute. - apps/web/src/components/ThreadTerminalDrawer.tsx: kept Marcode's xterm terminal. Upstream migrated this surface to a Ghostty WASM surface and built its right-click paste / context menu on that API. Not ported here; see the PR body. - apps/web/src/components/sidebar/SidebarChrome.tsx: kept Marcode's brand-free header and footer; upstream's SidebarBrand/T3Wordmark stay out. - apps/web/src/components/threadSidebarWidth.test.ts: kept Marcode's removal pin over upstream's replacement wordmark test. - apps/web/src/components/AppSidebarLayout.tsx: kept the pill-nav toggle bridge over upstream's floating SidebarTrigger. - apps/web/src/components/ui/tooltip.tsx: kept Marcode's inline FLOATING_SURFACE_Z z-index and anchor-hidden class over upstream's z-[140] utility. - apps/web/src/index.css: took upstream's @variant dark refactor, @layer base stage-art defaults, alert-glass utility, sidebar-stage-backdrop utility, and theme-art aliases; kept Marcode's dark palette, sidebar surface palette, workspace topbar, composer inset, scroll fades, and mono nav voice. - apps/web/src/components/settings/ConnectionsSettings.tsx: took upstream's desktop-only gate, kept Marcode Connect copy. - apps/web/src/components/clerk/MobileClientsUserProfilePage.tsx: took upstream's ClerkUserProfilePage/Row/RefreshButton refactor, reapplied Marcode branding. - apps/web/src/components/chat/ChatHeader.tsx: kept both imports; left upstream's inline rename and thread action menu unmounted, as before. - apps/web/src/hooks/useHandleNewThread.ts: kept Marcode's draftId/threadId/ placement options and took upstream's carryComposerContent. - Native title -> Tooltip migrations (DraftHeroHeadline, Sidebar woke pill, UsagePage refresh, PullRequestDetailPanel, PullRequestCodeTab): took upstream's Tooltip structure, kept Marcode's styling and icon sizes. Tests upstream deleted that pinned Marcode behavior, kept - infra/relay/scripts/deploy.test.ts (MARCODE_RELAY_URL reconciliation) - scripts/mobile-showcase.test.ts (marcode:// showcase scene routes) Tests added - scripts/build-desktop-artifact.test.ts: pins that stageMacIcons composites the packaged macOS icon onto the opaque white matte, so an upstream rewrite of that function conflicts loudly instead of silently reverting it. Other - pnpm-lock.yaml regenerated with pnpm install --lockfile-only. - pnpm-workspace.yaml and infra/relay/package.json are unchanged, so no coupled vendored subtree sync was required. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y7hnoykEhpviir998tucot
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. |
Upstream pingdotgg#5644 added isPublicFaviconHost, and the merged favicon.ts now returns null for private/loopback hosts (Google's favicon service cannot resolve them). buildTree.test.ts pinned the old behavior with a `localhost:3000` url node expecting a favicon URL, so the merge broke it cleanly with no conflict. Point the favicon assertion at a public URL (example.com) and add a localhost url node asserting no iconUrl, so the new filter is pinned and a future sync that loosens it conflicts loudly here. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y7hnoykEhpviir998tucot
maarco
marked this pull request as ready for review
August 19, 2026 05:20
This was referenced Aug 19, 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 169 commits from
pingdotgg/t3codethrough82b8a938(merge baseb73232bd) intomainvia a--no-ffmerge. Every conflict was resolved by hand, combining upstream intent with Marcode's product contracts — no file was taken wholesale from either side.Upstream tip
82b8a938:fix(orchestration): do not revive idle tasks from status-free progress (#7172).Conflict decisions
Structural / deletions
apps/desktop/resources/icon.{icns,ico,png}— took upstream's deletion. Upstream now generates desktop icons at build time fromassets/(DesktopAssets.ts,ensureMacIconIcns). Marcode's marks live inassets/, andstageMacIconsstill composites them onto the opaque white matte, so the packaged icon is unchanged.apps/web/src/components/files/FileBrowserPanel.tsx,FilePreviewPanel.tsx— stayed deleted (Marcode retired the right-panel file surfaces). Upstream's edits were subheader styling + a remote-open gate, both of which live on Marcode's floating-editor path.oxlint-plugin-marcode/rules/no-native-title-tooltip.{ts,test.ts}— took upstream's new rule into the renamed plugin dir; retargeted the hardcodedt3code/prefix tomarcode/.Fork identity (clean merges that would have silently broken)
vite.config.ts— registered the new rule undermarcode/. Landed it atwarn(not upstream'serror): 35 nativetitletooltips remain on Marcode-only surfaces (floating editor, floating terminal shell, git actions, open-in picker) upstream never had. The rule reports every one; raise toerroronce they migrate..agents/skills/test-t3-mobile/scripts/pair-client.sh— upstream's new helper readT3CODE_PORTand launchedcom.t3tools.t3code.dev; retargeted toMARCODE_PORT/com.t3tools.marcode.dev.apps/desktop/src/wsl/DesktopWslServerTree.test.ts— upstream fixture setT3CODE_HOME/T3CODE_MODE;DesktopConfigreadsMARCODE_HOME. Retargeted.apps/web/src/components/desktopUpdate.logic.test.ts— retargeted upstream's "restart T3 Code?" assertion to Marcode.apps/server/src/provider/Layers/CodexSessionRuntime.test.ts— took upstream'scodexDefaultModeDeveloperInstructions(browserToolsAvailable)refactor, kept/Marcode/, retargeted thedoesNotMatchassertion to "Marcode collaborative browser".scripts/build-desktop-artifact.test.ts— retargeted the DMG installer title to "Marcode 1.2.3 Installer".apps/desktop/resources/dmg/dmg-background-{latest,nightly}.svg— rebranded "Drag T3 Code to Applications".apps/mobile/src/lib/mobileTheme.ts— rebranded the default built-in theme label to Marcode.apps/web/src/components/clerk/T3ConnectUserProfilePage.tsx,T3ConnectSidebarSignIn.tsx— upstream's new Connect page + sidebar entry ship "T3 Connect" copy; rebranded to "Marcode Connect" to matchConnectionsSettings.apps/server/src/sourceControl/BitbucketSourceControlProvider.ts— keptMARCODE_BITBUCKET_*names, took upstream's added "user read" scope.apps/desktop/scripts/electron-launcher.mjs— took upstream'sresolveMacLauncherIconPaths/ensureMacIconIcnsrefactor +LAUNCHER_VERSION15; kept Marcode's bundle ids, protocol schemes, and disable directive.packaging/aur/**left upstream-shaped (Marcode publishes no AUR package).Marcode product contracts kept (upstream fixes ported on top)
packages/client-runtime/src/state/threadSettled.ts— took upstream'schangeRequestAutoSettles+autoSettleOnMergesetting, applied through Marcode's one-hour warm window instead of settling immediately. Retargeted upstream's immediate-settle test past the warm window and added a test pinning the window over both PR-state signals.apps/web/src/diffFileActions.ts/.test.ts— took upstream'sresolveDiffPathForWorkspace(repository-relative diff paths in nested projects/worktrees), landed the result in the floating editor instead of the removed right-panel file surface; rewrote the two upstream tests that asserted right-panel state.apps/web/src/components/ChatMarkdown.tsx— took upstream's workspace basename lookup for bare filenames, routed its result into the floating editor (upstream'sopenFileInPanelcalleduseRightPanelStore.openFile, gone in Marcode's store).apps/web/src/components/RightPanelTabs.tsx— took upstream's desktop favicon plumbing + Button-based add-panel trigger; dropped thethemeprop andPierreEntryIcon(upstream threads them in only for the retired file surface).apps/web/src/components/ChatView.tsx— took upstream's surface-keyed PR-tab status fix + workspace file drop target; kept Marcode's hero background, composer inset, and pill-nav-only layout controls (tagged with upstream'sdata-workspace-titlebar-controls).apps/web/src/components/ThreadTerminalDrawer.tsx— kept Marcode's xterm terminal. Upstream migrated this surface to a Ghostty WASM surface; see UI Changes.SidebarChrome.tsx,AppSidebarLayout.tsx,threadSidebarWidth.test.ts,ui/tooltip.tsx— kept Marcode's brand-free sidebar header/footer, pill-nav toggle bridge, removal pin, and inline z-index.apps/web/src/index.css— took upstream's@variant darkrefactor,@layer basestage-art defaults,alert-glass+sidebar-stage-backdroputilities, and theme-art aliases; kept Marcode's dark palette, sidebar palette, workspace topbar, composer inset, scroll fades, and mono nav voice.ConnectionsSettings.tsx(desktop-only gate + Marcode Connect copy),MobileClientsUserProfilePage.tsx(upstreamClerkUserProfilePagerefactor + Marcode branding),ChatHeader.tsx(both imports; upstream inline rename left unmounted),useHandleNewThread.ts(Marcode placement options + upstreamcarryComposerContent).title→Tooltipmigrations (DraftHeroHeadline, Sidebar woke pill,UsagePage,PullRequestDetailPanel,PullRequestCodeTab) — took upstream's Tooltip structure, kept Marcode's styling and icon sizes.Tests upstream deleted that pinned Marcode behavior — kept
infra/relay/scripts/deploy.test.ts(MARCODE_RELAY_URLreconciliation)scripts/mobile-showcase.test.ts(marcode://showcase scene routes)Why
This is the scheduled fork sync — bringing in 169 upstream correctness, security, and feature commits while preserving Marcode's intentional divergences (floating editor as the only file-editing surface, unified workspace shell, branding, and compatibility identifiers). Hotspot paths were reviewed as mandatory-review, not automatic keep-Marcode: upstream fixes embedded in customized files (diff-path resolution, PR-tab status keying, the
autoSettleOnMergesetting, the Bitbucket scope) were all ported on top.pnpm-workspace.yamlandinfra/relay/package.jsonare unchanged, so noeffect-smol/alchemy-effectsubtree sync was required.UI Changes
No intended visual change — Marcode's shell, palette, and surfaces are preserved.
Not ported (flagging): upstream's Ghostty terminal migration (right-click paste + context menu, pingdotgg#5240) was not brought in. Marcode intentionally keeps the xterm terminal for its search feature; this is a documented divergence, and the paste/context-menu work would need re-porting onto xterm by hand. No behavior regressed — the feature simply isn't added.
Verification
pnpm-lock.yamlregenerated withpnpm install --lockfile-only.@t3tools/{web,shared,contracts,client-runtime,scripts,desktop,mobile,oxlint-plugin-marcode},t3,marcode-relay.Full CI (Check, Test, Mobile Native Static Analysis, Release Smoke) runs on this PR.
Checklist
🤖 Generated with Claude Code
https://claude.ai/code/session_01Y7hnoykEhpviir998tucot
Generated by Claude Code