chore(upstream): sync marcode through 223ff449 - #74
Merged
Conversation
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
…en reader (pingdotgg#5521) Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
…gg#4685) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Long runs display total minutes, such as `419m 50s`, which is hard to read. Show `6h 59m 50s` instead. Web, desktop, and mobile use the shared formatter for long live, completed, and stopped runs. ## Verification - 210 tests pass with `vp test run packages/shared/src/orchestrationTiming.test.ts apps/web/src/components/chat/MessagesTimeline.logic.test.ts apps/mobile/src/lib/threadActivity.test.ts`. - Shared, web, and mobile typechecks pass. - Changed-file lint and formatting pass, with existing lint warnings. - Browser verification and screenshots skipped at Theo's request. Created with GPT-6 Astra (preview) in Codex.
…s the binary (pingdotgg#9325) Co-authored-by: Claude Code <noreply@anthropic.com>
Press ArrowUp in an empty composer to get the last prompt sent in this thread. ArrowUp again goes further back, ArrowDown comes forward, and going past the newest prompt clears the composer. History is per thread and derived from the thread's user messages on the keypress, so nothing new is stored or synced. Send-time appends (terminal and element context, preview annotations, review comments, the ultrathink prefix) and app-composed sends are stripped. With text in the composer, arrows move the caret unless the caret is on the first or last visual line of an unedited recalled prompt. Modifiers, IME composition, menus, approvals, and pending questions take priority. Attachments are not restored. Prior art: pingdotgg#1778 by @PratyushChauhan, pingdotgg#4336 by @mfazekas, pingdotgg#7952 by @sethwebster. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…lback (pingdotgg#10346) Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
…gg#10347) Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
…g#10123) Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
…dotgg#10120) Co-authored-by: Ross Cawston <rcawston@users.noreply.github.com>
…10112) Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Merges 99 upstream commits on top of the 761d4ba integration (PR #73), so this branch carries the whole unmerged sync backlog through today's upstream head in one reviewable change. Conflict decisions (26 conflicted paths): - .github/workflows/ci.yml — kept both: Marcode's standalone ripgrep step (pinned by scripts/upstream-sync-workflow.test.ts) and upstream's new nightly-release check step. - knip.jsonc — kept both Marcode's fork-seam ignore list and upstream's new ui/*.tsx ignoreIssues. - packages/ssh/src/tunnel.ts — kept Marcode's `.marcode` paths and the `@@MARCODE_STATE_KEY@@` placeholder. Taking upstream's `@@T3_STATE_KEY@@` would silently break placeholder substitution in applyScriptPlaceholders. - apps/server/src/persistence/Migrations.ts — upstream's new 048 ProjectionThreadBranchPullRequest renamed to Marcode's next free id 049; Marcode's ProjectWorkspaceLayout keeps 033 so applied ids never renumber. - packages/contracts/src/rpc.ts — kept Marcode's project file RPCs, took upstream's un-export of WsShellOpenInEditorRpc. - versionSkew.ts / relayClient.ts / clientPersistenceStorage.ts — kept Marcode's key and env-var values, followed upstream's un-export refactor. - packages/client-runtime/src/rpc/client.ts — took upstream's relocation of catchCause into the outer pipe (after its new onDefect tapCause) and re-applied Marcode's isTerminalFailure guard onto it. - packages/client-runtime/src/state/threads.ts — combined upstream's string-based setStreamError and onDefect with Marcode's sawMissingSnapshot terminal-deletion handling. - apps/web/src/rightPanelStore.ts — kept Marcode's retired file/files surfaces removed while taking upstream's whole openProactive/userActionRevision feature. Dropped openFile, openAttachment, reconcileFileSurfaces and the normalizeRevealLine helper that only served them. - apps/web/src/components/ChatView.tsx — took upstream's activeThreadMetadata and proactive-panel observation (its own relink machinery, since replaced), kept Marcode's threadRepository/openThreadPullRequest for the pill-nav thread actions and Marcode's ambient-only ChatHeader props. - apps/web/src/routes/_chat.index.tsx — took upstream's clearer connection prerequisite copy under Marcode Connect branding. - RepositoryIdentityResolver.test.ts — took upstream's parameterized add/replace rewrite; its fixture names carry no Marcode meaning and the surrounding merged code already uses them. - DesktopServerExposure.test.ts — Marcode's MARCODE_DESKTOP_* env names with upstream's 100.90.1.2 fixture value, which upstream's merged assertions expect. - DesktopClerk.test.ts — upstream un-exported createDesktopClerkBridge and deleted the test that pinned Marcode's desktop schemes. Replaced with a focused pin on ElectronProtocol.getDesktopScheme/getDesktopUrl so a future rename fails loudly instead of merging in silently. Fork-boundary breaks that merged cleanly and produced no conflict: - ProjectSetupScriptRunner.test.ts used upstream's T3CODE_PROJECT_ROOT and T3CODE_WORKTREE_PATH; the producer emits MARCODE_*. - rightPanelStore.test.ts and ChatView.logic.test.ts absorbed upstream tests driving openFile/reconcileFileSurfaces. Ported that proactive-panel coverage onto surfaces this fork has rather than dropping it. - useUnifiedWorkspaceProject.ts imported useDiscoveredPorts, which upstream removed in favour of useDiscoveredPortsState().servers. - ThreadPullRequestReactor.test.ts and serverRuntimeStartup.test.ts built Project fixtures without Marcode's required workspaceLayout fields. - Layout.astro shipped upstream's new social-card meta as T3 Code (og:site_name, og:image:alt, @t3dotgg) and index.astro labelled the Git illustration "T3 Code"; rebranded to Marcode. - Migrations.test.ts window widened to -17 so id 33 stays anchored, per the instruction in that test. Verified: typecheck clean across contracts, client-runtime, web, server, shared, ssh, desktop, marketing and scripts; focused tests green for the resolved paths (rightPanelStore, ChatView.logic, threads-atoms, threads-sync, Migrations, RepositoryIdentityResolver, ProjectSetupScriptRunner, ThreadPullRequestReactor, serverRuntimeStartup, DesktopServerExposure, DesktopClerk, ElectronProtocol, upstream-sync-workflow, serviceLauncher, bootService); vp fmt --check and vp lint clean. No coupled vendored subtree moved: pnpm-workspace.yaml and infra/relay/package.json are unchanged by this merge. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LYMf1kJ1QNpoF5EvYsC7p9
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. |
…dules The 223ff44 sync brings upstream's expanded `knip:check`: the `--exports` run went from two packages to eight, and gained a schema preprocessor. That audits apps/web, contracts, client-runtime, shared and ssh for unused exports for the first time, so it reported 54 pre-existing findings in Marcode-owned code and turned the Check job red. Every finding is this fork's own code, and none of it is new in the sync. Two changes, both minimal: - SidebarProjectWorkspaceSection exported itself twice. Sidebar.tsx and the seam test both use the named export and nothing imports the default, so the default is removed. That clears the duplicate-export finding too. - The rest are scoped in knip.jsonc, per path rather than wholesale, so deleting a dead export later also deletes its entry here. They are Marcode surfaces that export a cohesive set — the floating editor's adapted components, the ambient effects module, the unified workspace tree, the pill-nav shell — or hold one currently-unreferenced helper. Contracts is listed because every RPC is exported for symmetry with its siblings and consumed by the RpcGroup declared in the same file, so the audit never sees a cross-module importer. Pruning the genuinely dead ones is a product decision and does not belong in an upstream sync; upstream's stricter audit is kept for everything else. Verified by running the Check job's steps in order: `vp run knip:check` (reproduced the 54 findings first, now clean), `vp check` (0 errors), `vpr typecheck`, `vp run build:desktop` and verify-preload-bundle all pass, plus the unified-workspace seam and Sidebar.logic tests. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LYMf1kJ1QNpoF5EvYsC7p9
maarco
marked this pull request as ready for review
September 6, 2026 22:42
This was referenced Sep 6, 2026
Owner
Author
|
Verification record for the merged head
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What Changed
Merges
pingdotgg/t3code@223ff449(today's upstream head) intomain.This PR supersedes the whole open sync backlog. It is built on the resolution in #73 (upstream
761d4bac) and then merges the remaining 99 upstream commits, so it carries every unmerged sync fromf035a0f4through223ff449in one reviewable change. Merging it should let #58, #61, #63, #65, #68, #69, #71, #72 and #73 be closed.Merge commit
1218ed4e, parentscfa4587a(Marcode) and223ff449(upstream). 546 files, +22,612 / −7,728. 26 conflicted paths, all resolved by hand.Conflict decisions
.github/workflows/ci.ymlupstream-sync-workflow.test.ts) and upstream's new nightly-release checkknip.jsoncui/*.tsxignoreIssuespackages/ssh/src/tunnel.ts.marcodepaths and@@MARCODE_STATE_KEY@@. Upstream's@@T3_STATE_KEY@@would have silently broken placeholder substitutionMigrations.ts048_ProjectionThreadBranchPullRequestrenamed to Marcode's next free id 049;ProjectWorkspaceLayoutkeeps 033 so applied ids never renumbercontracts/src/rpc.tsWsShellOpenInEditorRpcversionSkew.ts,relayClient.ts,clientPersistenceStorage.tsclient-runtime/rpc/client.tscatchCauseafter its newonDefecttap; re-applied Marcode'sisTerminalFailureguard onto itclient-runtime/state/threads.tssetStreamError+onDefectwith Marcode'ssawMissingSnapshotterminal-deletion handlingrightPanelStore.tsfile/filessurfaces removed and took upstream's wholeopenProactive/ user-action-revision feature. DroppedopenFile,openAttachment,reconcileFileSurfacesand thenormalizeRevealLinehelper that only served themChatView.tsxactiveThreadMetadata+ proactive-panel observation (replacing its own relink machinery); kept Marcode'sthreadRepository/openThreadPullRequestfor pill-nav thread actions and Marcode's ambient-onlyChatHeaderprops_chat.index.tsxRepositoryIdentityResolver.test.tsDesktopServerExposure.test.tsMARCODE_DESKTOP_*names with upstream's100.90.1.2fixture value, which upstream's merged assertions expectDesktopClerk.test.tscreateDesktopClerkBridgeand deleted the test pinning Marcode's desktop schemes. Replaced with a focused pin onElectronProtocol.getDesktopScheme/getDesktopUrlso a future rename fails loudlyFork-boundary breaks that merged cleanly (no conflict)
These are the dangerous ones — all found by audit, all fixed:
ProjectSetupScriptRunner.test.tsusedT3CODE_PROJECT_ROOT/T3CODE_WORKTREE_PATH; the producer emitsMARCODE_*.rightPanelStore.test.ts(+106 lines) andChatView.logic.test.ts(+270 lines) absorbed upstream tests drivingopenFile/reconcileFileSurfaces. That proactive-panel coverage was ported onto surfaces this fork has rather than deleted.useUnifiedWorkspaceProject.tsimporteduseDiscoveredPorts, which upstream removed in favour ofuseDiscoveredPortsState().servers.ThreadPullRequestReactor.test.tsandserverRuntimeStartup.test.tsbuiltProjectfixtures without Marcode's requiredworkspaceLayoutVersion/workspaceLayout.Layout.astroshipped upstream's new social-card meta as T3 Code (og:site_name,og:image:alt,@t3dotgg) andindex.astrolabelled the Git illustration "T3 Code" — rebranded to Marcode.Migrations.test.tswindow widened to-17so id 33 stays anchored, per the instruction written in that test.Why
The daily upstream sync has not landed since
f035a0f4, and each run was re-deriving an ever-larger delta into a new draft PR. Building on #73's resolution instead of restarting frommainreduced today's work from 131 conflicts to 26 and produces one branch that is actually current.UI Changes
Not captured — this container has no browser session. Upstream touched web surfaces (right panel, chat header, sidebar, marketing site), so the runbook's runtime verification step still needs to be run before this leaves draft.
Needs a decision before merge
apps/marketing/95page. Upstream added a complete retro landing page (95.astro,retro.css, 32 image assets, ~1,727 lines) branded "T3 Code '95", including T3 Code product box art. It is carried here unmodified because rebranding it is a product decision, not a merge mechanic. Marcode should not publish it as-is — either rebrand/replace the assets or drop the page.Pre-existing issues noticed (not touched by this merge)
t3.jsonline 13: the Windows setup command still expands$env:T3CODE_PROJECT_ROOT, while the macOS/Linux command uses$MARCODE_PROJECT_ROOT. The Windows path expands to empty today.apps/marketing/src/lib/site.ts:GITHUB_REPOSITORY_URLstill points atpingdotgg/t3code.Checklist
Verification run
contracts,client-runtime,web,server,shared,ssh,desktop,marketing,scriptsrightPanelStore,ChatView.logic,threads-atoms,threads-sync,Migrations,RepositoryIdentityResolver,ProjectSetupScriptRunner,ThreadPullRequestReactor,serverRuntimeStartup,DesktopServerExposure,DesktopClerk,ElectronProtocol,upstream-sync-workflow,serviceLauncher,bootServicevp fmt --checkandvp lintclean (lint exit 0, zero errors)pnpm-workspace.yamlandinfra/relay/package.jsonunchanged, so nosync:reposneeded🤖 Generated with Claude Code
https://claude.ai/code/session_01LYMf1kJ1QNpoF5EvYsC7p9
Generated by Claude Code