chore(upstream): sync marcode through 82b8a938 - #39

Merged
maarco merged 171 commits into
mainfrom
claude/gracious-bohr-e6mz60
Aug 19, 2026
Merged

chore(upstream): sync marcode through 82b8a938#39
maarco merged 171 commits into
mainfrom
claude/gracious-bohr-e6mz60

Conversation

@maarco

Copy link
Copy Markdown
Owner

What Changed

Daily upstream sync: merges 169 commits from pingdotgg/t3code through 82b8a938 (merge base b73232bd) into main via a --no-ff merge. 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 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 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 hardcoded t3code/ prefix to marcode/.

Fork identity (clean merges that would have silently broken)

  • vite.config.ts — registered the new rule under marcode/. Landed it at warn (not upstream's error): 35 native title tooltips remain on Marcode-only surfaces (floating editor, floating terminal shell, git actions, open-in picker) upstream never had. The rule reports every one; raise to error once they migrate.
  • .agents/skills/test-t3-mobile/scripts/pair-client.sh — upstream's new helper read T3CODE_PORT and launched com.t3tools.t3code.dev; retargeted to MARCODE_PORT / com.t3tools.marcode.dev.
  • apps/desktop/src/wsl/DesktopWslServerTree.test.ts — upstream fixture set T3CODE_HOME/T3CODE_MODE; DesktopConfig reads MARCODE_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's codexDefaultModeDeveloperInstructions(browserToolsAvailable) refactor, kept /Marcode/, retargeted the doesNotMatch assertion 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 match ConnectionsSettings.
  • apps/server/src/sourceControl/BitbucketSourceControlProvider.ts — kept MARCODE_BITBUCKET_* names, took upstream's added "user read" scope.
  • apps/desktop/scripts/electron-launcher.mjs — took upstream's resolveMacLauncherIconPaths/ensureMacIconIcns refactor + LAUNCHER_VERSION 15; 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's changeRequestAutoSettles + autoSettleOnMerge setting, 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's resolveDiffPathForWorkspace (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's openFileInPanel called useRightPanelStore.openFile, gone in Marcode's store).
  • apps/web/src/components/RightPanelTabs.tsx — took upstream's desktop favicon plumbing + Button-based add-panel trigger; dropped the theme prop and PierreEntryIcon (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's data-workspace-titlebar-controls).
  • apps/web/src/components/ThreadTerminalDrawer.tsxkept 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 dark refactor, @layer base stage-art defaults, alert-glass + sidebar-stage-backdrop utilities, 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 (upstream ClerkUserProfilePage refactor + Marcode branding), ChatHeader.tsx (both imports; upstream inline rename left unmounted), useHandleNewThread.ts (Marcode placement options + upstream carryComposerContent).
  • Native-titleTooltip migrations (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_URL reconciliation)
  • 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 autoSettleOnMerge setting, the Bitbucket scope) were all ported on top.

pnpm-workspace.yaml and infra/relay/package.json are unchanged, so no effect-smol / alchemy-effect subtree 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

  • 169 commits merged; pnpm-lock.yaml regenerated with pnpm install --lockfile-only.
  • Typecheck green: @t3tools/{web,shared,contracts,client-runtime,scripts,desktop,mobile,oxlint-plugin-marcode}, t3, marcode-relay.
  • Lint 0 errors; format clean on all 650 changed files.
  • Focused tests: 705 passed across the touched paths.

Full CI (Check, Test, Mobile Native Static Analysis, Release Smoke) runs on this PR.

Checklist

  • I explained what changed and why
  • This PR is small and focused — N/A: this is the scheduled 169-commit upstream sync
  • Before/after screenshots — N/A: no intended UI change
  • Video for animation/interaction changes — N/A

🤖 Generated with Claude Code

https://claude.ai/code/session_01Y7hnoykEhpviir998tucot


Generated by Claude Code

t3-codeBotand others added 30 commits August 12, 2026 14:32
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>
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>
)
Co-authored-by: Julius Marminge <julius0216@outlook.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>
chrisdeemingand others added 17 commits August 16, 2026 10:13
…#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
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 18, 2026
@github-actions

