Summary
Operator test of the Workspace Files tab on dev (2026-09-07): a file uploaded into the chat does not appear in Files until the agent has replied; files the user sent cannot be downloaded the way agent-shared files can; and "download" on an image opens it in the browser instead of saving it.
Context
Uploads go to the agent's per-client inbox (~/inbox/<client>/, user → agent, isolated per client) and are not listed back to the user; agent-shared files (share_file) are listed in the rail's Files tab (abilityai/trinity-enterprise#475). The download link is a plain <a target="_blank"> to the file route, so inline-displayable types (images, text) render in a tab rather than saving. Related: abilityai/trinity-enterprise#461 (file links on mobile: Range, disposition, CORP).
Acceptance Criteria
Technical Notes
components/portal/PortalRailFiles.vue, stores/portalRailFeeds.js, the client-portal files routes (client_portal/router.py, /api/files), upload path in PortalConversation.vue (abilityai/trinity-enterprise#524). Scope model per abilityai/trinity-enterprise#484 (per-agent shared working folder, incubating) and #489 (per-user isolation, parked).
Summary
Operator test of the Workspace Files tab on
dev(2026-09-07): a file uploaded into the chat does not appear in Files until the agent has replied; files the user sent cannot be downloaded the way agent-shared files can; and "download" on an image opens it in the browser instead of saving it.Context
Uploads go to the agent's per-client inbox (
~/inbox/<client>/, user → agent, isolated per client) and are not listed back to the user; agent-shared files (share_file) are listed in the rail's Files tab (abilityai/trinity-enterprise#475). The download link is a plain<a target="_blank">to the file route, so inline-displayable types (images, text) render in a tab rather than saving. Related: abilityai/trinity-enterprise#461 (file links on mobile: Range, disposition, CORP).Acceptance Criteria
downloadattribute plus aContent-Disposition: attachmentvariant of the file route (query flag), so an image or text file is saved, not opened. Opening inline is a separate, explicit action (preview — filed separately as a feature).Technical Notes
components/portal/PortalRailFiles.vue,stores/portalRailFeeds.js, the client-portal files routes (client_portal/router.py,/api/files), upload path inPortalConversation.vue(abilityai/trinity-enterprise#524). Scope model per abilityai/trinity-enterprise#484 (per-agent shared working folder, incubating) and #489 (per-user isolation, parked).