Skip to content

Releases

prot v0.2.1

Choose a tag to compare

@github-actions github-actions released this 10 Nov 06:48

prot 0.2.1

A small release: shell tab completion, a multiline command field in the desktop app, and a fix for the Arch packages. There
are no daemon or API changes, and nothing to migrate.

Tab completion

prot now completes in bash, zsh and fish. prot completion <shell> prints the script, which asks prot itself for
suggestions, so the three shells agree.

  • Commands, subcommands and options complete.
  • The daemon supplies service and tunnel aliases, discovered process ids, and the machines in ~/.ssh/config. Each
    lookup waits at most 1.5 seconds and stays silent when the daemon is down.
  • The .deb, .rpm and AUR prot packages install the scripts where the shells read them on their own, and the release
    archive carries them. The curl installer writes them to your user directories for the shells it finds. Two shells need
    a step of their own (bash without the bash-completion package, zsh without the directory on fpath), described in the
    installation guide.

Desktop app

  • The Command field of the New Server and Edit Server sheets is a multiline text area. Lines wrap at the edge, the
    box is as tall as its text (never fewer than three lines) and has no drag handle. Enter adds a line and Ctrl or Cmd +
    Enter creates or saves. The daemon already runs commands through sh -c, so each line runs in turn. A server card shows
    the first line with a mark for the lines that follow.

Arch Linux

  • yay -S prot no longer compiles the desktop app. The three packages used to share one PKGBUILD, and makepkg runs the
    build once for all of them, so installing the CLI built the Tauri app and pulled in Rust, Node and WebKit. protd and
    prot are now their own AUR package, built from Go alone, and prot-desktop is a separate package that builds only
    when you install it. The package names and what they contain are unchanged.
  • The previous AUR package, 0.2.0-1, installs the desktop app together with everything else and was built before the
    completions existed. 0.2.1-1 replaces it.

