Skip to content

Download a run's outputs as one zip from the viewer - #88

Merged
softmarshmallow merged 1 commit into
mainfrom
viewer-outputs-zip
Oct 13, 2026
Merged

softmarshmallow merged 1 commit into
mainfrom
viewer-outputs-zip

Conversation

@softmarshmallow

Copy link
Copy Markdown
Member

A run's outputs could only be saved one file at a time. The workflow's details in the viewer now offer Download all (.zip) above its outputs.

  • Names. Each file is named as the run folder's outputs/ names it (store.md §8 "Names"): <name><suffix> for an output that is one file, <name>/<label><suffix> for each file of any other, long segments cut as the run folder cuts them. The archive is named after the run; files are stored uncompressed.
  • Bytes. From the viewer's artifact URLs; each file is checked against its recorded size and SHA-256 before it goes in. Files the viewer cannot serve are left out, and the details say how many.
  • Build. One vanilla class in web/fx-web (outputs.ts) with fflate 0.8.3 (MIT, no dependencies, bundled so installed viewers stay offline); the React viewer only mounts it.
  • Too large. Over 2 GiB, or more than the tab can hold, it fails with an error that says so; each output's own link still saves it.
  • Docs. The viewing guide and AGENT_READINESS: a viewer-only convenience; --deliver and export cover the job for agents.

The website's showcases do not offer it: a zip of a recording's outputs is not helpful to users today. #87 records the idea that replaces it.

bun.lock also brings two stale workspace versions (0.5.0) up to the packages' 0.6.0.

Checked

  • outputs.test.ts: names (single file, list, keyed collection, keys with / and .., suffix not doubled, long segments), omitted files, a later file replacing an earlier one at a name, digest and HTTP failures, the size limit refused before any read, the controller.
  • Against real run folders: the zip of the cold viewer fixture holds the same 20 names and bytes as its outputs/; a scratch run with 300-character, non-ASCII and //.. keys matches the engine's names too.
  • In the browser: the local viewer saves cold.zip with all 20 files.
  • test:viewer 152/152, check:viewer, build:viewer, check:www, test:www 94/94, cargo test -p grida-fx-viewer, tools/check_viewer.py.

Closes #82.

A run's outputs could only be saved one file at a time. The workflow's
details now offer Download all (.zip) above its outputs.

- Each file is named as the run folder's outputs/ names it (store.md §8
  "Names"): `<name><suffix>` for an output that is one file,
  `<name>/<label><suffix>` for each file of any other, long segments cut
  as the run folder cuts them. The archive is named after the run, and
  files are stored uncompressed.
- The bytes come from the viewer's artifact URLs, and each file is checked
  against its recorded size and SHA-256 before it goes in. Files the
  viewer cannot serve are left out, and the details say how many.
- One vanilla class in fx-web builds it with fflate (MIT, no
  dependencies, bundled so installed viewers stay offline); the viewer
  only mounts it.
- An archive over 2 GiB, or one the tab cannot hold, fails with an error
  that says so; each output's own link still saves it.
- The viewing guide and AGENT_READINESS say so: a viewer-only convenience,
  with --deliver and export covering the job for agents.

The website's showcases do not offer it: a zip of a recording's outputs
does not help a visitor. #87 records the idea that replaces it.

Closes #82.
@vercel

vercel Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
fx Ready Ready Preview Oct 13, 2026 6:17pm UTC

Request Review

@softmarshmallow
softmarshmallow merged commit 74d9c95 into main Oct 13, 2026
13 checks passed

This branch was successfully deployed

1 active deployment
Preview — ea1590bb Deployed Oct 13, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Viewer: download a run's outputs as a zip

1 participant