{#- The upload machine, and only that: the versions table above it is described (`crate::quasi::item_files`). This is the bespoke region that panel mounts, which is where markup driven by client-side state belongs -- a queue, a progress bar, a speed readout, a cancel, a retry and an error surface, all of it `static/item-upload.js`. The wrapper keeps its own id and `data-item-id`: the script reads them, and a described region carries no host dataset. Whether this region can be described was counted on 2026-08-30 and the answer is written down in `crate::quasi::item_files`, "Can the uploader move to the description layer?". Short version: the progress surface and the success/error surfaces need no new vocabulary and are the host's to draw already, and the one shape that is missing is a queue of picked files with a field per row. `quasi_router::Repeating` is the near miss and its own docs rule it out; the answer is a ruling in `quasi-router` and `makeover-layout` rather than a change here. -#}
Add one file per platform. Each gets its own label (e.g. "macOS (arm)", "Linux (x86_64)").
File Label
{#- What the queue takes and how many of them is described, not written out here: `crate::quasi::upload_field::version_queue`. It carries no destination on purpose, because nothing is sent until Upload All names the version. -#}
{{ crate::quasi::upload_field::version_queue()|safe }}
{#- One described field per version that has no file yet. Each carries its own address, so picking a file uploads it to that version and nothing has to remember which button was pressed. Shown rather than revealed. The reveal was an "Upload File" button in the version's table row that unhid the panel here, and a described cell holds leaves and acts rather than a region to unhide. See `crate::quasi::item_files`, "What the reveal dance cost". -#} {% for version in versions %}{% if !version.has_file %} {#- `data-upload-goes` rather than `data-upload-refreshes`: that one names a control to click, and it named the tab *button* `#tab-files`, which the described strip (`6b24f2df`) stopped emitting. The item's audio upload already lands here the same way. -#}
{{ crate::quasi::upload_field::existing_version(version.id.as_str())|safe }}
{% endif %}{% endfor %}