You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -34,6 +34,7 @@ Format follows [Keep a Changelog](https://keepachangelog.com/). Haven uses [Sema
34
34
35
35
### Fixed
36
36
-**Blank login page / blank app shell after updating directly from v3.18.0 (#5399).** Two SyntaxErrors had been quietly sitting in `main` since the v3.19.0 Guest mode merge (`b6b95bd`): a duplicate `const loginForm` redeclaration in `auth.js`, and an orphan `_setupServerBar() {` opener with no body in `app-ui.js` (a half-merged method definition that was never closed). Anyone already running v3.19.x kept working because their cached/loaded modules survived the crash on initial parse, but users updating directly from v3.18.0 — the prior version many self-hosters were sitting on — hit both errors on first load and got a blank login page followed by a blank app. Mistakenly attributed to the v3.20.1 STUN refresh at first; that work is unaffected.
37
+
-**Bot slash command registration now supports discoverable subcommands in autocomplete (#5403).**`POST /api/webhooks/:token/commands` accepts an optional `subcommands` array (`{ name, description }`), persists it per command, and `/api/bot-commands` now flattens those into picker entries like `/rss add` with per-subcommand descriptions. Callback payload format remains unchanged (`command` is base command, `args` carries the subcommand text and arguments).
37
38
-**`/api/ice-servers` was still returning dead STUN URLs (#5399 followup).** The server-side default in `/api/ice-servers` was still handing out `stun.stunprotocol.org` + `stun.nextcloud.com` — the same pair the v3.20.1 client fix had to route around. Any Haven server using the server-side STUN defaults was giving its clients dead endpoints and only working at all because `voice.js` had been updated to ignore them. Mirrored the same Cloudflare/Metered/Twilio/Google fallback list on the server so the two sides stay in sync.
38
39
-**Right-click → Copy image silently failed for almost everyone, on both static images and GIFs.** Two compounding causes: the previous implementation awaited an `Image()` load + `canvas.toBlob` before calling `navigator.clipboard.write`, by which point the user-gesture token had been dropped and Chromium silently rejected the write with `NotAllowedError`; on top of that, Electron's renderer added enough latency around fetch+decode that even a corrected promise-based path was unreliable. Rewrote with three strategies tried in order: under Haven Desktop, hand the PNG bytes to the main process via a new `clipboard:write-image` IPC (Electron's `clipboard.writeImage` has no gesture restrictions); otherwise call `navigator.clipboard.write` with a promise-based `ClipboardItem` so the gesture token is preserved; last-ditch, copy the image URL as text so the user has something to paste. Failure toasts now include the underlying error message so diagnosing future regressions doesn't require devtools.
39
40
-**Image and member context menus appeared offscreen on top of the image lightbox or PiP DM.** Both `.image-context-menu` and `.user-context-menu` sat at `z-index: 10001`, which left them buried under the image lightbox (`100010`) and the PiP DM panel (`99999`). Right-clicking an enlarged image or a member while a PiP DM was open made the menu look like it vanished. Bumped both to `100020`.
0 commit comments