Ghost FTP 0.20.10
Ghost FTP 0.20.10 follows the published canonical 0.20.9 release and focuses on protocol edge cases plus conflict-safety hardening.
Changes
- Adds real FTP/explicit-FTPS/SFTP zero-byte transfer coverage.
- Adds UTF-8 remote-name coverage with spaces and non-ASCII characters across list, transfer and delete operations.
- Adds real permission-denied mutation fixtures for FTP/FTPS/SFTP.
- Seeds a stale SFTP known-host key and proves changed-key rejection, explicit trusted replacement and subsequent exact-key match behavior.
- Expands pause/resume protocol payloads to a non-aligned 2 MiB + 257 B so repeated transfer chunk boundaries and a final tail are exercised.
- Fixes conflict rename handling for hidden files and Windows-style Agent paths with dotted directory names.
- Centralizes remote rename-candidate construction across backends.
- Makes Rename fail closed after the bounded 999-candidate search instead of falling back to an existing colliding path.
- Adds regression coverage proving rename-candidate exhaustion cannot overwrite the original local file.
Acceptance
The exact PR head must pass Ghost FTP quality, Ghost FTP protocol E2E, Ghost FTP native build, Ghost FTP Android and Validate Windows hardening before merge. Publication remains tied to the exact verified main SHA and immutable version tag.