ProjectsActive

Cascade IRC Client

A fast, native desktop IRC client built with Go and Wails.

Summary

Cascade started as a scratch-your-own-itch project: I couldn't find a free, well-maintained IRC client that didn't require managing a YAML file or paying a subscription. It's built on Wails with a Go backend and a React/ShadCN UI, and has solid IRCv3 coverage — SASL/SCRAM auth, server-time, echo-message, message-tags, chathistory, rate limiting, and TLS.

The part I'm most invested in is the plugin system: plugins are separate binaries that communicate over IPC, so they're language-agnostic and can be enabled or disabled without restarting the client. It currently ships with plugins for tab completion and per-user nickname colors, with more planned.

Built with
GoReactTypeScriptWailsIRCv3SQLiteShadCN/UI
Topics
Updates
Jun – Jul 2026
Replies, link previews & invites

Added reply/channel-context threading (storage, tag-aware send, compose and display), opt-in link-unfurl previews, send/receive invites, clickable channel and nick mentions, and a cross-network activity inbox that absorbs invites.

Jun – Jul 2026
UI polish, performance & security

Rebranded with a new app icon, virtualized the message list onto an ordered event bus for smoother scrollback, fixed lingering presence-dot bugs, and hardened credential storage with keychain-backed secrets and a raw-send CRLF guard.

Jun – Jul 2026
Connection reliability

Fixed NOTICE/PM routing, reconnect and nick-collision handling, then hardened the connection itself with a half-open socket watchdog, force-close on system wake, SASL completing before registration, and fixes for CAP REQ flood churn and a plugin IPC deadlock.

Jun – Jul 2026
IRCv3 protocol completeness

Added STS, multi-prefix, cap-notify, CHATHISTORY, typing indicators, bot mode (+B), and the remaining ratified caps (extended-monitor, no-implicit-names, UTF8ONLY, account-extban), plus several rounds of spec-compliance fixes — error numerics, ISUPPORT-driven CHANTYPES/CASEMAPPING, /who, and message splitting.

Jun – Jul 2026
Self-updates & cross-platform distribution

Shipped an in-app updater with prerelease-channel support, added cross-platform builds for Windows and Linux (amd64/arm64) alongside macOS, fixed release-pipeline bugs (bundle versioning, arm64 toolchains), and launched a public docs site.

Jun 2026
Cascade Scripting

Shipped a scripting system for user scripts: a typed event context (self, account, network, message ID, time, action, highlight state), with the SDK pin reconciled against the app automatically at startup.

Jan – Apr 2026
Plugin system & foundation

Built the language-agnostic plugin system over IPC (tab completion, per-user nickname colors), then restructured the app around Zustand state management with real test infrastructure and CI.