github-actionsBot commented Aug 18, 2026

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire11.3 KiB12.6 KiB+1.3 KiB (+11.5%)15.1 KiB
CodexThread snapshot wire5.5 KiB6.3 KiB+839 B (+15.0%)7.3 KiB
CodexLive turn WebSocket wire5.9 KiB6.3 KiB+489 B (+8.2%)7.8 KiB
CodexLive turn WebSocket decoded49.7 KiB51.8 KiB+2.1 KiB (+4.2%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire11.3 KiB12.6 KiB+1.3 KiB (+11.2%)15.1 KiB
ClaudeThread snapshot wire5.5 KiB6.3 KiB+815 B (+14.5%)7.3 KiB
ClaudeLive turn WebSocket wire5.8 KiB6.3 KiB+483 B (+8.1%)7.8 KiB
ClaudeLive turn WebSocket decoded50.6 KiB52.7 KiB+2.1 KiB (+4.2%)66.4 KiB
ClaudeLive turn messages16160 (0.0%)21

Baseline: 1af3478 · PR result: 720bbde · 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: 99.9 KiB
  • Claude decoded thread snapshot: 100.6 KiB

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
maarco marked this pull request as ready for review August 19, 2026 05:20
@maarco
maarco merged commit 2ffb140 into mainAug 19, 2026
13 of 14 checks passed
@maarco
maarco deleted the claude/gracious-bohr-e6mz60 branch August 19, 2026 05:20
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@extoci@juliusmarminge@PixPMusic@StiensWout@Bil0000@t3dotgg@gsimone@dominic-r@none23@maria-rcks@chrisdeeming@Lucenx9@UtkarshUsername@Adamulek123@paul-vd@WarheadTaylor@RakshithBhat03@davidhu2000@tsouth89
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n 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;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

chore(upstream): sync marcode through 82b8a938 - #39

Merged
maarco merged 171 commits into
mainfrom
claude/gracious-bohr-e6mz60
Aug 19, 2026
Merged

chore(upstream): sync marcode through 82b8a938#39
maarco merged 171 commits into
mainfrom
claude/gracious-bohr-e6mz60

Conversation

@maarco

Copy link
Copy Markdown
Owner

What Changed

Daily upstream sync: merges 169 commits from pingdotgg/t3code through 82b8a938 (merge base b73232bd) into main via a --no-ff merge. 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 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 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 hardcoded t3code/ prefix to marcode/.

Fork identity (clean merges that would have silently broken)

  • vite.config.ts — registered the new rule under marcode/. Landed it at warn (not upstream's error): 35 native title tooltips remain on Marcode-only surfaces (floating editor, floating terminal shell, git actions, open-in picker) upstream never had. The rule reports every one; raise to error once they migrate.
  • .agents/skills/test-t3-mobile/scripts/pair-client.sh — upstream's new helper read T3CODE_PORT and launched com.t3tools.t3code.dev; retargeted to MARCODE_PORT / com.t3tools.marcode.dev.
  • apps/desktop/src/wsl/DesktopWslServerTree.test.ts — upstream fixture set T3CODE_HOME/T3CODE_MODE; DesktopConfig reads MARCODE_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's codexDefaultModeDeveloperInstructions(browserToolsAvailable) refactor, kept /Marcode/, retargeted the doesNotMatch assertion 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 match ConnectionsSettings.
  • apps/server/src/sourceControl/BitbucketSourceControlProvider.ts — kept MARCODE_BITBUCKET_* names, took upstream's added "user read" scope.
  • apps/desktop/scripts/electron-launcher.mjs — took upstream's resolveMacLauncherIconPaths/ensureMacIconIcns refactor + LAUNCHER_VERSION 15; 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's changeRequestAutoSettles + autoSettleOnMerge setting, 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's resolveDiffPathForWorkspace (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's openFileInPanel called useRightPanelStore.openFile, gone in Marcode's store).
  • apps/web/src/components/RightPanelTabs.tsx — took upstream's desktop favicon plumbing + Button-based add-panel trigger; dropped the theme prop and PierreEntryIcon (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's data-workspace-titlebar-controls).
  • apps/web/src/components/ThreadTerminalDrawer.tsxkept 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 dark refactor, @layer base stage-art defaults, alert-glass + sidebar-stage-backdrop utilities, 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 (upstream ClerkUserProfilePage refactor + Marcode branding), ChatHeader.tsx (both imports; upstream inline rename left unmounted), useHandleNewThread.ts (Marcode placement options + upstream carryComposerContent).
  • Native-titleTooltip migrations (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_URL reconciliation)
  • 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 autoSettleOnMerge setting, the Bitbucket scope) were all ported on top.

pnpm-workspace.yaml and infra/relay/package.json are unchanged, so no effect-smol / alchemy-effect subtree 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

  • 169 commits merged; pnpm-lock.yaml regenerated with pnpm install --lockfile-only.
  • Typecheck green: @t3tools/{web,shared,contracts,client-runtime,scripts,desktop,mobile,oxlint-plugin-marcode}, t3, marcode-relay.
  • Lint 0 errors; format clean on all 650 changed files.
  • Focused tests: 705 passed across the touched paths.

Full CI (Check, Test, Mobile Native Static Analysis, Release Smoke) runs on this PR.

Checklist

  • I explained what changed and why
  • This PR is small and focused — N/A: this is the scheduled 169-commit upstream sync
  • Before/after screenshots — N/A: no intended UI change
  • Video for animation/interaction changes — N/A

🤖 Generated with Claude Code

https://claude.ai/code/session_01Y7hnoykEhpviir998tucot


Generated by Claude Code

t3-codeBotand others added 30 commits August 12, 2026 14:32
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>
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>
)
Co-authored-by: Julius Marminge <julius0216@outlook.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>
chrisdeemingand others added 17 commits August 16, 2026 10:13
…#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
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 18, 2026
@github-actions

github-actionsBot commented Aug 18, 2026

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire11.3 KiB12.6 KiB+1.3 KiB (+11.5%)15.1 KiB
CodexThread snapshot wire5.5 KiB6.3 KiB+839 B (+15.0%)7.3 KiB
CodexLive turn WebSocket wire5.9 KiB6.3 KiB+489 B (+8.2%)7.8 KiB
CodexLive turn WebSocket decoded49.7 KiB51.8 KiB+2.1 KiB (+4.2%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire11.3 KiB12.6 KiB+1.3 KiB (+11.2%)15.1 KiB
ClaudeThread snapshot wire5.5 KiB6.3 KiB+815 B (+14.5%)7.3 KiB
ClaudeLive turn WebSocket wire5.8 KiB6.3 KiB+483 B (+8.1%)7.8 KiB
ClaudeLive turn WebSocket decoded50.6 KiB52.7 KiB+2.1 KiB (+4.2%)66.4 KiB
ClaudeLive turn messages16160 (0.0%)21

Baseline: 1af3478 · PR result: 720bbde · 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: 99.9 KiB
  • Claude decoded thread snapshot: 100.6 KiB

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
maarco marked this pull request as ready for review August 19, 2026 05:20
@maarco
maarco merged commit 2ffb140 into mainAug 19, 2026
13 of 14 checks passed
@maarco
maarco deleted the claude/gracious-bohr-e6mz60 branch August 19, 2026 05:20
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@extoci@juliusmarminge@PixPMusic@StiensWout@Bil0000@t3dotgg@gsimone@dominic-r@none23@maria-rcks@chrisdeeming@Lucenx9@UtkarshUsername@Adamulek123@paul-vd@WarheadTaylor@RakshithBhat03@davidhu2000@tsouth89
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore(upstream): sync marcode through 82b8a938 - #39

Merged
maarco merged 171 commits into
mainfrom
claude/gracious-bohr-e6mz60
Aug 19, 2026
Merged

chore(upstream): sync marcode through 82b8a938#39
maarco merged 171 commits into
mainfrom
claude/gracious-bohr-e6mz60

Conversation

@maarco

Copy link
Copy Markdown
Owner

What Changed

Daily upstream sync: merges 169 commits from pingdotgg/t3code through 82b8a938 (merge base b73232bd) into main via a --no-ff merge. 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 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 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 hardcoded t3code/ prefix to marcode/.

Fork identity (clean merges that would have silently broken)

  • vite.config.ts — registered the new rule under marcode/. Landed it at warn (not upstream's error): 35 native title tooltips remain on Marcode-only surfaces (floating editor, floating terminal shell, git actions, open-in picker) upstream never had. The rule reports every one; raise to error once they migrate.
  • .agents/skills/test-t3-mobile/scripts/pair-client.sh — upstream's new helper read T3CODE_PORT and launched com.t3tools.t3code.dev; retargeted to MARCODE_PORT / com.t3tools.marcode.dev.
  • apps/desktop/src/wsl/DesktopWslServerTree.test.ts — upstream fixture set T3CODE_HOME/T3CODE_MODE; DesktopConfig reads MARCODE_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's codexDefaultModeDeveloperInstructions(browserToolsAvailable) refactor, kept /Marcode/, retargeted the doesNotMatch assertion 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 match ConnectionsSettings.
  • apps/server/src/sourceControl/BitbucketSourceControlProvider.ts — kept MARCODE_BITBUCKET_* names, took upstream's added "user read" scope.
  • apps/desktop/scripts/electron-launcher.mjs — took upstream's resolveMacLauncherIconPaths/ensureMacIconIcns refactor + LAUNCHER_VERSION 15; 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's changeRequestAutoSettles + autoSettleOnMerge setting, 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's resolveDiffPathForWorkspace (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's openFileInPanel called useRightPanelStore.openFile, gone in Marcode's store).
  • apps/web/src/components/RightPanelTabs.tsx — took upstream's desktop favicon plumbing + Button-based add-panel trigger; dropped the theme prop and PierreEntryIcon (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's data-workspace-titlebar-controls).
  • apps/web/src/components/ThreadTerminalDrawer.tsxkept 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 dark refactor, @layer base stage-art defaults, alert-glass + sidebar-stage-backdrop utilities, 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 (upstream ClerkUserProfilePage refactor + Marcode branding), ChatHeader.tsx (both imports; upstream inline rename left unmounted), useHandleNewThread.ts (Marcode placement options + upstream carryComposerContent).
  • Native-titleTooltip migrations (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_URL reconciliation)
  • 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 autoSettleOnMerge setting, the Bitbucket scope) were all ported on top.

pnpm-workspace.yaml and infra/relay/package.json are unchanged, so no effect-smol / alchemy-effect subtree 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

  • 169 commits merged; pnpm-lock.yaml regenerated with pnpm install --lockfile-only.
  • Typecheck green: @t3tools/{web,shared,contracts,client-runtime,scripts,desktop,mobile,oxlint-plugin-marcode}, t3, marcode-relay.
  • Lint 0 errors; format clean on all 650 changed files.
  • Focused tests: 705 passed across the touched paths.

Full CI (Check, Test, Mobile Native Static Analysis, Release Smoke) runs on this PR.

Checklist

  • I explained what changed and why
  • This PR is small and focused — N/A: this is the scheduled 169-commit upstream sync
  • Before/after screenshots — N/A: no intended UI change
  • Video for animation/interaction changes — N/A

🤖 Generated with Claude Code

https://claude.ai/code/session_01Y7hnoykEhpviir998tucot


Generated by Claude Code

t3-codeBotand others added 30 commits August 12, 2026 14:32
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>
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>
)
Co-authored-by: Julius Marminge <julius0216@outlook.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>
chrisdeemingand others added 17 commits August 16, 2026 10:13
…#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
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 18, 2026
@github-actions

github-actionsBot commented Aug 18, 2026

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire11.3 KiB12.6 KiB+1.3 KiB (+11.5%)15.1 KiB
CodexThread snapshot wire5.5 KiB6.3 KiB+839 B (+15.0%)7.3 KiB
CodexLive turn WebSocket wire5.9 KiB6.3 KiB+489 B (+8.2%)7.8 KiB
CodexLive turn WebSocket decoded49.7 KiB51.8 KiB+2.1 KiB (+4.2%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire11.3 KiB12.6 KiB+1.3 KiB (+11.2%)15.1 KiB
ClaudeThread snapshot wire5.5 KiB6.3 KiB+815 B (+14.5%)7.3 KiB
ClaudeLive turn WebSocket wire5.8 KiB6.3 KiB+483 B (+8.1%)7.8 KiB
ClaudeLive turn WebSocket decoded50.6 KiB52.7 KiB+2.1 KiB (+4.2%)66.4 KiB
ClaudeLive turn messages16160 (0.0%)21

Baseline: 1af3478 · PR result: 720bbde · 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: 99.9 KiB
  • Claude decoded thread snapshot: 100.6 KiB

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
maarco marked this pull request as ready for review August 19, 2026 05:20
@maarco
maarco merged commit 2ffb140 into mainAug 19, 2026
13 of 14 checks passed
@maarco
maarco deleted the claude/gracious-bohr-e6mz60 branch August 19, 2026 05:20
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@extoci@juliusmarminge@PixPMusic@StiensWout@Bil0000@t3dotgg@gsimone@dominic-r@none23@maria-rcks@chrisdeeming@Lucenx9@UtkarshUsername@Adamulek123@paul-vd@WarheadTaylor@RakshithBhat03@davidhu2000@tsouth89
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore(upstream): sync marcode through 82b8a938 - #39

Merged
maarco merged 171 commits into
mainfrom
claude/gracious-bohr-e6mz60
Aug 19, 2026
Merged

chore(upstream): sync marcode through 82b8a938#39
maarco merged 171 commits into
mainfrom
claude/gracious-bohr-e6mz60

Conversation

@maarco

Copy link
Copy Markdown
Owner

What Changed

Daily upstream sync: merges 169 commits from pingdotgg/t3code through 82b8a938 (merge base b73232bd) into main via a --no-ff merge. 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 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 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 hardcoded t3code/ prefix to marcode/.

Fork identity (clean merges that would have silently broken)

  • vite.config.ts — registered the new rule under marcode/. Landed it at warn (not upstream's error): 35 native title tooltips remain on Marcode-only surfaces (floating editor, floating terminal shell, git actions, open-in picker) upstream never had. The rule reports every one; raise to error once they migrate.
  • .agents/skills/test-t3-mobile/scripts/pair-client.sh — upstream's new helper read T3CODE_PORT and launched com.t3tools.t3code.dev; retargeted to MARCODE_PORT / com.t3tools.marcode.dev.
  • apps/desktop/src/wsl/DesktopWslServerTree.test.ts — upstream fixture set T3CODE_HOME/T3CODE_MODE; DesktopConfig reads MARCODE_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's codexDefaultModeDeveloperInstructions(browserToolsAvailable) refactor, kept /Marcode/, retargeted the doesNotMatch assertion 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 match ConnectionsSettings.
  • apps/server/src/sourceControl/BitbucketSourceControlProvider.ts — kept MARCODE_BITBUCKET_* names, took upstream's added "user read" scope.
  • apps/desktop/scripts/electron-launcher.mjs — took upstream's resolveMacLauncherIconPaths/ensureMacIconIcns refactor + LAUNCHER_VERSION 15; 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's changeRequestAutoSettles + autoSettleOnMerge setting, 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's resolveDiffPathForWorkspace (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's openFileInPanel called useRightPanelStore.openFile, gone in Marcode's store).
  • apps/web/src/components/RightPanelTabs.tsx — took upstream's desktop favicon plumbing + Button-based add-panel trigger; dropped the theme prop and PierreEntryIcon (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's data-workspace-titlebar-controls).
  • apps/web/src/components/ThreadTerminalDrawer.tsxkept 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 dark refactor, @layer base stage-art defaults, alert-glass + sidebar-stage-backdrop utilities, 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 (upstream ClerkUserProfilePage refactor + Marcode branding), ChatHeader.tsx (both imports; upstream inline rename left unmounted), useHandleNewThread.ts (Marcode placement options + upstream carryComposerContent).
  • Native-titleTooltip migrations (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_URL reconciliation)
  • 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 autoSettleOnMerge setting, the Bitbucket scope) were all ported on top.

pnpm-workspace.yaml and infra/relay/package.json are unchanged, so no effect-smol / alchemy-effect subtree 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

  • 169 commits merged; pnpm-lock.yaml regenerated with pnpm install --lockfile-only.
  • Typecheck green: @t3tools/{web,shared,contracts,client-runtime,scripts,desktop,mobile,oxlint-plugin-marcode}, t3, marcode-relay.
  • Lint 0 errors; format clean on all 650 changed files.
  • Focused tests: 705 passed across the touched paths.

Full CI (Check, Test, Mobile Native Static Analysis, Release Smoke) runs on this PR.

Checklist

  • I explained what changed and why
  • This PR is small and focused — N/A: this is the scheduled 169-commit upstream sync
  • Before/after screenshots — N/A: no intended UI change
  • Video for animation/interaction changes — N/A

🤖 Generated with Claude Code

https://claude.ai/code/session_01Y7hnoykEhpviir998tucot


Generated by Claude Code

t3-codeBotand others added 30 commits August 12, 2026 14:32
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>
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>
)
Co-authored-by: Julius Marminge <julius0216@outlook.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>
chrisdeemingand others added 17 commits August 16, 2026 10:13
…#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
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 18, 2026
@github-actions

