Commit Graph

2411 Commits

Author SHA1 Message Date
Shivaram Lingamneni 4abb302ffa bump to new development version 2026-07-21 05:15:42 +00:00
Shivaram Lingamneni 885737f7f6 bump version and changelog for v2.19.0 2026-07-21 00:29:05 -04:00
Shivaram Lingamneni 2bc106e6c2 fix #2424
Add a ChanServ setting to suppress storage of non-message events
(JOIN/PART/QUIT can be especially spammy)
2026-07-16 06:51:56 +00:00
Shivaram Lingamneni f0767c95da bump version and changelog for v2.19.0-rc1 (#2423) 2026-07-14 02:47:33 -04:00
Shivaram Lingamneni 7007c2c787 add saget and saset to API (#2421) 2026-07-13 02:34:06 -04:00
Sai Asish Y 9a7bdda6a0 fix #2411: split long CAP ACK/NAK across multiple lines (#2414)
Signed-off-by: Sai Asish Y <say.apm35@gmail.com>
Co-authored-by: Shivaram Lingamneni <slingamn@cs.stanford.edu>
2026-07-07 21:29:36 -07:00
Matt Ouille d47d7a8bdf fix TestEmptyBuffer flakiness from timestamp collisions
TestEmptyBuffer added items without an explicit Message.Time, letting
Add() stamp them with time.Now().UTC(), then immediately queried with
end = time.Now() as the (exclusive) upper bound. On platforms where the
wall clock has coarse resolution -- macOS ticks in 1us increments, so
consecutive time.Now() calls usually return identical wall times -- the
item's timestamp equals the query bound, item.Message.Time.Before(before)
is false, and the item is excluded. The test then panics indexing the
empty result slice.

On Apple Silicon this fails nearly deterministically; Linux's
nanosecond-resolution clock is why CI never caught it.

Use explicit fixed timestamps via easyItem, matching every other test
in this file.
2026-07-07 16:57:20 -07:00
Shivaram Lingamneni 85b900258c implement draft/whoami 2026-07-07 07:31:06 +00:00
Shivaram Lingamneni 26cf806545 update to draft/metadata-3 (#2416)
temporarily update irctest to metadata-3 branch
2026-07-07 00:28:04 -07:00
Shivaram Lingamneni c6b2f1285c Merge pull request #2410 from slingamn/batchid
fix #2391
2026-07-03 12:29:01 -07:00
Shivaram Lingamneni 7280ab8993 add authtoken cap value (#2413) 2026-07-01 22:59:07 -07:00
Shivaram Lingamneni 9abc39fe97 fix #2391
Validate incoming batch tags
2026-07-01 07:12:17 +00:00
Shivaram Lingamneni 8ec95e912a fix: don't close multiline batch twice 2026-06-30 21:22:38 +00:00
Shivaram Lingamneni 857cd690b0 apply deferred fakelag immediately after execution
If the client sends a long multiline, then pauses on its own
before sending more data, we want to apply deferred fakelag
during the pause, rather than upon receiving the next input line.
2026-06-30 20:43:37 +00:00
Shivaram Lingamneni 08d8145f26 draft/AUTHTOKEN support (#2385)
Includes two compatibility breaks:

* New, incompatible configuration format for extjwt
* JWTs accepted with IRCV3BEARER MUST have an expiration time
2026-06-30 12:13:56 -07:00
Jokler e69f3a36b5 Store tags for messages using draft/relaymsg in history 2026-06-11 01:04:16 +02:00
Shivaram Lingamneni 7ab4053e90 filter secret channels from unprivileged NS INFO (#2405) 2026-05-31 23:47:52 -04:00
Shivaram Lingamneni 51b2476af7 fix #2402
Labeled QUIT from the client should receive a labeled QUIT in return
2026-05-19 03:08:39 +00:00
Shivaram Lingamneni 6ccd4e2313 ensure always-on state is flushed
* Fix a race condition in persisting channel memberships for always-on
  clients (the asynchronous write of the client's channel memberships
  could precede the update to the channel's member list, resulting in
  the membership not being observed and written)

* Ensure always-on state is flushed on shutdown (we were already
  flushing timestamps, because those writes are heavily debounced, but
  we were relying on immediate asynchronous writeback for channel
  memberships and similar state).
2026-05-08 04:25:09 +00:00
Shivaram Lingamneni 4b20b85687 make METADATA CLEAR send RPL_KEYNOTSET 2026-04-29 00:45:33 -04:00
Shivaram Lingamneni 85f7fe2c06 fix #2395
Ensure bot tag is replayed for DMs
2026-04-28 05:14:48 +00:00
Shivaram Lingamneni 899ec1e2d4 fix #2393
Add the bot tag to echo messages when applicable
2026-04-28 04:56:46 +00:00
quaff 147403ea73 IRCv3 spec no-implicit-names has been ratified. (#2390) 2026-04-21 14:40:37 -04:00
Shivaram Lingamneni 49192e6fa5 add /v1/whois to API (#2387) 2026-04-20 00:58:29 -04:00
Shivaram Lingamneni 7c8d81ac79 pointless optimization to (*caps.Set).Strings (#2386)
Doesn't change anything on arm64 (where atomic load is a plain MOV),
but reduces atomic instructions on arm64 and other platforms.
2026-04-20 00:56:48 -04:00
Shivaram Lingamneni de005ee69f enhanced auth integrations (#2383)
* Harvest cookies from the initial websocket handshake to pass to an
  auth-script (#2185)
* Allow running auth-script and ip-check-script over unix domain socket
  (#2280)
2026-04-15 01:48:29 -04:00
Shivaram Lingamneni cfee1917f3 use deferred unlock in two more places (#2381)
No functional change, just defensive coding
2026-04-13 23:06:08 -04:00
Shivaram Lingamneni 9556e5c025 add support for draft/chathistory-end tag (#2379) 2026-04-13 22:50:24 -04:00
Shivaram Lingamneni 10da32292f fix missing read permissions checks for METADATA (#2382)
These were incorrectly refactored out in #2277.
Also group the two write subcommands together, then the
three read subcommands.
2026-04-13 22:46:10 -04:00
Shivaram Lingamneni 5bb94efaf6 fix handling of invalid API bearer tokens (#2380)
Not doing a pointfix since this only affects obvious misconfigurations of Ergo
(our attempt to be defensive against those misconfigurations failed)
2026-04-10 13:32:09 -04:00
Shivaram Lingamneni 44cd51ef36 new development version 2026-03-22 01:38:47 -04:00
Shivaram Lingamneni 4fabfb8ee3 release v2.18.0 2026-03-22 00:55:45 -04:00
Shivaram Lingamneni f9a11db153 fix (*SQLite).ListChannels
If the final channel we attempted to list had no messages, sql.ErrNoRows
would be returned as the error for the entire function, which would
prevent any channels from appearing in the targets list.
2026-03-20 04:15:29 +00:00
Shivaram Lingamneni 937bad6717 fix #2287 (#2369)
Allow restricting metadata modification to server operators
2026-03-17 14:33:11 -04:00
Shivaram Lingamneni 2a114dc78a release v2.18.0-rc1 (#2364) 2026-03-16 00:53:01 -04:00
Shivaram Lingamneni da037c0162 clean up config tests 2026-03-15 05:56:31 -04:00
Shivaram Lingamneni 0e76470249 allow testing irc/ with i18n compiled out (#2363)
Add to `make test` as well
2026-03-15 03:47:33 -04:00
Shivaram Lingamneni 218cac3037 fix environment overrides against map fields 2026-03-15 07:16:44 +00:00
Shivaram Lingamneni 52fc77433e api: defcon endpoint (#2359) 2026-03-13 03:18:23 -04:00
Shivaram Lingamneni 05c37122fc api: add /v1/list to list channels (#2358) 2026-03-13 01:53:17 -04:00
Shivaram Lingamneni ca4c3c09df goreleaser updates for v2.18 (#2357)
* Full build is default
* sqlite is only supported on Linux, MacOS, and FreeBSD;
  override the sqlite build tag based on OS where unsupported
2026-03-12 22:37:56 -04:00
Shivaram Lingamneni e7558f292c build changes (#2356)
* default build includes everything
* allow compiling out PRECIS and Skeleton (still included by default)
* consistently use `postgresql` in identifiers
2026-03-12 21:48:37 -04:00
Shivaram Lingamneni 768c01c17b add a sqlite history backend (#2352) 2026-03-12 21:32:13 -04:00
Shivaram Lingamneni 1b673f049f remove defer in AuthenticateByCertificate (#2355)
Makes the control flow unnecessarily confusing now that the check
is its own function.
2026-03-12 12:58:29 -04:00
Shivaram Lingamneni 4e65b76c67 fix #2353 (#2354)
Check certfp in API /v1/check_auth
2026-03-12 01:41:49 -04:00
Shivaram Lingamneni c61859927f fix WEBPUSH FAIL responses (#2351)
* All FAIL messages take the endpoint as a parameter when available
* Use MAX_REGISTRATIONS instead of FORBIDDEN when appropriate
* Add handler for unknown subcommand
2026-03-11 04:21:36 -04:00
Shivaram Lingamneni ec7db5a02b fix #2349 (#2350)
Add msgid to push messages when available, as required by the spec
2026-03-10 17:50:01 -04:00
Shivaram Lingamneni 69efae2c2e postgres: accept libpq URIs (#2347) 2026-03-05 14:58:09 -05:00
Shivaram Lingamneni 5fd8ed8ed6 add a postgres history backend (#2322)
Postgres support is behind a build tag; use `make build_full`
or `make install_full` to compile it in.
2026-03-05 01:18:28 -05:00
Shivaram Lingamneni 2e6fd75525 support draft/ACCOUNTREQUIRED in 005 (#2341)
https://github.com/ircv3/ircv3-specifications/pull/585
2026-03-02 04:10:58 -05:00