Repository navigation
Fix multipart upload authentication response negotiation - #1790
Merged
Paul Lizer (paullizer) merged 2 commits intoOct 20, 2026
Merged
Conversation
Request JSON for shared V2 and classic chat uploads, and honor JSON negotiation for idle-expired sessions. Preserve authorization, idle activity semantics, drafts, and explicit-only retries. Add functional and browser regressions, documentation, and version 0.261.351. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Resolve the application version conflict at 0.261.354 and align upload regression and fix documentation versions. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Paul Lizer (paullizer)
merged commit Oct 20, 2026
161d329
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
/api/paths.requires_reauth, without changing authorization, CSRF checks, idle activity tracking, or browser-navigation redirects.0.261.354.Linked issue
N/A. The user explicitly requested no issue creation.
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 were left unchanged because the optional update was not approved. No new feature card or visual redesign is included.
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:
0.261.353->0.261.354after integrating the current V2 base. Matching upload regression and documentation versions were aligned when resolving the version conflict. No deployer changes.Testing / validation
The new regressions failed before the fix: four Node checks detected the missing Accept header; both normal/optimized Flask probes detected the unexpected 302. Final results after integrating the current V2 base:
node --test .\functional_tests\test_v2_app_session_recovery.mjspython -m pytest .\functional_tests\test_upload_auth_response_contract.py .\ui_tests\test_chat_upload_session_responses.py .\ui_tests\test_v2_chat_image_uploads.py -qpython -X utf8 .\functional_tests\test_idle_logout_timeout.pypython .\functional_tests\route_tests\test_route_blueprint_policy_inventory.pypython .\functional_tests\route_tests\test_route_unauthenticated_policy_contract.pypython .\functional_tests\route_tests\test_route_policy_test_coverage.pynpm --prefix .\application\v2_ui run build -- --outDir ..\..\ui_tests\artifacts\orchestration-plan-editornode --check .\application\single_app\static\js\chat\chat-input-actions.jspython .\functional_tests\test_docs_app_surface_coverage.pypython .\functional_tests\test_docs_site_quality.pygit diff --checkandgit diff --cached --checkBrowser coverage exercises real components/stores and classic upload JavaScript with controlled HTTP, including desktop/mobile draft preservation, explicit retry after sign-in, successful upload, permission denial, and network failure. The reused image-upload HTTP fixture now answers the current pending-credential discovery request. The Flask probe executes real authentication decorators and the actual idle function source independently of unrelated app startup; it does not claim full bootstrap/import-cycle coverage. Original live FED-21 reproduction remains unverified.
Documentation
Added
docs/explanation/fixes/UPLOAD_AUTH_RESPONSE_NEGOTIATION_FIX.mdand upload recovery guidance indocs/guides/upload-and-manage-documents.md. No new capabilities or controls; no inventory changes needed. Release notes intentionally remain unchanged as noted above.Security checklist
@swagger_route(security=get_auth_security())sanitize_settings_for_user()No production routes or frontend settings payloads were added. Existing authentication/role checks, upload limits, CSRF boundaries, credentials, cancellation signals, and browser-generated multipart boundaries are preserved. Upstream Easy Auth/network failures remain outside this Flask response contract.