Repository navigation
Fix V2 attachment leakage between conversations - #1896
Merged
Paul Lizer (paullizer) merged 2 commits intoNov 6, 2026
Merged
Paul Lizer (paullizer) merged 2 commits into
Paul Lizer (paullizer) merged 2 commits into
Conversation
Keep pending attachments scoped to their original conversation, reject stale async updates and sends, and restore document filenames. Include regression coverage, documentation, and application version 0.261.411. Co-authored-by: Copilot App <[email protected]>
Resolve the application version conflict at 0.261.414, preserve incoming guided-question support and document planning recovery, and synchronize the strict shared API fixture with current pending-question read contracts. Co-authored-by: Copilot App <[email protected]>
Paul Lizer (paullizer)
merged commit Nov 6, 2026
78595f7
into
paullizer-react-v2-ui
12 checks passed
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.
Summary
0.261.411.Linked issue
N/A. Issue creation was declined for this work.
Release Notes & Latest Features
Is this visible to end users?
Is this admin-facing (Admin Settings, governance, deployment, config)?
Should this become a Latest Feature card?
Screenshot needed for the card?
Release notes remain unchanged pending user approval; no Latest Feature card is proposed.
Version bump
application/single_app/config.pyVERSIONthird segment bumped, or not needed because this is docs-onlydeployers/version.txtbumped, or not needed becausedeployers/was not changedApplication version:
0.261.410->0.261.411. No deployer changes.Testing / validation
node .\functional_tests\test_v2_chat_attachment_isolation.mjs- passed real ownership, recovery, adoption, scope, revision, and filename helper checks.npm --prefix .\application\v2_ui run build- passed TypeScript compilation and the production build; the existing bundle-size advisory remains.python -m pytest .\ui_tests\test_v2_new_chat_reset.py .\ui_tests\test_v2_chat_attachment_isolation.py -q --tb=short- 33 passed, including 26 new attachment-isolation scenarios. Coverage includes delayed responses, A-to-B-to-A navigation, successive null-ID drafts, interrupted/processing uploads, manual/Orchestrate payloads, and navigation plus Send in one event.python -m pytest .\functional_tests\test_v2_chat_context_picker.py .\functional_tests\test_v2_new_chat_reset.py -k "not orchestration_turns_record_their_streaming_surface_whatever_is_on_screen" -q --tb=short --disable-warnings- 16 passed, 1 deselected. The excluded legacy source-literal assertion also fails against the unmodified base commit.python .\functional_tests\test_docs_app_surface_coverage.py- 7/7 checks passed; inventory is current.python .\functional_tests\test_docs_site_quality.py- 6/6 documentation source checks passed.git -c core.whitespace=blank-at-eol,blank-at-eof,space-before-tab,cr-at-eol diff --check- passed before commit.The original two browser reproductions failed before the fix and now pass. An exploratory affected-browser sweep passed all 133 test bodies but exposed four shared-fixture teardown errors for an unmocked pending-credential read. This PR supplies that expected empty response without relaxing error checks; both consuming suites were then re-run clean (33 passed above).
Known unrelated legacy limitations are documented in
docs/explanation/fixes/V2_CONVERSATION_ATTACHMENT_ISOLATION_FIX.md: the obsolete orchestration-map assertion and closed namespaces missing backend locals infunctional_tests/test_v2_prompt_attachment_persistence.py. The exploratory functional run had 64 passes and 37 failures from those existing harness problems; the affected backend routes and legacy harness are unchanged.Documentation
Updated the chat upload guide and context-picker documentation. Added the versioned attachment-isolation fix notes with behavior, root cause, validation evidence, and legacy harness limitations. Pending selections are tab-memory only; no server-side draft persistence or historical data repair is introduced.
Security checklist
@swagger_route(security=get_auth_security())sanitize_settings_for_user()No Flask routes or settings payloads were added or changed. Filename hydration uses existing authorized, explicitly scoped document-detail readers, and filenames remain escaped React text. Existing source authorization is unchanged.