Skip to content

chore: sync with upstream/main (83a3674ff) - #86

Merged
Fryuni merged 639 commits into
mainfrom
fryuni/merge-upstream-main-7
Nov 7, 2026
Merged

Fryuni merged 639 commits into
mainfrom
fryuni/merge-upstream-main-7

Conversation

@Fryuni

@Fryuni Fryuni commented Nov 7, 2026

Copy link
Copy Markdown
Owner

Problem

The fork is 628 commits behind upstream/main. This sync keeps the features recorded in docs/adr and uses upstream's implementation wherever it can.

Change

Merged pingdotgg/t3code main at 83a3674ffd84. 27 files conflicted, and 3 upstream workflow changes hit workflows the fork deletes (desktop-macos-preview.yml, release-desktop.yml, release.yml), which stay deleted per ADR 0011. git show --remerge-diff 70a42ae18c shows the whole conflict resolution.

Re-homed on upstream's structure

  • ADR 0011, release source. Upstream's managed-policy update mirror (#29911) is folded into the fork's resolveUpdateTarget: builds without the define pick the version from the mirror or the channel as upstream does, and fork builds keep following their own latest release. ci.yml keeps the fork's job layout, ports upstream's surrogate-pair output filter into Test, and keeps the built-web boot check in Test Web, since the fork has no build job.
  • ADR 0010, public URL. The fork's tests move onto upstream's re-indented auth-policy harness. The WSL environment strip now uses upstream's env.
  • ADR 0018, dead keys. Upstream let typed delimiters wrap shown Markdown source. That rule now lives in the fork's shared surround handler, which keeps its composition guards.
  • ADR 0007 / 0008 / 0009 / 0017 / 0023. The model row keeps the slug-qualifier label beside upstream's new check icon. ChatView and mobile settings re-apply the fork's diff onto upstream's re-indented files. The fork's createBranch clause is added to upstream's rewritten t3_thread_launch description. The mod+s splits sit beside upstream's new mod+shift+d dictation shortcut.

