Skip to content

Added ability to multi-select torrents.#82

Closed
himsin wants to merge 1 commit into
mkbula:masterfrom
himsin:multiSelect
Closed

Added ability to multi-select torrents.#82
himsin wants to merge 1 commit into
mkbula:masterfrom
himsin:multiSelect

Conversation

@himsin
Copy link
Copy Markdown
Contributor

@himsin himsin commented May 11, 2026

Desktop UI:

  1. Checkbox toggle without Ctrl: The checkbox in each row now has its own onClick handler that toggles selection independently of the row click. Clicking the checkbox adds/removes the torrent from selection without needing Ctrl. Clicking elsewhere on the row still works with the existing single/Ctrl/Shift selection logic.
  2. Multi-select detail panel: When multiple torrents are selected, the details panel shows "N torrents selected" instead of "Select a torrent". Single-torrent selection still shows the full detail view (existing behavior preserved).

Mobile UI:

  1. Long-press to multiselect: A 500ms touch-hold on any torrent card enters multiselect mode and selects that torrent. Includes haptic feedback.
  2. Tap to toggle in multiselect mode: When multiselect is active, tapping a torrent toggles its selection instead of opening the detail drawer. If all torrents are deselected, multiselect mode automatically turns off.
  3. Visual selection indicators: Selected cards get an accent-colored border/background. In expanded mode, the state icon is replaced with a checkmark circle. In compact mode, a checkbox circle appears before the name.
  4. Floating action toolbar: When in multiselect mode, a fixed toolbar appears above the bottom navigation with:
    4.1. X button to cancel multiselect
    4.2. Selection count display
    4.3. Play (start/resume), Square (stop), Trash (delete) action buttons
    4.4. All actions are grouped by instance and applied to all selected torrents
  5. Delete confirmation modal: Delete shows a confirmation dialog with "Remove from list" and "Delete with files" options, matching the desktop delete modal pattern.
  6. Swipe disabled in multiselect: The swipe-to-toggle gesture is hidden during multiselect mode to avoid conflicts.

@mkbula
Copy link
Copy Markdown
Owner

mkbula commented May 13, 2026

Thanks for the PR.

  1. Web selection already works, with ctrl + click, ctrl + A, shift click for range.
  2. I don't feel the need for multi select on mobile.
  3. The PR introduced some bugs and dead code.
  • handleCheckboxToggle is duplicated with handleSelect(hash, /*multi=*/true, /*range=*/false) - both toggle membership in the Set and update lastSelected.
  • Accessibility regression on checkbox
  • Swipe to toggle is dead
  • Compact view long press doesn't work on iOS

@mkbula mkbula closed this May 13, 2026
@himsin
Copy link
Copy Markdown
Contributor Author

himsin commented May 13, 2026

  1. Web interface shows checkboxes but user can't select multiple checkboxes without ctrl or shift keys. That's not how checkboxes work in general.
  2. Accessibility regression, dead code and iOS issues can be fixed. Swipe toggle always felt counter intuitive to me because start/pause can always be performed on clicking a torrent.

This was my most desired feature. I guess I'll keep maintaining it in my fork.

@mkbula
Copy link
Copy Markdown
Owner

mkbula commented May 14, 2026

  1. That's exactly how checkboxes work. there's already a multi-select with ctrl/shift. And this is the type of management that fits web view way better than mobile, mobile web app should be less-featured and decluttered on purpose.

What's missing for you here? I just don't see the use case. Can you explain? I might do it myself if it's really needed.

@himsin
Copy link
Copy Markdown
Contributor Author

himsin commented May 14, 2026

  1. Checkboxes don't get de-selected when you click on another checkbox. Currently there's no way to select multiple torrents on my iPad because it shows web UI in iPad browsers and there's no keyboard attached to it.

I mostly manage my torrents via mobile (android) or iPad remotely because I'm hardly at home. So multi-select is a must have feature for me and current implementation doesn't work on both the devices.

@mkbula
Copy link
Copy Markdown
Owner

mkbula commented May 14, 2026

Ahh ok I understand it now. Will add it.

@himsin
Copy link
Copy Markdown
Contributor Author

himsin commented May 14, 2026

Thanks... Let me know if you need any help with it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants