Ghost FTP 0.30.2
Release date: 3 October 2026
Ghost FTP 0.30.2 follows the published canonical 0.30.1 release and packages the transfer-integrity, cross-platform UI/UX and CI hardening completed after that tag.
Transfer integrity and protocol safety
- Desktop whole-file downloads use transfer-specific sibling staging files and promote only after the backend operation succeeds, so a failed or canceled overwrite cannot truncate an existing local destination.
- Existing local destinations are preserved with backup-before-promotion and rollback if final promotion fails.
- Ghost FTP Agent whole-file fallback uses the same staged local replacement protection while the existing hash-verified delta assembly flow remains intact.
- Desktop SFTP Rename candidate probing fails closed: permission, connection and protocol errors can no longer be interpreted as an available destination.
- Directory uploads fail closed when local metadata cannot be read instead of silently authorizing or uploading an incomplete source tree.
- Android FTP, explicit FTPS and SFTP staged uploads share one fail-closed replacement transaction with explicit target-existence checks, backup, promotion, rollback and recovery-path reporting.
- Android SFTP treats only the protocol's no-such-file result as proof that an upload target is absent.
Android UI/UX and stability
- The connection protocol selector now exposes an accessible control name and applies protocol-default ports: FTP 21, explicit FTPS 21 and SFTP 22.
- Changing protocols updates the port only while the field is blank or still contains the previous protocol's default, so a user-entered custom port is preserved.
- The SFTP host-key fingerprint control is visible only for SFTP, removing irrelevant security input from FTP/FTPS forms without weakening SFTP verification.
- Emulator instrumentation may recover once from the confirmed Package Manager transport-only combination of split-APK install failure plus
Broken pipe; real test, assertion and application failures remain immediate blockers. - Instrumentation coverage verifies the protocol selector, default-port transition, custom-port preservation and conditional SFTP fingerprint visibility click by click.
Windows and Linux desktop UI/UX
- The Files toolbar now reflows to an icon-first compact layout near the native minimum window width instead of requiring horizontal action panning.
- Refresh, upload, download, new-folder, disconnect and More actions remain reachable at compact widths rather than being hidden.
- The active-site chip gains an explicit accessible name, including the current site name and the action it will perform.
- The shared React/Tauri surface applies these improvements to both Windows and Linux desktop builds.
Dead-code and quality audit
- Removed the unused Android
MAX_QUEUE_ROWSalias. - Audited private Kotlin symbols after cleanup: no declaration-only private functions or fields remain in
MainActivity.ktorConnectionModel.kt. - Desktop source reachability and TypeScript unused-local enforcement remain mandatory Quality gates, so orphan TS/TSX source and unused declarations cannot silently re-enter the release.
- UI contracts now lock the protocol-aware Android form, compact desktop toolbar and active-site accessibility behavior.
Build-tool security gate
- Production npm dependencies remain blocked on every high/critical audit finding.
- The current upstream-only
bracesstack-exhaustion advisory is isolated to the Tailwind 3 development toolchain and has no published patchedbracesrelease as of this release build. - CI permits only that exact advisory chain, only when every affected lockfile node is proven
dev: true; any additional high/critical advisory or runtime exposure remains release-blocking. - The exception is machine-checked against the exact advisory URL so unrelated findings cannot be silently absorbed.
Release gate
The exact 0.30.2 source SHA must pass Ghost FTP quality, real FTP/explicit FTPS/SFTP E2E, Windows/Linux native build, Ghost FTP Android and Validate Windows hardening before the canonical release workflow may publish assets.