News

Release announcements and project updates.

uhub 0.8.1 released security

2026-11-01 by Jan Vidar Krey

uhub 0.8.1 is a security release for the 0.8 series. It fixes four issues, all reported by Kcchouette — thank you! Upgrade if you link hubs, use auth_proxy, or rely on exclusive authentication.

  • UHUB-2026-005 (critical): a peer without the link secret could join a linked hub by reflecting the hub's own challenge, then inject users, messages and cluster-wide bans. Affects 0.7.0 – 0.8.0 with link_secret set.
  • UHUB-2026-006 (critical): on an auth_proxy slave, a newline in a connecting client's nick injected commands into the master link. Affects 0.7.0 – 0.8.0.
  • UHUB-2026-007 (high): an operator's !unban argument could inject link commands, and lift a ban by CID prefix. Affects 0.8.0.
  • UHUB-2026-008 (medium): the exclusive option of the auth plug-ins did not keep unknown nicks out — they logged in as guests. Affects all releases up to 0.8.0.

The link protocol is hardened throughout as well: no line written to a link can carry an embedded newline, a peer can only route messages as users it owns, and auth replies are accepted only from the auth master.

Two things to know before upgrading. Linked hubs must be upgraded together: the link handshake is now version 2, and a 0.8.1 hub cannot link with an older one. And mod_auth_sqlite with exclusive=1 now refuses nicks that are not in its database, as documented. Otherwise 0.8.1 is a drop-in replacement for 0.8.0 — same configuration, same plug-in API. Get it from the download page; the full list is in the ChangeLog.

uhub 0.8.0 released release

2026-08-07 by Jan Vidar Krey

uhub 0.8.0 is now available 🎉

The headline addition is mod_javascript, an optional plug-in that embeds QuickJS so hub logic can be extended with JavaScript in addition to C. The JavaScript plug-in API documents the events, verdicts and objects, with worked examples, and JavaScript ports of the welcome, chat-only and flood plug-ins ship as examples in doc/js/.

Chat now supports the new RTF0 rich text extension — clients that negotiate it render CommonMark, and the MOTD, rules and command output are formatted to match.

Moderation gains a new !unban command, durations and reasons on !ban, and ban persistence through a storage plug-in, all propagated across linked hubs.

Idle connections are now keepalived, so a connection that died in the middle is reaped in seconds instead of minutes — and a client reconnecting after such a drop takes its own dead session's place rather than being turned away as “CID taken”.

This release also fixes a number of bugs and restores native and cross-compiled Windows builds.

Two new plug-ins round it out: mod_selfregister for self-service !regme / !passwd, and mod_chat_is_privileged for gating chat and private messages by credential.

Upgrading needs two changes. Registered accounts move out of the ACL file into an authentication plug-in — the old user_admin / user_op / user_reg keywords are ignored with a warning. And plug-ins must be rebuilt against plug-in API 8, in which struct plugin_user became opaque; older plug-ins are refused at load. See the ChangeLog for the full list, and the download page for the sources.

uhub 0.7.1 released release

2026-07-08 by Jan Vidar Krey

uhub 0.7.1 is available as platform-independent source. This release introduces mod_ucmd, a new plug-in that publishes the hub's registered commands as ADC user-command (UCMD) context-menu entries for clients that support the UCM0 extension. Every command available at a user's credential level appears in the client's right-click menu — user-targeting commands such as kick, ban and getip in the user-list menu, and the rest in the hub menu — and selecting an entry sends the matching +command on the user's behalf.

The plug-in API gains a command_foreach() hub callback and a read-only plugin_command_info view so plug-ins can enumerate the registered hub commands available to a given credential level. See the download page to get the sources and the getting started guide to run your first hub.

uhub 0.7.0 released release

2026-07-03 by Jan Vidar Krey

uhub 0.7.0 is available as platform-independent source. This release adds hub linking and federation — multiple uhubs can be joined into a single logical hub with a partitioned SID space, a dedicated authenticated hub-to-hub protocol, a synchronised cluster roster, and cross-hub routing of chat, private messages, searches and connect requests. A new multi-process mode forks workers=N processes that share the client port to spread load across CPU cores.

Performance work coalesces broadcast writes into a single writev()/SSL_write() per connection each event-loop iteration, and the DNS resolver now uses a worker-thread pool. New features include a bearer-token-gated Prometheus metrics endpoint served on the existing port, ADC NATT NAT-traversal support, experimental HBRI hybrid IPv4/IPv6 connectivity, and mod_auth_sqlite !regme / !passwd self-service commands. The release also brings extensive security hardening (binary-hardening flags, constant-time password comparison, log-injection sanitising and more) and numerous BSD/macOS portability fixes. See the download page to get the sources and the getting started guide to run your first hub.

uhub 0.6.0 released release

2026-06-18 by Jan Vidar Krey

uhub 0.6.0 is available as platform-independent source. TLS is now mandatory and requires OpenSSL 3.0+ or LibreSSL 3.4+ with TLS 1.2/1.3, and the release ships with an updated plug-in API. See the download page to get the sources and the getting started guide to run your first hub.

Development continues on GitHub ongoing

by Jan Vidar Krey

Active development happens on GitHub. The current build now requires OpenSSL 3.0+ or LibreSSL 3.4+ with TLS 1.2/1.3, and ships with an updated plug-in API. Clone the repository to follow the latest changes, or report issues there.

uhub 0.5.0 released release

2014-10-17 by Jan Vidar Krey

uhub 0.5.0 is available as platform-independent source. Build it with CMake on Linux, macOS, BSD and Solaris. See the download page to get the sources and the getting started guide to run your first hub.

For the complete history of changes, see the commit log on GitHub.