Skip to content

chore(sync): merge upstream main through 61c3794c - #28

Merged
yvesoddly merged 37 commits into
mainfrom
sync/upstream-main-20261102c
Nov 3, 2026
Merged

yvesoddly merged 37 commits into
mainfrom
sync/upstream-main-20261102c

Conversation

@yvesoddly

@yvesoddly yvesoddly commented Nov 3, 2026 •

Copy link
Copy Markdown

The fork was 36 commits behind pingdotgg/t3code main.

Upstream main through 61c3794. The merge had no conflicts. Nine files changed on both sides and auto-merged (the Claude adapter, provider session manager, orchestrator, usage service, draft hero headline, timeline work rows, and the orchestrator MCP doc). Upstream's new migration 078 doesn't collide with any fork migration.

Carried PRs: scripts/fork-carried-prs.ts reports all 8 unchanged against their upstream heads, and none were closed.

vp run check:changed passes format, lint, knip and typecheck (37 packages). Focused tests for the auto-merged server files pass (432 tests). Two test failures are environmental:

  • The Playwright browser suite fails because this host has no Chromium.
  • One OpenCode driver test (upstream's new in-place 1.x to 2 upgrade test) reads the host's OpenCode Go key and makes an HTTP call. It passes with an isolated XDG_DATA_HOME, and provider-opencode is identical to upstream.

🤖 Generated with Claude Code (Claude Opus 5.5)


Autofix with [code]smith
Open in [code]smith · Need help on this PR? Tag @codesmith-bot with what you need.

juliusmarminge and others added 30 commits November 2, 2026 18:29
…otgg#29415)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…wser reports offline (pingdotgg#29347)

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

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

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

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ger stay running (pingdotgg#28040)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…rade from 1.x (pingdotgg#27779)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…to run t3 service restart (pingdotgg#27660)

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

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

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…adable .git/config (pingdotgg#23690)

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

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

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

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…turn absorbed its wake (pingdotgg#28010)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
…ory scan ends (pingdotgg#29535)

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

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

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

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>
…3804)

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

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

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
juliusmarminge and others added 7 commits November 2, 2026 18:52
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Exotic209093 <134711311+Exotic209093@users.noreply.github.com>
Co-authored-by: Issue triage verification <triage@localhost>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…#22661)

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
… limit (pingdotgg#23192)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
@chatgpt-codex-connector

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

Copy link
Copy Markdown

Codex Review Summary

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

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-03T04:15:20.416798Z 519f74c PR opened
🔒 Security Review ✅ Completed 2026-11-03T04:14:52.290441Z 519f74c 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.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Nov 3, 2026
@greptile-apps

greptile-apps Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

RetriggerView in GreptileConfidence Score: 4/5

[High impact] The sync changes shared server workflows used by provider sessions, usage, cloud endpoints, and repository tasks.

The PR appears safe to merge with non-blocking follow-ups for usage totals and the import guide.

Findings

  1. P2 First interrupted request goes uncounted ▶
  2. P2 Import guide gives wrong limit ▶
Fix with agent prompt
### Issue 1
apps/server/src/provider/Drivers/codexUsage.ts:94
If the first turn is interrupted after writing a `token_usage_record` but before its first `token_count`, the next turn can report a total covering both turns. With `previous === null`, `reconciled` accepts that total without checking the saved requests. This helper is skipped, so only the latest request is counted and usage totals stay too low.

Handle a missing baseline when the saved requests explain the full total, while keeping the checks that prevent counting inherited history.

### Issue 2
apps/server/src/project/AgentSessionScanner.ts:1032
The record limit now applies to each conversation file, but `docs/user/welcome-wizard.md` still says an import attempt reads at most 100,000 input records per project. The new test deliberately imports more than that across several files, so users planning a large import get the wrong limit.

Update the guide to say 100,000 records per file, alongside the unchanged batch limits.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Summary

Syncs upstream changes across provider sessions, usage totals, Git operations, previews, remote connections, and terminal controls.

  • Provider switches wait while the old session has background work.
  • Codex usage scans keep request details for later reconciliation.
  • Codex errors with new labels still reach the failed turn.
  • Worktree lookups use the project folder when a worktree is unavailable.
  • Git workflows keep working across more process and worktree cases.
  • Connect status reflects whether the managed tunnel is configured.
  • Managed tunnels restore ingress routes that drift from their saved origin.
  • Preview controls give clearer click-timeout guidance and combine compatible wheel input.
  • OpenCode sessions track compaction, skills, and pending background work.
  • Pi prompts wait until compaction ends instead of failing early.
  • Scheduled webhook deliveries keep their deduplication state across retries.
  • Primary environments keep checking their connection while the device reports offline.
  • Provider adapters share updated failure, model, and skill behavior.
  • Turn completion no longer waits for a slow pull-request lookup.
  • Thread screens show clearer time labels and terminal controls.
  • Migration 078 drops the unused orchestration event correlation index.

Review used source and test inspection; no tests or browser captures were run.

Reviews (1) · Last reviewed commit: "Merge upstream pingdotgg/t3code main int..." · Reviewed by Greptile

pending: readonly CodexUnreportedRequest[] | undefined,
) {
if (
previous === null ||

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 First interrupted request goes uncounted

If the first turn is interrupted after writing a token_usage_record but before its first token_count, the next turn can report a total covering both turns. With previous === null, reconciled accepts that total without checking the saved requests. This helper is skipped, so only the latest request is counted and usage totals stay too low.

Handle a missing baseline when the saved requests explain the full total, while keeping the checks that prevent counting inherited history.

Prompt To Fix With AI
This is a comment left during a code review.
Path: apps/server/src/provider/Drivers/codexUsage.ts
Line: 94

Comment:
**First interrupted request goes uncounted**

If the first turn is interrupted after writing a `token_usage_record` but before its first `token_count`, the next turn can report a total covering both turns. With `previous === null`, `reconciled` accepts that total without checking the saved requests. This helper is skipped, so only the latest request is counted and usage totals stay too low.

Handle a missing baseline when the saved requests explain the full total, while keeping the checks that prevent counting inherited history.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Confirmed: with previous === null, reconciled only checks that the prefix is valid usage, so a pending token_usage_record from an interrupted first turn is never bridged and goes uncounted. This file is byte-identical to upstream main (pingdotgg#29415), and this is a sync PR, so the fix belongs upstream rather than as a fork divergence here. Not changing it in this PR.

reader.write(decoder.decode());
recordCount += 1;
if (recordCount > recordLimit) return false;
if (recordCount > MAX_IMPORT_RECORDS) return false;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Import guide gives wrong limit

The record limit now applies to each conversation file, but docs/user/welcome-wizard.md still says an import attempt reads at most 100,000 input records per project. The new test deliberately imports more than that across several files, so users planning a large import get the wrong limit.

Update the guide to say 100,000 records per file, alongside the unchanged batch limits.

Prompt To Fix With AI
This is a comment left during a code review.
Path: apps/server/src/project/AgentSessionScanner.ts
Line: 1032

Comment:
**Import guide gives wrong limit**

The record limit now applies to each conversation file, but `docs/user/welcome-wizard.md` still says an import attempt reads at most 100,000 input records per project. The new test deliberately imports more than that across several files, so users planning a large import get the wrong limit.

Update the guide to say 100,000 records per file, alongside the unchanged batch limits.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Confirmed: upstream pingdotgg#23192 made MAX_IMPORT_RECORDS per conversation file, but docs/user/welcome-wizard.md still says 100,000 input records per import attempt. Both files are identical to upstream main, and this is a sync PR, so the doc fix belongs upstream rather than as a fork divergence that would conflict on the next sync. Not changing it in this PR.

@yvesoddly
yvesoddly merged commit 43bbbab into main Nov 3, 2026
13 checks passed
@eyeveil
eyeveil deleted the sync/upstream-main-20261102c branch November 4, 2026 15:29
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.

3 participants