feat: support multiple file uploads in bucket#2967
feat: support multiple file uploads in bucket#2967premtsd-code wants to merge 3 commits intomainfrom
Conversation
Allow selecting and dropping multiple files at once when uploading to a storage bucket. Files are uploaded in parallel with a concurrency limit of 5 to avoid overwhelming the browser and server.
Greptile SummaryThis PR extends storage bucket file management to support multi-file selection and drag-and-drop upload, with a concurrency limit of 5 parallel uploads. All three issues flagged in the previous review thread have been resolved: failed uploads are now marked Confidence Score: 5/5Safe to merge; previous blocking issues resolved and only minor hardening suggestions remain. All P0/P1 issues from the prior review cycle are addressed. The two remaining comments are defensive P2 suggestions (null guard and case normalisation) that do not affect the primary happy path and follow patterns already present in the codebase. No files require special attention.
|
| Filename | Overview |
|---|---|
| src/lib/stores/uploader.ts | Adds uploadFiles with a 5-slot concurrency pool; uploadFile now correctly sets status: 'failed' on rejection — previous thread concern resolved. |
| src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/create/+page.svelte | Adds multi-file selection via multiple prop and maps files to upload; now checks failures after uploadFiles resolves; one edge-case: Array.from(files) is called without a null guard on files. |
| src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/+page.svelte | Adds drag-and-drop handler with extension validation and failure checks; extension comparison lowercases only the filename side, not the bucket's extension list. |
Reviews (3): Last reviewed commit: "refactor: move MAX_CONCURRENT_UPLOADS in..." | Re-trigger Greptile
src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/create/+page.svelte
Outdated
Show resolved
Hide resolved
src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/+page.svelte
Show resolved
Hide resolved
…s on drop - uploadFile now catches errors and sets status to 'failed' with error message - Both create page and drag-drop check uploadFiles results for failures and show error notifications - Drag-drop validates file extensions against bucket allowedFileExtensions before uploading, rejecting disallowed files with a notification
|
Tip: Greploop — Automatically fix all review issues by running Use the Greptile plugin for Claude Code to query reviews, search comments, and manage custom context directly from your terminal. |
Summary
Test plan
Before:

After:
