Ghost FTP 0.95.18 — IIS LIST compatibility, fail-closed FTP inventory
Implemented source behavior
- Recognize strict MS-DOS-style IIS FTP LIST rows for files and directories, including Unicode filenames and spaces, checked 64-bit file sizes and validated DOS date / 12-hour clock syntax.
- Continue parsing existing Unix LIST records. Reject unknown/malformed rows as an error instead of silently omitting remote files. Preserve safe rejection in recursive delete and existence/conflict probes.
- Tests for valid IIS file/directory, dot entries, leap days, overflow, invalid times, path separators and mixed-good/bad listings.
- Dedicated real FTP socket E2E (pyftpdlib ports 2123/2124) emits emulated IIS LIST data and verifies that valid remote rows parse while malformed mixed listings fail closed. This is NOT a genuine Microsoft IIS test.
QA required before release
- Rust formatter/workspace, real local FTP/explicit FTPS/SFTP E2E, Windows native hardening, Android instrumented smoke/APK, macOS suite and Windows/Linux packaged binaries all green for one exact SHA.
- A real Windows IIS FTP server interoperability test is NOT YET VERIFIED. Parser unit tests and Linux FTP fixture E2E are not a substitute.
- README screenshots must remain genuine running-app captures; 75 concept screens do not prove pixel parity.
Outstanding FileZilla Client parity
- FEAT/MLSD and active FTP modes PORT/EPRT, IPv6/NAT matrix, real IIS/ProFTPD/Pure-FTPd, proxies and network wizard.
- Real Android SAF lifecycle/provider acceptance (#127), Android/macOS account OAuth and secure token vault (#128), real macOS FTPS/SFTP.
- Full all-platform interaction and visual acceptance.
Previous published version: v0.95.17. This is a development candidate, not a released version.