Skip to content

Add bulk multi-select actions to the Drive tab#308

Merged
mbakgun merged 2 commits into
mainfrom
impl/drive-tab-improvements
Jul 9, 2026
Merged

Add bulk multi-select actions to the Drive tab#308
mbakgun merged 2 commits into
mainfrom
impl/drive-tab-improvements

Conversation

@ckakgun

@ckakgun ckakgun commented Jul 9, 2026

Copy link
Copy Markdown
Collaborator

Summary

Adds shift/checkbox multi-select to the Drive tab so a single dialog can apply the same action to many files at once — the workflow requested for setting the same password or team-sharing across a large set of files.

  • Selection UI in DrivePanel.vue: per-row checkboxes on files you own (files shared with you via a team are read-only and not selectable), a header "select all on page" checkbox with indeterminate state, and Shift-click range selection. A bulk action bar shows the count and opens the dialog.
  • New BulkFileShareDialog.vue:
    • Share all selected with my teams / Remove team sharing (one click each)
    • Create a share link on every selected file using the same expiry / password / max-downloads
    • Reports "Applied to X of N files" (non-owned ids are skipped). IDs are snapshotted on open so a second action works after the selection clears.
  • Rows-per-page selector (25 / 50 / 100 / All) at the bottom, datatable-style, so selection can span the whole Drive on one page.
  • Backend (files.py): two bulk endpoints reusing existing helpers (_get_owned_file, _set_file_team_sharing, create_access_token), no migration:
    • PATCH /api/files/team-sharing/bulk
    • POST /api/files/share/bulk
    • Both return { succeeded, failed } per-file id lists.
  • Docs: updated tabs/drive-tab.md and reference/drive.md.

Testing

  • backend/tests/test_files_bulk.py (new): bulk team-share enable/disable, bulk share-link creation with shared settings, and non-owned ids landing in failed. All pass.
  • bun run lint, bun run typecheck, and bun run build pass.
  • Full ./check.sh passes except one pre-existing flaky MCP heartbeat-streaming timing test (test_mcp_jsonrpc_tool_calls.py), which passes in isolation and is unrelated to these changes.

🤖 Generated with Claude Code

ckakgun and others added 2 commits July 9, 2026 18:43
Select multiple owned files with row checkboxes (Shift-click for a range,
header checkbox for the whole page) and apply one action to all of them from
a single dialog: share/unshare with your teams, or create a share link with
the same password/expiry/max-downloads on every selected file. Adds a
rows-per-page selector (25/50/100/All) so selection can span the whole Drive.

Backend: two bulk endpoints reusing existing helpers —
PATCH /api/files/team-sharing/bulk and POST /api/files/share/bulk — each
returning per-file succeeded/failed ids; non-owned ids are skipped.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@mbakgun mbakgun enabled auto-merge (squash) July 9, 2026 17:34
@mbakgun mbakgun merged commit a27b5e8 into main Jul 9, 2026
2 checks passed
@mbakgun mbakgun deleted the impl/drive-tab-improvements branch July 9, 2026 17:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants