ZFTP // ENGINEERING REPORT

// app/engine split · build layout · front-end surface · roadmap

Home Engine

zftp is in active development. This page describes the repository as it stands: the two-layer app/engine split, the build layout and the front-end surface. The roadmap column marks each area as implemented or planned against the code as it stands — it is not a claim of coverage beyond the codebase. Nothing here claims a working capability that is not yet in the codebase.

Two-layer split

layerrepositoryresponsibility
desktop appzftp (this repo)Tauri v2 shell, cyberpunk HUD front-end, action-to-engine wiring, embedded terminal
transfer enginezftp-corebookmark + URL/.duck parsing, session manager, transport backends, transfer queue, logs, stats — decoupled from any GUI

Build layout

pathrole
app/src-taurithin Tauri host: registers zftp_invoke + terminal + the app-layer overlay commands (nettools.rs, srvtools.rs, sites.rs, filetools.rs, xfer.rs, creds.rs) and the native menu; setup mounts the engine
crates/zftp-corethe embeddable file-transfer engine (submodule, tauri feature)
crates/zpwr-embed-terminalshared embedded PTY terminal (submodule)
crates/zpwr-i18nshared i18n runtime (submodule)
crates/…the rest of the shared stack, all submodules: zgui-core, zgui-bridge, zwire-host, zpwr-file-browser, zpwr-hooks-editor, and the zpdf-core / zemail-core / zoffice-core engines (see .gitmodules)
frontendapp shell; engine-view/terminal/i18n assets synced from the submodules before each dev/build
scriptsclean · bust · rebuild · nuke (cyberpunk-styled, ported from Audio-Haxor)

Front-end surface

The HUD (mounted from zftp-core/frontend) renders a bookmark list with live status dots, a connect/disconnect action, a remote-file browser with a name filter, a transfer queue with per-transfer progress, a live log viewer, a connect-to-server modal (enter a scheme://user@host/path URL), a command palette, and the shared embedded terminal. It drives the engine entirely through invoke('zftp_invoke', { cmd, args }) and listens for zftp-event; all wiring is CSP-safe (no inline handlers).

An app-owned Network Toolkit overlay (frontend/nettools.js, ⇧⌘N / ⌘K palette) adds host-side server testing and discovery: DNS resolve, a TCP reachability probe with latency, a parallel scan of the well-known file-transfer ports, the local outbound IP, and importable entries from ~/.ssh/config, ~/.ssh/*.pub and ~/.netrc (secrets never surfaced). It calls the app-local nettools.rs commands directly (not zftp_invoke) and is fully CSP-safe.

An app-owned Transfer Planner overlay (frontend/planner.js, ⇧⌘P / ⌘K palette) surfaces the engine's own transfer-planning commands — transfer.estimate (preflight cost/ETA), queue.schedule (weighted-fair scheduler), transfer.segments, transfer.backoff and transfer.resume_check — that the mounted view never exposes. Unlike the other overlays it dispatches through the engine via zftp_invoke; every command is pure-compute, so it works with no live transport. Adds no Rust (those commands are already registered) and is fully CSP-safe.

Roadmap

areastatus
App shell + HUD + engine wiringimplemented
Bookmark model + URL/.duck importimplemented in engine
Session manager + transfer queue + logs + throughputimplemented in engine
Local-filesystem transport (browse + transfer)implemented in engine
Network transports (FTP/FTPS/SFTP/WebDAV, plus SCP)implemented in engine (default net feature; OpenDAL + russh)
Cloud object stores (S3/GCS/Azure/B2/Swift/Drive/Dropbox/OneDrive/Box)implemented in engine (OpenDAL backends)
Keychain credentials + recursive bidirectional syncimplemented in engine (keyring; newest-wins sync)
Full preferencesplanned