Ir al contenido

Changelog

Esta página aún no está disponible en tu idioma.

Each entry says whether the agents need updating. Agents can be updated from the panel.

  • The agent has no built-in server. -server host:port, or server: in /etc/woho/woho-client.yaml, is required; an agent started without one exits with an error naming the flag. Installed services already have it in their file and keep working. On the server, the Client Download URL on the Connection keys page has no default either: set it before generating keys or updating agents. Server update.
  • The Files tab fits a phone-width screen or a narrow split: a Machine / WoHo storage switch shows one pane at a time. Icons are the panel’s own line icons; the transfer list folds. Server update only.
  • The workspace’s machine header is one line — machine, state, CPU, load, RAM, fullest disk — with the rest behind an arrow. Server update only.
  • The Files tab says what a folder holds and what is selected; each pane sorts by name, date or size; Filter narrows a folder by name (/); rows show permissions and link targets; Properties and Copy path in the file menu; header buttons for copy, download and the menu, usable on touch screens. Server update only.
  • Copying or uploading onto an existing name asks: Replace, Keep both, Skip existing. Unless you chose Replace, the destination refuses to overwrite a file that appeared after the listing. Agent and server update for machine-side checks.
  • Folders copy between WoHo storage and a machine both ways; Download of several items or a folder saves one .zip. Copy to folder… and Move to folder… on the same machine. A running transfer can be cancelled; failed rows show the reason and Retry; Clear finished. Agent and server update (older agents: no zip from the machine, no cancel, no copy/move).
  • Safer editing: each save of a machine file keeps the previous version in WoHo storage (Tools → Backups…, last 10 per file); Diff against disk, Save as…, Run a check… with a {{path}} template. A file over 5 MB offers Show the end and Follow it. Agent and server update for follow.
  • Saving a file the machine changed meanwhile is refused: Reload from disk, Overwrite with mine, Compare, or Cancel keeps your text. Agent and server update (an older agent saves as before).
  • An upload or copy that does not finish no longer destroys the file it was replacing; a copy says Done only once the destination confirms it. Renaming onto an existing name is refused. A folder that cannot be opened says why, with Retry. The right-click menu stays on screen and opens from the keyboard (Shift+F10). Many file operations at once no longer leave rows stuck on running. Agent and server update.

  • File editor in a workspace tab (F3 / F4): the machine header, tabs and sidebar stay in view; split beside a terminal. Highlighting for nginx configs, systemd units, INI / .env, Dockerfiles, diffs, logs (errors red, warnings amber), shell, YAML, Go and more; a language picker, line endings and encoding in the status bar; Notepad++-style keys (Ctrl+D duplicate, Ctrl+G go to line, Alt+Z wrap, Ctrl+Space complete); a Tools menu for sorting lines, duplicates, whitespace and line endings; F5 reloads the file; Shift+F4 creates one. Permissions, owner and symlinks are kept on save; CRLF is kept; non-UTF-8 files open read-only. Agent update for machine files.
  • The panel shows what each machine is: distribution, kernel, architecture, addresses, CPU, memory, boot time, virtualization, timezone; load, swap, every disk; clock offset and round-trip time; why each session ended. Agent update for most of it.
  • Each machine has a timeline — connections, who worked on it, commands, files, web sessions — and offline machines stay listed with when they were last seen. Server update only.
  • History filters by admin, machine, action and date, kept in the address; file transfers and edits, notes, templates, deleted session records, failed logins and refused connections are recorded. Server update only.
  • Agents update from the panel (Update agent), verified by SHA-256 from the Client Download URL. Agents must be updated by hand one last time to get it.
  • Templates take parameters ({{service}}), run in the current terminal, carry tags, and export / import as JSON; a starter pack ships with the docs. Server update only.
  • Terminal recording, off by default (record_terminals), with replay from the timeline, its own retention and a per-recording cap. Server update only.
  • Alt+K goes to a machine from anywhere; Notify me when it connects on an offline machine; the Web tab lists the machine’s listening ports (agent update); a connection key shows its install command when generated and its machine when it connects.
  • Agent option notify_console prints a console message to the machine’s users when an admin connects or leaves. Agent update.
  • The header is Machines, Templates, History, Settings (Connection keys, Users) and your account menu. Machines read Online / In use by … / Offline, with Connect and Open; the list shows distro, health, agent version and Update available; a dropped machine keeps the workspace and offers Reconnect; sidebar sections open independently; tabs open with one click and are named Terminal 1 / Files / Web :port. Server update only.
  • Revoking a connection key disconnects its machine immediately. Commands run from templates are stored redacted, like the terminal’s. The raw page templates are no longer served. Server update only.
  • A machine is released when its admin logs out, idles out or is deactivated. The terminal prompt no longer sinks below the pane after a resize. The copied install command installs and starts the service; Server Domain must include the tunnel port. Server update only.

  • Client-to-server SCP transfers now work when nginx or another reverse proxy terminates HTTPS. This is a server-only update; clients do not need updating
  • Large browser-to-client uploads no longer freeze the panel or disconnect the shared WebSocket. Failed chunks are reported immediately instead of timing out
  • Same-origin WebProxy supports authenticated requests, CORS preflights, dynamic script and stylesheet URLs, module preloads, and POST request bodies more reliably. Service workers remain unavailable in this mode
  • The nginx example now includes the required upload limit, streaming, timeout, Host, and forwarded-address settings. See Reverse Proxy
  • Release builds use the Go toolchain declared by the project

  • Version details in the panel — the server build and each connected client’s version are now visible in the web interface
  • Structured client logs — normal connection events stay concise, while -v adds detailed stream, terminal, file-operation, and reconnect messages
  • Confined file browsers now keep paths virtual: with files_root configured, ~ means that root and resolved host paths are not exposed
  • Active terminals stop cleanly when the client tunnel disconnects; the reconnect creates a new server session
  • Network rates update correctly on the session dashboard, and session status remains prominent on small screens
  • The browser refreshes session state after the server reconnects
  • Same-origin WebProxy pages remain isolated while working correctly in Chrome

  • Config file for the server — every setting lives in /etc/woho/woho-server.yaml, so a unit is just ExecStart=… -config <path>. woho config init writes a commented file; woho config check validates it, loads the certificate, and prints each setting with its source. Flags and environment variables keep working, in that order of precedence. See Server Configuration
  • Config file for the agent — woho-client install writes /etc/woho/woho-client.yaml (root-only, 0600) and points the unit at it. Rerunning install changes only the flags you pass. Existing installs are migrated on the next install. See Agent Configuration
  • Per-forward origin isolation for the web proxy — with proxy_domain set, each port forward is served from https://<forward-id>.<domain>/ behind a one-time auth link, isolated from the panel and from every other forward
  • An initial path on a port forward — the WebProxy port field takes 9270/web/ for applications served under a subpath
  • Active forwards panel — every live forward for a machine, with owner, state and idle time. Any admin can stop one; only its owner can open it
  • files_root on the agent — confine every server-driven file operation to one directory, symlinks resolved. Terminals are unaffected
  • Per-table data retention and a threshold-gated VACUUM, so shortening retention for connection history no longer shortens the audit trail. Four independent windows, 90 days each by default
  • Admin session idle timeout — session_idle_timeout, 2 hours by default. Terminal traffic counts as activity
  • Structured logging — log_level and log_format (json or text)
  • The bootstrap account is admin / admin with the password change enforced, replacing the generated password that was printed once to the log. First login lands on Account & Security and nothing else works until a new password is set. See First Login
  • Port forwards are byte streams piped over the tunnel, no longer HTTP repackaged as JSON. Every method, request bodies, SSE and WebSocket upgrades work; the browser tab loads only once the agent reports the stream ready, instead of guessing with a timer
  • Forward URLs carry a server-minted forward ID — /proxy/<forward-id>/ or a wildcard hostname — replacing /proxy/{session_id}/{port}/
  • The agent tunnel requires an explicit transport. The server will not start without either tls_cert + tls_key or tunnel_insecure, and there is no fallback from TLS to plaintext on either side
  • The Prometheus endpoint binds 127.0.0.1:9090 by default rather than every interface. It has no authentication, so the bind address is the access control
  • The agent’s connection key is no longer on the service command line. It lives in the config file, and systemctl cat, systemctl show and /proc/<pid>/cmdline carry only -config
  • Proxied customer pages never share an origin with the admin panel: their own hostname when proxy_domain is configured, an opaque sandboxed origin otherwise
  • The panel’s session cookie and Authorization header are stripped before a proxied request reaches a customer machine
  • Tunnel connections that have not registered are capped, server-wide and per source address, so unauthenticated peers cannot starve established agents
  • The database file and its WAL sidecars are held at mode 0600

  • Remote terminal with PTY support and multiple tabs per session
  • File browser: upload, download, rename, view, edit
  • Port forwarding / HTTP proxy to remote services
  • Real-time system monitoring (CPU, memory, disk, network)
  • Passkey / WebAuthn (FIDO2) authentication
  • Pre-Shared Keys for client access control
  • Multi-admin support
  • Split-panel workspace
  • Activity log / audit trail
  • SQLite database with automatic migrations