Releases: erickochen/purple
Releases · erickochen/purple
Release list
v3.4.0
- feat: Online dots stay accurate without manual refreshes.
- feat: Ping results no longer expire. Once you press P, dots stay green, amber or red until you choose to clear them.
- feat: The detail panel now shows when each host was last checked, so you can tell fresh data from yesterday at a glance.
- feat: Selecting a host whose result is older than 2 minutes triggers a quiet single-host re-ping in the background. Dots stay current as you browse, even on configs with hundreds of hosts, without flooding the network.
- change: ProxyJump dependents inherit both status and last-checked time from their bastion.
v3.3.0
- feat: Use SSH keys stored anywhere via symlinks.
- feat: purple follows symlinks in ~/.ssh, so keys synced from password managers, secure storage or central key directories appear in the picker exactly like a regular file you placed there yourself.
- change: Tunnels page mirrors the Hosts layout. Column titles line up with the rows below, getpurple.sh anchors the bottom-right corner, and the inactive tab fades to muted so your eye lands on the active page first.
- Symlinked SSH keys reported by @Nab0y (#58).
v3.2.0
- feat: Install purple on NixOS, or with Nix on Linux and macOS.
- feat:
nix profile install github:erickochen/purpleadds purple to your Nix profile in one command. Same single binary as every other channel. - feat:
nix develop github:erickochen/purpledrops you into a pinned Rust toolchain with cargo-audit and cargo-deny ready, so contributors get the exact same environment as CI. - feat: Hash-locked flake inputs for reproducible builds. NixOS users can embed purple as a flake input with the follows-pattern recipe in the wiki.
- Initial flake foundation contributed by @ArisoN-ext (#54).
v3.1.0
- feat: live tunnel throughput on Linux, parity with macOS.
- feat: detail panel on Linux now shows real bytes-per-second per client process via a direct kernel netlink call (NETLINK_SOCK_DIAG), alongside the channel-events swimlane and per-client roster you already had.
- change: ROUTE card uses a dotted vertical connector and a fisheye marker on the destination so multi-hop chains read clearly without relying on colour.
- fix: long PATTERN MATCH header lists wrap across multiple rows instead of overflowing the detail panel border.
v3.0.0
- feat: hosts and live tunnels in one cockpit, Tab between.
- feat: tunnels page shows every SSH forward with live throughput, channel events and the apps moving bytes. Local, Remote and Dynamic SOCKS.
- feat: detail panel reveals which client process owns each open channel, with a 60-second swimlane of opens and closes.
- feat: add a tunnel from the tunnels page itself, with a fuzzy host picker that filters as you type.
- change: Tab and Shift+Tab now switch between Hosts and Tunnels pages instead of cycling group tabs.
v2.45.2
- feat: ProxyJump bastions get their own credentials.
- feat: Each hop in your jump chain reads its own keychain, 1Password, Bitwarden, pass or Vault KV entry, so multi-hop SSH connects without typing.
- feat: Every hop is scoped to its own retry window, so a stale bastion marker no longer blocks the next reconnect.
- change: Prompt-based credential lookup is restricted to the hosts in your ProxyJump chain, so a malicious server cannot phish credentials for other entries in your config.
v2.45.1
- fix: Tighter releases. Build verification stays stable across calendar days and CI runners.
v2.45.0
- feat: Claude Desktop one-click install with safe defaults.
- feat: Download the
.mcpbbundle from any release and double-click. Your agent getslist_hosts,get_hostandlist_containersout of the box. No shell, no container control. - feat:
purple mcp --read-onlyexposes the same safe trio when wiring up Claude Code, Cursor or any other MCP client by hand. - feat: Every MCP tool call lands in
~/.purple/mcp-audit.logas JSON. Timestamp, tool, args, outcome, reason. Owner-only file mode.run_commandarguments redacted so passwords on shell flags never hit disk. Redirect with--audit-log <PATH>or turn it off with--no-audit. - feat: Audit log refuses to open through a pre-existing symlink, so a writable-directory attacker cannot redirect writes elsewhere.
run_commandswitched off busy-polling and clamps oversized timeouts, so a runaway agent cannot pin the server. - feat: Linux musl builds for
x86_64andaarch64ship next to the existing glibc binaries. Drop the static binary on any distro and run. - change: Wordmark refreshed with cleaner box-drawing strokes. Same cadence, still a cyan period at the end.
v2.44.0
- feat: Live progress, live hosts, untruncated IPs.
- feat: The sync footer shows which provider is in flight, how many providers are done and a running
(+added ~updated -stale)diff, so you can tell at a glance what is changing in your host list. - feat: Online indicators pulse gently so a quick scan of the host list tells you which hosts are alive right now.
- feat: IP addresses in the address column always render in full, even next to a ProxyJump or tunnel indicator, so you can read and copy them without squinting.
- change: Welcome, Help and What's New overlays share one clean logotype with the cyan-dot accent from the landing page, giving web and TUI one consistent look.
- fix: Upgrade toasts fire reliably after a brew or curl install when the previous run was a dev build, so you actually see release notes for the version you just installed.
v2.43.2
- feat: Cleaner internals, steadier releases.
- change: Domain types now live with the state they belong to. Screens, pickers, tags, sync records and reload tracking each move to their own module, so the next change you make lands in one obvious place.
- change: The
UiSelectiongod-struct becomes a small set of focused picker states, making overlay behaviour easier to read and extend. - change:
App::newshrinks from 124 lines to 48 by delegating to per-substate constructors that make startup initialisation explicit.