# FlashSFTP

A focused Windows SFTP client with a familiar dual-pane workflow.

## Features

- Independent local or SFTP mode for either pane
- Site Manager and Quick Connect history
- Password, private-key, and keyboard-interactive authentication
- Secrets protected by Windows Credential Manager
- Persistent SSH host-key verification
- Back, forward, parent, refresh, sorting, search, and Windows file-type icons
- Upload, download, local copy, remote copy, and drag-and-drop
- Recursive directory transfers and deletion
- Queued transfers with pause, resume, retry, cancel, keep-both, and overwrite handling
- Per-file and overall progress, current speed, ETA, and colour-coded activity levels
- Remote editing with save-to-upload and conflict detection
- Remote CHMOD, rename, delete, new files, and new directories
- Restored pane modes, paths, splitters, columns, window placement, and unfinished queue
- Crash diagnostics under `%APPDATA%\FlashSftp\FlashSftp.log`

## Install

The compact Windows x64 release requires the free Microsoft .NET 8 Desktop Runtime. Keeping the runtime separate reduces the FlashSFTP download from roughly 160 MB to about 6 MB.

1. Extract the release folder.
2. Run `FlashSftp.exe` directly, or right-click `Install.ps1` and choose **Run with PowerShell**.
3. The installer checks the runtime, creates Desktop and Start Menu shortcuts, registers an uninstall entry, and installs per-user under `%LOCALAPPDATA%\Programs\FlashSFTP`.

Run `Uninstall.ps1` to remove program files and shortcuts. Saved sites and settings are retained in `%APPDATA%\FlashSftp`.

This preview build is not yet code-signed, so Windows SmartScreen may ask you to confirm the first launch. Verify the SHA-256 checksum published alongside the download.

## Build

```powershell
dotnet restore
dotnet build -c Release
dotnet publish -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
```

SSH support is provided by the MIT-licensed SSH.NET package. Check dependency advisories with `dotnet list package --vulnerable --include-transitive`.

An opt-in live-server smoke test is under `tests/FlashSftp.SmokeTest`. It reads `FLASHSFTP_TEST_HOST`, `FLASHSFTP_TEST_USERNAME`, `FLASHSFTP_TEST_PASSWORD`, and optional port/path environment variables, then verifies connect, upload, download, content integrity, and delete against that isolated test server.

## Security notes

- Passwords and key passphrases are stored in Windows Credential Manager, not the site-history JSON file.
- Server fingerprints are remembered after explicit confirmation. A changed fingerprint produces a high-visibility warning.
- The application is currently an unsigned development build. Windows SmartScreen may warn until a code-signing certificate is configured.
