Ghost FTP v0.90.1 — lossless settings migration and stability hardening
A targeted patch based on published v0.90.0, preserving existing Windows/Linux, Android and macOS apps and approved real release screenshots.
Implemented changes
- Desktop legacy migration:
runSettingsMigrationnow verifies all migrated settings match on database readback before deleting the old localStorage record. Extra database keys cannot disguise missing or wrong values. - Safe startup: corrupt or unexpected legacy JSON no longer stops initialization. The original record remains stored for recovery; removal of old sensitive notification/terminal history remains in force.
- Password generator: reject impossible/non-finite/oversized lengths before entering a synchronous cryptographic generation loop, with ordinary password strength and entropy source unchanged.
- Executable regressions: tests run the production TypeScript migration function with mocked IPC and browser storage and the password generator with a cryptographic random provider. They are part of the existing desktop UI quality gate.
Release and verification conditions
All six workflows must succeed on the same latest PR SHA and on merged main before publication. Release artifacts and checksum inventory must be verified by the canonical workflow. No v0.90.0 tag retargeting, fake screenshot assets or unsupported 75-screen 1:1 certification. macOS FTPS/SFTP remain gated pending verified identity protection.