v3.21.0Latest — Server-side per-channel mute + #5399 followup fixes. Channel mute state now lives on the server (new user_channel_prefs table + three endpoints), so muted channels stop pushing to mobile via FCM and to other browsers via web-push. Existing clients converge automatically on first connect. Also patches two latent SyntaxErrors (duplicate const loginForm in auth.js + orphan _setupServerBar() half-merge in app-ui.js) that had been quietly sitting in main since the v3.19.0 Guest mode merge and caused a blank login / blank app for anyone updating directly from v3.18.0. Server-side /api/ice-servers defaults refreshed to match the v3.20.1 client pool. Right-click → Copy image now actually copies the image (was silently rejecting due to dropped user-gesture token; rebuilt around Electron IPC for Desktop and a promise-based ClipboardItem for the web). Image and member context menus raised above the lightbox and PiP DM. Password eye-icon no longer overlaps the typed characters.
Download →
v3.20.1 — Emergency fix for voice / screen-share outside local network (#5399). Both hardcoded default STUN servers had gone offline (one was decommissioned upstream, the other stopped responding), leaving any Haven instance using the default ICE config unable to connect users across the public internet. Symptom was LAN-to-LAN voice still working while anyone outside the server’s subnet got stuck on “ICE: Connecting…” and soundboard / screen-share failed to external users. Replaced the defaults with a non-Google preferred pool (Cloudflare, Metered, Twilio) plus a startup health probe that prunes any STUN server that doesn’t respond with a server-reflexive candidate within ~2.5 seconds. If every preferred server fails the probe, a Google fallback pool engages automatically. Admin-configured TURN servers continue to take precedence so anyone running their own TURN is unaffected.
Download →
v3.20.0 — IP-level bans for moderators. New ban_ip role permission gates an “Also ban recent IP address(es)” checkbox in the Ban User modal (up to 5 most-recent IPs per user) and a new Banned IPs manage modal under Settings → Admin → Members for direct IP ban / unban with a reason. Enforced at both the HTTP layer (30-second cache) and Socket.IO layer; live sockets from a freshly-banned IP are disconnected immediately. Exact-string match in v1 (no CIDR / IPv6 normalization).
Download →
v3.19.1 — Desktop-only fixes paired with Haven Desktop 1.4.21: Settings checkboxes and keybind recorders are now responsive immediately on opening the modal (previously dead until you clicked the matching left-nav item). Adds two opt-in Debug toggles (“Disable GPU vsync” and “Remove Chromium frame-rate cap”) for users hitting Nvidia G-Sync / VRR FPS-drop issues. Both off by default and require restart.
Download →
v3.19.0 — Join as Guest (#5381). Admins can enable a guest-login mode and whitelist specific channels guests are auto-joined to. Guests get a real (temporary) account with a 12-hour token, no DMs, no E2E key derivation, and a visible Guest badge in the member list and message header; the row is cleaned up a few seconds after their last socket disconnects. Plus a fix for per-bot slash-command routing (#5398): bots with the same command name in different channels now route to the right callback URL instead of whichever bot was saved last.
Download →
v3.18.3 — Desktop shortcut-recorder now shows a specific, actionable toast when a bind fails (“install libuiohook” vs “pick a different combo”) instead of a one-size-fits-all message. Pairs with Haven Desktop 1.4.20.
Download →
v3.18.2 — Thank You / donors modal restructured so the Ko-fi donate button stays pinned at the bottom instead of falling below the fold on shorter screens. The tier lists own the scroll now.
Download →
v3.18.1 — Screen-share encoder defaults tuned for modern home internet (#5379): bitrate caps raised 2–3x per resolution, encoder hinted as “motion” content, and degradationPreference: maintain-framerate set so the encoder drops resolution before chopping frames under bandwidth pressure. Big quality bump for games / video on screen-share.
Download →
v3.18.0 — Server-synced nicknames (#5394): nicknames now persist server-side so they follow you to new devices and browsers (still private, only you see them). Per-channel default role (#5389): Channel Functions → “Default Role” picks a server role auto-granted to every current and future member of that channel. Admin-adjustable max sticker size (#5392) — bump the 1 MB ceiling up to 10 MB if you want stickers to double as a GIF library. New /break slash command + persona-compacting hard-stop (#5393) so back-to-back persona messages stay visually distinct for everyone. Channel auto-clear messages timer (#5390) — wipe messages on a schedule without deleting the channel itself. Fixes for screen-share reshare ghost tiles, channel-list silence watchdog (#5391), and landing-page emoji encoding.
Download →
v3.17.4 — iOS Web fix: voice-channel audio and screen-share audio now actually play on iOS Safari, iOS Chrome, and every other iOS browser. WebKit’s MediaStreamAudioSourceNode is silent for remote WebRTC tracks, so Haven’s Web Audio routing dropped all incoming voice into a black hole on iOS — calls looked connected but you heard nothing. iOS now skips the Web Audio graph and plays incoming audio natively (trade-off: no >100% volume boost on iOS only). Also restored the Apply voice processing to screen-share audio opt-in toggle (Settings → Debug) for users sharing voice content like tutorials or podcasts.
Download →
v3.17.3 — Mobile “Join Voice” button no longer stayed visible after joining the call (#5387) — CSS !important was beating the JS inline-hide. Language picker now actually switches the whole UI on change (#5386) — dynamically-rendered strings used to keep their previous language until next reload; setLocale() now reloads. New admin setting Default Language for new users’ first visit. Screen-share audio is now full-fidelity by default (#5379) — voice processing (echo cancel / noise suppression) is no longer applied to system audio, so music and game audio sound the way they should. Mic is unchanged. Bundles Haven Desktop 1.4.17 (occluded-window screen-share encoder stall fix).
Download →
v3.17.2 — Mobile fixes: right-side userlist no longer hides behind the message composer between 769–900px (#5384), and the "Voice / Stage active" indicator now dims the background like the Members button does (#5385). Also: the pin_message role permission now actually shows the Pin/Unpin context menu entry (frontend was checking moderator level instead of the permission). GUIDE.md gains a Reverse Proxy section covering Caddy, nginx, and tunnel + Caddy chains.
Download →
v3.17.1 — Critical hotfix for the 3.17.0 ERR_INVALID_PACKAGE_CONFIG crash (#5374) caused by a stray non-UTF-8 byte in package.json. Show/hide password toggle on every password field. Expired tokens redirect to login instead of leaving you on an empty channel list (#5375).
Download →
v3.17.0 — Pinned messages PiP floating panel (#5370): pop-out button opens a draggable, resizable overlay so you can browse and manage pins without leaving the message feed; fullscreen button added to pins PiP. Muted channels now block bot/webhook notifications and badge re-seeding on reconnect. DM status dot offline display fix (#5372). PiP z-index fix (#5373). Pinned panel button alignment fix
Download →
v3.16.15 — Voice chat: actual root cause of the recurring self-vanish glitch (#5347) fixed — channel code rotation desync caused voice clients to hold stale codes after server rotation, breaking reconnects until manual rejoin; null audioCtx crash on voice leave patched; version display regression from v3.16.14 corrected (servers reported v3.16.13 despite running v3.16.14) (#5369)
Download →
v3.16.14 — Voice chat: server-side 4 s grace period before evicting a disconnected user so transient blips never broadcast voice-user-left to peers; fast-path rejoin that skips RTCPeerConnection renegotiation when the socket reconnects within the window; client-side roster watchdog that auto-fires voice-rejoin if we’ve silently dropped off the server list — fixes the recurring self-vanish glitch (#5347)
Download →
v3.16.13 — Channel and sub-channel composers are now drag-resizable up to 60% of the viewport (#5327). New sub-channels inherit their parent channel’s role access on creation (#5328). Voice chat: deferred soft-leave on transient socket blips so quick reconnects no longer tear down the mic and peers, plus a self-heal that emits voice-rejoin automatically when the right panel notices we’ve dropped off the server roster — no more manual leave+rejoin churn
Download →
v3.16.12 — Voice chat audit: fixed missing-self in the right panel after server restart / reconnect races, stale roster ghosts after a reboot, and the “clicked Start Voice 15 times during an outage and got 15 toasts at once” spam-click flood
Download →
v3.16.11 — Removed servers no longer reappear after a restart (Desktop bootstrap and sync paths now honor the local removed-set). Transient server restarts no longer log users out — the auth-error handler now requires three consecutive errors before bouncing to login
Download →
v3.16.10 — Fixed displayed server version being stuck at v3.16.5 regardless of which release was installed (#5364 — package.json was bumped off-by-one in v3.16.6 and never corrected). Also ships the originally-intended v3.16.5 code changes: editing a message from a DM PiP now works correctly, and encrypted upload failure toasts show the specific error
Download →
v3.16.9 — Fixed not appearing in the voice panel or sidebar while in a voice channel after a socket reconnect caused the server snapshot to race ahead of the rejoin re-registration
Download →
v3.16.8 — Fixed phantom unread badge on the current channel after returning from background: incoming messages bumped the badge while the window was hidden even if the user was already at the bottom; badge now clears immediately on window focus when coupled to the bottom
Download →
v3.16.7 — Images attached alongside a persona message now send as the persona instead of the real account. Persona badge was showing “??” prepended to the label; now shows the correct icon
Download →
v3.16.6 — Added Unpin button to the pinned-message panel (visible to users with the pin_message permission or admin). Fixed webhook management being locked to admins despite a dedicated manage_webhooks permission; users with that permission can now create, list, delete, and toggle per-channel webhooks
Download →
v3.16.5 — Fixed editing messages in the DM PiP doing nothing (server resolved the wrong channel; client now sends the channel code). Encrypted image upload failure toast now shows the specific error instead of always saying “Encrypted image upload failed”
Download →
v3.16.4 — Unicode letters (umlauts, accented characters, non-Latin scripts) now allowed in channel names. Fixed video and audio files appearing in the Files tab of the media gallery instead of Videos/Audio
Download →
v3.16.2 — Fixed CMD window closing on startup for Windows users past v3.15.1 (cmd.exe exits instead of returning from a call :subroutine inside an else-if compound block; restructured to use goto labels). Fixed published file themes not surviving a page refresh or applying on the login page (socket was never exposed for preference saving; theme-init.js now injects the CSS link immediately for file themes)
Download →
v3.16.1 — Clicking Leave Voice now clears the voice panel and sidebar count immediately without waiting for the server broadcast; stale in-flight broadcasts can no longer re-add a user to the voice panel after they've left
Download →
v3.15.8 — The fix that was already shipped, but actually shipped this time. Every cache-bust ?v= string in app.html and app.js was pinned at 3.15.2/3.14.14 respectively, so browsers served stale client JS even on updated servers. None of the v3.15.3-3.15.7 client fixes (voice rejoin, sidebar sync, screen-share recovery, persona autocomplete) actually ran in any browser. Bumped them all to 3.15.8 to force a refresh
Download →
v3.15.7 — Critical hotfix: getUserAllRoles was missing from the server's permission destructure, causing every voice user broadcast to throw a ReferenceError silently. Voice lists never updated after joins/leaves/mutes. Also fixed the saved server list being rejected with a 500 once it grew past ~50 servers
Download →
v3.15.6 — Persona :: autocomplete no longer appears in fullscreen DM view, and nicknames no longer override persona display names on messages
Download →
v3.15.5 — Screen-share reliability overhaul: fixed silent _renegotiate throw when signaling state wasn't stable (caused audio-but-no-video), late-joiner screen tracks skipped if webcam was also on, screen-share-started was emitting after renegotiation instead of before, and added a recovery handshake so receivers automatically ask the sharer to re-offer if no video appears within ~3s
Download →
v3.15.4 — Voice presence drift fix: sidebar and right voice panel now always in sync, reconnect after socket drop now correctly uses the rejoin path instead of a delayed plain join that left peers with dead connections
Download →
v3.15.3 — Ghost voice entries pruned on connection snapshot and get-voice-counts so users who already left no longer show in the sidebar or voice panel
Download →
v3.15.2 — Thread panel z-index fix, persona autocomplete hidden in DMs and threads, persona tooltip showing raw i18n key, double close button in media gallery, gallery button hidden in DMs, OpenSSL not recognized on Windows bat startup
Download →
v3.15.1 — Polish pass on the Channel Media Gallery + Personas: persona prefix changed to ::Name your message with autocomplete, @PersonaName mentions now resolve and ping the owner, fixed the bug where consecutive messages from different personas all stacked under the first persona's header, jump-to-message button on photo/video gallery tiles, video tiles open in an inline player instead of silently closing the gallery, image lightbox now sits above the gallery modal, top-bar header buttons follow the Colorful/Monochrome icon setting
Download →
v3.15.0 — Channel Media Gallery: new 🖼️ button opens a five-tab modal (Photos, Videos, Audio, Files, Links) showing every shared media item in the channel. Personas: create up to 25 named alter-egos in your profile and send messages as one by typing >>Name your message, with persona badges and full moderation
Download →
v3.14.16 — Message status icons (E2E lock, burn flame) reworked into a fixed right-anchored slot — no more right-gutter misalignment on compact or PiP messages. PiP parent message action controls anchored correctly. Cache-bust strings bumped to force browsers to fetch updated files
Download →
v3.14.15 — Tightened fixed status slot padding in DM PiP to remove excess whitespace when one or both icons are absent
Download →
v3.14.14 — Message status icons (lock/flame) pinned to a fixed right slot instead of flowing with text
Download →
v3.14.13 — Status icons moved inline from separate right-gutter column
Download →
v3.14.12 — E2E lock anchored at right:8px always; burn flame shifts left in JS when both icons are present
Download →
v3.14.11 — Cache-bust query strings bumped on all script and stylesheet tags to force browsers to fetch updated files
Download →
v3.14.10 — E2E recovery error messaging overhaul (no data-loss prompts on bad-password or network failures), recovery toast stays 8–10 s, composer z-index fix above theme particle effects, burn indicator cleanup, Manage Servers modal height fix
Download →
v3.14.9 — Topic bar hidden in DMs; E2E recovery now fetches the partner’s key before reloading messages
Download →
v3.14.8 — Burn flame position consistent on compact messages; burn indicator wired in PiP
Download →
v3.14.7 — Burn icons placed correctly; E2E decryption self-heals on key-fetch miss
Download →
v3.14.6 — DM channel codes are no longer exposed on the client. Removed “Copy DM Link” from the DM right-click menu and the copy-link button from the message toolbar in DMs. Server strips the code fields from DM channel payloads entirely
Download →
v3.14.5 — Security: blocked third-party DM joins via channel code or message link (#5348). Added “Recover Keys from Backup” to the E2E dropdown — non-destructive recovery that preserves existing encrypted history
Download →
v3.14.4 — Threads fully removed from DMs (toolbar button, preview, click handlers, server handlers - all gated). New `Add to Channel` entry in the user gear menu mirroring the right-click context menu
Download →
v3.14.3 — Burn-after-read DMs actually burn now and the sender finally sees a flame indicator on their own message (#5325). Voice participant list refreshes properly when you're talking on one channel and viewing text in another (#5347 follow-up)
Download →
v3.14.2 — Role Assignment Center fixes: per-user permission edits now actually persist across reopens, assigning one role no longer wipes sibling roles at the same scope, channel pane only lists channels the target user is in (with an inline picker to add them to a new channel), Transfer Admin removed from the perms grid (it was a no-op), and `assign-role` now validates `customPerms` against the caller to close a privilege-escalation hole
Download →
v3.14.1 — Voice rejoin after random disconnects no longer leaves users invisible to each other with broken audio (#5347)
Download →
v3.14.0 — Registration token gate alongside whitelist (#5344), default channels picker for invite joiners + private-channel safety fix (#5345), burn-after-read DM toggle is now persistent (#5280)
Download →
v3.13.0 — Multi-role per user per channel (#5341), DM auto-cleanup banner (#5340), admin-configurable login session duration (#5294), webhook expansion (per-event subscriptions, HMAC signatures, retry, delivery health, new events, test-webhook, inbound reply_to & avatar override), link preview cache & rate-limit fixes (#5337), phantom taskbar badge fix, slow-mode media bundling fix (#5342), burn-on-read visual indicator (#5280), PiP input vertical resize
Download →
v3.12.0 — Starter sticker pack, `:stickername:` shortcode, dedicated manage_stickers permission, sticker tab no longer auto-closes the picker, burn-after-read DM toast feedback & i18n fix
Download →
v3.11.2 — Quick links to Bans/Deleted Users from members list, Manage Roles modal opens with role list visible, role modal resizes both directions, #5307 follow-up delete confirm i18n key fix
Download →
v3.11.1 — #184 voice output device honored from first track-add via AudioContext sinkId
Download →
v3.11.0 — Stickers (admin uploads + picker tab), DM PiP no-op when DM is already current
Download →
v3.10.13 — Voice stability fixes: self-speaking indicator, temp-voice grace period, Desktop memory-reload safety, category collapse persistence, DM PiP fixes, Role Members button
Download →
v3.10.12 — PTT lone modifiers + mouse4/5 + hold/toggle mode, themed delete confirms, rate limiter scoped to credential routes only, slash autocomplete Enter key
Download →
v3.10.6 — Win95 theme dark-sections fix & softer dividers, multi-tier markdown lists, YouTube live embeds, Docker Update Now copyable command, HAVEN_DATA_DIR systemd doc
Download →
v3.10.4 — Self-DM PiP open fix, DM PiP unread auto-clear
Download →
v3.10.3 — #channel autocomplete, DM PiP z-index fix, voice highlight regressions
Download →
v3.10.2 — Pinned-message indicator, manage_server category visibility fix, message ordering tiebreaker
Download →
v3.10.1 — @everyone/@here mentions, #channel autolinks, duplicate role, voice ICE fix
Download →
v3.10.0 — Drag-reorder remote servers, View Audit Log permission
Download →
v3.9.0 — Drag-reorder tag categories, audit log, modal layout fixes
Download →
v3.8.0 — DM Picture-in-Picture, configurable purge-on-ban
Download →
v3.7.0 — Scheduled auto-backups, in-app update check, add-all-members
Download →
v3.6.0 — Channel/message links, admin backups, update check, CORS fixes
Download →
v3.5.0 — Threaded replies, toolbar customization, SSO auth improvements
Download →
v3.4.0 — Quote/edit UX, bot API upgrades, SSO quality fixes
Download →
v3.3.0 — Last read indicator, per-event volume sliders, server list sync improvements
Download →
v3.2.0 — Mark as Read, pinned message jump, iOS Safari fixes
Download →
v3.1.1 — Status bar toggle, server URL display, mobile fixes
Download →
v3.1.0 — Server banners, server icon sync
Download →
v3.0.0 — SSO registration, advanced search filters, reply notifications
Download →
v2.9.9 — Encrypted server list sync, jump-to-bottom, edit-mode emoji picker
Download →
v2.9.8 — Read-only channels, server-relayed mic illumination, role display picker
Download →
v2.9.7 — Open-source STUN servers, STUN_URLS env var
Download →
v2.9.6 — Custom Terms of Service, unpin fix
Download →
v2.9.4 — Bot webhook callbacks, community server
Download →
v2.9.3 — Android popup refresh, Desktop naming fix
Download →
v2.9.1 — View All Members permission fix
Download →
v2.9.0 — Temp voice channels, voice permission fix, AFK idle fix
Download →
v2.8.9 — Voice presence fixes, channel organize, collapsed sub badges
Download →
v2.8.8 — Voice AFK presence fix, video thumbnails
Download →
v2.8.6 — Heart/donate button position fix
Download →
v2.8.5 — Noise gate, screen share rejoin, setup script fixes
Download →
v2.8.4 — AFK voice channel rework, video embed fullscreen fix
Download →
v2.8.3 — Bulk emoji upload, TTS permission, Shippy popout fix
Download →
v2.8.2 — Camera device selector, TTS abuse fixes, E2E spoiler fix
Download →
v2.8.1 — Camera selector, TTS fixes, channel sort sync, spoiler in E2E DMs
Download →
v2.8.0 — Expanded permissions, deleted users list, configurable voice bitrate
Download →
v2.7.9 — Custom login title, reset roles, Desktop push notif fix
Download →
v2.7.8 — Upload progress bar, view all members, stream reopen, Docker fix
Download →
v2.7.7 — Temporary channels, members list privacy, URL @ fix
Download →
v2.7.6 — Per-feature channel toggles, popout menu
Download →
v2.7.5 — Keyboard nav, dynamic sort, scroll fixes
Download →
v2.7.4 — Account recovery codes, admin panel fixes
Download →
v2.7.3 — Video fullscreen, PiP seek bar, stream tile fixes
Download →
v2.7.1 — Media toggle, channel functions polish, voice fixes
Download →
v2.7.0 — Performance overhaul, RGB freeze fix, app modularization
Download →
v2.6.0 — Android beta sign-up, auto-accept streams
Download →
v2.5.7 — Submenu overflow fix; email @mention false-tag fix
Download →
v2.5.6 — Channel re-parenting, modal resize/expand, organize drill-down
Download →
v2.5.5 — Settings layout hotfix; TOTP 2FA fixes
Download →
v2.5.4 — Link preview fixes: Reddit JSON API, fxtwitter image fallback, HTML entity decoding
Download →
v2.5.3 — Built-in AOL sounds bundled with every server
Download →
v2.5.2 — manage_soundboard permission; fxtwitter, Pixiv & oEmbed autodiscovery fixes
Download →
v2.5.1 — Bug fixes: image upload race, DM reply encryption, voice reconnect; manage_emojis permission
Download →
v2.5.0 — One-click installer, FCM push notifications, admin update banner
Download →
v2.4.0 — Emoji upload crop/zoom editor, jumbo emoji messages
Download →
v2.3.9 — Two-factor authentication (TOTP), native OS notifications
Download →
v2.3.8 — Private channel code visibility, Docker healthcheck fix
Download →
v2.3.7 — Private channel invite lockdown, creator auto-mod role
Download →
v2.3.4 — Right-click voice users, donor tier styling
Download →
v2.3.3 — Member list DM/nickname, sidebar members, admin recovery
Download →
v2.3.2 — Sound Manager, kick channel revoke, font scaling
Download →
v2.3.1 — Plugin CSP fix, health check 404 fix
Download →
v2.3.0 — Webcam video, plugins, font size, channel invites
Download →
v2.2.5 — Security fixes, desktop code removed
Download →
v2.2.4 — Security hardening, SSRF fix, JWT verification
Download →
v2.2.3 — Screen share fixes, role save UX
Download →
v2.2.2 — FORCE_HTTP, auto-assign roles, Docker ARM fix
Download →
v2.2.1 — Mobile UI fixes, TURN credential fix, file upload fix
Download →
v2.2.0 — CRT vignette, YouTube embeds, emoji flip
Download →
v2.1.0 — E2E multi-device sync, channel organizer fix
Download →
v2.0.1 — Security fix (installer removal)
Download →
v2.0.0 — Discord import, E2E key fix, ARM64 Docker
Download →
v1.9.2 — Image lightbox, emoji autocomplete, GIF avatars
Download →
v1.9.1 — Auto-cleanup fix, server branding, emoji modal
Download →
v1.9.0 — Custom emojis, emoji quickbar, JWT security
Download →
v1.8.2 — PiP revert, YouTube playlists, bot fixes
Download →
v1.8.1 — Upload limits, mobile refresh, E2E sync
Download →
v1.8.0 — E2E encryption, Flash games, seek bar
Download →
v1.7.0 — Role inheritance, voice dot colors
Feb 16, 2026
v1.6.0 — Roles, voice controls, admin transfer
Feb 15, 2026
v1.5.0 — Push notifications, emoji search
Feb 14, 2026
v1.4.0 — Display names, mobile voice
Feb 12, 2026
v1.3.0 — DMs, user status, file sharing
Feb 12, 2026
v1.2.0 — Voice UX, pinning, link previews
Feb 12, 2026
v1.1.0 — Data isolation
Feb 11, 2026