Ghost FTP v0.95.36 — keyring enforcement, keep-up-to-date integrity and CLI scripts (development preview)
Previous published release: v0.95.35.
Source improvements
- Saved FTP/SFTP and cloud profile credentials continue to use the OS credential store, backed by Windows native credentials (DPAPI-based user-scoped protection) or Linux native Secret Service. This release adds a second persistence boundary:
ProfileStore::writerefuses nonempty plaintext password/key passphrase fields. Existing encrypted portable backup with Argon2id provides a master-passphrase workflow for backup/restore; it is not a new runtime vault. - Keep-up-to-date already uses
notifyrecursive local watches and a polling fallback. Now failed, canceled, missing or timed-out transfers never advancesync_stateor mark a false successful sync. The next poll can reconcile again. Internal temporary .ghostftp download and delta files are suppressed. Watcher errors cause rechecks. - The external-editor workflow (which delegates syntax highlighting, auto-bracket completion and in-file search to the user's installed editor) now uses private Unix temp folders and bounded/coalesced notifications, and does not acknowledge failed upload attempts. It retries after a watcher or poll event.
- New Sync & Backup script buttons provide CMD, PowerShell and .NET FileSystemWatcher PowerShell scripts invoking saved-profile
ghostftp-cli sync. No inline credentials. Script generation is restricted to additive, exclusion-free, supported folder pairs; Mirror always requires the in-app preview.
Verification
- Exact-head Rust fmt/test/Clippy, TypeScript and UI script-injection regressions
- Dead-file/source reachability and published docs/version consistency
- Real FTP/FTPS/SFTP protocol E2E and Windows hardening
- Windows NSIS/MSI and Linux DEB/RPM/AppImage native bundle and lifecycle smoke
- Android/macOS compatibility with shared source
- Manual E2E of S3, Backblaze B2, Google Cloud Storage and WebDAV against real vendor accounts
- Full 59 Windows/Linux reference-screen visual acceptance
- Built-in multi-language syntax highlighting/auto-brackets/in-file find (not implemented by these changes)
- Large dataset comparative FileZilla throughput benchmark
Scope limits: In-app continuous sync requires Ghost FTP to remain running. Scripts require ghostftp-cli in PATH and an accessible saved profile; the PowerShell/.NET watcher is an independent process that the user controls. OS file watching is prompt but does not guarantee hard real-time latency. This increment is not a claim of full feature parity or performance superiority over FileZilla/WinSCP/Cyberduck.