fix(web): preserve file attachments when editing queued runs - #9928
Open
saphid wants to merge 4 commits into
Open
fix(web): preserve file attachments when editing queued runs#9928saphid wants to merge 4 commits into
saphid wants to merge 4 commits into
Conversation
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. |
saphid
force-pushed
the
fix/v2-client-file-attachments-20260905
branch
from
September 5, 2026 05:07
08f28b9 to
6e5d34b
Compare
saphid
marked this pull request as ready for review
September 5, 2026 06:51
Contributor
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — This is a bounded bug fix that extends the existing attachment upload and claim lifecycle to queued-run edits, preserving existing attachments while leaving text-only edits unchanged. The added server cleanup and client upload handling are covered by focused tests and do not alter product defaults or schemas. No code changes detected at You can add or adjust custom eligibility rules. Learn more. |
4 tasks
…apping' into landing/pr-9928
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.
Saving an edited queued message silently dropped newly added generic files. Include those files in saveability, capability checks, upload completion, and serialization, and preserve file-only drafts when the queued run starts.
At WebSocket intake, claim newly pending uploads into durable thread storage for queued edits. Preserve existing IDs; failed dispatch cleans only new copies while retaining retry sources. Successful client saves release only the new pending uploads.
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 fromb9fa1399c. After: patch-identical #99286e5d34b52, integrated atfa6a1ab04.Clean save-and-reopen video · Annotated save-and-reopen video
Annotated screenshots
Validation: server attachment/WS tests (12), web draft tests (105), earlier focused attachment/UI tests (144), server/web/React Native typechecks, and targeted lint passed. The interaction proof packet validated successfully. Uploaded media was fetched successfully; local recordings and contact sheets were inspected. Web verifies the shared desktop UI; Electron-shell behavior was not separately exercised.
Targets Julius’s V2 branch in #2829. A direct Claude Opus 5 high reviewer launch exited 1 before model execution because OAuth expired; no Claude review occurred.
Implemented and verified with GPT-6 in Codex/T3, with a Codex worker reviewing queued-file ownership.
Current-base verification
Updated to exact V2 base
415ed0f73b97f1655b6282492f81d0b2bba3a9ccat head5d22ab6bc5c65f5169e32ba553010963da0c7adc. The original leaf plus this base synthesizes cleanly as tree562831b891f22f33ed9a41a339d4a6773f068821; current V2 base does not contain durable pending-upload claims or generic-file-aware draft saveability, so the fix is not superseded.ChatView.tsxand an unrelated draft-store test line predate this contribution.ws.tscomparison also incorporates upstream project-deletion handling separately from attachment claims.cancelAnimationFrame is not definedworker exception fromfileEditorHighlight.test.ts. Repository permissions denied a failed-job rerun, so the final empty child commit retriggers CI without changing the source patch.Existing recorded attachment persistence evidence retains its original patch-identical revision and scope. No fresh browser or Electron-shell run was performed. Fresh independent Claude review remains unavailable because OAuth is signed out; no Claude review is claimed. Refreshed by GPT-6 in the Codex harness.