{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":29060224,"defaultBranch":"master","name":"robustirc","ownerLogin":"robustirc","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2015-01-10T14:54:18.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/10380022?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1596204028.0","currentOid":""},"activityList":{"items":[{"before":"006b72388317796c512018d963b88b39805c4b67","after":"e7dcbf3807f978358a5cfbbfa6afd616e0245b68","ref":"refs/heads/master","pushedAt":"2024-01-04T13:26:06.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stapelberg","name":"Michael Stapelberg","path":"/stapelberg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55506?s=80&v=4"},"commit":{"message":"no-op refactor: split OPER authentication into separate function\n\nThis makes it easier to overwrite the function with a custom authorization\ncallback in a custom patch.","shortMessageHtmlLink":"no-op refactor: split OPER authentication into separate function"}},{"before":"017eb23037422675fb12c5715223731ef636c718","after":"006b72388317796c512018d963b88b39805c4b67","ref":"refs/heads/master","pushedAt":"2024-01-04T10:38:53.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stapelberg","name":"Michael Stapelberg","path":"/stapelberg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55506?s=80&v=4"},"commit":{"message":"no-op refactor: register HTTP handlers outside NewHTTP()\n\nThis makes it a little easier to modify the HTTP handler registration with\ncustom patches, as the .DispatchPrivate and .DispatchPublic methods are now\nexported. Also, for custom auth patches, .DispatchPrivateWithoutAuth can be\ncalled directly.","shortMessageHtmlLink":"no-op refactor: register HTTP handlers outside NewHTTP()"}},{"before":"93c9296060b99adfad55e0fbf07f7fa5a4b64b4c","after":"017eb23037422675fb12c5715223731ef636c718","ref":"refs/heads/master","pushedAt":"2023-12-22T11:46:18.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"stapelberg","name":"Michael Stapelberg","path":"/stapelberg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55506?s=80&v=4"},"commit":{"message":"ircserver: treat NICK changes to same nick as no-ops\n\nThis matches the behavior of other IRC servers.\n\nSome IRC bots that try to keep a certain nick name just send NICK commands\nregardless of whether they are requesting the same NICK they already have.","shortMessageHtmlLink":"ircserver: treat NICK changes to same nick as no-ops"}},{"before":"0b7f1d5d24d28b74c7a7d70414a8f3369660164c","after":"93c9296060b99adfad55e0fbf07f7fa5a4b64b4c","ref":"refs/heads/master","pushedAt":"2023-12-19T12:26:49.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stapelberg","name":"Michael Stapelberg","path":"/stapelberg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55506?s=80&v=4"},"commit":{"message":"bans: resolve robust/0x… also if present without leading @\n\nThis allows extending the RobustIRC hostnames from e.g.\nuser@robustirc/0x1234\nto:\nuser@some/additional/identity/robustirc/0x1234","shortMessageHtmlLink":"bans: resolve robust/0x… also if present without leading @"}},{"before":"3bc30ec3917f5523b945929350c98888eafb7deb","after":"0b7f1d5d24d28b74c7a7d70414a8f3369660164c","ref":"refs/heads/master","pushedAt":"2023-10-19T17:27:51.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"stapelberg","name":"Michael Stapelberg","path":"/stapelberg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55506?s=80&v=4"},"commit":{"message":"Implement channel key enforcement and setting. (#167)","shortMessageHtmlLink":"Implement channel key enforcement and setting. (#167)"}},{"before":"631e72b9a419621cc64bfc58cd8514346559a66b","after":"3bc30ec3917f5523b945929350c98888eafb7deb","ref":"refs/heads/master","pushedAt":"2023-10-18T12:18:20.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"stapelberg","name":"Michael Stapelberg","path":"/stapelberg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55506?s=80&v=4"},"commit":{"message":"Implement privmsg and notice commands to all users on the server (#168)","shortMessageHtmlLink":"Implement privmsg and notice commands to all users on the server (#168)"}},{"before":"b1a793fbb7f321f06999a8b846eee288a9e81699","after":"631e72b9a419621cc64bfc58cd8514346559a66b","ref":"refs/heads/master","pushedAt":"2023-10-18T09:23:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stapelberg","name":"Michael Stapelberg","path":"/stapelberg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55506?s=80&v=4"},"commit":{"message":"GitHub Actions: add setup-go step\n\nThis should make gofmt available (looks like it no longer is available by\ndefault).","shortMessageHtmlLink":"GitHub Actions: add setup-go step"}},{"before":"08288abb617b107333c40da819888acd231e036f","after":"b1a793fbb7f321f06999a8b846eee288a9e81699","ref":"refs/heads/master","pushedAt":"2023-10-11T15:51:21.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"stapelberg","name":"Michael Stapelberg","path":"/stapelberg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55506?s=80&v=4"},"commit":{"message":"Add tests for NOTICE\n\nThis uncovered the bug in cmd_privmsg.go which always returned PRIVMSG as an error.","shortMessageHtmlLink":"Add tests for NOTICE"}},{"before":"928aa25aff6d4d33a8b82368958057b0a5c7a2cc","after":"08288abb617b107333c40da819888acd231e036f","ref":"refs/heads/master","pushedAt":"2023-07-06T12:31:55.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"stapelberg","name":"Michael Stapelberg","path":"/stapelberg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55506?s=80&v=4"},"commit":{"message":"Bugfix: correctly update state on Raft snapshot restore\n\nThe ircServer, ircStore and outputStream are re-created during snapshot restore.\nBefore this commit, only the global variables were updated by the code.\nHowever, the copies in the api.HTTP struct also need to be updated!\n\nOtherwise, the API would panic when accessing the outputStream\n(“IRCLog” tab of the status page), and new connections to the network would\nconsistently fail with the following error message:\n\n No such RobustIRC session (killed by the network?) (non-recoverable)\n\n(Because session creation still happens successfully via Raft,\nbut when reading or writing new messages, the API was still working\nwith the old ircServer instance, which did not get the new session.)\n\nWhy did this bug linger for so long? Because it is only triggered when Raft\nis unable to stream log entries because the node is so far behind in\nreplication, and falls back to restoring from snapshot. The replication\nthreshold is tied to config.TrailingLogs, which defaults to 10k log entries.","shortMessageHtmlLink":"Bugfix: correctly update state on Raft snapshot restore"}},{"before":"2b6eae89f720370e4c87147f678d3b9a2eedba77","after":"928aa25aff6d4d33a8b82368958057b0a5c7a2cc","ref":"refs/heads/master","pushedAt":"2023-07-06T12:29:30.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stapelberg","name":"Michael Stapelberg","path":"/stapelberg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55506?s=80&v=4"},"commit":{"message":"Bugfix: correctly update state on Raft snapshot restore\n\nThe ircServer, ircStore and outputStream are re-created during snapshot restore.\nBefore this commit, only the global variables were updated by the code.\nHowever, the copies in the api.HTTP struct also need to be updated!\n\nOtherwise, the API would panic when accessing the outputStream\n(“IRCLog” tab of the status page), and new connections to the network would\nconsistently fail with the following error message:\n\n No such RobustIRC session (killed by the network?) (non-recoverable)\n\n(Because session creation still happens successfully via Raft,\nbut when reading or writing new messages, the API was still working\nwith the old ircServer instance, which did not get the new session.)\n\nWhy did this bug linger for so long? Because it is only triggered when Raft\nis unable to stream log entries because the node is so far behind in\nreplication, and falls back to restoring from snapshot. The replication\nthreshold is tied to config.TrailingLogs, which defaults to 10k log entries.","shortMessageHtmlLink":"Bugfix: correctly update state on Raft snapshot restore"}},{"before":"c478775cead438b54bd013c529fe109599e1ec9d","after":"2b6eae89f720370e4c87147f678d3b9a2eedba77","ref":"refs/heads/master","pushedAt":"2023-06-19T12:31:04.309Z","pushType":"push","commitsCount":4,"pusher":{"login":"stapelberg","name":"Michael Stapelberg","path":"/stapelberg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55506?s=80&v=4"},"commit":{"message":"mod_test: relax timeouts for heavily loaded CI environments\n\nThis reduces flakiness.","shortMessageHtmlLink":"mod_test: relax timeouts for heavily loaded CI environments"}},{"before":"5817daac2c539b53fc2524573e535d6c8b424086","after":"c478775cead438b54bd013c529fe109599e1ec9d","ref":"refs/heads/master","pushedAt":"2023-05-01T11:01:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stapelberg","name":"Michael Stapelberg","path":"/stapelberg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55506?s=80&v=4"},"commit":{"message":"build docker container for arm64 as well","shortMessageHtmlLink":"build docker container for arm64 as well"}}],"hasNextPage":false,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAD17eEPwA","startCursor":null,"endCursor":null}},"title":"Activity · robustirc/robustirc"}