## ๐งฑ Core Functionality (Must-Have)
These are *non-negotiables* to match basic POSIX tools.
### โ
Basic Commands
* `mv <src> <dest>` โ Move files/directories
* `cp <src> <dest>` โ Copy files/directories
* Recursive copy (`-r`)
* Force overwrite (`-f`)
* No-clobber / skip existing (`-n`)
* Interactive confirm on overwrite (`-i`)
### โ
Permissions and Metadata
* Preserve mode, ownership, and timestamps (`--preserve` or `-p`)
* Ability to copy symlinks as symlinks or dereference (`-L`, `-P`)
### โ
Wildcards & Globs
* Accepts shell-style wildcards (e.g. `*.txt`)
* Expands directories properly
---
## โ๏ธ Intermediate Features (Should-Have)
These help it scale for power users and scripting.
### ๐งพ Dry Run & Logging
* `--dry-run` for preview
* Verbose logging (`-v`)
* Summary output (count of files moved/copied, skipped, failed)
### ๐งฐ Advanced Options
* Rename-on-collision (`--rename` or `--suffix` support)
* Backup mode (`--backup`)
* Move only if source is newer (`--update`)
* Progress reporting (especially for large files)
### ๐๏ธ Metadata Handling
* Extended attribute support (`xattr`)
* Preserve hardlinks, ACLs, etc. (especially for backup workflows)
---
## ๐ก Quality of Life (Nice-to-Have)
These are not needed to *replace* `mv`/`cp`, but help it stand out.
### ๐ง Smarter Interface
* Human-readable output
* Error messages with suggested fixes
* Suggestions for commands when syntax is invalid
### ๐ฆ Batch/Interactive Mode
* Interactive TUI/CLI interface for resolving conflicts
* Allow batching multiple operations from a config file or stdin
### ๐ Extensibility
* Plugin or scriptable hooks (pre/post move scripts)
* Integration with `dsc`, `pathmaster`, etc. for path resolution
### ๐ Rename Templates
* Bulk rename using patterns (`--template '{name}_bak{ext}'`)
* Regex-based renaming
### โ๏ธ Remote Support
* Operate across remote volumes (e.g., SFTP, cloud)
* Seamless fallback to `rsync` or similar tools
---
## ๐จ Error Handling
* Safe fallback on partial failure (transactional move/copy)
* Retry logic or resumable copy
* Clear handling of symbolic and hard links
---
## ๐ System Awareness
* Filesystem boundary awareness (`--one-file-system`)
* Copy/move respecting mount points, permissions, and quotas
---
### Optional Goals for a Modern Toolset
If SMV aspires to be more than a core tool:
* File integrity check (checksums before/after copy)
* Deduplication during copy (like `rsync --inplace`)
* Parallelization/threading for large batch ops
* Config file or environment profiles
* JSON or machine-readable output (`--json`)