Files
pad/web/e2e
xarmian b8c9b0ea6b fix(web): the import dialog shows progress, stops on a stall, and says what was kept (BUG-3475) (#1869)
* fix(web): the import dialog shows progress, stops on a stall, and says what was kept (BUG-3475)

The dialog sat on 'Importing...' forever when the upload stalled: the upload
was a bare fetch, with no progress and no way to notice a stall.

- The upload goes over XMLHttpRequest (lib/api/importUpload.ts): bytes sent
  of total, then 'Finishing the import...'. No upload progress for 60s, or
  no response 120s after the last byte, ends it; 'Stop upload' and closing
  the dialog cancel it. Both bounds are pinned against the server's 60s
  per-Read idle window, read from the Go source.
- Each attempt carries a fresh import key (getRandomValues: randomUUID needs a
  secure context, and http on a LAN IP is not one). When no response
  arrives, the dialog asks GET /workspaces/import-status for up to 75s and
  says exactly one of: finished (Open workspace), partial workspace kept
  (Open workspace), nothing kept (Try again), or unknown (check your
  workspace list). An unknown key is never 'nothing was kept'.
- A new open of the dialog ends any earlier operation, so a late outcome
  cannot paint onto it; it is closed through the store too, which close()
  never sees.

Claude-Session: https://claude.ai/code/session_01Q9WssCjFuHjSfLABoW4tmS

* test(e2e): a failed import upload is resolved through import-status (BUG-3475)

Claude-Session: https://claude.ai/code/session_01Q9WssCjFuHjSfLABoW4tmS

* fix(web): import dialog fences Open workspace, closing stops the outcome poll, callbacks cannot wedge the upload (BUG-3475)

codex r1 on the web half.

Claude-Session: https://claude.ai/code/session_01Q9WssCjFuHjSfLABoW4tmS

* fix(web): Open workspace does not navigate after the dialog was closed (BUG-3475)

codex r2 on the web half.

Claude-Session: https://claude.ai/code/session_01Q9WssCjFuHjSfLABoW4tmS
2026-10-07 22:05:11 -04:00
..