164 Commits

Author SHA1 Message Date
Max Leiter
f589c31cca Merge remote-tracking branch 'origin/master' into max/next 2026-04-18 16:50:57 -07:00
Jay2k1
0b2fc8d890 fix order of messages with identical timestamps (#5087)
When sending a message that is too long, thelounge will split it up into
multiple PRIVMSGs. These will be saved to the sqlite database with
identical timestamps. Thelounge retrieves messages from the DB using
`ORDER BY time DESC`, which under certain circumstances causes these
messages to be loaded and displayed in the wrong order. This PR
addresses that by also ordering by id (only affects messages with
identical timestamps).

Before:
<img width="1050" height="107" alt="image"
src="https://github.com/user-attachments/assets/54fac085-a989-48fa-9538-1faecb09aa44"
/>

After:
<img width="1058" height="114" alt="image"
src="https://github.com/user-attachments/assets/0bb99db9-5a5d-481d-b799-87162d0535e8"
/>
2026-04-18 16:35:10 -07:00
Max Leiter
4bb6420e04 fix: escape user-supplied LDAP filter value as per RFC 4515 (#5084)
Pointed out by claude and @xPaw 

https://datatracker.ietf.org/doc/html/rfc4515#section-3

Tests written by Claude
2026-04-18 16:13:23 -07:00
Reto
51b620c589 sqlite: don't interpolate the deletion query (#5086)
While it was safe and not attacker controlled, it's better to be safe
than sorry. Plus it trips the scanners up
2026-04-18 16:12:24 -07:00
Max Leiter
5b83f0ab4e chore: replace uuid package with crypto.randomUUID (#5081)
Available since Node 15:
https://nodejs.org/docs/latest-v20.x/api/crypto.html
2026-04-18 09:23:19 -07:00
Max Leiter
21f0e70696 fix /mute not persisting, case-insensitive channel check (#5083)
Found by claude:

```
server/plugins/inputs/mute.ts — /mute slash command never persists. Missing client.save(). Mutes set via the command vanish on restart. The socket handler (server/server.ts:768-797) does save.

server/plugins/inputs/mute.ts:18 — /mute #Foo fails when channel was joined as #foo. Uses case-sensitive c.name === arg; IRC channel names are case-insensitive.
```
2026-04-18 09:23:07 -07:00
Max Leiter
fb96789666 Merge branch 'max/04-17-fix-mute' into max/next 2026-04-17 11:00:06 -07:00
Max Leiter
2c293cd1d1 Merge branch 'max/04-17-rm-uuid' into max/next 2026-04-17 10:59:57 -07:00
Max Leiter
567073555a fix /mute not persisting, case-insensitive channel check 2026-04-17 10:27:53 -07:00
Max Leiter
9adc7b5310 chore: replace uuid package with crypto.randomUUID 2026-04-17 10:22:17 -07:00
Max Leiter
109e4f38f7 revert the monitor revert, restoring all monitor/extended-monitor code 2026-04-15 10:22:38 -07:00
Max Leiter
eeac1dc4fd Merge branch 'max/04-09-monitor' into max/next 2026-04-15 10:01:33 -07:00
Max Leiter
037a0bb0a6 batch monitor 2026-04-15 09:55:29 -07:00
Max Leiter
a21690781d Revert "Merge #5045: ircv3: monitor and extended-monitor"
Causes excess flood on networks.
2026-04-14 11:08:45 -07:00
Max Leiter
f62fcbc83b Merge #5065: ircv3: support +channel-context message tag 2026-04-14 10:22:01 -07:00
Max Leiter
0a2eb0b676 Merge #5064: remove webpack, switch to vite/vitest 2026-04-14 10:21:42 -07:00
Max Leiter
1e0c022a4b Merge #5062: ircv3: add +reply support 2026-04-14 10:20:58 -07:00
Max Leiter
7a1e45e4ff Merge #5061: replace web-push with web-push-neo 2026-04-14 10:17:22 -07:00
Max Leiter
b58691ff36 Merge #5050: ircv3: +typing support 2026-04-14 10:17:11 -07:00
Max Leiter
825f2fb4dc Merge #5047: ircv3: support standard-replies 2026-04-14 10:16:53 -07:00
Max Leiter
76eaa80bef Merge #5045: ircv3: monitor and extended-monitor 2026-04-14 10:16:48 -07:00
Max Leiter
9b3fd2808c Merge #5043: ircv3: add bot mode support 2026-04-14 10:16:27 -07:00
Max Leiter
0ae3979742 lint 2026-04-14 10:14:29 -07:00
Max Leiter
b5a6dcff22 lint 2026-04-14 10:07:26 -07:00
Max Leiter
48863391a3 Merge remote-tracking branch 'origin/master' into max/04-09-monitor 2026-04-14 10:07:03 -07:00
Max Leiter
edd7e59ff0 rm draft 2026-04-13 15:45:22 -07:00
Max Leiter
fd2a4686f1 cleanup 2026-04-13 15:43:11 -07:00
Max Leiter
7f05256071 simplify 2026-04-13 15:30:24 -07:00
Max Leiter
1d14a16429 Merge remote-tracking branch 'origin/master' into max/04-10-ircv3-reply 2026-04-13 12:32:58 -07:00
Max Leiter
70c9cfa61d Merge remote-tracking branch 'origin/master' into max/04-10-typing 2026-04-13 12:10:34 -07:00
Max Leiter
69f0ec00a6 Merge remote-tracking branch 'origin/master' into max/04-10-web-push-neo 2026-04-12 13:13:24 -07:00
Max Leiter
96df30b350 Merge remote-tracking branch 'origin/master' into max/04-10-bye-webpack 2026-04-12 09:53:31 -07:00
Max Leiter
d33e1d4184 Remove sqlite3 dependency; use built-in node:sqlite (#5055)
https://www.npmjs.com/package/sqlite3 is deprecated and Node 22 (#5041)
lets us use the builtin `node:sqlite` package (although it is
experimental)

most changes are a result of the native module being synchronous

relies on #5041 (now merged)

Closes https://github.com/thelounge/thelounge/issues/5033
2026-04-12 13:30:56 +00:00
Max Leiter
101240e6db Merge remote-tracking branch 'origin/master' into max/04-10-web-push-neo 2026-04-12 06:29:21 -07:00
Max Leiter
482a05f291 lint 2026-04-11 19:07:58 -07:00
Max Leiter
a46ad5f232 Merge remote-tracking branch 'origin/master' into max/04-10-bye-webpack 2026-04-11 14:32:24 -07:00
Max Leiter
769c9614b3 chore: bump some dev deps (mainly webpack) (#5042)
Closes some renovate PRs like
https://github.com/thelounge/thelounge/pull/5024 and should improve dev
perf.

It might be better to merge this instead:
https://github.com/thelounge/thelounge/pull/5001

---------

Co-authored-by: Tiago de Paula <tiagodepalves@gmail.com>
2026-04-11 14:28:18 -07:00
Max Leiter
6267ca3641 rm tpl, use vite 2026-04-11 13:55:41 -07:00
Max Leiter
5f622627a1 rm tpl, use vite 2026-04-11 13:48:24 -07:00
Max Leiter
fbc5d76061 Merge branch 'master' into max/04-11-channel-context 2026-04-11 15:17:43 -05:00
Max Leiter
c969f5a044 ircv3: support +channel-context client tag 2026-04-11 08:28:58 -07:00
Max Leiter
eb75c4b77c chore: refactor Mentions, add isIgnoredUser util (#5051)
- Mentions were doing a bunch of mutations; not just uses derived state
- no need for a separate `ClientMention` 
- added `extractInputHistory` for shared logic
- tests made by claude
2026-04-11 07:59:14 -07:00
Max Leiter
1c323239b3 Potential fix for pull request finding 'Useless assignment to local variable'
Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
2026-04-11 07:47:52 -07:00
Max Leiter
7559e0f845 Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-11 07:25:24 -07:00
Reto Brunner
5d35ffc35d Merge branch 'fix/4993-ds-store-storage' 2026-04-11 10:11:24 +02:00
Max Leiter
3484f19a13 remove webpack, mocha; switch to vite/vitest 2026-04-10 23:32:18 -07:00
Max Leiter
7c1e45a584 lint 2026-04-10 23:16:16 -07:00
Max Leiter
a7c7b2edb5 treat replies like highlights 2026-04-10 23:15:48 -07:00
Max Leiter
c152b9d008 ircv3: add +reply support 2026-04-10 23:13:26 -07:00
Max Leiter
f79c6a90b7 fix 2026-04-10 22:39:14 -07:00