P4: SFTP provider, connection store, connection manager UI
- SftpProvider (ssh2): password + key auth, keepalive, clean-dispose vs
unexpected-close distinction, POSIX path helpers, s->ms attr normalization
- ConnectionStore: plain JSON at appDataDir, 0600, atomic writes, folders
- connect/disconnect + store CRUD handlers; sessionClosed push -> panels fall
back to local and in-flight jobs fail
- UI: session dropdown per panel (local/saved connections/manage), disconnect
button, connection manager modal (folders, edit form, save/connect)
- electrobun bundler: external cpu-features/*.node (ssh2 optional natives)
- RpcService: gate requests on RPC socket open; defer initial panel loads past
first render
- verified against 192.168.10.122: full op matrix, upload/download/remote-remote
recursive transfers, roundtrip integrity, recursive remote delete, store CRUD
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>