Skip to content

Commit c37fcaa

Browse files
committed
Release v3.29.0
Spoiler images and a per-viewer Hide Image option, granular guest channel access (#5401), grouped messages in pop-out DMs and threads, and invite-link management. Bump package.json, add the CHANGELOG section, and update the landing pages (docs + website) to v3.29.0.
1 parent 610b12d commit c37fcaa

4 files changed

Lines changed: 30 additions & 9 deletions

File tree

CHANGELOG.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,19 @@ Format follows [Keep a Changelog](https://keepachangelog.com/). Haven uses [Sema
1111
1212
---
1313

14+
## [3.29.0] — 2026-06-29
15+
16+
### Added
17+
- **Spoiler images and a per-viewer Hide Image option.** When sending an image you can now mark it as a spoiler — an eye toggle on each queued image — and it renders blurred behind a "Spoiler" label for everyone, revealing on click. Works for normal uploads, encrypted DM images, and persona/bundled sends. Separately, you can right-click any image already in chat and choose "Hide Image" to collapse it to a placeholder in your own view only; it's stored per-device, and clicking the placeholder restores the image.
18+
- **Invite link management.** Admins can now create and manage multiple invite links from a dedicated menu, each with its own per-link channel grants, optional expiry, and use limits. Copying a link is reliable with a clear success toast and a dedicated popout, and the landing site can auto-join the community from an `?invite=` link instead of manual code entry.
19+
20+
### Fixed
21+
- **Guests couldn't reach sub-channels or voice rooms in their allowed area (#5401).** The guest access picker only listed top-level channels and auto-joined just the public sub-channels under a whitelisted parent, so private sub-channels were unreachable and voice rooms a guest wasn't a member of failed with "not a member of this channel" (the server already allowed guests to use voice once they were in the room). The picker now lists every channel individually — parents, sub-channels, and voice rooms, each tagged so you can see what's private or voice — and guests are joined to exactly the rooms you select (ticking a sub-channel includes its parent so it appears in the sidebar). The server still enforces membership and per-channel settings, so nothing is widened beyond what you grant.
22+
- **Back-to-back messages from one person showed as separate blocks in pop-out DMs and threads.** Consecutive messages from the same sender within a few minutes now group together — no repeated name/avatar header — the way the main channel already does, in both the DM pop-out and in threads. In threads, deleting the first message of a group now promotes the next reply so it keeps its author header.
23+
24+
### Changed
25+
- **Haven Desktop download links bumped to v1.4.25** on the landing pages.
26+
1427
## [3.28.0] — 2026-06-26
1528

1629
### Added

docs/index.html

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1415,12 +1415,12 @@ <h2>Download Haven</h2>
14151415
</div>
14161416

14171417
<div class="download-card fade-in">
1418-
<h2>&#x2B21; Haven Server &mdash; v3.28.0</h2>
1418+
<h2>&#x2B21; Haven Server &mdash; v3.29.0</h2>
14191419
<p class="download-version">Latest stable release &middot; Windows, macOS &amp; Linux &middot; ~5 MB</p>
14201420

14211421
<div class="download-btn-group">
1422-
<a href="https://github.com/ancsemi/Haven/archive/refs/tags/v3.28.0.zip" class="btn btn-primary download-main">
1423-
<span class="icon">&#x2B07;</span> Download v3.28.0 (.zip)
1422+
<a href="https://github.com/ancsemi/Haven/archive/refs/tags/v3.29.0.zip" class="btn btn-primary download-main">
1423+
<span class="icon">&#x2B07;</span> Download v3.29.0 (.zip)
14241424
</a>
14251425
<div class="download-alt-links">
14261426
<a href="https://github.com/ancsemi/Haven" target="_blank">&#9965; View on GitHub</a>
@@ -1437,7 +1437,11 @@ <h2>&#x2B21; Haven Server &mdash; v3.28.0</h2>
14371437
<div class="version-list">
14381438
<div class="version-list-inner">
14391439
<div class="version-item">
1440-
<div><span class="v-name">v3.28.0</span><span class="v-tag latest">Latest</span> &mdash; <strong>Admin-only Hide Channel, a screen-share audio sync fix over relays, and live custom-asset updates.</strong> Admins can now right-click to hide a channel from their own sidebar without leaving it (#5409). Screen-share audio now defaults to native playout so it no longer drifts out of sync over TURN relays, with Web Audio mixing as an opt-in for the &gt;100&#37; volume boost (#5426); custom sounds, emojis, and stickers now update live for everyone instead of after a restart (#5426); and voice peers now self-heal after a brief disconnect so you&#39;re not left silent to some people (#5427). Also: blocked sub-channel access via crafted codes / deep links (#5408), guests now see the Join Voice button in allowed channels (#5401), the status-bar server address copies correctly in the desktop app, and a full Russian retranslation (#5421).</div>
1440+
<div><span class="v-name">v3.29.0</span><span class="v-tag latest">Latest</span> &mdash; <strong>Spoiler &amp; hide-image controls, granular guest channel access (#5401), grouped messages in DMs and threads, plus invite-link management.</strong> You can now mark an image as a spoiler when sending it &mdash; it shows blurred until clicked &mdash; or right-click any image to hide it from your own view. Guest access is now picked channel by channel, sub-channels and voice rooms included, so guests reach exactly the rooms you grant &mdash; fixing nested and voice channels that were unreachable before (#5401). Back-to-back messages from the same person now group together in pop-out DMs and in threads, the way the main channel already does. And invite links got a full management menu: multiple codes with per-link channel grants, expiry, and use limits, plus one-click copy and a community auto-join link.</div>
1441+
<a href="https://github.com/ancsemi/Haven/archive/refs/tags/v3.29.0.zip">Download &rarr;</a>
1442+
</div>
1443+
<div class="version-item">
1444+
<div><span class="v-name">v3.28.0</span> &mdash; <strong>Admin-only Hide Channel, a screen-share audio sync fix over relays, and live custom-asset updates.</strong> Admins can now right-click to hide a channel from their own sidebar without leaving it (#5409). Screen-share audio now defaults to native playout so it no longer drifts out of sync over TURN relays, with Web Audio mixing as an opt-in for the &gt;100&#37; volume boost (#5426); custom sounds, emojis, and stickers now update live for everyone instead of after a restart (#5426); and voice peers now self-heal after a brief disconnect so you&#39;re not left silent to some people (#5427). Also: blocked sub-channel access via crafted codes / deep links (#5408), guests now see the Join Voice button in allowed channels (#5401), the status-bar server address copies correctly in the desktop app, and a full Russian retranslation (#5421).</div>
14411445
<a href="https://github.com/ancsemi/Haven/archive/refs/tags/v3.28.0.zip">Download &rarr;</a>
14421446
</div>
14431447
<div class="version-item">

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "haven",
3-
"version": "3.28.0",
3+
"version": "3.29.0",
44
"description": "Haven - self-hosted private chat for your server, your rules",
55
"license": "AGPL-3.0",
66
"main": "server.js",

website/index.html

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1415,12 +1415,12 @@ <h2>Download Haven</h2>
14151415
</div>
14161416

14171417
<div class="download-card fade-in">
1418-
<h2>&#x2B21; Haven Server &mdash; v3.28.0</h2>
1418+
<h2>&#x2B21; Haven Server &mdash; v3.29.0</h2>
14191419
<p class="download-version">Latest stable release &middot; Windows, macOS &amp; Linux &middot; ~5 MB</p>
14201420

14211421
<div class="download-btn-group">
1422-
<a href="https://github.com/ancsemi/Haven/archive/refs/tags/v3.28.0.zip" class="btn btn-primary download-main">
1423-
<span class="icon">&#x2B07;</span> Download v3.28.0 (.zip)
1422+
<a href="https://github.com/ancsemi/Haven/archive/refs/tags/v3.29.0.zip" class="btn btn-primary download-main">
1423+
<span class="icon">&#x2B07;</span> Download v3.29.0 (.zip)
14241424
</a>
14251425
<div class="download-alt-links">
14261426
<a href="https://github.com/ancsemi/Haven" target="_blank">&#9965; View on GitHub</a>
@@ -1437,7 +1437,11 @@ <h2>&#x2B21; Haven Server &mdash; v3.28.0</h2>
14371437
<div class="version-list">
14381438
<div class="version-list-inner">
14391439
<div class="version-item">
1440-
<div><span class="v-name">v3.28.0</span><span class="v-tag latest">Latest</span> &mdash; <strong>Admin-only Hide Channel, a screen-share audio sync fix over relays, and live custom-asset updates.</strong> Admins can now right-click to hide a channel from their own sidebar without leaving it (#5409). Screen-share audio now defaults to native playout so it no longer drifts out of sync over TURN relays, with Web Audio mixing as an opt-in for the &gt;100&#37; volume boost (#5426); custom sounds, emojis, and stickers now update live for everyone instead of after a restart (#5426); and voice peers now self-heal after a brief disconnect so you&#39;re not left silent to some people (#5427). Also: blocked sub-channel access via crafted codes / deep links (#5408), guests now see the Join Voice button in allowed channels (#5401), the status-bar server address copies correctly in the desktop app, and a full Russian retranslation (#5421).</div>
1440+
<div><span class="v-name">v3.29.0</span><span class="v-tag latest">Latest</span> &mdash; <strong>Spoiler &amp; hide-image controls, granular guest channel access (#5401), grouped messages in DMs and threads, plus invite-link management.</strong> You can now mark an image as a spoiler when sending it &mdash; it shows blurred until clicked &mdash; or right-click any image to hide it from your own view. Guest access is now picked channel by channel, sub-channels and voice rooms included, so guests reach exactly the rooms you grant &mdash; fixing nested and voice channels that were unreachable before (#5401). Back-to-back messages from the same person now group together in pop-out DMs and in threads, the way the main channel already does. And invite links got a full management menu: multiple codes with per-link channel grants, expiry, and use limits, plus one-click copy and a community auto-join link.</div>
1441+
<a href="https://github.com/ancsemi/Haven/archive/refs/tags/v3.29.0.zip">Download &rarr;</a>
1442+
</div>
1443+
<div class="version-item">
1444+
<div><span class="v-name">v3.28.0</span> &mdash; <strong>Admin-only Hide Channel, a screen-share audio sync fix over relays, and live custom-asset updates.</strong> Admins can now right-click to hide a channel from their own sidebar without leaving it (#5409). Screen-share audio now defaults to native playout so it no longer drifts out of sync over TURN relays, with Web Audio mixing as an opt-in for the &gt;100&#37; volume boost (#5426); custom sounds, emojis, and stickers now update live for everyone instead of after a restart (#5426); and voice peers now self-heal after a brief disconnect so you&#39;re not left silent to some people (#5427). Also: blocked sub-channel access via crafted codes / deep links (#5408), guests now see the Join Voice button in allowed channels (#5401), the status-bar server address copies correctly in the desktop app, and a full Russian retranslation (#5421).</div>
14411445
<a href="https://github.com/ancsemi/Haven/archive/refs/tags/v3.28.0.zip">Download &rarr;</a>
14421446
</div>
14431447
<div class="version-item">

0 commit comments

Comments
 (0)