Fixes for new upstream interactions

  • fix(server): upstream now force-deletes the branch of a worktree launch that fails or is cancelled during setup (#28373, #29781). With Check out in worktree (ADR 0008), that was the user's existing branch. The cleanup now deletes only a branch the launch created. The extended test fails on the merge commit.
  • fix(ci): upstream split the executable into a bootstrap and an embedded CLI asset (#29284), so dist-exe/bin.mjs no longer holds the release-repository define and every scheduled fork release would fail. The check now greps the binary. I built it locally both ways: the repository is found with the define and absent without it.
  • fix(pi): upstream passes --offline to short-lived Pi processes (#30187). OhMyPi rejects unknown flags (Error: unknown flag: --offline), so discovery, presets (ADR 0025), text generation and thread forks all failed. These launches now set PI_OFFLINE=1, which Pi documents as the same switch and omp ignores. Verified against the installed omp.
  • fix(desktop): the WSL primary reads T3CODE_PUBLIC_URL from HostProcess.Environment. Upstream's new processEnvInEffect rule failed desktop's typecheck.
  • refactor(client-runtime): upstream now always shows project settings' Checkouts section (#23641). The fork's visibility rule had no reader left, so projectCheckoutOptions became projectCheckoutTargets. The user doc's stale Checkouts paragraph is rewritten.
  • test: fork tests follow upstream's harness changes (SecureRandom, NodeCrypto.layer, workingTree in VCS status, redacted child-process values).
  • chore(server): mcpToolListJsonBytes is 49,124, upstream's 48,119 plus the fork's unchanged 1,005.

Implemented upstream: nothing this round replaces a fork feature. Upstream's always-visible Checkouts section supersedes ADR 0022's visibility rule; the fork's Add checkout entry stays.

ADRs

All ADRs now compare against 83a3674ff. Notes were added or rewritten in 0002 (accepted gap: upstream's lower-cased PR reply matching), 0008, 0011 (failure-mode check, mirror interplay, version core 0.1.7), 0021, 0022 and 0025.

Declined, already true upstream: schedule_task with scheduledTaskId ignores upstream's new freshSession. Upstream's update branch has the same omission, so this PR leaves it alone.

Scope and approval

This is a maintainer-requested sync of the fork onto upstream. Every fork divergence is covered by an ADR in docs/adr.

Verification

  • vp run check:changed: format, lint, knip, GraphQL, typecheck (40 packages), tests 3167/3167 (147 files), and React compiler coverage all pass.
  • Four independent reviews checked the 140 files both sides changed for semantic merge breakage; the three real breakages they found are the fix(ci), fix(pi) and fix(desktop) commits above.
  • Local fork-release build with Node 26.12.1: the executable carries the repository define and the new check discriminates.
  • Local environment notes: GitManager tests need GIT_CONFIG_GLOBAL=/dev/null, and Chromium needed NixOS libraries on LD_LIBRARY_PATH.
  • Not run locally: the full package suites, repo-wide vp check, a manual pass in a real client, the fork release workflow end to end, and the mcp-tool-use eval for the merged t3_thread_launch description (paid models).

Model: Claude Opus 5.5; harness: Claude Code in T3 Code.

🤖 Generated with Claude Code

juliusmarminge and others added 30 commits November 5, 2026 11:29
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
… run (pingdotgg#30326)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…om under the pointer (pingdotgg#30346)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…1631)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ng (pingdotgg#31665)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…rive letter (pingdotgg#22534)

Co-authored-by: Alb11747 <40252880+Alb11747@users.noreply.github.com>
…3445)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ead (pingdotgg#26492)

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
…rver reports (pingdotgg#28781)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
…tgg#28800)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ading (pingdotgg#29661)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…utton (pingdotgg#30372)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ngdotgg#30817)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
…ingdotgg#27034)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
… and mobile (pingdotgg#27798)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…tgg#30425)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…equest card (pingdotgg#31653)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
juliusmarminge and others added 24 commits November 6, 2026 21:51
pingdotgg#31769)

Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Co-authored-by: Lakshmi Tanmay <lakshmi@voltcrash.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
pingdotgg#32035)

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
…#32325)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…2269)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…32263)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…24202)

Co-authored-by: PR Batch Tester <agent@local.test>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
… user's branch

Upstream's setup cleanup force-deletes the branch a failed or cancelled
worktree launch created. With Check out in worktree, that branch is the
user's own, so the cleanup now deletes only a branch the launch created.
…pstream replaced

Upstream now always shows a project's Checkouts section so a lone
checkout's grouping rule can be changed, so the fork's rule for when to
show it has no reader left. projectCheckoutTargets returns the machines
that can gain a checkout.
…ronment

Upstream moved desktop backend configuration onto HostProcess.Environment
and now rejects process.env reads in Effect code. The fork's WSL primary
read T3CODE_PUBLIC_URL from process.env, so desktop failed to typecheck.
The MCP tool list is upstream's 48,119 bytes plus the fork's existing
1,005 bytes for schedule targets and createBranch.
Upstream renamed the test crypto layer to SecureRandom, stopped providing
it through NodeServices, and reads the project's working tree root in the
branch selector. The fork's dictation test keeps the vertical split on
mod+shift+s (ADR 0017).
…tory

Upstream split the single executable into a small bootstrap and an
embedded CLI asset, so dist-exe/bin.mjs no longer holds the release
repository define and every scheduled fork release would fail. The check
now reads the binary, which holds the define only when it was baked in.
Upstream passes --offline to every short-lived Pi process. omp rejects
unknown flags at startup, so its models, presets, text generation and
thread forks all failed. Short-lived launches now set PI_OFFLINE=1, which
Pi documents as the same switch and omp ignores.
The Checkouts paragraph still described the fork's old visibility rule and
the command-palette route, both gone.
Records upstream's lower-cased PR reply matching as an accepted gap in
ADR 0002.
Upstream lets child-process arguments and environment values be redacted,
so the OhMyPi preset tests convert them to strings as upstream's own
tests do.
Copilot AI balanced review requested due to automatic review settings November 7, 2026 10:52

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 7, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ✅ Completed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-07T10:57:08.974147Z c47bbb0 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@Fryuni
Fryuni merged commit 6038eca into main Nov 7, 2026
9 checks passed
@Fryuni
Fryuni deleted the fryuni/merge-upstream-main-7 branch November 7, 2026 11:07
@fryuni-proval

fryuni-proval Bot commented Nov 7, 2026

Copy link
Copy Markdown

Thanks for the work on speech input and the persistence/runtime improvements. There is one retry-compatibility issue to resolve before merging.

Overview

Summary

This change adds environment and cloud speech transcription, batches provider snapshot commits, replaces event compaction with retention-based pruning, and updates runtime dependencies and packaging. The main concern is preserving command retry behavior when the event log no longer contains the original command results.

Main Issues

⚫️ [PROBLEM] Pruning removes results still required by accepted-command retries — apps/server/src/orchestration-v2/ProjectionMaintenance.ts:171–173 deletes command-result events but retains their receipts. Receipt replay reads storedEvents exclusively from the event log (apps/server/src/orchestration-v2/Orchestrator.ts:13794), yet launch retries require run.created (apps/server/src/orchestration-v2/ThreadLaunchService.ts:1229–1238) and local delegation retries require subagent.updated (apps/server/src/mcp/OrchestratorMcpService.ts:2561–2569). After retention expires and those rows are no longer stream heads, the same accepted command can therefore return an error despite its projections still existing. Recover the original result identities from durable state, or retain the result data these callers need, before pruning it. Cover accepting a launch/delegation, advancing beyond retention, pruning, and retrying the same command ID.

Recommendation: request changes for the retry regression above.

Additional Notes

Validation was limited to source and test inspection; no tests or builds were executed. The inline comment could not be published because the review API rejected its diff path, so the verified finding is recorded here.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.