Ghost FTP 0.0.1
Privacy-first FTP, FTPS and SFTP desktop client for Windows and Linux.
Release channel: Beta prerelease.
Highlights
Desktop client
- Unified the Windows and Linux desktop experience around the same typed Ghost FTP engine for FTP, FTPS and SFTP.
- Added the built-in Remote Editor for regular text files on FTP/FTPS/SFTP with Save, Reload and Close flows, UTF-8 validation, bounded editing, conflict detection, revision checks and line-ending preservation.
- Refresh remote list metadata after a successful remote edit while preserving the edited file selection and the successful save result.
- Improved responsive Windows geometry for small work areas, mixed-DPI monitors and negative monitor origins.
- Kept the UI intentionally compact: high-value file actions are exposed without permanently adding extra panels or clutter.
Security and privacy
- Preserved strict FTPS certificate/hostname verification and explicit no-downgrade behavior.
- Preserved strict SFTP host-key verification and pinning.
- Hardened Linux transport executable and AskPass provenance against user-controlled PATH and executable substitution.
- Hardened settings state-directory identity, Windows installer-directory identity, shortcut ownership, legacy uninstaller ownership and integrated uninstall cleanup.
- Use verified-handle/exact-object deletion for sensitive Windows cleanup paths instead of pathname-only deletion authority.
- Keep telemetry, analytics, advertising, tracking, hidden product services and automatic crash upload disabled.
Packaging and release quality
- Windows: Setup x64/x86, x32 compatibility alias, Portable x64/x86.
- Linux: DEB and portable tar.gz for amd64/arm64/i386 plus the multiarch ZIP.
- Canonical release shape remains 12 platform artifacts / 15 public files.
- Debian 13, Ubuntu 26.04 LTS and Fedora 44 lifecycle/GUI smoke remain part of release verification.
- Version 0.0.1 starts the new current public line. After a newly published Ghost FTP release is verified, the release-retention workflow removes older Ghost FTP GitHub releases and tags so only the latest public version remains.
- The verified distribution bundle is published to
ghcr.io/bren-wp/ghost-ftp:0.0.1with matching current-version aliases.
Documentation
- Reset active documentation to the 0.0.1 public line.
- Removed the old 1.x public-version narrative from active documentation and release history.
- Kept the production engineering/audit prompt and the
ghostftp.comdark-theme redesign prompt aligned with the current project contract.
Release contract
The 0.0.1 candidate must pass exact-head Go formatting/race/vet, repository/platform/security/privacy/documentation/release audits, the Python regression suite, Windows x64/x86 production builds, Linux amd64/arm64/i386 production builds, distro package parity, Debian/Ubuntu/Fedora lifecycle smoke and authentic Windows UI evidence. Publication uses ghostftp-v0.0.1, prerelease=false, the exact 15-file GitHub Release allow-list, verified GHCR bundle read-back and the latest-only public release retention policy.
Release tag
ghostftp-v0.0.1
Public platform packages
Windows:
- Ghost-FTP-0.0.1-Setup-x64.exe — 64-bit Windows installer.
- Ghost-FTP-0.0.1-Setup-x86.exe — 32-bit x86 Windows installer.
- Ghost-FTP-0.0.1-Setup-x32.exe — byte-identical compatibility alias of the x86 installer.
- Ghost-FTP-0.0.1-Portable-x64.exe — portable 64-bit Windows executable.
- Ghost-FTP-0.0.1-Portable-x86.exe — portable 32-bit x86 Windows executable.
Linux:
- Ghost-FTP-0.0.1-Linux-amd64.deb — Debian package for amd64.
- Ghost-FTP-0.0.1-Linux-arm64.deb — Debian package for arm64.
- Ghost-FTP-0.0.1-Linux-i386.deb — Debian package for i386.
- Ghost-FTP-0.0.1-Linux-amd64.tar.gz — package-manager-neutral portable archive for amd64.
- Ghost-FTP-0.0.1-Linux-arm64.tar.gz — package-manager-neutral portable archive for arm64.
- Ghost-FTP-0.0.1-Linux-i386.tar.gz — package-manager-neutral portable archive for i386.
- Ghost-FTP-0.0.1-Linux-multiarch.zip — bundle containing the three verified Debian packages.
Verification files
- SHA256.txt — SHA-256 checksums for every public release file except SHA256.txt itself.
- RELEASE-NOTES.txt — these notes generated from CHANGELOG.md.
- BUILD-METADATA.txt — version, release tag, source commit, signing state and distribution metadata.
Release contract
- 12 platform artifacts.
- 15 public release files total, including the three verification/metadata files.
- Active application platforms: Windows and Linux.
- Local language catalog: 24 selectable languages with English default/fallback.
- Application telemetry: disabled.
- Linux portable archives are structurally verified and their ghostftp executable must be byte-identical to the matching DEB payload before publication.
Signing and trust
The workflow never fabricates publisher identities. Production Authenticode signing is optional: when a protected trusted certificate is configured, Windows artifacts are signed and verified; when it is not configured, the release remains explicitly unsigned and BUILD-METADATA.txt records WINDOWS_AUTHENTICODE=unsigned. Never treat a locally generated or self-signed certificate as a trusted public publisher identity. Always verify SHA256.txt and the official GitHub release location before installation or deployment.
Privacy
Release bundles contain only the explicit verified artifact allow-list. They do not contain saved profiles, FTP/SFTP passwords, private-key passphrases, signing private keys, local application data or user files.
What's Changed
- Harden recursive upload root validation by @bren-wp in #1
- Release ByFTP 2.12.1 with complete Windows and source bundles by @bren-wp in #2
- Release ByFTP 2.13.0: state hardening, queue scaling and release provenance by @bren-wp in #3
- ByFTP 2.14.0 — hrvatski projekt, sigurnost i uređeni repozitorij by @bren-wp in #4
- Dovrši ByFTP 2.14.0 verzijsku konzistentnost by @bren-wp in #6
- Objavi ByFTP 2.14.1 — završni source/build patch by @bren-wp in #7
- Objavi ByFTP 2.14.2 — transfer i lokalni staging hardening by @bren-wp in #8
- Objavi ByFTP 2.14.3 — fail-closed release i dubinski docs/security audit by @bren-wp in #9
- Ispravi Python 3.14 release regresije za ByFTP 2.14.3 by @bren-wp in #11
- ByFTP 2.14.4 — stabilniji listing, SFTP ključ i siguran disconnect by @bren-wp in #12
- ByFTP 2.14.5 — bounded disconnect i sigurniji reconnect by @bren-wp in #13
- ByFTP 2.15.0 — sigurniji profili, credential binding i host-key pin by @bren-wp in #14
- ByFTP 2.16.0 — pouzdanije povezivanje, x86, Linux i macOS by @bren-wp in #15
- ByFTP 2.16.1 — process-level connect smoke i stabilniji multi-platform CI by @bren-wp in #17
- ByFTP 2.16.2 — produkcijski release hardening i stvarna build privatnost by @bren-wp in #18
- ByFTP 1.0.0 — sigurnosni hardening i stabilna bazna linija by @bren-wp in #20
- ByFTP 1.0.0 — stabilniji terminal i putanje s razmacima by @bren-wp in #21
- ByFTP 1.0.0 — FTPS TLS hardening i verzijska konzistentnost by @bren-wp in #22
- ByFTP 1.0.0 — trajniji atomski state/config zapisi by @bren-wp in #23
- ByFTP 1.0.0 — brža i stabilnija curl capability provjera by @bren-wp in #24
- ByFTP — spriječi release drift bez VERSION bumpa by @bren-wp in #25
- ByFTP 1.0.1 — filesystem i SFTP hardening by @bren-wp in #26
- ByFTP 1.0.2 — remote commit revalidacija by @bren-wp in #27
- ByFTP 1.0.3 — stabilni lokalni upload source snapshot by @bren-wp in #28
- ByFTP 1.0.4 — transfer generation binding by @bren-wp in #29
- ByFTP 1.0.5 — shared-hosting FTP/FTPS kompatibilnost i marketinška dokumentacija by @bren-wp in #30
- ByFTP 1.0.6 — runtime stabilnost, lifecycle hardening i cleanup by @bren-wp in #31
- ByFTP 1.0.7 — SFTP RSA/SHA-2, transfer hardening i Unix cleanup by @bren-wp in #32
- ByFTP 1.0.8 — fail-closed cleanup i transfer lifecycle hardening by @bren-wp in #33
- ByFTP 1.0.9 — Windows installer transaction hardening by @bren-wp in #34
- ByFTP 1.0.10 — process-tree cancel i child lifecycle hardening by @bren-wp in #36
- Bump ByFTP version to 1.0.11 by @bren-wp in #37
- ByFTP 1.0.11 — Windows UI/UX i session stability finalizacija by @bren-wp in #38
- ByFTP 1.0.12 — English-first i18n and production cleanup by @bren-wp in #39
- ByFTP 1.0.12 — final premium UX, English-first and modular cleanup by @bren-wp in #41
- Revert "ByFTP 1.0.12 — final premium UX, English-first and modular cleanup" by @bren-wp in #42
- noop placeholder by @bren-wp in #44
- Finalize ByFTP 1.0.12 English-first release by @bren-wp in #46
- Finalize ByFTP 1.0.12 release by @bren-wp in #47
- Finalize FTP shared-hosting and quote operations by @bren-wp in #51
- ByFTP: English-first cleanup, installer language wizard and stability pass by @bren-wp in #49
- ByFTP 1.0.12 deep audit, cleanup and documentation refresh by @bren-wp in #52
- Finalize ByFTP 1.0.12 README and Windows production build by @bren-wp in #54
- Release ByFTP 1.0.13 by @bren-wp in #55
- ByFTP 1.1.0: add native Android client by @bren-wp in #56
- ByFTP 1.1.1: Android APK releases and maintenance hardening by @bren-wp in #57
- Chatgpt/byftp 1.2.0 ios 20260824 by @bren-wp in #58
- ByFTP 1.2.0: finalize Android/iOS CI and release docs by @bren-wp in #60
- ByFTP 1.2.1: mobile raw-input hardening and maintenance by @bren-wp in #61
- ByFTP 1.2.2: cross-platform lifecycle, path and credential hardening by @bren-wp in #62
- ByFTP 1.2.3: Go 1.27, Gradle 9.7 and build-surface cleanup by @bren-wp in #64
- ByFTP 1.2.4: cross-platform hardening and runtime cleanup by @bren-wp in #65
- ByFTP 1.2.5: canonical endpoint identity and profile hardening by @bren-wp in #66
- ByFTP 1.2.6: protocol-state cleanup and raw host validation by @bren-wp in #67
- ByFTP 1.2.7: strict raw username and port validation by @bren-wp in #68
- ByFTP 1.2.8: fail-closed profile persistence input by @bren-wp in #69
- ByFTP 1.2.9: preserve profile paths verbatim by @bren-wp in #70
- ByFTP 1.3.0: Android and iOS mobile parity by @bren-wp in #71
- ByFTP 1.4.0: mobile transfer progress and safe batch control by @bren-wp in #72
- ByFTP 1.5.0: shared-hosting connection diagnostics by @bren-wp in #73
- ByFTP 1.6.0: repository-wide integrity and maintenance by @bren-wp in #74
- Agent/byftp v1.7.0 web finalstage 20260831 by @bren-wp in #80
- Agent/byftp v1.7.0 web source 20260831 by @bren-wp in #77
- Agent/byftp v1.7.0 full cleanup web upload 20260831 by @bren-wp in #78
- Agent/byftp v1.7.0 full cleanup web batchtest 20260831 by @bren-wp in #79
- ByFTP 1.7.0: full cleanup, native fixes and ByFTP WEB integration by @bren-wp in #75
- ByFTP 1.7.1: bind release publishing to current main by @bren-wp in #81
- Fix WEB rate-limit reset and enforce repository audits by @bren-wp in #82
- Fix WEB batch rename rollback after partial promotion by @bren-wp in #83
- Fix WEB failed setup rollback artifacts by @bren-wp in #84
- Bind WEB profile credentials to account identity by @bren-wp in #85
- Fix WEB user creation workspace transaction by @bren-wp in #86
- Fail closed on stale WEB user registry backups by @bren-wp in #87
- Keep successful WEB logins independent of limiter cleanup by @bren-wp in #88
- Make WEB user deletion retryable and symlink-safe by @bren-wp in #89
- Make WEB audit subprocess decoding UTF-8 safe by @bren-wp in #90
- Fail closed on stale WEB rate-limit backups by @bren-wp in #91
- Fail closed on stale WEB app config backups by @bren-wp in #92
- Make WEB authentication rate limits atomic by @bren-wp in #93
- Short-circuit account limits for blocked login IPs by @bren-wp in #94
- Fail closed on stale WEB profile backups by @bren-wp in #95
- Fail closed on stale WEB preference backups by @bren-wp in #96
- Fail closed on stale WEB legacy migration backups by @bren-wp in #97
- Require pinned host key for SFTP connections by @bren-wp in #98
- Make WEB password writes generation-safe by @bren-wp in #99
- Release ByFTP 1.8.0 across all platforms by @bren-wp in #100
- Fail closed when WEB ZIP finalization fails by @bren-wp in #101
- Reject noncanonical WEB name inputs by @bren-wp in #102
- Harden WEB ZIP creation error paths by @bren-wp in #103
- Preserve .zip on long WEB archive download names by @bren-wp in #104
- Preflight WEB ZIP extraction before remote writes by @bren-wp in #105
- Reject conflicting WEB ZIP extraction topology by @bren-wp in #106
- Preflight existing remote ZIP topology by @bren-wp in #107
- Cover existing remote ZIP topology conflicts by @bren-wp in #108
- Harden WEB extraction and remove dead code by @bren-wp in #109
- Release ByFTP 1.9.0 across all platforms by @bren-wp in #110
- Release ByFTP 1.9.1 runtime and release hardening by @bren-wp in #111
- Bound WEB remote downloads against TOCTOU growth by @bren-wp in #112
- Ghost FTP 1.0.0 rebrand, hardening and multi-platform releases by @bren-wp in #113
- Ghost FTP 1.0.1 hard-cut rebrand, portable builds and GitHub Packages by @bren-wp in #114
- Ghost FTP 1.0.2 security, stability and metadata hardening by @bren-wp in #116
- Ghost FTP 1.0.3 web security, transfer integrity and release-doc hardening by @bren-wp in #117
- Ghost FTP 1.0.4 Web error-boundary and upload-preflight hardening by @bren-wp in #118
- Run read-only Ghost FTP 1.0.5 source audit by @bren-wp in #119
- Ghost FTP 1.0.5 HTML error-safety, dead-write cleanup and Web brand completion by @bren-wp in #120
- Ghost FTP 1.0.6 atomic overwrite recovery and repository hygiene by @bren-wp in #122
- Ghost FTP 1.0.7 atomic upload residual-data cleanup by @bren-wp in #123
- Release/ghost ftp 1.1.0 quality by @bren-wp in #124
- Ghost FTP 1.1.0: 24-language hardening and cross-platform quality release by @bren-wp in #125
- Ghost FTP Windows/Linux premium consolidation (historical merged PR) by @bren-wp in #126
- Ghost FTP 0.1.0 Beta: Windows/Linux baseline, Authenticode pipeline and production hardening by @bren-wp in #127
- Work/windows linux premium 2.0.0 by @bren-wp in #128
- Add shared premium desktop theme contract by @bren-wp in #129
- Work/ghostftp 0.2.0 desktop quality by @bren-wp in #130
- Stabilize Windows chrome and add in-app brand icon by @bren-wp in #131
- Release Ghost FTP 0.2.1 Beta desktop quality update by @bren-wp in #132
- Improve Ghost FTP file-pane sorting workflow by @bren-wp in #133
- Add keyboard-first Windows file workflow by @bren-wp in #134
- Add truthful transfer progress, speed and ETA by @bren-wp in #135
- Improve privacy-safe connection diagnostics by @bren-wp in #136
- Ghost FTP 1.0.0 Stable — release, Packages, privacy and reliability hardening by @bren-wp in #137
- Ghost FTP 1.0.0 Stable — optional Authenticode without generated production keys by @bren-wp in #138
- Ghost FTP 1.0.0 — post-release documentation and policy consistency by @bren-wp in #140
- Update Ghost FTP proprietary license to 1.3 by @bren-wp in #141
- Forget Linux SFTP secrets when sessions close by @bren-wp in #142
- Track SFTP protected-secret ownership by @bren-wp in #143
- Harden SFTP pending trust credential ownership by @bren-wp in #144
- Ghost FTP 1.1.0: Classic Light, UI quality and security hardening by @bren-wp in #147
- Harden Ghost FTP 1.1.1 desktop defaults, privacy and connection quality by @bren-wp in #149
- Hardening/ghostftp 1.1.1 deep quality by @bren-wp in #148
- Keep terminal language help in sync with the 24-language registry by @bren-wp in #150
- Refine Site Manager left navigation by @bren-wp in #151
- Prepare Ghost FTP 1.1.2 Stable by @bren-wp in #152
- Work/site manager navigation quality by @bren-wp in #153
- Post-1.1.2 security hardening and canonical release flow by @bren-wp in #154
- Fix Windows integrated uninstall registry contract by @bren-wp in #156
- Harden remote tree directory verification by @bren-wp in #157
- Harden local download root against path-swap races by @bren-wp in #158
- Release Ghost FTP 1.1.3 by @bren-wp in #159
- Stabilize process-tree cancellation regression by @bren-wp in #160
- Harden Ghost FTP 1.1.4 quality and desktop performance by @bren-wp in #161
- Prepare Ghost FTP 1.1.4 stable release by @bren-wp in #162
- Harden Ghost FTP for 1.1.5 and separate official product branding by @bren-wp in #163
- Prepare Ghost FTP 1.1.5 Stable release by @bren-wp in #165
- Harden local recursive delete against path-swap traversal by @bren-wp in #166
- Harden local mkdir against base path swaps by @bren-wp in #167
- Bind SFTP trust fingerprint directly to scanned key by @bren-wp in #168
- Fail closed on spoofable remote cleanup diagnostics by @bren-wp in #169
- Prepare Ghost FTP 1.1.6 Stable release by @bren-wp in #171
- Fail closed when a Ghost FTP release already exists by @bren-wp in #172
- Anchor tree-download directory preparation to opened filesystem roots by @bren-wp in #173
- Add distro-neutral Linux portable archives by @bren-wp in #174
- Document 1.1.6 as the published stable release by @bren-wp in #175
- Publish verified Linux portable archives in future releases by @bren-wp in #176
- Improve Windows footer spacing at minimum workspace height by @bren-wp in #177
- Add verified Linux distro-specific packaging by @bren-wp in #178
- Verify Linux distro package installation lifecycle by @bren-wp in #179
- Docs: align Linux distribution and install verification contract by @bren-wp in #180
- Windows: fix modal close lifecycle and modernize dialog theming by @bren-wp in #181
- Windows: replace chained settings prompts with one modern dialog by @bren-wp in #182
- Windows: unify modal palette and keyboard behavior by @bren-wp in #183
- Windows: theme decision dialogs and localize profile privacy flow by @bren-wp in #184
- Tmp by @bren-wp in #185
- Release/1.1.7 UI polish 20260908 by @bren-wp in #186
- Release: prepare Ghost FTP 1.1.7 Stable by @bren-wp in #187
- Docs: publish complete authentic local UI evidence by @bren-wp in #188
- Harden child-process diagnostic privacy boundary by @bren-wp in #189
- Preserve MLSD fallback classification after diagnostic redaction by @bren-wp in #190
- Redact ssh-keyscan diagnostics from user-facing errors by @bren-wp in #191
- Stop retaining raw child-process diagnostics in tool errors by @bren-wp in #192
- Security: block Linux transport PATH shadowing by @bren-wp in #193
- Security: pin Linux AskPass to running executable identity by @bren-wp in #194
- Security: pin config state directory identity by @bren-wp in #196
- Security: pin installer directory identity by @bren-wp in #197
- Fix: preserve foreign Windows shortcuts by @bren-wp in #198
- Security: delete owned Windows shortcuts by verified handle by @bren-wp in #199
- Security: harden Linux AskPass executable provenance by @bren-wp in #195
- Security: bind legacy uninstaller cleanup to ownership proof by @bren-wp in #200
- Security: preserve unowned Start Menu parent directory by @bren-wp in #201
- Security: bind integrated Windows uninstall to executable identity by @bren-wp in #202
- Fix: keep Windows workspace inside monitor work area by @bren-wp in #203
- Docs: add production engineering and website prompts by @bren-wp in #204
- Release: prepare Ghost FTP 1.1.8 Stable by @bren-wp in #205
- Feature: add secure remote text edit engine by @bren-wp in #206
- Feature: add built-in remote editor to Windows and Linux by @bren-wp in #207
- Fix: refresh remote metadata after editor save by @bren-wp in #208
- Release: reset Ghost FTP public line to 0.0.1 by @bren-wp in #209
New Contributors
Full Changelog: https://github.com/bren-wp/Ghost-FTP/commits/ghostftp-v0.0.1