Web UI: drag-and-drop file upload #70

Closed
opened 2026-07-30 02:56:11 +00:00 by Cordy · 1 comment
Owner

Dogfood finding (Nikola, 2026-07-30): the only way to upload is the "Upload file" button, but users instinctively drag files onto the window.

Add a drop target over the file list: dragover shows an overlay ("Drop files to upload to "), drop uploads into the current directory through the existing upload path (direct POST for small files, TUS for ≥16 MiB, with the existing progress bar and per-file in-flight guard). Multi-file drops upload sequentially. Must not fire in non-file views (Shares, Deleted files, search results) or in read-only spaces (#64), and the browser's default "open the file" behavior must be suppressed document-wide. Directory drops: out of scope for now unless trivial via webkitGetAsEntry.

Dogfood finding (Nikola, 2026-07-30): the only way to upload is the "Upload file" button, but users instinctively drag files onto the window. Add a drop target over the file list: dragover shows an overlay ("Drop files to upload to <path>"), drop uploads into the current directory through the existing upload path (direct POST for small files, TUS for ≥16 MiB, with the existing progress bar and per-file in-flight guard). Multi-file drops upload sequentially. Must not fire in non-file views (Shares, Deleted files, search results) or in read-only spaces (#64), and the browser's default "open the file" behavior must be suppressed document-wide. Directory drops: out of scope for now unless trivial via `webkitGetAsEntry`.
Author
Owner

Shipped in PR #72, released as v0.3.18, live on the .249 dogfood.

Verified on main: drop overlay, document-level drop handler, and the shared uploadFiles() path (file picker and drop now use the same code) are all present. Dropping files uploads them to the current directory through the existing pipeline — direct POST under 16 MiB, TUS with progress/resume above it, per-destination in-flight guard — with an overlay showing the destination while dragging. Armed only in the files view via the new currentView flag, and the document-wide handler prevents the browser navigating away on a stray drop.

Directory drops remain out of scope as noted in the issue.

(Missed the auto-close because PR #72 named the issues in its title rather than a Closes #70 line.)

Shipped in PR #72, released as **v0.3.18**, live on the `.249` dogfood. Verified on main: drop overlay, document-level `drop` handler, and the shared `uploadFiles()` path (file picker and drop now use the same code) are all present. Dropping files uploads them to the current directory through the existing pipeline — direct POST under 16 MiB, TUS with progress/resume above it, per-destination in-flight guard — with an overlay showing the destination while dragging. Armed only in the files view via the new `currentView` flag, and the document-wide handler prevents the browser navigating away on a stray drop. Directory drops remain out of scope as noted in the issue. (Missed the auto-close because PR #72 named the issues in its title rather than a `Closes #70` line.)
Cordy closed this issue 2026-07-30 03:21:25 +00:00
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Cordy/Cairn#70
No description provided.