github-actionsBot commented Aug 18, 2026

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire11.3 KiB12.6 KiB+1.3 KiB (+11.5%)15.1 KiB
CodexThread snapshot wire5.5 KiB6.3 KiB+839 B (+15.0%)7.3 KiB
CodexLive turn WebSocket wire5.9 KiB6.3 KiB+489 B (+8.2%)7.8 KiB
CodexLive turn WebSocket decoded49.7 KiB51.8 KiB+2.1 KiB (+4.2%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire11.3 KiB12.6 KiB+1.3 KiB (+11.2%)15.1 KiB
ClaudeThread snapshot wire5.5 KiB6.3 KiB+815 B (+14.5%)7.3 KiB
ClaudeLive turn WebSocket wire5.8 KiB6.3 KiB+483 B (+8.1%)7.8 KiB
ClaudeLive turn WebSocket decoded50.6 KiB52.7 KiB+2.1 KiB (+4.2%)66.4 KiB
ClaudeLive turn messages16160 (0.0%)21

Baseline: 1af3478 · PR result: 720bbde · 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: 99.9 KiB
  • Claude decoded thread snapshot: 100.6 KiB

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
maarco marked this pull request as ready for review August 19, 2026 05:20
@maarco
maarco merged commit 2ffb140 into mainAug 19, 2026
13 of 14 checks passed
@maarco
maarco deleted the claude/gracious-bohr-e6mz60 branch August 19, 2026 05:20
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@extoci@juliusmarminge@PixPMusic@StiensWout@Bil0000@t3dotgg@gsimone@dominic-r@none23@maria-rcks@chrisdeeming@Lucenx9@UtkarshUsername@Adamulek123@paul-vd@WarheadTaylor@RakshithBhat03@davidhu2000@tsouth89
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

chore(upstream): sync marcode through 82b8a938 - #39

Merged
maarco merged 171 commits into
mainfrom
claude/gracious-bohr-e6mz60
Aug 19, 2026
Merged

chore(upstream): sync marcode through 82b8a938#39
maarco merged 171 commits into
mainfrom
claude/gracious-bohr-e6mz60

Conversation

@maarco

Copy link
Copy Markdown
Owner

What Changed

Daily upstream sync: merges 169 commits from pingdotgg/t3code through 82b8a938 (merge base b73232bd) into main via a --no-ff merge. 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 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 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 hardcoded t3code/ prefix to marcode/.

Fork identity (clean merges that would have silently broken)

  • vite.config.ts — registered the new rule under marcode/. Landed it at warn (not upstream's error): 35 native title tooltips remain on Marcode-only surfaces (floating editor, floating terminal shell, git actions, open-in picker) upstream never had. The rule reports every one; raise to error once they migrate.
  • .agents/skills/test-t3-mobile/scripts/pair-client.sh — upstream's new helper read T3CODE_PORT and launched com.t3tools.t3code.dev; retargeted to MARCODE_PORT / com.t3tools.marcode.dev.
  • apps/desktop/src/wsl/DesktopWslServerTree.test.ts — upstream fixture set T3CODE_HOME/T3CODE_MODE; DesktopConfig reads MARCODE_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's codexDefaultModeDeveloperInstructions(browserToolsAvailable) refactor, kept /Marcode/, retargeted the doesNotMatch assertion 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 match ConnectionsSettings.
  • apps/server/src/sourceControl/BitbucketSourceControlProvider.ts — kept MARCODE_BITBUCKET_* names, took upstream's added "user read" scope.
  • apps/desktop/scripts/electron-launcher.mjs — took upstream's resolveMacLauncherIconPaths/ensureMacIconIcns refactor + LAUNCHER_VERSION 15; 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's changeRequestAutoSettles + autoSettleOnMerge setting, 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's resolveDiffPathForWorkspace (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's openFileInPanel called useRightPanelStore.openFile, gone in Marcode's store).
  • apps/web/src/components/RightPanelTabs.tsx — took upstream's desktop favicon plumbing + Button-based add-panel trigger; dropped the theme prop and PierreEntryIcon (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's data-workspace-titlebar-controls).
  • apps/web/src/components/ThreadTerminalDrawer.tsxkept 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 dark refactor, @layer base stage-art defaults, alert-glass + sidebar-stage-backdrop utilities, 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 (upstream ClerkUserProfilePage refactor + Marcode branding), ChatHeader.tsx (both imports; upstream inline rename left unmounted), useHandleNewThread.ts (Marcode placement options + upstream carryComposerContent).
  • Native-titleTooltip migrations (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_URL reconciliation)
  • 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 autoSettleOnMerge setting, the Bitbucket scope) were all ported on top.

pnpm-workspace.yaml and infra/relay/package.json are unchanged, so no effect-smol / alchemy-effect subtree 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

  • 169 commits merged; pnpm-lock.yaml regenerated with pnpm install --lockfile-only.
  • Typecheck green: @t3tools/{web,shared,contracts,client-runtime,scripts,desktop,mobile,oxlint-plugin-marcode}, t3, marcode-relay.
  • Lint 0 errors; format clean on all 650 changed files.
  • Focused tests: 705 passed across the touched paths.

Full CI (Check, Test, Mobile Native Static Analysis, Release Smoke) runs on this PR.

Checklist

  • I explained what changed and why
  • This PR is small and focused — N/A: this is the scheduled 169-commit upstream sync
  • Before/after screenshots — N/A: no intended UI change
  • Video for animation/interaction changes — N/A

🤖 Generated with Claude Code

https://claude.ai/code/session_01Y7hnoykEhpviir998tucot


Generated by Claude Code

t3-codeBotand others added 30 commits August 12, 2026 14:32
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>
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>
)
Co-authored-by: Julius Marminge <julius0216@outlook.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>
chrisdeemingand others added 17 commits August 16, 2026 10:13
…#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
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 18, 2026
@github-actions

