Skip to content

merge: sync upstream through a7028f1399 (classic-merge) - #457

Merged
patroza merged 72 commits into
fork/devfrom
sync/upstream-a7028f1399
Sep 7, 2026
Merged

merge: sync upstream through a7028f1399 (classic-merge)#457
patroza merged 72 commits into
fork/devfrom
sync/upstream-a7028f1399

Conversation

@patroza

@patroza patroza commented Sep 7, 2026

Copy link
Copy Markdown
Owner

Summary

Classic-merge upstream/main through a7028f1399 (fix: use Pierre icons consistently for attachments (#10475)) into fork/dev.

origin/main is branch-protected (PR + required checks), so this merge uses upstream/main directly as the second parent rather than a fast-forward of the stale main mirror.

68 incoming commits, including persisted manual thread order, sidebar drag, mobile outbox/drafts, onboarding wizard, async question dismiss, Codex Spark limits, Cursor transport failures, and WSL-era follow-ups already on fork/dev.

3-way weld (25 conflict files). Kept fork extras (queued drain, multi-env selection, HashMap CommandReadModel, Hermes copy-then-sort/reverse, draft chips, ubuntu-24.04 runners) and took upstream thread order, outbox, creditSources, resolve_commit nightly/stable, and Cursor transport-error mapping. release.yml stays ubuntu-24.04 (no Blacksmith); inherited CI/Release/deploy-relay remain disabled_manually.

Follow-up welds on this branch

  • Pending-task list builders use flattened environmentId/projectId/key (draft|queued union)
  • New decider tests use HashMap CommandReadModel + findThreadById
  • threadSort test uses .slice().reverse() instead of .toReversed()
  • toProjectionThread keeps activeOrderKey; migration tails include 049

Land with gh pr merge --merge, never squash.

Test plan

  • Local changed-file vp check + vpr typecheck on push
  • Focused tests for thread sort, sidebar logic, Cursor adapter, home/thread lists
  • Full ship gate via pnpm pr:ready
  • Required Fork CI green (Check, Test, Mobile Native Static Analysis, Release Smoke)

AksharP5 and others added 30 commits September 6, 2026 14:09
)

Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
…ead list (pingdotgg#10260)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…gdotgg#10402)

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

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

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

Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>
Updated model version and adjusted budget limits for PRs and runs.
Yash-Singh1 and others added 23 commits September 6, 2026 20:28
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>
Classic-merge upstream/main through a7028f1 (Pierre attachment
icons, pingdotgg#10475) into fork/dev. origin/main stays branch-protected, so
upstream/main is the second parent.
PendingNewTask is now a pending|draft union with environmentId and
projectId on the task. Recency/list builders still read message/creation,
which only exist on queued tasks.
New active-order and dismiss tests still treated threads as an array.
Use CommandReadModel HashMaps, add queuedMessages/pendingTurnStart, and
fill Codex resume raw.request plus GitCommandError.failureKind.
@github-actions github-actions Bot added the 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. label Sep 7, 2026
toProjectionThread dropped activeOrderKey, so SQL writes vanished on
getById. Bump migration tail snapshots to 049
ProjectionThreadsActiveOrderKey.
@patroza
patroza marked this pull request as ready for review September 7, 2026 06:47
@patroza
patroza merged commit 39b3e47 into fork/dev Sep 7, 2026
11 of 14 checks passed
patroza added a commit that referenced this pull request Sep 7, 2026
## Problem

After a deploy/restart, `reconcileProviderSessions` resumes interrupted
threads by preparing the orchestration session as `starting` with
`activeTurnId: null`, then calling `sendTurn`. It previously left the
session in that starting state until the provider emitted
`turn.started`.

Codex resume (`thread/resume`) often does not emit `turn.started` until
the replacement turn finishes. Meanwhile `thread.queue.steer` refuses
with “still starting a turn”, so queued messages and Send now stay
blocked for the whole recovered turn.

This showed up after the #457/#458 upgrade: upstream `pingdotgg#10421` made
restart resume fire without requiring the directory `activeTurnId` to
match the projection turn, so more in-flight threads recover after a
service restart. The stuck-in-starting gap was already in fork recovery;
the update just made resume kick in.

## Fix

After a successful recovery `sendTurn`, dispatch `thread.session.set`
with `status: "running"` and `activeTurnId: result.turnId`. Prepare
still uses starting/null (short window). Failed `sendTurn` still settles
error.

## Test

`serverRuntimeStartup.reconcile.test.ts` now asserts both the prepare
`starting` sets and the post-`sendTurn` `running` sets with the admitted
turn ids.

---------

Co-authored-by: T3 Code PR Stack <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships.

Projects

None yet

Development

Successfully merging this pull request may close these issues.