184 Commits

Author SHA1 Message Date
Max Leiter
2865bb20e4 Merge remote-tracking branch 'origin/max/04-10-ircv3-reply' into max/next
# Conflicts:
#	server/plugins/inputs/msg.ts
#	yarn.lock
2026-05-21 01:00:52 -07:00
Max Leiter
946122ce3a Merge remote-tracking branch 'origin/max/05-01-multiline' into max/next
# Conflicts:
#	package.json
#	server/plugins/inputs/msg.ts
#	yarn.lock
2026-05-21 00:58:34 -07:00
Max Leiter
d421397edf Merge remote-tracking branch 'origin/master' into max/04-10-ircv3-reply 2026-05-21 00:36:18 -07:00
Max Leiter
ef468097e5 merge 2026-05-21 00:31:07 -07:00
Max Leiter
e584b818a4 Merge remote-tracking branch 'origin/master' into max/next
# Conflicts:
#	client/js/router.ts
2026-05-12 20:52:49 -07:00
Pavel Djundik
a63b7b45b7 Force generated certificate serial to be positive, use 20 bytes (#5097)
Fixes #5096
@craftbyte
2026-05-11 14:23:05 -07:00
Max Leiter
097c6a3b62 deps: bump irc-framework pin to include tags-action; use action() with tags
irc-framework PR #411 lets action() accept tags directly, replacing
the sendMessage('PRIVMSG', ..., '\x01ACTION ...\x01', tags) workaround
that was needed to attach +reply tags to /me messages.
2026-05-02 14:15:41 -07:00
Max Leiter
8dc295377c plugins/inputs: thread replyTo via extras param instead of client state
Replaces client._pendingReplyTo (set/used/cleared in a sync block) with
an explicit fifth argument on PluginInputHandler. The information was
never about labeled-response correlation — it's UI context that needed
to reach the input handler — so the cleanest fix is to pass it as a
parameter rather than stash it on the Client instance.
2026-05-02 14:12:13 -07:00
Max Leiter
0f3880d037 Merge branch 'max/05-01-emoji' into max/next 2026-05-02 12:21:58 -07:00
Max Leiter
56e5d6a997 css 2026-05-02 12:14:29 -07:00
Max Leiter
03ee145680 Emoji selector 2026-05-02 12:05:19 -07:00
Max Leiter
68a1bcb344 cmt 2026-05-01 21:57:44 -07:00
Max Leiter
983749ab11 fix contributor count 2026-05-01 21:56:50 -07:00
Max Leiter
10b46607a8 Merge branch 'max/05-01-multiline' into max/next
# Conflicts:
#	package.json
#	server/client.ts
#	server/models/network.ts
#	server/plugins/inputs/msg.ts
#	server/plugins/irc-events/message.ts
#	server/plugins/irc-events/standard-reply.ts
#	server/types/modules/irc-framework.d.ts
#	shared/types/msg.ts
#	test/.mocharc.yml
2026-05-01 21:56:06 -07:00
Max Leiter
4546dcd473 ircv3: draft/multiline 2026-05-01 21:49:21 -07:00
Max Leiter
58496ea869 Merge branch 'max/04-09-monitor' into max/next
# Conflicts:
#	server/models/network.ts
#	server/plugins/irc-events/connection.ts
#	shared/types/network.ts
2026-04-25 15:14:35 -07:00
Max Leiter
1bee1ed77c respect network preferences 2026-04-25 15:11:24 -07:00
Max Leiter
bffaa5e688 Merge remote-tracking branch 'origin/master' into max/04-09-monitor 2026-04-19 20:27:45 -07:00
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
d9236c80d8 lint 2026-04-18 11:38:35 -07:00
Max Leiter
ed9c1c53ba Merge remote-tracking branch 'origin/master' into max/04-10-ircv3-reply 2026-04-18 11:38:17 -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