Add file operations #74

Merged
miro merged 2 commits from claude/todo-file-operations-build-57632c into main 2026-10-11 21:09:04 +00:00
Owner

Builds every item under File operations in todo.md.

  • Trash: restore, delete permanently and empty trash. Items return to the root of /storage since the original location isn't tracked.
  • Move and copy: "Move to…" / "Copy to…" folder picker, plus drag-and-drop onto folders (Alt/Option copies). Name collisions get a numbered suffix.
  • Download: single files as is; folders and selections as a streamed, store-only zip (server/zip.ts, no new dependency, no zip64).
  • Multi-select: bulk bar with move, copy, download and trash.
  • Uploads: chunked (4 MiB) and resumable, progress panel, folder upload, drop files or folders anywhere on the page. /api/upload-file now takes chunks.
  • Dialogs: native alert/confirm/prompt replaced by shadcn alert-dialog via useDialogs().

Also fixes trashing on name collisions and nested folders.

Testing

  • typecheck, knip, build pass
  • new e2e/file-operations.spec.ts (move/copy, drag, trash, download, upload, resume) passes against a local WebDAV
  • e2e/new-directory.spec.ts fails on main too: it never signs in
Builds every item under **File operations** in `todo.md`. - **Trash**: restore, delete permanently and empty trash. Items return to the root of `/storage` since the original location isn't tracked. - **Move and copy**: "Move to…" / "Copy to…" folder picker, plus drag-and-drop onto folders (Alt/Option copies). Name collisions get a numbered suffix. - **Download**: single files as is; folders and selections as a streamed, store-only zip (`server/zip.ts`, no new dependency, no zip64). - **Multi-select**: bulk bar with move, copy, download and trash. - **Uploads**: chunked (4 MiB) and resumable, progress panel, folder upload, drop files or folders anywhere on the page. `/api/upload-file` now takes chunks. - **Dialogs**: native `alert`/`confirm`/`prompt` replaced by shadcn alert-dialog via `useDialogs()`. Also fixes trashing on name collisions and nested folders. ## Testing - typecheck, knip, build pass - new `e2e/file-operations.spec.ts` (move/copy, drag, trash, download, upload, resume) passes against a local WebDAV - `e2e/new-directory.spec.ts` fails on main too: it never signs in
Add file operations: trash, move/copy, download, multi-select, uploads
Some checks failed
CI / format (pull_request) Successful in 26s
CI / test (pull_request) Successful in 42s
CI / lint (pull_request) Failing after 45s
CI / knip (pull_request) Successful in 50s
CI / typecheck (pull_request) Successful in 54s
CI / docker (arm64, docker-arm64) (pull_request) Successful in 14s
CI / build (pull_request) Successful in 33s
CI / docker (amd64, docker-amd64) (pull_request) Successful in 14s
CI / manifest (pull_request) Has been skipped
E2E / playwright (pull_request) Failing after 3m0s
e930817792
- trash: browse, restore, delete permanently, empty
- move and copy via folder picker and drag-and-drop
- download files, or folders and selections as a streamed zip
- multi-select with bulk actions
- chunked, resumable uploads with progress panel, folder upload and
  drop-anywhere
- replace native alert/confirm/prompt with shadcn alert-dialog
Fix lint error and sign in during the new directory e2e tests
All checks were successful
CI / lint (pull_request) Successful in 25s
CI / test (pull_request) Successful in 42s
CI / typecheck (pull_request) Successful in 43s
CI / format (pull_request) Successful in 43s
CI / knip (pull_request) Successful in 45s
CI / docker (arm64, docker-arm64) (pull_request) Successful in 14s
CI / build (pull_request) Successful in 32s
CI / docker (amd64, docker-amd64) (pull_request) Successful in 15s
CI / manifest (pull_request) Has been skipped
E2E / playwright (pull_request) Successful in 56s
73c294c8a6
miro merged commit 7c17dbb2db into main 2026-10-11 21:09:04 +00:00
miro deleted branch claude/todo-file-operations-build-57632c 2026-10-11 21:09:04 +00:00
miro referenced this pull request from a commit 2026-10-11 21:09:04 +00:00
Sign in to join this conversation.
No reviewers
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
miro/files!74
No description provided.