Skip to content

fix(web): preserve file attachments when editing queued runs - #9928

Open
saphid wants to merge 390 commits into
pingdotgg:t3code/codex-turn-mappingfrom
saphid:fix/v2-client-file-attachments-20260905
Open

fix(web): preserve file attachments when editing queued runs#9928
saphid wants to merge 390 commits into
pingdotgg:t3code/codex-turn-mappingfrom
saphid:fix/v2-client-file-attachments-20260905

Conversation

@saphid

@saphid saphid commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Saving an edited queued message silently dropped newly added generic files. Include files in draft dirty checks, capability checks, upload completion and serialization; retain file-only edited drafts if the queued run starts.

Claim queued-edit uploads through the current shared ThreadMessageIntake, preserving existing attachment IDs, replay cleanup, and uncertain-dispatch safeguards. Do not reintroduce the older WebSocket-specific attachment wrapper.

Rebuilt head 3fe2b2a0a targets V2 3aa47e294 with test-only prerequisite #10865 (merge first). Seven-file topic. Validation: 153 focused intake/attachment/web-draft/sidebar-drop tests pass, plus server and web typechecks and targeted lint (existing ChatView advisory warnings). The real intake test saves/replays a queued PDF edit and verifies durable bytes plus the retained retry source.

Fresh UI capture is pending; the earlier comparison below remains bound to its original revisions and is historical evidence, not a capture of this rebuilt head. CI pending. Direct Claude Opus 5 high review remains unavailable: launcher exited 1 with expired OAuth before inference.

Historical UI evidence and exact source revisions

Verified in the attached web preview: add release-notes.txt, save, and reopen. The pre-fix UI loses the file; the fixed UI retains it. The authoritative saved message contains the durable 53-byte file reference. Both clients used the same disposable V2 backend and real prepared/queued commands; no provider ran during the captured save flow. Before: the two web files from b9fa1399c. After: patch-identical #9928 6e5d34b52, integrated at fa6a1ab04.

Before: the newly added file is missing after reopening

After: release-notes.txt remains attached after reopening

Clean save-and-reopen video · Annotated save-and-reopen video

Annotated screenshots

lost-image-annotated.png

retained-image-annotated.png

Targets V2 #2829. Updated with GPT-6 in Codex/T3.

Latest review follow-up: a distinct confirmed-rejection error now releases queued-upload copies while uncertain errors preserve them. 51 focused intake/runtime tests and server typecheck pass.

Queued-edit composer interaction is disabled while uploads/save are pending, preventing newer input from being cleared by a captured save. Confirmed queued-edit rejection uses its own tagged error; uncertain dispatch errors remain unchanged. The 51 intake/runtime tests, server/web types and targeted lint pass. Fresh interactive UI capture remains pending.

The MCP integration assertion now expects the distinct queued-edit rejection tag; both affected MCP integration tests pass. New CI is pending.

@github-actions github-actions Bot added the vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. label Sep 5, 2026
@macroscopeapp

macroscopeapp Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Macroscope has since reviewed this pull request. An earlier review was skipped by a cost limit; a review has now completed, so that notice no longer applies.

@github-actions github-actions Bot added the size:XXL 1,000+ changed lines (additions + deletions). label Sep 5, 2026
@saphid
saphid force-pushed the fix/v2-client-file-attachments-20260905 branch from 08f28b9 to 6e5d34b Compare September 5, 2026 05:07
@github-actions github-actions Bot added size:L 100-499 changed lines (additions + deletions). and removed size:XXL 1,000+ changed lines (additions + deletions). labels Sep 5, 2026
@saphid
saphid marked this pull request as ready for review September 5, 2026 06:51
macroscopeapp[bot]
macroscopeapp Bot previously approved these changes Sep 5, 2026
@macroscopeapp

macroscopeapp Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 3fe2b2a

Macroscope's review found this PR approvable — This is a localized bug fix that preserves newly added file attachments when editing queued runs, with coordinated client/server handling for uploads, retries, and rejected commands. Existing edit paths remain unchanged, and targeted tests cover persistence and cleanup behavior.

Notes:

  • No code objects were reviewed. Approvability was decided on eligibility alone.

You can add or adjust custom eligibility rules. Learn more.

@juliusmarminge
juliusmarminge force-pushed the t3code/codex-turn-mapping branch 2 times, most recently from 9242b91 to 3d81172 Compare September 8, 2026 03:31
@macroscopeapp
macroscopeapp Bot dismissed their stale review September 8, 2026 04:07

Dismissing prior approval to re-evaluate 1b32002

@github-actions github-actions Bot added size:XXL 1,000+ changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Sep 8, 2026
juliusmarminge and others added 15 commits September 7, 2026 23:12
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
- Re-route steering that races completion into idempotent follow-up dispatches
- Preserve scheduled-task attribution and provider ownership history across clients
Port main's pull-request discovery, active thread ordering, async question dismissal, settlement fixes, provider-session import, attachment context, and provider correctness changes into orchestration v2.

Keep the branch's intentional composer and subagent behavior while adopting main's web and mobile fixes. Prevent headless setup terminals from hanging on the color probe, and move the v2 migration block to 050-061 after main claimed 048-049.
Restore the failed-before-start timer guard, align two server fixtures with the reconciled behavior, and remove dead files, exports, and dependencies surfaced by Knip.

Drop the temporary branch push trigger now that the PR is mergeable, so each update runs the pull-request workflow once.
Keep main's batch machine-update banner and update action while preserving the v2 runtime-based environment lock used by draft load balancing.
Adopt TypeScript 7 and Effect rc.112 across orchestration v2, including the TaggedError API migration and updated Effect-aware tests. Restore main's composer-aware scroll-to-end clearance while retaining selected-model settings sync, preview recording transfer, image galleries, desktop context menus, and layout hit targets. Regenerate the lockfile on the upgraded dependency baseline.
@juliusmarminge
juliusmarminge force-pushed the t3code/codex-turn-mapping branch from efd9994 to 6102d00 Compare September 8, 2026 06:23
juliusmarminge and others added 7 commits September 8, 2026 14:26
Advertise bounded socket snapshots and authoritative dispatch validation, omit raw command output and inline file bodies at the wire boundary, and preserve compact status metadata across web and mobile. Add transport-budget coverage for snapshots, resume, commands, legacy import, and projection maintenance.
Restore pinned-thread shelf classification, server-owned unread state, hidden-subagent-safe project ordering, guarded jump hints, draft upload cleanup, and active-provider archive guards across the current and legacy sidebars.

Bring the surrounding current-main sidebar work forward as well: canonical project favicons, stable row layout, thread file drops, account-aware mobile provider badges, and deferred desktop keyring loading.
@saphid
saphid force-pushed the fix/v2-client-file-attachments-20260905 branch from 1b32002 to 37f331f Compare September 9, 2026 00:47
@cursor

cursor Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

@github-actions github-actions Bot added size:L 100-499 changed lines (additions + deletions). and removed size:XXL 1,000+ changed lines (additions + deletions). labels Sep 9, 2026
Comment thread apps/server/src/orchestration-v2/ThreadMessageIntake.ts
Comment thread apps/server/src/orchestration-v2/Orchestrator.ts Outdated
Comment thread apps/web/src/components/ChatView.tsx
@juliusmarminge
juliusmarminge force-pushed the t3code/codex-turn-mapping branch from 8187b17 to ada72ce Compare September 9, 2026 06:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100-499 changed lines (additions + deletions). 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.

5 participants