chore(upstream): sync marcode through b73232bdd31e - #25
Conversation
Co-authored-by: codex <codex@users.noreply.github.com>
pingdotgg#6189) Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…gdotgg#6187) Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…the sidebar footer (pingdotgg#6031) Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr> Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com> Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.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>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com> Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
24 upstream commits since 3da7f9c. Eleven conflicts, each resolved by hand to keep upstream's fix and Marcode's product contract. apps/web/package.json, pnpm-lock.yaml Alphabetical insert collision only. Kept both @monaco-editor/react (Marcode editor) and @noble/hashes (upstream Connect CLI OAuth). apps/web/src/components/ui/{autocomplete,combobox,select,popover}.tsx Upstream pingdotgg#6165 raised dropdown positioners z-50/z-[60] -> z-[130] so they clear the toast viewport. Marcode drives portaled overlay stacking from FLOATING_SURFACE_Z.portalOverlay (13100) as an inline style, which already wins over the toast viewport's z-100 and over any class. Kept Marcode's inline style, and took upstream's raised value in popover.tsx where the class still exists so the file stays close to upstream. autocomplete, combobox and select keep Marcode's class-free shape. apps/web/src/components/GitActionsControl.tsx Marcode extracted the quick-action icon into resolveGitQuickActionIconComponent with its own filled icon set. Ported upstream pingdotgg#6207 into the resolver: a disabled push action only carries a label, so `label === "Push"` now returns the upload glyph instead of the info glyph. Upstream pingdotgg#6194's distinct pull icon was already covered by the resolver's run_pull branch. Dropped the CloudDownloadIcon import the merge pulled in, which the resolver does not use. apps/web/src/components/RightPanelTabs.tsx Took upstream pingdotgg#6258's new launcher (letter shortcuts, blocking-layer guard, focus handling, SURFACE_UNAVAILABLE_HINTS, card layout) minus everything scoped to the right-panel files surface Marcode retired: no Files card, no `files` hint, no `copy-path` context action. Kept Marcode's "Open a panel" wording for the heading and the new aria-label. apps/web/src/components/sidebar/SidebarChrome.tsx Kept Marcode's empty chrome: FloatingPillNav owns brand, settings, usage, pull requests, and now upstream's new page-level Back row. Took two things from upstream that are not navigation: SidebarUpdatePill now renders a SidebarMenuItem, so the footer wraps it in SidebarMenu rather than leaving an orphan <li>; and SidebarUpdateArchitectureWarning, which upstream split out of SidebarUpdatePill and which would otherwise have silently dropped the Intel-build-on-Apple-Silicon warning from Marcode. apps/web/src/components/AppSidebarLayout.tsx Kept Marcode's headless SidebarControl and the settings-route sidebar suppression. Took upstream pingdotgg#6320: SidebarRail onDoubleClick resets the sidebar width, with the removeLocalStorageItem import it needs. Left out the imports that only served upstream's visible trigger and in-sidebar SettingsSidebarNav. apps/web/src/index.css Kept Marcode's monochrome .stage-blueprint block and took upstream's new per-theme --stage-art-*/--stage-night-* palettes; they target different custom properties and do not fight. Dropped upstream's .sidebar-brand / .sidebar-brand-stage rules: Marcode renders no sidebar wordmark for them to size. Pinned removals so the next sync fails loudly instead of silently: - threadSidebarWidth.test.ts: upstream's wordmark CSS assertion is replaced with one asserting the sidebar brand stays out of index.css and SidebarChrome, keeping upstream's 13rem sidebar-minimum invariant. - SidebarChrome.fork.test.tsx: also rejects upstream's new "Back" footer row. Coupled subtrees: neither pnpm-workspace.yaml nor infra/relay/package.json moved, so no .repos sync is required.
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
CI result and hotspot reviewAll four required checks are green on
Hotspot decisionsThe conflicted hotspots (
No hotspot matched Still outstanding before this leaves draftRuntime verification has not been done — this environment has no display. The surfaces that need a real browser pass, including 390px and 820px viewports:
Leaving this in draft for that pass and for the ready/merge decision. Generated by Claude Code |
What Changed
Merges
pingdotgg/t3code@b73232bdd31e83914a8a943960c7dc4b6390b39bintomain— 24 upstream commits since the last sync base3da7f9c5c35d. Merge commit0edf16a7, parents7c0314e2(origin/main) +b73232bd(upstream).Eleven conflicts, all resolved by hand. No whole-file
--ours/--theirs, no reset/restore/stash/clean, no force push.Conflict decisions
apps/web/package.json,pnpm-lock.yaml@monaco-editor/react(Marcode editor) and@noble/hashes(upstream Connect CLI OAuth).apps/web/src/components/ui/{autocomplete,combobox,select}.tsxz-50toz-[130]to clear the toast viewport. Marcode already drives portaled-overlay stacking fromFLOATING_SURFACE_Z.portalOverlay(13100) as an inline style, which beats both the class and the toast viewport'sz-100. Kept Marcode's class-free shape; upstream's intent is already satisfied.apps/web/src/components/ui/popover.tsxz-*class alongside the inline style, so it took upstream'sz-[130]value to stay close to upstream. KeptPORTAL_OVERLAY_ANCHOR_HIDDEN_CLASS.apps/web/src/components/GitActionsControl.tsxresolveGitQuickActionIconComponentwith its own filled icon set. Ported upstream pingdotgg#6207 into the resolver — a disabled push action only carries a label, solabel === "Push"now returns the upload glyph instead of the info glyph. Upstream pingdotgg#6194's clearer pull icon was already covered by the resolver'srun_pullbranch. Dropped the now-unusedCloudDownloadIconimport the merge pulled in.apps/web/src/components/RightPanelTabs.tsxSURFACE_UNAVAILABLE_HINTS, card layout) minus everything scoped to the right-panel files surface Marcode retired: no Files card, nofileshint, nocopy-pathcontext action. Kept Marcode's "Open a panel" wording for the heading and the newaria-label.apps/web/src/components/sidebar/SidebarChrome.tsxSidebarUpdatePillnow renders aSidebarMenuItem, so the footer wraps it inSidebarMenuinstead of leaving an orphan<li>; andSidebarUpdateArchitectureWarning, which upstream split out ofSidebarUpdatePilland which would otherwise have silently dropped the Intel-build-on-Apple-Silicon warning from Marcode.apps/web/src/components/AppSidebarLayout.tsxSidebarControland the settings-route sidebar suppression. Took upstream pingdotgg#6320 —SidebarRail onDoubleClickresets the sidebar width — with theremoveLocalStorageItemimport it needs. Left out the imports that only served upstream's visible trigger and in-sidebarSettingsSidebarNav.apps/web/src/index.css.stage-blueprintblock and took upstream's new per-theme--stage-art-*/--stage-night-*palettes (pingdotgg#6183); they target different custom properties and do not fight. Dropped upstream's.sidebar-brand/.sidebar-brand-stagerules — Marcode renders no sidebar wordmark for them to size.Removals pinned with tests
Per
AGENTS.md, a surface Marcode retired is invisible to a merge, so two pins were added/extended:threadSidebarWidth.test.ts— upstream's new wordmark CSS assertion is replaced by one asserting the sidebar brand stays out ofindex.cssandSidebarChrome.tsx. Upstream'sTHREAD_SIDEBAR_MIN_WIDTH === 13reminvariant is kept as its own case.SidebarChrome.fork.test.tsx— the existing footer-navigation pin now also rejects upstream's new "Back" row.Fork-boundary sweep (clean merges that could still break)
Grepped the merged tree for upstream identity Marcode renames. All correct:
MARCODE_HOMEstill guardsresolveLauncherBaseDir; theT3CODE_HOMErejection test is intact.WORKTREE_BRANCH_PREFIXis referenced symbolically everywhere — no hardcodedt3code/<hex>fixtures landed.T3_BOOT_SERVICE_UNIT,T3_SERVICE_LAUNCHER_CONTEXT,@t3tools/*, thet3package/CLI name,t3code:storage keys,t3code://URL scheme.publicConfig.tsCLI-OAuth work introduced no__T3CODE_BUILD_*define; the file still reads Marcode's__MARCODE_BUILD_*constants.Coupled subtrees
Neither
pnpm-workspace.yamlnorinfra/relay/package.jsonchanged, so nosync:reposrun is required.Why
Scheduled daily upstream sync. Upstream shipped Connect CLI OAuth parameter preservation, OKLCH theme palettes, Open VSX theme search, mobile thread-title regeneration, Azure DevOps SSH remote detection, Windows drive-root normalization, and a batch of web fixes; Marcode needs those without losing the floating pill nav, the retired right-panel files surface, or the branding split.
UI Changes
Not captured — this container has no display and no way to drive the web client. Runtime verification of the touched surfaces (right-panel launcher at 390px/820px, sidebar footer update pill, dropdown stacking over toasts, theme-aware stage art) is still outstanding and should happen before this leaves draft.
Checklist
Verification run
npx vp test run— 25 focused test files, 339 tests, all passing (sidebar chrome/width/stage backdrop, right-panel store, git actions logic, theme boot/palette/import, Open VSX, Clerk appearance, composer actions, changed-files tree, thread error banner, settings panels logic, chat index titlebar, connect CLI auth, shared connectAuth/path/sourceControl, server publicConfig, mobile title regeneration + wide markdown blocks).npx vp run --filter <pkg> typecheck—@t3tools/web,@t3tools/shared,@t3tools/contracts,t3,@t3tools/mobileall exit 0. Thet3output lists pre-existing Effect lint suggestions indecider.ts/workflowScriptQuery.ts/*PullRequestCli.ts, none in files this merge touched.npx vp fmt --check— 71 changed files, all correctly formatted.npx vp linton every changed directory — exit 0; the warnings printed are pre-existing and live in files outside this delta.Noted, not changed
.stage-blueprint's--stage-bp-top/mid/bottomcustom properties are defined inindex.cssbut never read — nothing referencesvar(--stage-bp-*), and the blueprint art actually renders from--stage-art-*. That predates this merge, so it was left alone, but it means the "Mentiko flat monochrome stage art" override is currently inert and upstream's new theme-aware palettes will drive that artwork.Closes #24.
Generated by Claude Code