feat(upload): support presigned multipart manifest for S3 uploads

- Updated `js/s3-quick.js` to support new manifest structure: `{ bucket, key, uploadId, parts: [{partNumber, url}] }`.
- Added logic to sort parts, upload chunks, collect ETags, and call `completeUrl` if present.
- Updated `js/ui/components/UploadModal.js` to handle manifest flow, validate new structure, and alert user if completion is manual (missing `completeUrl`).
- Updated `components/upload-modal.html` with new placeholder example and documentation note.
- Verified logic with reproduction script and UI with Playwright.
This commit is contained in:
google-labs-jules[bot] committed 2026-01-25 02:44:49 +00:00
1 parent 4560ca3ca6
commit a33092fc47
4 files changed
+3289 -27

No files matched your search

+4 -1
View File
@@ -319,11 +319,14 @@
<div id="quickS3ManifestContainer" class="hidden space-y-2">
<label for="quickS3ManifestJson" class="text-xs font-medium text-text">Manifest JSON</label>
<p class="text-4xs text-muted leading-tight">
The manifest must be produced externally. This app does not create or sign presigned URLs.
</p>
<textarea
id="quickS3ManifestJson"
rows="6"
class="textarea text-xs font-mono"
placeholder='{"uploadId": "...", "partUrls": ["..."]}'
placeholder='{"bucket": "...", "key": "...", "uploadId": "...", "parts": [{"partNumber": 1, "url": "..."}]}'
></textarea>
</div>