github-actionsBot commented Aug 18, 2026

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire11.3 KiB12.6 KiB+1.3 KiB (+11.5%)15.1 KiB
CodexThread snapshot wire5.5 KiB6.3 KiB+839 B (+15.0%)7.3 KiB
CodexLive turn WebSocket wire5.9 KiB6.3 KiB+489 B (+8.2%)7.8 KiB
CodexLive turn WebSocket decoded49.7 KiB51.8 KiB+2.1 KiB (+4.2%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire11.3 KiB12.6 KiB+1.3 KiB (+11.2%)15.1 KiB
ClaudeThread snapshot wire5.5 KiB6.3 KiB+815 B (+14.5%)7.3 KiB
ClaudeLive turn WebSocket wire5.8 KiB6.3 KiB+483 B (+8.1%)7.8 KiB
ClaudeLive turn WebSocket decoded50.6 KiB52.7 KiB+2.1 KiB (+4.2%)66.4 KiB
ClaudeLive turn messages16160 (0.0%)21

Baseline: 1af3478 · PR result: 720bbde · 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: 99.9 KiB
  • Claude decoded thread snapshot: 100.6 KiB

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
maarco marked this pull request as ready for review August 19, 2026 05:20
@maarco
maarco merged commit 2ffb140 into mainAug 19, 2026
13 of 14 checks passed
@maarco
maarco deleted the claude/gracious-bohr-e6mz60 branch August 19, 2026 05:20
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@extoci@juliusmarminge@PixPMusic@StiensWout@Bil0000@t3dotgg@gsimone@dominic-r@none23@maria-rcks@chrisdeeming@Lucenx9@UtkarshUsername@Adamulek123@paul-vd@WarheadTaylor@RakshithBhat03@davidhu2000@tsouth89
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore(upstream): sync marcode through 82b8a938 - #39

Merged
maarco merged 171 commits into
mainfrom
claude/gracious-bohr-e6mz60
Aug 19, 2026
Merged

chore(upstream): sync marcode through 82b8a938#39
maarco merged 171 commits into
mainfrom
claude/gracious-bohr-e6mz60

Conversation

@maarco

Copy link
Copy Markdown
Owner

What Changed

Daily upstream sync: merges 169 commits from pingdotgg/t3code through 82b8a938 (merge base b73232bd) into main via a --no-ff merge. 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 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 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 hardcoded t3code/ prefix to marcode/.

Fork identity (clean merges that would have silently broken)

  • vite.config.ts — registered the new rule under marcode/. Landed it at warn (not upstream's error): 35 native title tooltips remain on Marcode-only surfaces (floating editor, floating terminal shell, git actions, open-in picker) upstream never had. The rule reports every one; raise to error once they migrate.
  • .agents/skills/test-t3-mobile/scripts/pair-client.sh — upstream's new helper read T3CODE_PORT and launched com.t3tools.t3code.dev; retargeted to MARCODE_PORT / com.t3tools.marcode.dev.
  • apps/desktop/src/wsl/DesktopWslServerTree.test.ts — upstream fixture set T3CODE_HOME/T3CODE_MODE; DesktopConfig reads MARCODE_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's codexDefaultModeDeveloperInstructions(browserToolsAvailable) refactor, kept /Marcode/, retargeted the doesNotMatch assertion 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 match ConnectionsSettings.
  • apps/server/src/sourceControl/BitbucketSourceControlProvider.ts — kept MARCODE_BITBUCKET_* names, took upstream's added "user read" scope.
  • apps/desktop/scripts/electron-launcher.mjs — took upstream's resolveMacLauncherIconPaths/ensureMacIconIcns refactor + LAUNCHER_VERSION 15; 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's changeRequestAutoSettles + autoSettleOnMerge setting, 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's resolveDiffPathForWorkspace (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's openFileInPanel called useRightPanelStore.openFile, gone in Marcode's store).
  • apps/web/src/components/RightPanelTabs.tsx — took upstream's desktop favicon plumbing + Button-based add-panel trigger; dropped the theme prop and PierreEntryIcon (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's data-workspace-titlebar-controls).
  • apps/web/src/components/ThreadTerminalDrawer.tsxkept 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 dark refactor, @layer base stage-art defaults, alert-glass + sidebar-stage-backdrop utilities, 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 (upstream ClerkUserProfilePage refactor + Marcode branding), ChatHeader.tsx (both imports; upstream inline rename left unmounted), useHandleNewThread.ts (Marcode placement options + upstream carryComposerContent).
  • Native-titleTooltip migrations (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_URL reconciliation)
  • 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 autoSettleOnMerge setting, the Bitbucket scope) were all ported on top.

pnpm-workspace.yaml and infra/relay/package.json are unchanged, so no effect-smol / alchemy-effect subtree 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

  • 169 commits merged; pnpm-lock.yaml regenerated with pnpm install --lockfile-only.
  • Typecheck green: @t3tools/{web,shared,contracts,client-runtime,scripts,desktop,mobile,oxlint-plugin-marcode}, t3, marcode-relay.
  • Lint 0 errors; format clean on all 650 changed files.
  • Focused tests: 705 passed across the touched paths.

Full CI (Check, Test, Mobile Native Static Analysis, Release Smoke) runs on this PR.

Checklist

  • I explained what changed and why
  • This PR is small and focused — N/A: this is the scheduled 169-commit upstream sync
  • Before/after screenshots — N/A: no intended UI change
  • Video for animation/interaction changes — N/A

🤖 Generated with Claude Code

https://claude.ai/code/session_01Y7hnoykEhpviir998tucot


Generated by Claude Code

t3-codeBotand others added 30 commits August 12, 2026 14:32
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>
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>
)
Co-authored-by: Julius Marminge <julius0216@outlook.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>
chrisdeemingand others added 17 commits August 16, 2026 10:13
…#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
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 18, 2026
@github-actions

