Skip to content

chore(upstream): sync marcode through b73232bdd31e - #25

Draft
maarco wants to merge 25 commits into
mainfrom
claude/gracious-bohr-9g2trc
Draft

chore(upstream): sync marcode through b73232bdd31e#25
maarco wants to merge 25 commits into
mainfrom
claude/gracious-bohr-9g2trc

Conversation

@maarco

@maarco maarco commented Aug 12, 2026

Copy link
Copy Markdown
Owner

What Changed

Merges pingdotgg/t3code@b73232bdd31e83914a8a943960c7dc4b6390b39b into main — 24 upstream commits since the last sync base 3da7f9c5c35d. Merge commit 0edf16a7, parents 7c0314e2 (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

Path Decision
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}.tsx Upstream pingdotgg#6165 raised the dropdown positioner from z-50 to z-[130] to clear the toast viewport. Marcode already drives portaled-overlay stacking from FLOATING_SURFACE_Z.portalOverlay (13100) as an inline style, which beats both the class and the toast viewport's z-100. Kept Marcode's class-free shape; upstream's intent is already satisfied.
apps/web/src/components/ui/popover.tsx Same, but this file still carries a z-* class alongside the inline style, so it took upstream's z-[130] value to stay close to upstream. Kept PORTAL_OVERLAY_ANCHOR_HIDDEN_CLASS.
apps/web/src/components/GitActionsControl.tsx Marcode extracted icon selection 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 clearer pull icon was already covered by the resolver's run_pull branch. Dropped the now-unused CloudDownloadIcon import the merge pulled in.
apps/web/src/components/RightPanelTabs.tsx Took upstream pingdotgg#6258's new launcher (letter shortcuts, blocking-layer guard, focus-on-mount, 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 upstream's new page-level Back row. Took two upstream changes that are not navigation: SidebarUpdatePill now renders a SidebarMenuItem, so the footer wraps it in SidebarMenu instead of 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#6320SidebarRail 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 (pingdotgg#6183); 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.

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 of index.css and SidebarChrome.tsx. Upstream's THREAD_SIDEBAR_MIN_WIDTH === 13rem invariant 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_HOME still guards resolveLauncherBaseDir; the T3CODE_HOME rejection test is intact.
  • WORKTREE_BRANCH_PREFIX is referenced symbolically everywhere — no hardcoded t3code/<hex> fixtures landed.
  • Compatibility identifiers left upstream-shaped: T3_BOOT_SERVICE_UNIT, T3_SERVICE_LAUNCHER_CONTEXT, @t3tools/*, the t3 package/CLI name, t3code: storage keys, t3code:// URL scheme.
  • Upstream's new publicConfig.ts CLI-OAuth work introduced no __T3CODE_BUILD_* define; the file still reads Marcode's __MARCODE_BUILD_* constants.

Coupled subtrees

Neither pnpm-workspace.yaml nor infra/relay/package.json changed, so no sync:repos run 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

  • This PR is small and focused — one upstream sync, one merge commit
  • I explained what changed and why
  • I included before/after screenshots for any UI changes — not possible in this environment, see above
  • I included a video for animation/interaction changes — n/a

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/mobile all exit 0. The t3 output lists pre-existing Effect lint suggestions in decider.ts / workflowScriptQuery.ts / *PullRequestCli.ts, none in files this merge touched.
  • npx vp fmt --check — 71 changed files, all correctly formatted.
  • npx vp lint on 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/bottom custom properties are defined in index.css but never read — nothing references var(--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

StiensWout and others added 25 commits August 11, 2026 17:21
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.
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 12, 2026
@github-actions

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 11.3 KiB 11.3 KiB −5 B (−0.0%) 15.1 KiB
Codex Thread snapshot wire 5.5 KiB 5.5 KiB +9 B (+0.2%) 7.3 KiB
Codex Live turn WebSocket wire 5.9 KiB 5.9 KiB −14 B (−0.2%) 7.8 KiB
Codex Live turn WebSocket decoded 49.7 KiB 49.7 KiB 0 B (0.0%) 66.4 KiB
Codex Live turn messages 16 16 0 (0.0%) 21
Claude Total thread wire 11.3 KiB 11.3 KiB +25 B (+0.2%) 15.1 KiB
Claude Thread snapshot wire 5.5 KiB 5.5 KiB −1 B (−0.0%) 7.3 KiB
Claude Live turn WebSocket wire 5.8 KiB 5.9 KiB +26 B (+0.4%) 7.8 KiB
Claude Live turn WebSocket decoded 50.6 KiB 50.6 KiB 0 B (0.0%) 66.4 KiB
Claude Live turn messages 16 16 0 (0.0%) 21

Baseline: 7c0314e · PR result: 0edf16a · 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: 94.6 KiB
  • Claude decoded thread snapshot: 95.4 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

maarco commented Aug 12, 2026

Copy link
Copy Markdown
Owner Author

CI result and hotspot review

All four required checks are green on 0edf16a7:

Check Result
Check ✅ success
Test ✅ success
Mobile Native Static Analysis ✅ success
Release Smoke ✅ success

claude-review passed with no review comments. Thread-transfer impact report is within every ceiling. Native fingerprint diff is still queued — it is not in requiredPullRequestChecks and is not blocking.

Hotspot decisions

The conflicted hotspots (AppSidebarLayout.tsx, sidebar/SidebarChrome.tsx, ui/popover.tsx, index.css) are decided in the PR body. The remaining hotspot matches merged without a conflict and were reviewed rather than assumed:

No hotspot matched apps/server/src/provider/**, apps/web/src/editor/**, apps/web/src/components/files/**, assets/**, apps/desktop/resources/**, or apps/marketing/**, so no provider-focused suite and no icons:check run is required for this delta.

Still outstanding before this leaves draft

Runtime verification has not been done — this environment has no display. The surfaces that need a real browser pass, including 390px and 820px viewports:

  1. Right-panel empty state — new launcher cards, letter shortcuts, and that F no longer maps to anything.
  2. Sidebar footer — update pill inside its new SidebarMenu row, and the architecture warning above it.
  3. Dropdown/menu/select/popover stacking over a visible toast.
  4. Theme-aware environment stage art across the built-in palettes.

Leaving this in draft for that pass and for the ready/merge decision.


Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

upstream sync blocked: pingdotgg/t3code@b73232bdd31e