{"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":"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"}},{"before":"bab5ff48ca9eed50e48eee77dc22e96c6794865d","after":"801fd69e46551a28850bca4cc76b05353ee6f892","ref":"refs/heads/master","pushedAt":"2024-04-14T10:53:50.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: Advertise MSGREFTYPES ISUPPORT token","shortMessageHtmlLink":"chathistory: Advertise MSGREFTYPES ISUPPORT token"}},{"before":"97f3fc77ae9d9961327d57e7b70c7fdb67e94b21","after":"bab5ff48ca9eed50e48eee77dc22e96c6794865d","ref":"refs/heads/master","pushedAt":"2024-04-14T10:53:27.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: Send 'FAIL CHATHISTORY INVALID_TARGET' when required","shortMessageHtmlLink":"chathistory: Send 'FAIL CHATHISTORY INVALID_TARGET' when required"}},{"before":"12111eb4cb16dac5abf5c7f49873d4e8695f4c62","after":"97f3fc77ae9d9961327d57e7b70c7fdb67e94b21","ref":"refs/heads/master","pushedAt":"2024-04-14T10:12:19.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 USERHOST","shortMessageHtmlLink":"Implement USERHOST"}},{"before":"51df31c80450bd3cc9e0e60596b7ccf1781cca08","after":"12111eb4cb16dac5abf5c7f49873d4e8695f4c62","ref":"refs/heads/master","pushedAt":"2024-04-14T10:09:37.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":"NAMES/WHO: Only send multiple prefixes after negotiating multi-prefix\n\nIt is incorrect without this capability, and may break clients.","shortMessageHtmlLink":"NAMES/WHO: Only send multiple prefixes after negotiating multi-prefix"}},{"before":"51af1808441af95973280258c9ed3904d71b6a8a","after":"51df31c80450bd3cc9e0e60596b7ccf1781cca08","ref":"refs/heads/master","pushedAt":"2024-04-14T10:08:16.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":"Remove trailing space from RPL_NAMREPLY\n\nThis is disallowed by https://modern.ircdocs.horse/#rplnamreply-353 and\nRFC2812; allowed by RFC1459 ambiguous grammar; and only irc2 seems to send\nsuch a trailing space.","shortMessageHtmlLink":"Remove trailing space from RPL_NAMREPLY"}},{"before":"f997e4e33b2f4e602fdbadc1908d8b836f6aee9c","after":"51af1808441af95973280258c9ed3904d71b6a8a","ref":"refs/heads/master","pushedAt":"2024-04-14T10:04:33.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 warnings","shortMessageHtmlLink":"Fix warnings"}},{"before":"3615b0762d82f22899fd06f48907aabc73f29e99","after":"f997e4e33b2f4e602fdbadc1908d8b836f6aee9c","ref":"refs/heads/master","pushedAt":"2024-02-19T19:36:59.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":"add initial test for applying events out of order","shortMessageHtmlLink":"add initial test for applying events out of order"}},{"before":"453866f0b958c774d3103579d000c0e2ab8a8e2f","after":"3615b0762d82f22899fd06f48907aabc73f29e99","ref":"refs/heads/master","pushedAt":"2024-02-11T00:14:27.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":"Allow disabling persistence","shortMessageHtmlLink":"Allow disabling persistence"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEVUgF-QA","startCursor":null,"endCursor":null}},"title":"Activity · Libera-Chat/sable"}