Skip to content

feat: copy files and folders #13

Description

@nextestudios

Summary

Copy files and folders to a destination using the operation engine.

Motivation

Copy is a core file-manager operation and does not exist yet.

Requirements

  • Writes to a controlled temporary file and finalizes only on success; the source is never modified.
  • Recursive folder copy without following junctions/symlinks by default.
  • Progress with bytes when measurable; indeterminate progress otherwise.
  • Destination chosen through the existing in-app folder picker (or via Paste).

Controller UX

Mark items with West/X → North → Copy to… → pick the folder with the in-app picker → confirm.

Technical Notes

Implemented on the operation engine; the destination picker is AppController.OpenFolderPicker.

Acceptance Criteria

  • Copied files are byte-identical; timestamps preserved where possible.
  • Cancelled copies leave no partial files under the final names.
  • Copying a folder into itself is refused.

Testing

Unit tests for new branches and for every bug reproduced before a fix (no trivial variations, see AGENTS.md). Windows integration tests for long paths and locked files.

Dependencies


Priority: critical · Milestone: 1 · Core File Operations

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: filesystemFile system access and Windows file semanticsarea: operationsCopy/move/delete/rename engine, queue, historypriority: criticalBlocks core usage; implement firsttype: featureNew capability

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions