* feat: attach files to a flow chat message
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix: store chat uploads under windmill_uploads and withdraw refused sends cleanly
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix: refuse extra files for a single-file input and keep attachments on retry
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix: clean up partial upload batches, withdraw a stopped send once, free retry payloads
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix: list a chat conversation only once its run starts and require files where the flow does
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat: carry uploaded attachments on the pending chat user message
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix: route rich-composer file paste through the attachment lanes and tighten comments
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix: keep a stopped turn's files for retry and let an explicit media type win
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix: refuse chat attachments sent without text and shorten comments
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix: resolve the attachments input from real flow input reads, ignoring loop iteration
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* refactor: read flow input references through one parser for the model and attachments controls
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix: withdraw an attachment send stopped after its uploads answered
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix: discard uploads when a send is stopped as its attachments are announced
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* docs: keep uploadAttachments' doc comment on uploadAttachments
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* refactor: never delete chat uploads from workspace storage
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* test: pin that a failed upload aborts the rest of its batch
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat: windmill-chat sdk for chat-mode flows in external frontends and raw apps
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018aQiZNAU8g17kWkyTryS5J
* fix: keep streamed answers until persisted, finish turns after history fallback
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018aQiZNAU8g17kWkyTryS5J
* feat: ai sdk transport and assistant-ui runtime for windmill-chat
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
* fix: finish a turn from the flow result until its answer row lands, hash chat ids without crypto.subtle
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
* fix: judge a turn answered by a persisted assistant row, wherever it was fetched
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
* fix: attribute a turn's answer to its own jobs, keep a local turn when switching conversations
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
* fix: mirror local history on every change, attribute failure-handler answers to the turn
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
* fix: new chat per token string in the React hook, idle after destroy, no reorder on view
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
* fix: recreate the hook's chat on any credential change, namespace local history per user
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
* fix: send the latest inputs from the React hook
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
---------
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>