{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":413955686,"defaultBranch":"master","name":"sable","ownerLogin":"Libera-Chat","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2021-10-05T19:38:11.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/83072334?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1695556658.0","currentOid":""},"activityList":{"items":[{"before":"8478f075344c4bae3c01b5c416510aabd6a3757c","after":"4d398824462eea785a042e4f74bdcd14b6199005","ref":"refs/heads/master","pushedAt":"2024-08-11T22:51:56.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"spb","name":"Stephen Bennett","path":"/spb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/327525?s=80&v=4"},"commit":{"message":"Actually do not close connection after ERR_INPUTTOOLONG\n\nThe change in 7db845cd9e19261e8d41005ef1451bd924d7c7cd was incomplete.","shortMessageHtmlLink":"Actually do not close connection after ERR_INPUTTOOLONG"}},{"before":"7db845cd9e19261e8d41005ef1451bd924d7c7cd","after":"8478f075344c4bae3c01b5c416510aabd6a3757c","ref":"refs/heads/master","pushedAt":"2024-08-11T14:41:56.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"spb","name":"Stephen Bennett","path":"/spb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/327525?s=80&v=4"},"commit":{"message":"Increase MAX_MSG_SIZE to support message-tags\n\nTechnically we don't currently support messages with more than 4kiB of\ntags (in C2S because there are no server tags, in S2C because we don't\nrelay client tags), but we might as well bump it to 8kiB already, as we\nare probably going to support relaying client tags soon.","shortMessageHtmlLink":"Increase MAX_MSG_SIZE to support message-tags"}},{"before":"16cd4a1c97ecd0fc90121b64492072cf39dad0fd","after":"7db845cd9e19261e8d41005ef1451bd924d7c7cd","ref":"refs/heads/master","pushedAt":"2024-08-11T14:40:34.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"spb","name":"Stephen Bennett","path":"/spb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/327525?s=80&v=4"},"commit":{"message":"Return ERR_INPUTTOOLONG instead of closing connection on messages longer than ~1020 bytes\n\nAs recommended by https://ircv3.net/specs/extensions/message-tags#size-limit","shortMessageHtmlLink":"Return ERR_INPUTTOOLONG instead of closing connection on messages lon…"}},{"before":"a16f32b8b305a99fea59db456e2673220bb226cd","after":"16cd4a1c97ecd0fc90121b64492072cf39dad0fd","ref":"refs/heads/master","pushedAt":"2024-08-10T15:04:17.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"spb","name":"Stephen Bennett","path":"/spb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/327525?s=80&v=4"},"commit":{"message":"Add dummy TAGMSG command handler","shortMessageHtmlLink":"Add dummy TAGMSG command handler"}},{"before":"a4432bc60796ab9865be8ec11c790db7f325dbbc","after":"a16f32b8b305a99fea59db456e2673220bb226cd","ref":"refs/heads/master","pushedAt":"2024-07-02T21:06:06.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"spb","name":"Stephen Bennett","path":"/spb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/327525?s=80&v=4"},"commit":{"message":"Implement INFO command\n\ncurrently returns:\n- copyright info\n- author info\n- website and irc channel\n- version\n- commit datetime","shortMessageHtmlLink":"Implement INFO command"}},{"before":"6dc49032a3a5845288f0e847c5c72b22e221124f","after":"a4432bc60796ab9865be8ec11c790db7f325dbbc","ref":"refs/heads/master","pushedAt":"2024-07-02T16:52:31.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"spb","name":"Stephen Bennett","path":"/spb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/327525?s=80&v=4"},"commit":{"message":"Add support for backward CHATHISTORY BETWEEN\n\nhttps://ircv3.net/specs/extensions/chathistory#between says\n\"This may be forwards or backwards in time.\"","shortMessageHtmlLink":"Add support for backward CHATHISTORY BETWEEN"}},{"before":"6fc79e7c66b05d93ce5ff29f58100d6e12e1c262","after":"6dc49032a3a5845288f0e847c5c72b22e221124f","ref":"refs/heads/master","pushedAt":"2024-07-02T16:52:14.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"spb","name":"Stephen Bennett","path":"/spb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/327525?s=80&v=4"},"commit":{"message":"Fix INVALID_TARGET error when no message is available\n\nIt is possible for a target to be valid even though no message was\nreturned; eg. because CHATHISTORY BETWEEN had too strict bounds","shortMessageHtmlLink":"Fix INVALID_TARGET error when no message is available"}},{"before":"e9701e5e8d0c4f278ddd61ce7285f4918ecf99e9","after":"6fc79e7c66b05d93ce5ff29f58100d6e12e1c262","ref":"refs/heads/master","pushedAt":"2024-06-27T18:25:31.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"spb","name":"Stephen Bennett","path":"/spb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/327525?s=80&v=4"},"commit":{"message":"Merge branch 'master' into history","shortMessageHtmlLink":"Merge branch 'master' into history"}},{"before":"6be37357b7ccc0a2dcc3ff591e2e59bb702510e9","after":"e9701e5e8d0c4f278ddd61ce7285f4918ecf99e9","ref":"refs/heads/master","pushedAt":"2024-05-27T22:54:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"spb","name":"Stephen Bennett","path":"/spb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/327525?s=80&v=4"},"commit":{"message":"Store timestamps on historic users for when they stop being relevant","shortMessageHtmlLink":"Store timestamps on historic users for when they stop being relevant"}},{"before":"e85f1723868a29946eb2d71f9f161472589eab77","after":"6be37357b7ccc0a2dcc3ff591e2e59bb702510e9","ref":"refs/heads/master","pushedAt":"2024-05-27T22:34:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"spb","name":"Stephen Bennett","path":"/spb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/327525?s=80&v=4"},"commit":{"message":"Cleanup","shortMessageHtmlLink":"Cleanup"}},{"before":"d2b5975faf9e1154981189e0e562ffe3c603d508","after":"e85f1723868a29946eb2d71f9f161472589eab77","ref":"refs/heads/master","pushedAt":"2024-05-27T22:11:48.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"spb","name":"Stephen Bennett","path":"/spb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/327525?s=80&v=4"},"commit":{"message":"Move other things to using IDs in update events","shortMessageHtmlLink":"Move other things to using IDs in update events"}},{"before":"5dec6b6fb6ef6bcd477e1dbe592cd70a73e7017e","after":"d2b5975faf9e1154981189e0e562ffe3c603d508","ref":"refs/heads/master","pushedAt":"2024-05-27T20:07:15.000Z","pushType":"push","commitsCount":10,"pusher":{"login":"spb","name":"Stephen Bennett","path":"/spb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/327525?s=80&v=4"},"commit":{"message":"Switch history events to using historic user IDs instead of duplicating the entire user state","shortMessageHtmlLink":"Switch history events to using historic user IDs instead of duplicati…"}},{"before":"cdf1f6e5d72fa07d62578ca1d07491245c9d5702","after":"5dec6b6fb6ef6bcd477e1dbe592cd70a73e7017e","ref":"refs/heads/master","pushedAt":"2024-05-20T18:19:53.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"spb","name":"Stephen Bennett","path":"/spb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/327525?s=80&v=4"},"commit":{"message":"Update time to work around nightly-2024-05-20 regression","shortMessageHtmlLink":"Update time to work around nightly-2024-05-20 regression"}},{"before":"ee0a9cc93fd0bf99f1f52c8675fc6afb40a2b21b","after":"cdf1f6e5d72fa07d62578ca1d07491245c9d5702","ref":"refs/heads/master","pushedAt":"2024-05-04T12:08:15.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"spb","name":"Stephen Bennett","path":"/spb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/327525?s=80&v=4"},"commit":{"message":"Fix clippy warnings (#122)\n\n* Fix clippy warnings\r\n\r\n* Fix new warnings","shortMessageHtmlLink":"Fix clippy warnings (#122)"}},{"before":"ec555b573f2faa258011c77269d145a3c4507689","after":"ee0a9cc93fd0bf99f1f52c8675fc6afb40a2b21b","ref":"refs/heads/master","pushedAt":"2024-05-04T11:15:22.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"spb","name":"Stephen Bennett","path":"/spb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/327525?s=80&v=4"},"commit":{"message":"Improve compiler diagnostic when HandlerFn is not implemented\n\nFor example, if I add a `u64` parameter to a handler, the compiler now\nreports this:\n\n```\nerror[E0277]: Invalid command handler\n --> sable_ircd/src/command/handlers/who.rs:5:1\n |\n5 | #[command_handler(\"WHO\")]\n | ^^^^^^^^^^^^^^^^^^^^^^^^^ `for<'a, 'b, 'c, 'd, 'e> fn(&'a server::ClientServer, &'b sable_network::prelude::Network, &'c (dyn command_response::CommandResponse + 'c), source_types::UserSource<'d>, &'e str, u64) -> Result<(), command::error::CommandError> {handle_who}` is not a valid command handler\n |\n = help: the trait `handler::HandlerFn<'_, _, _>` is not implemented for fn item `for<'a, 'b, 'c, 'd, 'e> fn(&'a server::ClientServer, &'b sable_network::prelude::Network, &'c (dyn command_response::CommandResponse + 'c), source_types::UserSource<'d>, &'e str, u64) -> Result<(), command::error::CommandError> {handle_who}`\n = note: All parameter types must implement `AmbientArgument` or `PositionalArgument`\n = note: Return type must be `CommandResult`\nnote: required by a bound in `call_handler`\n --> sable_ircd/src/command/plumbing/mod.rs:47:20\n |\n45 | pub(crate) fn call_handler<'a, Amb, Pos>(\n | ------------ required by a bound in this function\n46 | ctx: &'a dyn Command,\n47 | handler: &impl HandlerFn<'a, Amb, Pos>,\n | ^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `call_handler`\n = note: this error originates in the attribute macro `command_handler` (in Nightly builds, run with -Z macro-backtrace for more info)\n```\n\ninstead of this:\n\n```\nerror[E0277]: the trait bound `for<'a, 'b, 'c, 'd, 'e> fn(&'a server::ClientServer, &'b sable_network::prelude::Network, &'c (dyn command_response::CommandResponse + 'c), source_types::UserSource<'d>, &'e str, u64) -> Result<(), command::error::CommandError> {handle_who}: handler::HandlerFn<'_, _, _>` is not satisfied\n --> sable_ircd/src/command/handlers/who.rs:5:1\n |\n5 | #[command_handler(\"WHO\")]\n | ^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `handler::HandlerFn<'_, _, _>` is not implemented for fn item `for<'a, 'b, 'c, 'd, 'e> fn(&'a server::ClientServer, &'b sable_network::prelude::Network, &'c (dyn command_response::CommandResponse + 'c), source_types::UserSource<'d>, &'e str, u64) -> Result<(), command::error::CommandError> {handle_who}`\n |\nnote: required by a bound in `call_handler`\n --> sable_ircd/src/command/plumbing/mod.rs:47:20\n |\n45 | pub(crate) fn call_handler<'a, Amb, Pos>(\n | ------------ required by a bound in this function\n46 | ctx: &'a dyn Command,\n47 | handler: &impl HandlerFn<'a, Amb, Pos>,\n | ^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `call_handler`\n = note: this error originates in the attribute macro `command_handler` (in Nightly builds, run with -Z macro-backtrace for more info)\n```\n\nThis uses the `diagnostic::on_unimplemented` attribute stabilized by\n[Rust 1.78](https://blog.rust-lang.org/2024/05/02/Rust-1.78.0.html)","shortMessageHtmlLink":"Improve compiler diagnostic when HandlerFn is not implemented"}},{"before":"b9deaa930c49f2939d9a584bedbfc3236da0d707","after":"ec555b573f2faa258011c77269d145a3c4507689","ref":"refs/heads/master","pushedAt":"2024-05-04T11:13:56.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"spb","name":"Stephen Bennett","path":"/spb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/327525?s=80&v=4"},"commit":{"message":"Fix timestamp matching for BEFORE and AROUND\n\nBefore this, conditionals were inverted so BEFORE would never find\nresults and AROUND would return only results after the timestamp.","shortMessageHtmlLink":"Fix timestamp matching for BEFORE and AROUND"}},{"before":"6ba5241054beaa596aafc853788c89ff66c75667","after":"b9deaa930c49f2939d9a584bedbfc3236da0d707","ref":"refs/heads/master","pushedAt":"2024-05-04T11:11:11.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"spb","name":"Stephen Bennett","path":"/spb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/327525?s=80&v=4"},"commit":{"message":"WHO: Add support for nick masks\n\nAnd some random rustfmt changes to `matchers.rs` because it was not\nimported before.","shortMessageHtmlLink":"WHO: Add support for nick masks"}},{"before":"3117454ae2be397d7c3b939e486f16ba93c12e55","after":"6ba5241054beaa596aafc853788c89ff66c75667","ref":"refs/heads/master","pushedAt":"2024-05-04T11:07:06.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"spb","name":"Stephen Bennett","path":"/spb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/327525?s=80&v=4"},"commit":{"message":"Advertise UTF8ONLY ISUPPORT token\n\nWe already return an ERROR on non-UTF8 message.\n\nThe spec recommends FAIL, but does not require it.","shortMessageHtmlLink":"Advertise UTF8ONLY ISUPPORT token"}},{"before":"63a3ff90618538b4db84dbf4722f2b26a57dab3e","after":"3117454ae2be397d7c3b939e486f16ba93c12e55","ref":"refs/heads/master","pushedAt":"2024-05-04T11:06:39.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"spb","name":"Stephen Bennett","path":"/spb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/327525?s=80&v=4"},"commit":{"message":"Rename KeyModeType and ListModeType methods to be consistent with flags","shortMessageHtmlLink":"Rename KeyModeType and ListModeType methods to be consistent with flags"}},{"before":"9087997cabcec7ecf02ef1650b06fc17df5ebabb","after":"63a3ff90618538b4db84dbf4722f2b26a57dab3e","ref":"refs/heads/master","pushedAt":"2024-04-25T10:07:51.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"spb","name":"Stephen Bennett","path":"/spb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/327525?s=80&v=4"},"commit":{"message":"Make CHATHISTORY AROUND return a single batch","shortMessageHtmlLink":"Make CHATHISTORY AROUND return a single batch"}},{"before":"b4d95c0938058240d7edfc1fdd23beb7c1f7f8af","after":"9087997cabcec7ecf02ef1650b06fc17df5ebabb","ref":"refs/heads/master","pushedAt":"2024-04-18T20:31:02.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"spb","name":"Stephen Bennett","path":"/spb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/327525?s=80&v=4"},"commit":{"message":"mode: Deduplicate Direction parsing","shortMessageHtmlLink":"mode: Deduplicate Direction parsing"}},{"before":"fb38e57ef3b6f6944051b8730e5489996c4e8828","after":"b4d95c0938058240d7edfc1fdd23beb7c1f7f8af","ref":"refs/heads/master","pushedAt":"2024-04-18T19:54:48.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"spb","name":"Stephen Bennett","path":"/spb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/327525?s=80&v=4"},"commit":{"message":"Split handle_user_mode() out of dispatch function\n\nIt's more consistent this way.","shortMessageHtmlLink":"Split handle_user_mode() out of dispatch function"}},{"before":"d369bf41bc98269a384acba932df9e1556af9170","after":"fb38e57ef3b6f6944051b8730e5489996c4e8828","ref":"refs/heads/master","pushedAt":"2024-04-15T23:26:01.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"spb","name":"Stephen Bennett","path":"/spb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/327525?s=80&v=4"},"commit":{"message":"rustfmt","shortMessageHtmlLink":"rustfmt"}},{"before":"901b26b533c049b7b7a3bfb0d0511540f2bdfdf7","after":"d369bf41bc98269a384acba932df9e1556af9170","ref":"refs/heads/master","pushedAt":"2024-04-15T23:24:26.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"spb","name":"Stephen Bennett","path":"/spb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/327525?s=80&v=4"},"commit":{"message":"implement server-local VERSION response (#98)","shortMessageHtmlLink":"implement server-local VERSION response (#98)"}},{"before":"bfe909d3c0396081fda23a9a63383658361038e8","after":"d4c7a918359bf7d7f7e3d11a7d6c7f4d5df2e579","ref":"refs/heads/ad/version","pushedAt":"2024-04-15T23:23:36.000Z","pushType":"push","commitsCount":28,"pusher":{"login":"spb","name":"Stephen Bennett","path":"/spb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/327525?s=80&v=4"},"commit":{"message":"Merge branch 'master' into ad/version","shortMessageHtmlLink":"Merge branch 'master' into ad/version"}},{"before":"293a8711cd7fc3b774245c66869f95698d48fc6a","after":"901b26b533c049b7b7a3bfb0d0511540f2bdfdf7","ref":"refs/heads/master","pushedAt":"2024-04-15T23:19:18.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"spb","name":"Stephen Bennett","path":"/spb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/327525?s=80&v=4"},"commit":{"message":"Implement WHOWAS","shortMessageHtmlLink":"Implement WHOWAS"}},{"before":"fe337a036c3ab5f8548e2578b65568e628f4c32f","after":"293a8711cd7fc3b774245c66869f95698d48fc6a","ref":"refs/heads/master","pushedAt":"2024-04-15T23:09:04.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"spb","name":"Stephen Bennett","path":"/spb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/327525?s=80&v=4"},"commit":{"message":"Remove unused code and clean up some warnings","shortMessageHtmlLink":"Remove unused code and clean up some warnings"}},{"before":"251e1f98232dbcb1ea0ac2e455ac68fd22d2b501","after":"fe337a036c3ab5f8548e2578b65568e628f4c32f","ref":"refs/heads/master","pushedAt":"2024-04-14T17:11:45.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"spb","name":"Stephen Bennett","path":"/spb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/327525?s=80&v=4"},"commit":{"message":"chathistory: Fix order of entries on LATEST/BEFORE/AROUND subcommand","shortMessageHtmlLink":"chathistory: Fix order of entries on LATEST/BEFORE/AROUND subcommand"}},{"before":"c238780f201b4a8bf09c6c111b856a4e58c044ec","after":"251e1f98232dbcb1ea0ac2e455ac68fd22d2b501","ref":"refs/heads/master","pushedAt":"2024-04-14T17:10:17.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"spb","name":"Stephen Bennett","path":"/spb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/327525?s=80&v=4"},"commit":{"message":"Implement MONITOR","shortMessageHtmlLink":"Implement MONITOR"}},{"before":"801fd69e46551a28850bca4cc76b05353ee6f892","after":"c238780f201b4a8bf09c6c111b856a4e58c044ec","ref":"refs/heads/master","pushedAt":"2024-04-14T11:12:57.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"spb","name":"Stephen Bennett","path":"/spb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/327525?s=80&v=4"},"commit":{"message":"Reload info strings on ircd restart\n\ninstead of serializing the loaded strings in the server state","shortMessageHtmlLink":"Reload info strings on ircd restart"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOC0xMVQyMjo1MTo1Ni4wMDAwMDBazwAAAASXlexy","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOC0xMVQyMjo1MTo1Ni4wMDAwMDBazwAAAASXlexy","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wNC0xNFQxMToxMjo1Ny4wMDAwMDBazwAAAAQwKyeh"}},"title":"Activity · Libera-Chat/sable"}