Skip to content

Phoenix: Workspace Multi-Select #1791

@shaheerk94

Description

@shaheerk94

Feature: Multi-File Selection and Operations in Workspace Navigation

Problem Statement
Users often need to perform the same operation on multiple files but currently can only act on one file at a time. This slows down workflows and increases the risk of human error.


Proposed Solution

Enable multi-file selection and bulk operations within the workspace navigation panel.

Selection Behavior

  • Shift + click → select a contiguous range of files.
  • Cmd / Ctrl + click → select or deselect individual files.
  • Clicking a file opens it as usual. Shift/Cmd/Ctrl clicking only selects—it does not open the file.

Supported Operations (via Right-Click Context Menu)

  • Move / Copy / Delete

    • Backend should support multi-file requests in one transaction.
    • If partial failures occur (e.g., name conflicts or missing files), process valid items and return structured errors.
    • For name conflicts, offer “Skip”, “Replace”, or “Keep both” (append a number). Include an “Apply to all” checkbox.
    • For non-name conflicts, offer “Skip” or “Retry” options.
    • The UI will send a JSON array of selected files to the corresponding endpoint and display success/failure results clearly.
  • Move to Workspace

    • Same semantics as Move/Copy/Delete, but target workspace instead of folder.
  • Run Action

    • “Run Action” lists all actions available in the current workspace, filtered by file type and validity in multi-select mode.
    • User selects an action, triggering a modal where parameters are pre-populated with the selected files.
    • One action is created with all selected files as input.
    • For now, support only many-to-one mappings (a single action operating on all selected files). Many-to-many support can come later.
    • The primary flag in action definitions determines which parameter receives the file selection.
    • Only one primary flag is allowed per action.
    • The right-click “Actions” menu shows only actions whose primary parameter type matches the selection (e.g., sequence, file, file list).
  • Download

    • Downloads all selected files as a single compressed archive (e.g., .zip).
  • Output Menu

    • Lists all supported output formats.
    • On selection, converts and downloads files that can be converted.
    • Files that cannot be converted are either skipped (with a warning) or downloaded in native format—final behavior TBD with Carter/Travis.

Out-of-Scope / Hidden in Multi-Select

Actions that do not make sense for multiple files (e.g., Rename, New File, New Folder, Upload File, Copy Link to Download) will be hidden when multiple items are selected.


Design Decisions

  • Input Handling: Support only many-to-one action inputs initially.
  • Action Schema Update: Add new input types (file, file list) alongside existing (sequence, sequence list).
  • Error Handling: Always perform valid operations and report detailed errors for failures.
  • Post-Action UI: After running an action, show confirmation modal (reuse existing modal used for single-file actions) with link to action-run details.
  • State Feedback: Display clear progress and result indicators (“4 of 5 files moved successfully”).
  • Future Work: Expand to many-to-many patterns where each selected file triggers its own action instance.

Summary

This feature brings parity with standard OS-level file operations, reduces repetitive manual actions, and integrates cleanly with existing workspace actions. The design balances immediate utility (many-to-one actions, bulk Move/Delete) with an upgrade path to more complex patterns later.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions