Repository navigation
Show every file a conversation produced in the V2 Documents drawer - #1720
Merged
Paul Lizer (paullizer) merged 2 commits intoOct 8, 2026
Merged
Paul Lizer (paullizer) merged 2 commits into
Paul Lizer (paullizer) merged 2 commits into
Conversation
The drawer's Generated section only ran for shared conversations and only listed SimpleChat upload documents, so a plan's CSV (and every other rendered file, export or Analyze summary) was only reachable from its card in the thread. - Collect the files replies produced from the loaded messages with the thread's own readers (plan outputs and committed receipts, exports, analysis files), including live run state, with status for files that are not ready yet. - List SimpleChat upload documents in personal conversations through new owner-only /api/conversations/<id>/generated-documents list and download routes. - Merge both into one Generated section with preview, download and Show in conversation, and count them in the header's Documents badge. Version 0.261.302. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…sees Review follow-up for the generated files drawer: - Re-read the agent-document list when the replies the thread shows change (new or deleted reply, another attempt shown, a reply masked or unmasked), not only when the reply count changes, and list only documents whose reply is shown. - In a shared conversation, wait until the reader has joined before asking for the list, and read it as soon as they join, instead of caching the refusal of a pending invite. - Never keep a refused or failed read as final, and forget the list when the open conversation needs none, so returning to a conversation reads it afresh. - Regression tests for attempt switching, masking, refusal retry, invitation join, conversation return and background export completion. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Paul Lizer (paullizer)
merged commit Oct 8, 2026
f60b982
into
paullizer-react-v2-ui
11 checks passed
Paul Lizer (paullizer)
added a commit
to paullizer/simplechat
that referenced
this pull request
Oct 8, 2026
…files Brings in microsoft#1720, which lists every file and agent document a conversation produced in the V2 Documents drawer, for the replies the thread shows. The merge had no textual conflicts. Semantic resolution: this branch hides an orchestration attempt that a later retry replaced. microsoft#1720's drawer filters only skipped replies replaced by a workflow reply, so a hidden attempt's files and agent documents would still be listed. collectConversationGeneratedFiles() and visibleGeneratedDocuments() now skip replaced attempts too, with a regression case in the drawer logic test, and this branch's docs and release notes say so. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
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
In V2 chat, a file a conversation produced only appeared as a card in the thread. For example, a plan rendered
us_states_and_capitals.csv, the reply showed Completed and Download CSV, and the Documents drawer still said "No documents used yet". Only images showed up, through the Media section.The drawer's Generated section (added in 0.261.255) only ran in shared conversations, and it only listed documents agents saved with the SimpleChat upload actions. Plan outputs, exports and Analyze files are recorded on the reply's metadata, and nothing passed them to the drawer.
Every generated file, in every conversation. Generated now lists:
A file that is not ready yet (waiting, rendering, failed, cancelled, or awaiting approval in a shared chat) is listed with its status. Download appears once it is ready, Preview opens Markdown and files that carry a preview, and Show in conversation scrolls to the reply that produced it.
Agent documents in personal chats. New owner-only routes
GET /api/conversations/<id>/generated-documentsand.../generated-documents/<document_id>/downloadgive personal conversations what shared ones already had. They reuse the shared conversation's reader (collect_generated_documents) and its download rules (authorize_generated_document_download).Header badge. The Documents button's count now includes generated files as well as documents used in answers, each counted once.
Empty state. The empty drawer now says "No documents yet".
How it fits together, and what to look at in review:
lib/conversationGeneratedFiles.ts) from the messages already loaded, using the readers the thread's own cards use. Those arereadGeneratedArtifacts,normalizeOrchestrationAttemptwithcommittedOrchestrationArtifact, and the live orchestration run state./api/chat_artifacts/download(with its approval and publication checks) or/api/workspace_documents/download.stores/generatedDocumentsStore.tsholds a single copy of the agent-document list, shared by the badge and the drawer, so opening the drawer doesn't repeat the badge's request.stores/generatedExportRunStore.ts), so the drawer updates without reloading.lib/collaboration.tstolib/generatedDocuments.ts. The old collaborative-onlyuseGeneratedDocumentshook is replaced, andArtifactPreviewDialogis exported for reuse.Linked issue
N/A (no associated issue)
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?
Version bump
application/single_app/config.pyVERSIONthird segment bumped, or not needed because this is docs-only (0.261.301 -> 0.261.302)deployers/version.txtbumped, or not needed becausedeployers/was not changedTesting / validation
npm --prefix application\v2_ui run typecheck: passednpm --prefix application\v2_ui run build: passed. Also built intoui_tests\artifacts\orchestration-plan-editorfor the UI tests.node functional_tests\test_v2_drawer_generated_files_logic.mjs: passed (new)node functional_tests\test_v2_drawer_media_logic.mjs: passedpython functional_tests\test_personal_conversation_generated_documents.py: passed, 4/4 (new)python functional_tests\test_collaboration_generated_documents.py: passed, 5/5python functional_tests\test_v2_conversation_drawer.py: passed, 8/8python -m pytest functional_tests\test_personal_conversation_generated_documents.py functional_tests\test_collaboration_generated_documents.py -q: 9 passedpython functional_tests\route_tests\test_route_blueprint_policy_inventory.py: 14/14python functional_tests\route_tests\test_route_unauthenticated_policy_contract.py: 9/9python functional_tests\route_tests\test_route_policy_test_coverage.py: 3/3python scripts\check_xss_sinks.py --base-sha fa3422dee --head-sha HEAD <changed files>: passed, 18 filespython scripts\check_broken_access_control.py --base-sha fa3422dee --head-sha HEAD <changed .py files>: passed, 6 filespython scripts\build_docs_inventory.py: no inventory changepython functional_tests\test_docs_app_surface_coverage.py: 7/7python functional_tests\test_docs_site_quality.py: 6/6python -m pytest ui_tests\test_v2_drawer_generated_files.py ui_tests\test_v2_collaboration_ux.py -q: 13 passed. These include the new drawer tests and a new shared-chat invitation test.python -m pytest ui_tests\test_v2_orchestration_planning_retry.py ui_tests\test_v2_orchestration_outputs.py ui_tests\test_v2_media_galleries.py ui_tests\test_v2_new_chat_reset.py ui_tests\test_v2_sidebar_conversation_scroll.py ui_tests\test_v2_workflow_saved_output_publication.py ui_tests\test_v2_workflow_run_tracker_spa.py -q: 185 passedpython functional_tests\test_logging_tag_standardization.pyfails on existing nonstandard and undocumented tags. The new[CONVERSATION_GENERATED_DOCUMENTS]tag is documented and is not among the failures.lib.GEN_EMAILimport error andtest_backend_conversations_swagger_integration.py(3/5 on both).Documentation
docs/explanation/features/V2_COLLABORATION_UX.md, plus a new Documents drawer section indocs/reference/chat-controls.mddocs/explanation/fixes/DOCUMENTS_DRAWER_GENERATED_FILES_FIX.mdSecurity checklist
@swagger_route(security=get_auth_security()). Both new routes also use@login_requiredand@user_required, and call_authorize_personal_conversation_readbefore any read. The list response carries no group ids, and the download only serves a document this conversation produced.sanitize_settings_for_user()(no settings are sent by this change)