Files
windmill/frontend
Guilhem LemouelandClaude Opus 5 2c79a2f143 fix(ai-chat): make an attachment's key agree with its bytes, and the test backfill find anything
Addresses the CI reviewers on f41174e, plus what the local rounds found on top.

- An image is re-encoded to PNG/JPEG on the way in but kept the picked filename,
  and the worker reads an attachment's media type from the object key alone
  (`mime_guess::from_path`), never from the stored content type — so a `.webp`
  reached the provider as PNG bytes labelled webp, which Anthropic rejects.
  `storedAttachmentName` now makes the extension match the encoding; the same
  rule covers a PDF picked without one, whose key would guess as `image/png`.
- The `is_test` backfill matched no existing conversation: no message row held
  the flow job before this release, so it now walks to the run's root, ordered
  as `get_root_job_id` is — `flow_innermost_root_job` stops at the closest flow
  scope, which would miss an agent inside a subflow.
- A stored value for the attachments input no longer rides an attachment-free
  message: the paperclip is that input's only writer wherever it is offered.
- The lowest thinking stop is now clickable from the `default` state, where the
  range input's value already read 0 and so fired no event.
- Dropped `footerControls` and the `settleStreamingRows` export, neither of
  which ever had a caller.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QN7VboDEm9HAB1t4sMxMdE
2026-09-10 16:51:45 +02:00
..

Windmill frontend

The Windmill frontend written in Svelte 5 + Tailwind CSS

The frontend is under AGPL, see the LICENSE file at the root of this repo