Ghost FTP 0.99.4
Distribution: Preview development. This release may only publish after every required exact-SHA workflow passes and all assets, checksums and archive extraction checks succeed.
Implementation
- Add a native macOS build of the same React + Tauri + Rust desktop application used on Windows/Linux. It shares authenticated FTP, explicit FTPS and SFTP implementation, SSH host-key verification, saved-site management, transfers, sync, search and security controls instead of attempting to label the still-limited SwiftUI client as equivalent.
- Enable the native Apple Keychain backend of the Rust credential vault. Do not store passwords in plain-text preferences or use a mock vault; preserve the stable service identity
com.ghostftp.credentials. - Add dedicated macOS Tauri application configuration, branded
.icnsgeneration from the repository SVG and two native macOS CI matrix builds (Apple Silicon ARM64 and Intel x86_64): locked dependency verification, frontend build, shared Rust tests, signed-as-development native.app, extracted archive integrity, bundle identity and version checks. - Harden macOS local file operations with Darwin's atomic
renamex_np(RENAME_EXCL)instead of a check-then-rename race that could overwrite a competing file or symlink. Add an actual macOS directory-collision regression and enforce the API contract in frontend security checks. - The Tauri candidate is packaged as Ghost FTP Desktop.app, deliberately distinct from the existing SwiftUI Ghost FTP.app so a Finder copy into Applications cannot overwrite the old application by filename.
- Keep the preexisting dedicated SwiftUI macOS Preview build and its test coverage intact. The new full desktop engine is introduced as a separate, explicitly labeled macOS Shared Preview until upgrade migration and real-device GUI interaction acceptance establish that it can replace the existing package.
- Require successful macOS shared desktop CI alongside all existing platform, security, dead-code and protocol gates before publishing the new preview, and include separate ARM64 and Intel ZIPs and SHA-256 digests in the release assets if accepted.
Remaining release limitations
- An ad-hoc signed macOS app is not a Developer ID signed and Apple-notarized consumer installation. Gatekeeper and target-device installation/upgrade acceptance are separate checks.
- Native macOS integration must be validated with interactive file operations and target-device Apple Keychain permissions; CI compilation and command-line protocol E2E do not prove the complete macOS GUI has parity.
- The older SwiftUI app does not yet support native FTPS or SFTP and must continue failing closed.
- Existing SwiftUI and Tauri bundles have different bundle identifiers and application-storage locations; do not silently overwrite or delete legacy saved profiles, credentials or user data without an independently tested migration.
- Physical >4 GiB content-hash roundtrips, interruption tests, macOS battery benchmarks and pixel-by-pixel comparison against all reference screens remain unverified.
See all versions and downloads. Existing published releases and tags must remain immutable.