|
|
8b45d386c6
|
Restore the connect-time host when a session logs out, reversing any services vhost
|
2026-07-20 20:39:03 +00:00 |
|
|
|
6078cdf83d
|
Enforce the channel akick list when a user changes nick
|
2026-07-20 19:26:07 +00:00 |
|
|
|
a2bf5ed553
|
Fix audit findings: logout notice language after uid unmap, gRPC rehash reports load failure and emits the staff-log line, cap reflected CTCP PING token
CI / check (push) Successful in 5m47s
|
2026-07-20 18:26:49 +00:00 |
|
|
|
fadd4f37cd
|
Localize residual notices: logout, channel release, password change, founder-language expiry mail, and DiceServ prompts and errors
CI / check (push) Successful in 5m40s
|
2026-07-20 17:35:25 +00:00 |
|
|
|
829a3916fd
|
Add an echorpc control CLI over gRPC: version/status/rehash live, start/stop/restart via systemctl
CI / check (push) Successful in 5m40s
|
2026-07-20 15:28:00 +00:00 |
|
|
|
3723617367
|
Complete deferred audit LOWs: kicker-cache eviction, abandoned-challenge reclaim, and a challenge-response gossip handshake
CI / check (push) Successful in 5m7s
|
2026-07-20 04:53:03 +00:00 |
|
|
|
4027242c1e
|
Harden deferred audit LOWs: provisioned-verifier cost cap, BOT-nick validation, gameserv board-delivery account guard, empty KICK/PART/QUIT reason parse, and relink SASL/enforce cleanup
CI / check (push) Successful in 5m4s
|
2026-07-20 04:40:42 +00:00 |
|
|
|
e4a14b9813
|
Localize engine notices, transactional emails, and operator-access denials in all six languages
CI / check (push) Successful in 5m18s
|
2026-07-20 02:25:54 +00:00 |
|
|
|
b462d37bd5
|
Add i18n framework: per-account language, catalogs, t! macro, SET LANGUAGE
CI / check (push) Successful in 5m16s
|
2026-07-19 22:57:45 +00:00 |
|
|
|
83851c794d
|
Add snapshot-epoch cursor so 3+-node gossip converges in order and across compaction
CI / check (push) Successful in 5m24s
|
2026-07-19 22:27:22 +00:00 |
|
|
|
006808e974
|
Drop the SASL source record when the connection ends
|
2026-07-19 20:28:24 +00:00 |
|
|
|
3c730f7add
|
Keep a bot-inhabited channel alive when pruning empty channels
|
2026-07-19 19:52:44 +00:00 |
|
|
|
071380efae
|
Re-check protection in the enforce sweep and key the kicker cache by registration
CI / check (push) Successful in 5m19s
|
2026-07-19 19:19:20 +00:00 |
|
|
|
d6b681c972
|
Don't expire runtime-granted opers; preserve standalone kicker flags across compaction
CI / check (push) Successful in 4m12s
|
2026-07-19 16:44:35 +00:00 |
|
|
|
d0c7cb6905
|
Exempt service bots from ChannelOp secureops and bound the last-seen map
|
2026-07-19 13:17:54 +00:00 |
|
|
|
23960adc83
|
Route every handle() early return through the shared tail so swept unbans and incident stamps aren't dropped
|
2026-07-19 04:44:11 +00:00 |
|
|
|
ad8a3fe065
|
Add loopback health and Prometheus metrics endpoint
CI / check (push) Successful in 4m22s
|
2026-07-19 04:13:18 +00:00 |
|
|
|
a10662bbc6
|
engine: persist the incident ring (LOGSEARCH) across restarts via a periodic + on-shutdown snapshot event, mirroring stat-counter persistence
CI / check (push) Successful in 3m44s
|
2026-07-19 00:46:14 +00:00 |
|
|
|
89ac01d0b0
|
nickserv/chanserv: catch styled/fullwidth look-alike names too, and add a [register] confusable_check toggle (REHASH-reloadable)
CI / check (push) Successful in 3m48s
|
2026-07-19 00:15:08 +00:00 |
|
|
|
623750e638
|
dictserv: opt-in DICT (RFC 2229) lookup service — bots and /msg answer dict/define/thes/acronym/law/etc via dict.org off-reactor
CI / check (push) Successful in 4m4s
|
2026-07-18 20:21:30 +00:00 |
|
|
|
e05c62c085
|
operserv: NOTIFY gains k/m/u/o flags and quit/part reasons; protocol carries kicker, mode-setter, oper-up, user modes
CI / check (push) Successful in 4m1s
|
2026-07-18 19:18:17 +00:00 |
|
|
|
617d3c7966
|
operserv: NOTIFY feed uses labelled fields (IP/DNS/Account/Server) and Service:verb
CI / check (push) Successful in 4m5s
|
2026-07-18 17:50:32 +00:00 |
|
|
|
4d327c3f47
|
operserv: NOTIFY lines carry real IP, rdns, login and origin server for the oper feed
CI / check (push) Successful in 4m4s
|
2026-07-18 17:28:07 +00:00 |
|
|
|
8f19a94928
|
operserv: NOTIFY honours a config exclude list so relay/pylinked clients cannot flood the feed
|
2026-07-18 16:47:25 +00:00 |
|
|
|
c415117ec5
|
operserv: add NOTIFY oper watch list emitting matched-user events to the staff feed
|
2026-07-18 16:16:06 +00:00 |
|
|
|
86b1aae686
|
engine: rate-limit anonymous service commands so a bot cannot spam a service in a loop
|
2026-07-18 05:02:40 +00:00 |
|
|
|
6429b82fc4
|
nickserv: SET SNOTICE — opt-in server-notice-style service replies (*** NickServ: ...) sourced from the server instead of the pseudoclient
CI / check (push) Successful in 3m47s
|
2026-07-18 03:40:22 +00:00 |
|
|
|
c64c3820a7
|
protocol: verify echos pseudoclients request servprotect (+k, by name from CAPAB USERMODES) so they cannot be killed by operators; warn if service_modes lacks it
CI / check (push) Successful in 3m45s
|
2026-07-18 02:41:03 +00:00 |
|
|
|
2f70b0c133
|
protocol: verify echo ircd module dependencies from CAPAB MODULES at link, warning per-feature if one is missing rather than failing silently
CI / check (push) Successful in 3m49s
|
2026-07-18 02:22:43 +00:00 |
|
|
|
0ca06247f8
|
protocol: read CASEMAPPING from CAPAB and verify it matches echos ascii identity folding, warning on mismatch instead of silently desyncing
CI / check (push) Successful in 4m31s
|
2026-07-18 01:58:49 +00:00 |
|
|
|
e6f05a3ede
|
protocol: learn channel-mode arity + prefix modes (incl custom Y/ojoin) from CAPAB CHANMODES; services MODE uses the authoritative set
|
2026-07-18 01:15:23 +00:00 |
|
|
|
d313ca3523
|
chanserv: LEVELS grants a capability (op/topic/invite/access) to an access tier and above, additive so it never locks anyone out
|
2026-07-18 01:05:58 +00:00 |
|
|
|
0c3e09ea00
|
operserv: SPAMFILTER — persisted content filters pushed to the ircd m_filter via metadata, re-asserted at burst
CI / check (push) Successful in 3m56s
|
2026-07-18 00:04:24 +00:00 |
|
|
|
c990eb1e1e
|
extban: learn the ircd live set from CAPAB EXTBANS and validate AKICK/MODE against what it actually offers
|
2026-07-17 21:47:02 +00:00 |
|
|
|
74a983467c
|
akick: match the server and fingerprint extbans from the SERVER name and ssl_cert metadata the s2s stream carries
|
2026-07-17 21:23:25 +00:00 |
|
|
|
47dfa76fd5
|
engine: a takeover keeps the account's founded channels (the account still exists) — only a genuine drop or expiry releases them
CI / check (push) Failing after 3m56s
|
2026-07-17 20:23:51 +00:00 |
|
|
|
426fc694a2
|
akick: match extbans (account/realname/realmask/unauthed) using the ident, real host and real name the UID carries but was discarding
CI / check (push) Successful in 4m0s
|
2026-07-17 19:47:34 +00:00 |
|
|
|
f2ba876ce4
|
botserv: bots join +ao (protected admin + op), keeping op alongside protect
CI / check (push) Successful in 3m53s
|
2026-07-17 17:11:25 +00:00 |
|
|
|
73467b91ca
|
botserv: bots join channels as protected admins (+a) so ordinary ops can't kick or deop them
CI / check (push) Successful in 3m50s
|
2026-07-17 16:52:00 +00:00 |
|
|
|
2f6fd41465
|
chanserv: SOP protect tier over AOP (+ao), founder owner (+qo); resolve op access by capability not mode string
CI / check (push) Successful in 3m59s
|
2026-07-17 15:43:16 +00:00 |
|
|
|
f5c976eb56
|
api/gameserv: type email ExpiryTarget and chess Ending as enums (drop stringly returns)
CI / check (push) Successful in 3m53s
|
2026-07-17 14:15:39 +00:00 |
|
|
|
7a5f1502a4
|
infoserv: type the news kind as an enum at the store boundary
CI / check (push) Successful in 3m53s
|
2026-07-17 13:53:53 +00:00 |
|
|
|
ef34c04c8d
|
operserv: type the X-line kind as an enum at the command/store boundary, wire token in storage
|
2026-07-17 13:47:10 +00:00 |
|
|
|
1fb3615b7e
|
auth: warn on unknown [[oper]] privilege names instead of silently dropping them
CI / check (push) Successful in 3m53s
|
2026-07-17 12:45:41 +00:00 |
|
|
|
e3b83f4a92
|
operserv: REHASH announces the reload in the log channel via DebugServ
CI / check (push) Successful in 4m1s
|
2026-07-17 11:02:29 +00:00 |
|
|
|
64b675e61f
|
operserv: REHASH reloads config live without a restart
CI / check (push) Successful in 3m54s
|
2026-07-17 10:46:12 +00:00 |
|
|
|
75c6537532
|
standard replies: emit IRCv3 FAIL/WARN/NOTE for service errors, config-gated
CI / check (push) Successful in 3m42s
|
2026-07-17 02:53:48 +00:00 |
|
|
|
f2774f13fe
|
services: all pseudo-clients join a configurable channel (default #services)
CI / check (push) Successful in 3m39s
|
2026-07-17 01:23:18 +00:00 |
|
|
|
657154e268
|
services: assigned bot fronts channel modes, not chanserv
CI / check (push) Successful in 3m41s
|
2026-07-17 01:17:29 +00:00 |
|
|
|
b87a0c56a2
|
services: label as network service in whois
CI / check (push) Successful in 3m44s
|
2026-07-17 00:30:51 +00:00 |
|