chore(upstream): sync marcode through 8b2838e0 - #76
Conversation
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
…dotgg#10463) Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
…ccount (pingdotgg#10462) Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
… second one (pingdotgg#10440) Co-authored-by: Claude Code <noreply@anthropic.com>
…ed (pingdotgg#10435) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…dotgg#10019) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…diff fallback (pingdotgg#9828) Co-authored-by: James <jamescollard2005@gmail.com>
… update depth errors (pingdotgg#7138) Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
…0493) Onboarding listed every directory Claude Code or Codex had ever run in as one flat list of paths, with everything from the last 30 days preselected. On my machine that was 270 rows and 80 preselected. Most of them were Codex scratch folders, worktrees, and one-off questions. I wanted two or three projects and had no fast way to get there. The scanner now reads each candidate's `.git/config` directly, so the client can group clones by origin and show the GitHub `owner/name`. Linked worktrees, Codex scratch directories under `~/Documents/Codex`, `~/Downloads`, and temp roots are no longer offered. Folders that are not git repositories collapse under "Other folders". The default selection requires a git repository with at least three threads. Select all and Select none sit above the list, and each row shows the source icons, thread count, and last activity. On the same machine this drops the list to 162 rows and the default selection to 16. Mobile has no project import step, so there is no mobile change. Created with Claude Fable 5.1 in Claude Code.
33 upstream commits since 52b2bf7. Nine conflicts, plus four fork-boundary breaks that merged with no conflict at all. Conflict decisions ------------------ .devcontainer/devcontainer.json — upstream rewrote the container so setup actually works (pingdotgg#7875: ubuntu-24.04 base, node:2 + rust + gh features, onCreate/updateContent scripts, forwarded ports, cache volumes). Took all of it, then re-applied Marcode's identity: the container name, the bun feature AGENTS.md needs for `bun:sqlite` test-data seeding, and `MARCODE_HOME` -> `.marcode` in place of upstream's `T3CODE_HOME` -> `.t3`. Marcode's server only reads MARCODE_HOME, so upstream's variable would have been ignored and sent container dev state at the shared home. apps/marketing/src/pages/95.astro — modify/delete. Marcode retired the upstream-branded /95 page and pins the removal in retiredRoutes.test.ts. Upstream's fix (pingdotgg#10460, nightly downloads to /download?channel=nightly) is confined to that one file, so nothing was left to port. Kept deleted. apps/server/src/project/AgentSessionScanner.test.ts — upstream inserted two new exclusion tests where Marcode had renamed a fixture `.t3` -> `.marcode`. Kept both upstream tests and Marcode's renamed one. The scanner's own `/.marcode/worktrees/` seam was untouched by the merge. apps/web/src/components/onboarding/WelcomeWizard.tsx — upstream rewrote the wizard into a shared multi-computer dialog (pingdotgg#10465). Took the rewrite, then re-applied Marcode's three intents: product identity in the copy, the brand mark (this fork has no `T3Wordmark`; `MarcodeMark` replaced it), and the `TerminalViewport` prop contract, which here has no `providerInstanceId` or `visible` and requires an `onAddTerminalContext` sink. apps/web/src/hooks/useTheme.ts, useTheme.test.ts — upstream deleted the onboarding theme surface wholesale. Marcode's wizard is deliberately always dark (hotspot added in 082418a), so kept `mountOnboardingTheme`, its branches, and its tests. apps/web/src/index.css — both sides appended at the same two points. Kept upstream's AnimatedHeight collapsible rules and sidebar drag-label animation alongside Marcode's stage-blueprint tokens and chrome. docs/user/welcome-wizard.md — took upstream's new copy for multi-computer selection and repository-grouped import, in Marcode's product voice. packages/shared/src/git.test.ts — kept Marcode's `T3Tools/Marcode` fixture and added upstream's new `ssh://` remote case against it. Clean merges that would have silently broken the fork ----------------------------------------------------- 1. FirstRunGate.tsx lost its `mountOnboardingTheme` mount when upstream removed the feature. Restored; without it the wizard follows the saved light preference. 2. index.css lost `html[data-onboarding-surface]:root` and the matching contrast probe. Restored, so portaled menus and tooltips keep the wizard's palette. 3. docs/internals/devcontainer.md arrived new from upstream naming `T3CODE_HOME`, `.t3`, and `T3CODE_DEV_ALLOWED_ORIGINS` — none of which this fork reads. Corrected. 4. .devcontainer/on-create.sh writes the container's first-run notice in upstream's product voice. Corrected. None of these produce a conflict marker, so apps/web/src/components/onboarding/onboardingTheme.seam.test.ts now pins the whole dark-onboarding seam: the exported theme owner, both mounts, the CSS block, the seam comments, and the absence of `T3Wordmark`. Compatibility identifiers left upstream-shaped on purpose: `@t3tools/*`, the `t3` CLI name and its `npx t3 …` commands, `T3_BOOT_SERVICE_UNIT`, `T3_SERVICE_LAUNCHER_CONTEXT`, `T3CODE_DESKTOP_*`, `T3CODE_TRANSFER_*`, and `t3code-*` cache volume names. Neither coupled vendored subtree source moved, so no `sync:repos` run was needed. Verified: focused tests for every resolved path (AgentSessionScanner 81, useTheme, git, forkIdentity, branding, retiredRoutes, the new seam test) plus the unified-workspace, right-panel, chat-ambient, sidebar-drag and project-import suites — 550 tests, all passing. Typecheck clean for web, shared, server, mobile and marketing. `vp fmt --check` and `vp lint` clean on the changed scope. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LE6a6L6CrRksuzTjFLR9YM
|
What's failing. Job 101794066018 on One turn, two seconds, zero cost, empty Why it isn't this PR's. Two further reasons the diff can't be the cause: the workflow restores No fix ported, because none exists in the repository. This is a credentials/account condition on the review app, not a code path. Nothing I could add to this branch would turn it green, and widening the PR to guess at workflow config would be worse than leaving it red. Someone with access to the repo's Claude secrets should check whether the app's credential expired or was revoked around 2026-09-07 02:30 UTC. Not a required check. Branch protection requires I'm re-running the job once to confirm it fails identically on this head SHA, and will keep watching the PR until the required checks are terminal. Generated by Claude Code |
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. |
|
Update on the three red checks.
Why local verification missed both. I installed dependencies with Everything else on this head is green, including all the other required checks — Generated by Claude Code |
Both CI failures on the sync merge were in the seam test it added, not in
any conflict resolution.
Check / typecheck — `onboardingTheme.seam.test.ts(19,25): error TS377057
effect(nodeBuiltinImport)`. apps/web forbids `node:fs`. The test reaches for
it because a `?raw` import of a stylesheet resolves to an empty string under
the test CSS pipeline, so reading index.css is the only way to assert on the
onboarding palette. Opt out with the same
`// @effect-diagnostics nodeBuiltinImport:off` pragma
scripts/brand-mark-ownership.test.ts already uses for exactly this: a
fork-boundary assertion that has to read a checked-in file.
Test — brand-mark-ownership.test.ts flagged two references to upstream's
wordmark component, one in the WelcomeWizard seam comment and one in the seam
test. That test is right. It scans every file under apps/{web,mobile,desktop}
/src for the literal name and assembles the string at runtime so it cannot
match itself; spelling the name out in a comment defeats it just as much as a
real import would. The comment now describes the component instead of naming
it, and the seam test asserts the positive — that `MarcodeMark` is imported
and rendered — leaving the removal to brand-mark-ownership.test.ts, which
already owns it across every source root and does it better.
Local verification had missed both. Dependencies were installed with
--ignore-scripts, so `prepare` never ran `effect-tsgo patch` and the Effect
language-service diagnostics were inactive; the patch is applied now,
TS377057 reproduced, and it clears. The brand-mark miss was plainer: focused
tests covered the resolved paths but not the guard on the identifier the
comment had just introduced.
Verified: both failures reproduced then fixed; `vp run -r typecheck` clean
across all 15 packages (0 errors); brand-mark-ownership and the seam test
pass; fmt and lint clean on both files.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LE6a6L6CrRksuzTjFLR9YM
What Changed
Merged
pingdotgg/t3code@8b2838e0— 33 upstream commits since52b2bf77a941— into a two-parent merge commit on this branch. Nine files conflicted; four more broke the fork boundary while merging perfectly cleanly.Conflict decisions
.devcontainer/devcontainer.jsonnode:2+ rust + gh features, on-create/update-content scripts, forwarded ports, cache volumes. Re-applied Marcode's identity — container name, thebunfeature AGENTS.md needs forbun:sqlitetest-data seeding, andMARCODE_HOME→.marcodein place of upstream'sT3CODE_HOME→.t3.apps/marketing/src/pages/95.astro/95page and pins that inretiredRoutes.test.ts. Upstream's pingdotgg#10460 fix is confined to that file, so nothing was left to port. Kept deleted.apps/server/src/project/AgentSessionScanner.test.ts.t3→.marcode. Kept all three. The scanner's/.marcode/worktrees/seam was untouched by the merge.apps/web/src/components/onboarding/WelcomeWizard.tsxMarcodeMarkreplaced it), and theTerminalViewportprop contract, which here has noproviderInstanceId/visibleand requires anonAddTerminalContextsink.apps/web/src/hooks/useTheme.ts,useTheme.test.tsmountOnboardingTheme, its branches, and its tests stay.apps/web/src/index.cssdocs/user/welcome-wizard.mdpackages/shared/src/git.test.tsT3Tools/Marcodefixture and added upstream's newssh://remote case against it.Clean merges that would have silently broken the fork
None of these produce a conflict marker:
FirstRunGate.tsxlost itsmountOnboardingThememount when upstream removed the feature. Restored — without it the wizard follows the saved light preference.index.csslosthtml[data-onboarding-surface]:rootand the matching contrast probe. Restored, so portaled menus and tooltips keep the wizard's palette.docs/internals/devcontainer.mdarrived new from upstream namingT3CODE_HOME,.t3, andT3CODE_DEV_ALLOWED_ORIGINS— none of which this fork reads. Corrected..devcontainer/on-create.shwrites the container's first-run notice in upstream's product voice. Corrected.New
apps/web/src/components/onboarding/onboardingTheme.seam.test.tspins the dark-onboarding seam — the exported theme owner, both mounts, the CSS block, the seam comments, and that the wizard renders Marcode's brand glyph — so the next sync fails loudly instead of reverting it quietly. The matching removal (that upstream's wordmark component is absent from every source root) stays owned byscripts/brand-mark-ownership.test.ts, which already does it better.Why
Daily upstream sync. Upstream's delta carries real correctness and operational work worth taking (a devcontainer that actually builds, a Cursor transport-failure fix, Codex Spark limit handling, a large mobile thread-lifecycle pass, project-import grouping), and none of it should be dropped because it landed in a customized file. Every conflict was resolved by combining both intents rather than taking a side, and the four no-conflict breaks are exactly the class the fork-boundary rules in
AGENTS.mdexist to catch.Compatibility identifiers left upstream-shaped on purpose:
@t3tools/*, thet3CLI name and itsnpx t3 …commands,T3_BOOT_SERVICE_UNIT,T3_SERVICE_LAUNCHER_CONTEXT,T3CODE_DESKTOP_*,T3CODE_TRANSFER_*, andt3code-*cache volume names.Neither coupled vendored subtree source (
pnpm-workspace.yaml,infra/relay/package.json) moved, so nosync:reposrun was needed.UI Changes
The onboarding wizard changes shape (upstream's redesign) and the chat composer swaps a generic file icon for Pierre icons, but this environment is headless — no browser or simulator — so no before/after captures were taken. Live verification of the wizard at 390px and 820px is still owed before this leaves draft, per the sync runbook's runtime-verification step for
apps/web/**hotspots. That is the one thing blocking this from being ready for review.Checklist
Verification
CI on
0c81071f: all four required checks green —Check,Test,Mobile Native Static Analysis,Release Smoke— plusTest Server 1/2/3,Rust,Native fingerprint diff, andMobile Native Changes. Thread-transfer impact is within every ceiling. No merge conflict againstmain.claude-reviewis red and is not this PR's failure: the review app's own credentials. It has failed on every run since 2026-09-07 02:30 UTC, including seven on PR #75's unrelated branch, and its re-run here failed identically. Details in the comments below. It is not a required check.Local, before pushing:
apps/websuite: 356 files, 4462 tests, all passing.vp run -r typecheck: clean across all 15 packages, 0 errors.AgentSessionScanner(81),useTheme,git,forkIdentity,branding,retiredRoutes,brand-mark-ownership, the new seam test, plus the unified-workspace, right-panel, chat-ambient, sidebar-drag/pointer, ChatView-logic and project-import suites.vp fmt --checkandvp lintclean on the changed scope.The second commit here (
0c81071f) fixes two defects CI caught in the seam test I added — a bannednode:fsimport inapps/web, and two references to upstream's wordmark name thatbrand-mark-ownership.test.tscorrectly rejects. Neither touched a conflict resolution. Both are explained in the commit message and in the comments.🤖 Generated with Claude Code
https://claude.ai/code/session_01LE6a6L6CrRksuzTjFLR9YM