Upload in a wizard step field throws an error dialog (server returns 418, console shows [Uppy] this.done is not a function)

Environment

  • Discourse version: v2026.6.0-latest +377 (latest available at time of report: +491, not yet applied)
  • Custom Wizard commit: 0980473d (reported as up-to-date for this core in /admin/update)
  • Install: standard discourse_docker (self-hosted), external PostgreSQL 18.4

Steps to reproduce

  1. Create a wizard with a step that contains an upload field.
  2. As a user, go through the wizard and select an image to upload into that field.
  3. An error dialog appears: “Sorry, an error occurred while uploading the file . Please try again.” — even though the file does actually get uploaded.

Server log (production.log)

Started POST "/uploads.json?client_id=..."
Processing by UploadsController#create as JSON
Parameters: {"upload_type" => "wizard_step_1_field_6", "name" => "grafica-frame-15.png", "type" => "image/png", "sha1_checksum" => "...", "file" => #<ActionDispatch::Http::UploadedFile ...>, "client_id" => "..."}
Completed 418 in 27ms

Browser console (Chrome)

[Uppy] this.done is not a function
    at uppy-upload.js:503 (addFiles)
    ... index.js (#uploadLocalFile / #uploadFiles / #runUpload)
    ... uploads.js:410-411

Notes
The upload appears to succeed despite the error dialog, so it looks like a client-side callback breaking (this.done in the Uppy upload flow), likely tied to a recent change in the Discourse core upload pipeline. The plugin is on the commit that /admin/update reports as compatible with the current core, so this is happening on the “compatible” pairing. Happy to provide more logs or test a proposed fix.