github-actionsBot commented Aug 18, 2026

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire11.3 KiB12.6 KiB+1.3 KiB (+11.5%)15.1 KiB
CodexThread snapshot wire5.5 KiB6.3 KiB+839 B (+15.0%)7.3 KiB
CodexLive turn WebSocket wire5.9 KiB6.3 KiB+489 B (+8.2%)7.8 KiB
CodexLive turn WebSocket decoded49.7 KiB51.8 KiB+2.1 KiB (+4.2%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire11.3 KiB12.6 KiB+1.3 KiB (+11.2%)15.1 KiB
ClaudeThread snapshot wire5.5 KiB6.3 KiB+815 B (+14.5%)7.3 KiB
ClaudeLive turn WebSocket wire5.8 KiB6.3 KiB+483 B (+8.1%)7.8 KiB
ClaudeLive turn WebSocket decoded50.6 KiB52.7 KiB+2.1 KiB (+4.2%)66.4 KiB
ClaudeLive turn messages16160 (0.0%)21

Baseline: 1af3478 · PR result: 720bbde · 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: 99.9 KiB
  • Claude decoded thread snapshot: 100.6 KiB

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
maarco marked this pull request as ready for review August 19, 2026 05:20
@maarco
maarco merged commit 2ffb140 into mainAug 19, 2026
13 of 14 checks passed
@maarco
maarco deleted the claude/gracious-bohr-e6mz60 branch August 19, 2026 05:20
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@extoci@juliusmarminge@PixPMusic@StiensWout@Bil0000@t3dotgg@gsimone@dominic-r@none23@maria-rcks@chrisdeeming@Lucenx9@UtkarshUsername@Adamulek123@paul-vd@WarheadTaylor@RakshithBhat03@davidhu2000@tsouth89
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore(upstream): sync marcode through 82b8a938 - #39

Merged
maarco merged 171 commits into
mainfrom
claude/gracious-bohr-e6mz60
Aug 19, 2026
Merged

chore(upstream): sync marcode through 82b8a938#39
maarco merged 171 commits into
mainfrom
claude/gracious-bohr-e6mz60

Conversation

@maarco

Copy link
Copy Markdown
Owner

What Changed

Daily upstream sync: merges 169 commits from pingdotgg/t3code through 82b8a938 (merge base b73232bd) into main via a --no-ff merge. 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 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 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 hardcoded t3code/ prefix to marcode/.

Fork identity (clean merges that would have silently broken)

  • vite.config.ts — registered the new rule under marcode/. Landed it at warn (not upstream's error): 35 native title tooltips remain on Marcode-only surfaces (floating editor, floating terminal shell, git actions, open-in picker) upstream never had. The rule reports every one; raise to error once they migrate.
  • .agents/skills/test-t3-mobile/scripts/pair-client.sh — upstream's new helper read T3CODE_PORT and launched com.t3tools.t3code.dev; retargeted to MARCODE_PORT / com.t3tools.marcode.dev.
  • apps/desktop/src/wsl/DesktopWslServerTree.test.ts — upstream fixture set T3CODE_HOME/T3CODE_MODE; DesktopConfig reads MARCODE_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's codexDefaultModeDeveloperInstructions(browserToolsAvailable) refactor, kept /Marcode/, retargeted the doesNotMatch assertion 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 match ConnectionsSettings.
  • apps/server/src/sourceControl/BitbucketSourceControlProvider.ts — kept MARCODE_BITBUCKET_* names, took upstream's added "user read" scope.
  • apps/desktop/scripts/electron-launcher.mjs — took upstream's resolveMacLauncherIconPaths/ensureMacIconIcns refactor + LAUNCHER_VERSION 15; 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's changeRequestAutoSettles + autoSettleOnMerge setting, 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's resolveDiffPathForWorkspace (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's openFileInPanel called useRightPanelStore.openFile, gone in Marcode's store).
  • apps/web/src/components/RightPanelTabs.tsx — took upstream's desktop favicon plumbing + Button-based add-panel trigger; dropped the theme prop and PierreEntryIcon (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's data-workspace-titlebar-controls).
  • apps/web/src/components/ThreadTerminalDrawer.tsxkept 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 dark refactor, @layer base stage-art defaults, alert-glass + sidebar-stage-backdrop utilities, 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 (upstream ClerkUserProfilePage refactor + Marcode branding), ChatHeader.tsx (both imports; upstream inline rename left unmounted), useHandleNewThread.ts (Marcode placement options + upstream carryComposerContent).
  • Native-titleTooltip migrations (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_URL reconciliation)
  • 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 autoSettleOnMerge setting, the Bitbucket scope) were all ported on top.

pnpm-workspace.yaml and infra/relay/package.json are unchanged, so no effect-smol / alchemy-effect subtree 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

  • 169 commits merged; pnpm-lock.yaml regenerated with pnpm install --lockfile-only.
  • Typecheck green: @t3tools/{web,shared,contracts,client-runtime,scripts,desktop,mobile,oxlint-plugin-marcode}, t3, marcode-relay.
  • Lint 0 errors; format clean on all 650 changed files.
  • Focused tests: 705 passed across the touched paths.

Full CI (Check, Test, Mobile Native Static Analysis, Release Smoke) runs on this PR.

Checklist

  • I explained what changed and why
  • This PR is small and focused — N/A: this is the scheduled 169-commit upstream sync
  • Before/after screenshots — N/A: no intended UI change
  • Video for animation/interaction changes — N/A

🤖 Generated with Claude Code

https://claude.ai/code/session_01Y7hnoykEhpviir998tucot


Generated by Claude Code

t3-codeBotand others added 30 commits August 12, 2026 14:32
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>
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>
)
Co-authored-by: Julius Marminge <julius0216@outlook.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>
chrisdeemingand others added 17 commits August 16, 2026 10:13
…#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
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 18, 2026
@github-actions

