CI Report:
https://ci-tests.linuxserver.io/linuxserver/thelounge/next-v4.5.0-ls28/index.html
LinuxServer Changes:
Full Changelog: next-v4.5.0-rc.3-ls27...next-v4.5.0-ls28
Remote Changes:
v4.5.0 - 2026-05-19
For more details, see the full changelog and milestone.
This is a maintenance-focused release in preparation for a feature-focused 4.6.0.
Following the Node.js release schedule, Node.js 18 and Node.js 20 support has been dropped following their transition to EOL.
Node 22 is now the minimum supported version. Notably, this let us drop the cumbersome sqlite3 package and switch
to the Node.js node:sqlite built-in. No user-facing changes are necessary.
For more details, see the full changelog
🎉 Thanks to our 14 contributors for this release:
@arminius-smh, @brunnre8, @Jay2k1, @kevincox, @kfranqueiro, @marmitar, @MaxLeiter, @nycki93, @sadiepowell, @sfan5, @supertassu, @SyntaxColoring, @TehPeGaSuS, and @xPaw
Added
- ircv3: start storing/tracking msgid (#5044, #5046
- topic: display topic when no arguments are given, add
/cleartopiccommand (3d8e964,91fb1eeby @brunnre8) - Show STATUSMSG indication for actions as well (#5004 by @supertassu)
- whois: support
actual_usernamefield (e42ad91by @brunnre8) - Style chghost messages (
fc13502by @brunnre8) - Add locked settings (admin can lock per-network configuration) (
32f0181by @brunnre8)
Changed
- Trim username in sign-in form (
59a333dby @sfan5) - Precise user configuration reloading (
c20e9d2by @kevincox) - client: opt out of browser completion in the chat input (#5068 by @nycki93)
- Update production dependencies to their latest versions:
irc-frameworkpinned to9578e59(#5049 by @MaxLeiter)socket.ioto 4.6.2 (a900943by @renovate[bot])cheerioto 1.0.0 (6b30b07by @renovate[bot])node-forgeto 1.3.1 (374c6a9by @renovate[bot])expressto 4.20.0 (security) (05a8713by @renovate[bot])mime-typesto 2.1.35 (2238808by @renovate[bot])ldapjsto 2.3.3 (381ddcaby @renovate[bot])ua-parser-jsto 1.0.39 (61f8ce1by @renovate[bot])gotto 11.8.6 (1ccce14by @renovate[bot])sortablejsto 1.15.2 (f3bdec0by @renovate[bot])@textcomplete/textareadowngraded to v0.10 to match@textcomplete/core(#5076 by @xPaw)- Split sort event (
0067c30by @brunnre8)
Removed
- Drop sqlite3 dependency in favor of the built-in
node:sqlite(#5055 by @MaxLeiter) - Drop the
uuidpackage in favor ofcrypto.randomUUID(#5081 by @MaxLeiter) - Drop Node 18 (EOL) support (#5041 by @MaxLeiter)
- client: remove
setAppBadgeandclearAppBadge(#4873 by @brunnre8) - Remove DNS resolution order override (
a61bc14by @brunnre8)
Fixed
- Force generated certificate serial to be positive, use 20 bytes (#5097 by @xPaw)
- Fix spurious "insecure connection" warning by treating
::1as localhost (#5016 by @SyntaxColoring) - Fix call stack size exceeded (#5023 by @marmitar)
- Fix mobile viewport (#5029 by @Jay2k1)
- Fix order of messages with identical timestamps (#5087 by @Jay2k1)
- Fix inverted boolean check with expand & collapse (#5082 by @MaxLeiter)
- Fix PWA installation behind Cloudflare Access (#5032 by @MaxLeiter)
- Fix
.DS_Storecrash by usingfs.rmSyncin storage cleanup (c88f647by @MaxLeiter) - Strip IRC color codes from topic hover text (fixes #4840) (
c94c68eby @MaxLeiter) - Hide Account settings tab on public instance (
2a92ec0by @MaxLeiter) - Preserve network name in sidebar after editing in public mode (fixes #4922) (
45a2357by @MaxLeiter) - Improve a11y labels and semantics (#5057 by @MaxLeiter)
- Suppress "***" in joins/parts/etc. for screen readers (
59e8b16by @kfranqueiro) - Indicate active context menu item for screen readers (
4ba1636by @kfranqueiro) - Fix showing multiple certificate fingerprints on InspIRCd v4 (
e44bed1by @sadiepowell) - Fix broken manual channel ordering (
8925629by @Jay2k1) - Disable SASL if SASL isn't configured (
b270f51by @brunnre8) - Reverse locknetwork config selection (
3f2697cby @brunnre8) - server: fix scoped package install (
0a4adc4by @arminius-smh) - server: fix loading themes from scoped packages (
ac485c4by @arminius-smh) - server: fix time handling (
0d9c184by @brunnre8) - server: Fix quoting in error message (
be603c6by @supertassu) - Identd: fix various issues (write after connection end, ip/port tuple matching, idle connection close) (
0955d9dby @brunnre8) - fix /mute not persisting, case-insensitive channel check (
#by @MaxLeiter)
Security
- sqlite: don't interpolate the deletion query (#5086 by @brunnre8)
- Escape user-supplied LDAP filter value as per RFC 4515 (#5084 by @MaxLeiter)
- Update
socket.ioto 4.6.2 (security) (a900943by @renovate[bot]) - Update
webpackto 5.94.0 (security) (8ed8988by @renovate[bot]) - Update
expressto 4.20.0 (security) (05a8713by @renovate[bot]) - Bump braces from 3.0.2 to 3.0.3 (
e812731by @dependabot[bot])
Documentation
On the website repository:
- update config include (
fe3e08dby @brunnre8) - docker: use named volume mounts (
2ecee6bby @brunnre8) - Remove inline style (
2cef626by @xPaw) - Add CSP header (
ce6210eby @xPaw) - Add italics image to repo (
ae1a9baby @xPaw) - Fix csp for community page (
4ccb3ceby @xPaw) - Update icons (
9ef2ca4by @xPaw) - Remove the reference that iOS does not support push (#281 by @AN1MATEK)
- Adding CSS snippet to hide unread badge for muted channels (#274 by @ben-bartholomew)
- Add opencollective to frame-src (
d9cad01by @xPaw) - Add font preloads (
178d909by @xPaw) - Add aspect ratio to the screenshot (
3926d26by @xPaw) - Inline the logo svg (
01dba40by @xPaw) - Add font-display: swap (
531edf1by @xPaw) - Fix color contrast (
d3f8388by @xPaw) - Remove jquery (
8dfdda8by @xPaw) - Fix event (
e79714eby @xPaw) - Make anchors unfocusable (
cb0527fby @xPaw) - Add scrollbar-gutter: stable (
e0144ddby @xPaw) - Add missing plugins link to mobile menu (
f90c640by @xPaw) - Fix deprecated links to Yarn Classic in install-and-upgrade (#284) (
4fb3e0cby @feeRnt) - Update cloudflare docs (
e510debby @xPaw) - Remove caddy v1 (
d2e3190by @xPaw) - Fix typos (
3d2884eby @xPaw) - Remove dead community links (
db00824by @xPaw) - Improve page descriptions (
a15666eby @xPaw) - Add irc page (
55c811fby @xPaw) - Update jekyll (
086cb35by @xPaw)
Internals
- Untangle client and server: extract shared types, move chan/network/user models to
shared/, type the socket layer (f792626and many follow-ups by @brunnre8) - Remove all server files from client compilation (
e43cbb1by @brunnre8) - TypeScript update + remove unused
.d.tsfile (#4869, #4870 by @brunnre8) - Refactor Mentions, add
isIgnoredUserutil (#5051 by @MaxLeiter) - tests/coverage: ignore
test/clientandtest/public, fix running coverage (#5085 by @MaxLeiter) - changelog: don't type assert to a broken type, fix data type (
4d23760,7bc184bby @brunnre8) - changelog: fix handling now non-existent optionalDependencies (#5078 by @MaxLeiter)
- Fix
generate-config-doc.js(#4856 by @brunnre8) - Add
.node-versionfile (#5069, #5074 by @MaxLeiter) - workflows: don't run on push and PR for every branch (#5066 by @MaxLeiter)
- release workflow: switch to tokenless, allow
workflow_dispatch, pin to Node 22 (#5080,6ef22b2,a113bb3by @MaxLeiter) package.json: runnpm pkg fix(#5079 by @MaxLeiter)- fix generate-config-doc.js (#4856 by @brunnre8)
- chore: replace uuid package with crypto.randomUUID (#5081) (
5b83f0aby @MaxLeiter) - tests/coverage: ignore test/client and test/public, fix running cover… (
05382b2by @MaxLeiter) - Update browserslist / caniuse data (#5075 by @MaxLeiter)
- Update development dependencies to their latest versions:
@types/wsto 8.5.12 (f892884by @renovate[bot])@vue/test-utilsto 2.4.6 (9e6eef3by @renovate[bot])postcssto 8.4.47 (a6af6bbby @renovate[bot])vue-eslint-parserto 9.4.3 (a051a70by @renovate[bot])yarnto 1.22.22 (793313dby @renovate[bot])webpackand other dev deps bumped (#5042 by @MaxLeiter)