Ghost FTP 0.95.16 — SAF recovery and OAuth foundations
A development candidate; not an assertion that all third-party providers and Android lifecycle states are supported.
Delivered source changes
- Android journals the content URI only, before writing a newly created SAF cloud destination, and surfaces user-controlled cleanup/keep actions after interruption or process death.
- Android and macOS generate independent Google Drive OAuth S256 PKCE verifiers and 256-bit state, validate exact registered callbacks and block callback replay. No OAuth credentials are compiled into the app.
- Explicit regression coverage for malformed recovery URIs, crash hints, symlinks, PKCE and callback validation.
- README gallery identifies existing real but archived v0.30.19 captures; current v0.95.15 native QA evidence has been retrieved for refresh.
Still required for issue closure
- #127: Android 8–15 physical-device provider tests, rotation/process death, 1 GiB/zero-byte, revoked permissions and disk-full; SAF is not intrinsically atomic and permission after restart cannot be guaranteed.
- #128: Registered OAuth applications, system browser flow, Keychain/Keystore token vault, real authenticated Drive listing/pagination and transfer, retries/refresh/revocation and provider-tested 401/403/429/5xx behavior on both operating systems.
- Exact-SHA native CI, real screenshots published into README, signed distribution and pixel acceptance must be checked before any merge/release.
Latest published version: v0.95.15.