Skip to content

v2.0.0 — Cross-platform daemon, proxy support, drag-drop keys, async health UI

Choose a tag to compare

@fivif fivif released this 20 May 18:44

Breaking changes

  • Daemon C code rewritten with #ifdef _WIN32 cross-platform support
  • profiles.json: new optional proxy field per server

New features

Cross-platform Windows support

  • Native Windows daemon via CreateProcess + CreateThread + TCP IPC
  • Auto-assigned localhost port, stored in ~/.sshc/daemon.port
  • POSIX path uses posix_spawnp for macOS-optimized process creation
  • Single source file compiles on both platforms (cc / cl / mingw)

Per-server proxy support

  • Optional proxy field in profiles.json (ProxyCommand string)
  • Web UI: modal with type dropdown (HTTP / SOCKS5 / SOCKS4 / Custom)
  • CLI: sshc add --proxy "..." flag
  • API: PUT /api/profiles/<name> {"proxy": "..."} / {"proxy": null}
  • Proxy injected into all SSH invocations (health, exec, ensure_master, check)

Web UI overhaul

  • Drag-and-drop key file upload (FileReader + base64, stored to ~/.sshc/keys/)
  • Async parallel health checks — table renders instantly, status streams in
  • Proxy configuration modal per server (dropdown + host/port + live preview)
  • HTML-escaped rendering (XSS safe)
  • Path traversal fix (os.path.basename on uploaded filenames)

Bug fixes

  • Fix cmd_add flag parsing (positional args after flags)
  • Fix cmd_remove None → '' for clean JSON output
  • Fix cmd_profiles: use stdin pipe instead of fragile string interpolation
  • Remove dead code (fd_is_socket, INVALID_SOCK, SOCKERR, HOME_ENV)
  • Fix Windows ensure_master timeout 15s → 10s
  • Fix /dev/null vs nul cross-platform in ssh_check and cleanup_masters
  • Fix double close(cli) on fork failure
  • Guard <unistd.h> for MSVC compatibility, add ssize_t typedef for Windows

Documentation

  • SKILL.md: comprehensive agent workflow guide, proxy types table, platform notes
  • README: agent-first narrative with /sshc slash command examples