Other

  • A GitHub release is now marked as the latest release and not a pre-release when the workflow finishes. Until now
    prot update and the install script could not find the newest version unless that was changed by hand.
  • Documentation: a roadmap for local HTTPS and public
    exposure. Both are proposals and neither is implemented.
  • Website: social preview image and page metadata, install buttons for each platform, and a short install URL
    (curl -fsSL https://prot.adityagupta.dev/install | bash, which is the same script as before).

prot v0.2.0

Choose a tag to compare

@github-actions github-actions released this 09 Nov 13:16

prot 0.2.0

0.2.0 adds SSH tunnels, which is the biggest thing since 0.1.0, makes the MCP server and the supervisor more trustworthy,
and gives prot a website. It is mostly additive, but there are a few behaviour changes you should read before upgrading.

SSH tunnels

Reach a port on another machine at a stable name, the same way you reach a local server:

prot tunnel add proxmox --host root@192.168.0.109 --remote-port 8006 --auto-connect
# http://proxmox.localhost:8080 now reaches port 8006 on that machine
  • Real OpenSSH. prot runs your system's ssh, reconnects when the link drops, and only reports a tunnel as
    connected once the forwarded port actually answers. Tunnels are restored when protd starts and stopped when it exits.
  • Machines from ~/.ssh/config. --host accepts a name from your SSH config (prot ssh ls lists them), and the desktop
    app offers them in a dropdown with their user, port and key prefilled. Change nothing and the tunnel keeps following
    your config.
  • Passwords and key passphrases are kept in the OS keyring (Secret Service on Linux, Keychain on macOS), never in
    prot's database, logs or a command line. Add one with --password or --password-stdin, change or clear it with
    prot tunnel password. prot refuses to store a password at all if there is no keyring.
  • Edit in place. prot tunnel edit, the settings button on a tunnel card and PATCH /v1/tunnels/{id} change a tunnel
    without recreating it. A connected tunnel reconnects with the new settings; a stopped one stays stopped. Renaming moves
    its .localhost address.
  • Desktop app. A Tunnels tab to create, edit, start, stop and delete tunnels, with the reason shown when one cannot
    connect (host key not trusted, wrong password and so on). prot never accepts an unknown host key for you.
  • Agents. The MCP server gains list_tunnels, start_tunnel and stop_tunnel. Creating or editing a tunnel and
    touching a password are deliberately not available to agents: that would let one open an SSH connection to an
    arbitrary host.

See docs/tunnels.md for setup (keys, host keys) and
troubleshooting.

Desktop app

  • Removing a server or a tunnel now asks "Remove this ...?" inline, with Cancel and Delete. It never times out, and
    Escape cancels.
  • The New Tunnel sheet has SSH user and port fields next to the host.

MCP server

  • prot mcp is now a thin bridge to the running protd instead of a second supervisor of its own. An agent sees the
    same services, logs and process state as the CLI and the desktop app, and processes it starts keep running when the agent
    disconnects. protd must be running (systemctl --user start protd); otherwise the bridge says so clearly.
  • Every tool that targets a service takes id_or_alias, set_alias renames a real service, stopping an already
    stopped service succeeds, and notifications no longer get a reply.

Reliability and security

  • Supervisor rewritten around a per-run completion channel, fixing races around restarts and stops. Crash restarts
    back off exponentially and a run that lasts 10 seconds resets the backoff.
  • prot update verifies downloads against checksums.txt, caps download sizes, stages both binaries before replacing
    either, and refuses to run at all on installs managed by a package manager (it points you at pacman, apt or dnf).
  • Management API: removed an unused empty-token bypass; tests now cover that it fails closed.
  • Followed logs (prot logs -f) are delivered exactly once; the gateway no longer reserves /v1/ and /mcp paths that
    belong to your apps; start, stop and restart of an unknown service return 404.
  • The database now has versioned migrations and trims its event log. Upgrading migrates it automatically (to schema
    version 3); there is no way back to 0.1.0 with the same data directory.

Website

prot has a landing page, at the project's GitHub Pages address, built from real captures of the app and real CLI output.

Changes to be aware of

  • Windows is not a target. It was never released; the leftovers are gone, and the support matrix lists Linux and macOS.
  • set_alias (MCP) no longer accepts target_url. It renames a service's alias.
  • protd honours PROT_DATA_DIR, like the CLI always did.
  • If protd is killed with SIGKILL it can leave ssh -N -L processes behind; a normal stop cleans up. This is
    documented in the tunnels guide.

Install or upgrade

curl -fsSL https://raw.githubusercontent.com/terastal-hq/prot/main/scripts/install.sh | bash   # or: prot update
yay -S prot prot-desktop                                                                         # Arch
systemctl --user restart protd

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 09 Nov 04:00

Changelog

  • bb4ca6a build: AUR packaging for protd, prot and prot-desktop
  • edc52a5 build: drop Windows from GoReleaser (supervisor is Unix-only for now)
  • efc812e build: generate all app icons from design/icon.png and register desktop entry
  • 2628209 ci: add automated version bumping workflow and cross-project semver synchronization
  • 9eb8470 ci: use go.mod Go version and publish AUR packages on release
  • 5ef23d1 feat(cli): add --auto-start to prot add
  • 9589da7 feat(desktop): add discovery search, move settings to header gear key
  • 09bffc7 feat(desktop): apply prot design system with portrait bottom-nav layout
  • e43907e feat(desktop): cap window size and document floating rules
  • 58fa142 feat(desktop): custom title bar (decorations off) with minimize and close
  • 7bc7896 feat(desktop): make content text selectable
  • ea496af feat(updater): refuse self-update when a package manager owns the binary
  • 8b0badd feat: complete M1 core daemon, REST API, native MCP server, and Tauri 2 desktop app
  • c75a951 feat: complete end-to-end packaging, one-line curl installer, Tauri sidecar bundling, and release CI
  • 3c68849 feat: edit server settings from the GUI (PATCH /v1/services/{id} accepts all fields)
  • 842b074 feat: implement native 'prot update' self-updater and in-place upgrade mechanism
  • fb59d5d feat: initial repository scaffold and M0 engineering foundation
  • e099d6a feat: prominent service URL with in-place alias editing (PATCH /v1/services/{id})
  • f00a992 feat: query cached discovery from daemon in 'prot discover' to avoid internal port noise
  • 5fa51f0 fix(cli): decode daemon health into typed struct to prevent scientific notation formatting for PID
  • 806b7bd fix(desktop): embed release assets, add CORS headers, auto-connect auth token, and verify Niri/Wayland
  • 62ff2c6 fix(desktop): remove mascot art from the app UI, keep it for branding only
  • 07c8c68 fix(desktop): stop MCP code block from shrinking or scrolling in small windows
  • 9fc168c fix: ensure install script always builds and installs optimized release binary for prot-desktop
  • 4d8ecf5 refactor: apply Go code style conventions, fix slice initializations, and prevent process/goroutine leaks
  • 2409c96 style(desktop): Doom meets Office 2000 design system v2
  • 21592ff style(desktop): add bottom padding so card actions clear the bevel
  • 1344fb8 style(desktop): compact list rows for the Found tab
  • b1d8a5d style(desktop): de-emphasise the gateway port in service URLs
  • 2a94255 style(desktop): drop bevel border from the Found list
  • 842af12 style(desktop): hide number input spinners
  • bea62db style(desktop): merge title bar into the app header
  • 73afe1e style(desktop): no underline on the gateway port
  • 695601c style(desktop): remove orange line under header
  • 948dab4 style(desktop): themed dropdown and checkboxes, alias field in the edit sheet
  • fd8818b style(desktop): use JetBrains Mono throughout instead of stylized fonts
  • b54dd64 style(desktop): use retro two-gear icon for settings key
  • 0a6f050 style: Improve readme