github-actionsBot commented Aug 18, 2026

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire11.3 KiB12.6 KiB+1.3 KiB (+11.5%)15.1 KiB
CodexThread snapshot wire5.5 KiB6.3 KiB+839 B (+15.0%)7.3 KiB
CodexLive turn WebSocket wire5.9 KiB6.3 KiB+489 B (+8.2%)7.8 KiB
CodexLive turn WebSocket decoded49.7 KiB51.8 KiB+2.1 KiB (+4.2%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire11.3 KiB12.6 KiB+1.3 KiB (+11.2%)15.1 KiB
ClaudeThread snapshot wire5.5 KiB6.3 KiB+815 B (+14.5%)7.3 KiB
ClaudeLive turn WebSocket wire5.8 KiB6.3 KiB+483 B (+8.1%)7.8 KiB
ClaudeLive turn WebSocket decoded50.6 KiB52.7 KiB+2.1 KiB (+4.2%)66.4 KiB
ClaudeLive turn messages16160 (0.0%)21

Baseline: 1af3478 · PR result: 720bbde · 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: 99.9 KiB
  • Claude decoded thread snapshot: 100.6 KiB

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
maarco marked this pull request as ready for review August 19, 2026 05:20
@maarco
maarco merged commit 2ffb140 into mainAug 19, 2026
13 of 14 checks passed
@maarco
maarco deleted the claude/gracious-bohr-e6mz60 branch August 19, 2026 05:20
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@extoci@juliusmarminge@PixPMusic@StiensWout@Bil0000@t3dotgg@gsimone@dominic-r@none23@maria-rcks@chrisdeeming@Lucenx9@UtkarshUsername@Adamulek123@paul-vd@WarheadTaylor@RakshithBhat03@davidhu2000@tsouth89
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

chore(upstream): sync marcode through 82b8a938 - #39

Merged
maarco merged 171 commits into
mainfrom
claude/gracious-bohr-e6mz60
Aug 19, 2026
Merged

chore(upstream): sync marcode through 82b8a938#39
maarco merged 171 commits into
mainfrom
claude/gracious-bohr-e6mz60

Conversation

@maarco

Copy link
Copy Markdown
Owner

What Changed

Daily upstream sync: merges 169 commits from pingdotgg/t3code through 82b8a938 (merge base b73232bd) into main via a --no-ff merge. 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 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 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 hardcoded t3code/ prefix to marcode/.

Fork identity (clean merges that would have silently broken)

  • vite.config.ts — registered the new rule under marcode/. Landed it at warn (not upstream's error): 35 native title tooltips remain on Marcode-only surfaces (floating editor, floating terminal shell, git actions, open-in picker) upstream never had. The rule reports every one; raise to error once they migrate.
  • .agents/skills/test-t3-mobile/scripts/pair-client.sh — upstream's new helper read T3CODE_PORT and launched com.t3tools.t3code.dev; retargeted to MARCODE_PORT / com.t3tools.marcode.dev.
  • apps/desktop/src/wsl/DesktopWslServerTree.test.ts — upstream fixture set T3CODE_HOME/T3CODE_MODE; DesktopConfig reads MARCODE_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's codexDefaultModeDeveloperInstructions(browserToolsAvailable) refactor, kept /Marcode/, retargeted the doesNotMatch assertion 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 match ConnectionsSettings.
  • apps/server/src/sourceControl/BitbucketSourceControlProvider.ts — kept MARCODE_BITBUCKET_* names, took upstream's added "user read" scope.
  • apps/desktop/scripts/electron-launcher.mjs — took upstream's resolveMacLauncherIconPaths/ensureMacIconIcns refactor + LAUNCHER_VERSION 15; 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's changeRequestAutoSettles + autoSettleOnMerge setting, 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's resolveDiffPathForWorkspace (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's openFileInPanel called useRightPanelStore.openFile, gone in Marcode's store).
  • apps/web/src/components/RightPanelTabs.tsx — took upstream's desktop favicon plumbing + Button-based add-panel trigger; dropped the theme prop and PierreEntryIcon (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's data-workspace-titlebar-controls).
  • apps/web/src/components/ThreadTerminalDrawer.tsxkept 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 dark refactor, @layer base stage-art defaults, alert-glass + sidebar-stage-backdrop utilities, 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 (upstream ClerkUserProfilePage refactor + Marcode branding), ChatHeader.tsx (both imports; upstream inline rename left unmounted), useHandleNewThread.ts (Marcode placement options + upstream carryComposerContent).
  • Native-titleTooltip migrations (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_URL reconciliation)
  • 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 autoSettleOnMerge setting, the Bitbucket scope) were all ported on top.

pnpm-workspace.yaml and infra/relay/package.json are unchanged, so no effect-smol / alchemy-effect subtree 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

  • 169 commits merged; pnpm-lock.yaml regenerated with pnpm install --lockfile-only.
  • Typecheck green: @t3tools/{web,shared,contracts,client-runtime,scripts,desktop,mobile,oxlint-plugin-marcode}, t3, marcode-relay.
  • Lint 0 errors; format clean on all 650 changed files.
  • Focused tests: 705 passed across the touched paths.

Full CI (Check, Test, Mobile Native Static Analysis, Release Smoke) runs on this PR.

Checklist

  • I explained what changed and why
  • This PR is small and focused — N/A: this is the scheduled 169-commit upstream sync
  • Before/after screenshots — N/A: no intended UI change
  • Video for animation/interaction changes — N/A

🤖 Generated with Claude Code

https://claude.ai/code/session_01Y7hnoykEhpviir998tucot


Generated by Claude Code

t3-codeBotand others added 30 commits August 12, 2026 14:32
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>
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>
)
Co-authored-by: Julius Marminge <julius0216@outlook.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>
chrisdeemingand others added 17 commits August 16, 2026 10:13
…#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
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 18, 2026
@github-actions

github-actionsBot commented Aug 18, 2026

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire11.3 KiB12.6 KiB+1.3 KiB (+11.5%)15.1 KiB
CodexThread snapshot wire5.5 KiB6.3 KiB+839 B (+15.0%)7.3 KiB
CodexLive turn WebSocket wire5.9 KiB6.3 KiB+489 B (+8.2%)7.8 KiB
CodexLive turn WebSocket decoded49.7 KiB51.8 KiB+2.1 KiB (+4.2%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire11.3 KiB12.6 KiB+1.3 KiB (+11.2%)15.1 KiB
ClaudeThread snapshot wire5.5 KiB6.3 KiB+815 B (+14.5%)7.3 KiB
ClaudeLive turn WebSocket wire5.8 KiB6.3 KiB+483 B (+8.1%)7.8 KiB
ClaudeLive turn WebSocket decoded50.6 KiB52.7 KiB+2.1 KiB (+4.2%)66.4 KiB
ClaudeLive turn messages16160 (0.0%)21

Baseline: 1af3478 · PR result: 720bbde · 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: 99.9 KiB
  • Claude decoded thread snapshot: 100.6 KiB

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
maarco marked this pull request as ready for review August 19, 2026 05:20
@maarco
maarco merged commit 2ffb140 into mainAug 19, 2026
13 of 14 checks passed
@maarco
maarco deleted the claude/gracious-bohr-e6mz60 branch August 19, 2026 05:20
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@extoci@juliusmarminge@PixPMusic@StiensWout@Bil0000@t3dotgg@gsimone@dominic-r@none23@maria-rcks@chrisdeeming@Lucenx9@UtkarshUsername@Adamulek123@paul-vd@WarheadTaylor@RakshithBhat03@davidhu2000@tsouth89