{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":604231824,"defaultBranch":"main","name":"nogo-backend","ownerLogin":"The-Goo-Goo-Gang","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2023-02-20T16:02:04.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/125905118?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1687833212.969793","currentOid":""},"activityList":{"items":[{"before":"9846eadee34f627eb65dde4d1a2dbb81fa05016c","after":"4386334ad5961d2a56423fab7490531afb4b0d44","ref":"refs/heads/main","pushedAt":"2023-06-27T03:24:48.351Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andylizf","name":"Andy Lee","path":"/andylizf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28052536?s=80&v=4"},"commit":{"message":"Stage 3. (#48)\n\n* fix: read_msg has \\n at the end\r\n\r\n* refactor: operator uZ in utility\r\n\r\n* feat: replay, multi-way board, bot (#35)\r\n\r\n* feat: replay\r\n\r\n* fix: white cannot give up in local games\r\n\r\n* feat!: support multi-way board\r\n\r\n* feat: bot, PVE & EVE in local games\r\n\r\n* feat: support multi-way board replay (#37)\r\n\r\n* feat: support multi-way board replay\r\n\r\n* pref: bot\r\n\r\n* fix: error when timeout\r\n\r\n* fix: unexpected leave when receive `READY_OP` (#40)\r\n\r\n* refactor(bot): better performance (#39)\r\n\r\n* fix(bot): ultimate select should pass 0 (#41)\r\n\r\n* revert: process `READY_OP` by is `data2` empty (#42)\r\n\r\n* feat: support change online play timeout (#43)\r\n\r\n* feat: support change online play timeout\r\n\r\n* fix(test)\r\n\r\n* ci: change artifact name\r\n\r\n* change: before final submission (#44)\r\n\r\n* docs: add comment for extended `OpCode`\r\n\r\n* pref: use `std::ostringstream` in `to_string`\r\n\r\n* pref: make `merge` & `put` private\r\n\r\n* refactor: split `process_data` into `LocalSession` `RemoteSession` inherited from `Participant` (#47)\r\n\r\n* refactor: split the big `process_data` into `LocalSession` `RemoteSession` inherited from `Participant`\r\n\r\n* refactor: formatter\r\n\r\n* refactor(test): `MessageFormat` for matching\r\n\r\n* refactor: store participant directly rather than `ContestRequest`\r\n\r\n* chore: gcc 12 toolchain\r\n\r\n---------\r\n\r\nCo-authored-by: Andy Lee \r\n\r\n---------\r\n\r\nCo-authored-by: weizihong <125332147+weizihong@users.noreply.github.com>\r\nCo-authored-by: HuanCheng65 <22636177+HuanCheng65@users.noreply.github.com>","shortMessageHtmlLink":"Stage 3. (#48)"}},{"before":"08d880e27350f6d1c1f9dc4486d1cc494c781ac9","after":"205551b5ebfbb9b2cf67ce7aaf0bb37f6719dc3e","ref":"refs/heads/dev","pushedAt":"2023-06-27T03:10:53.869Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"andylizf","name":"Andy Lee","path":"/andylizf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28052536?s=80&v=4"},"commit":{"message":"refactor: split `process_data` into `LocalSession` `RemoteSession` inherited from `Participant` (#47)\n\n* refactor: split the big `process_data` into `LocalSession` `RemoteSession` inherited from `Participant`\r\n\r\n* refactor: formatter\r\n\r\n* refactor(test): `MessageFormat` for matching\r\n\r\n* refactor: store participant directly rather than `ContestRequest`\r\n\r\n* chore: gcc 12 toolchain\r\n\r\n---------\r\n\r\nCo-authored-by: Andy Lee ","shortMessageHtmlLink":"refactor: split process_data into LocalSession RemoteSession in…"}},{"before":"414067cd190335eb48f33d876324c791f5ebe6f0","after":null,"ref":"refs/heads/dev-andy-archi","pushedAt":"2023-06-27T02:33:32.969Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"andylizf","name":"Andy Lee","path":"/andylizf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28052536?s=80&v=4"}},{"before":"5e57f25b588dab56654e8848f7fd78a55842f545","after":"08d880e27350f6d1c1f9dc4486d1cc494c781ac9","ref":"refs/heads/dev","pushedAt":"2023-06-27T02:33:28.877Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andylizf","name":"Andy Lee","path":"/andylizf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28052536?s=80&v=4"},"commit":{"message":"refactor: split `process_data` into `LocalSession` `RemoteSession` inherited from `Participant` (#47)\n\n* refactor: split the big `process_data` into `LocalSession` `RemoteSession` inherited from `Participant`\r\n\r\n* refactor: formatter\r\n\r\n* refactor(test): `MessageFormat` for matching\r\n\r\n* refactor: store participant directly rather than `ContestRequest`\r\n\r\n* chore: gcc 12 toolchain\r\n\r\n---------\r\n\r\nCo-authored-by: Andy Lee ","shortMessageHtmlLink":"refactor: split process_data into LocalSession RemoteSession in…"}},{"before":"8df4b40b58c92d123cfae0f5925811e564c18597","after":"414067cd190335eb48f33d876324c791f5ebe6f0","ref":"refs/heads/dev-andy-archi","pushedAt":"2023-06-27T02:21:13.564Z","pushType":"push","commitsCount":1,"pusher":{"login":"HuanCheng65","name":null,"path":"/HuanCheng65","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22636177?s=80&v=4"},"commit":{"message":"chore: gcc 12 toolchain","shortMessageHtmlLink":"chore: gcc 12 toolchain"}},{"before":"7aa6b573e09907bd28477133b3687a331182c573","after":"8df4b40b58c92d123cfae0f5925811e564c18597","ref":"refs/heads/dev-andy-archi","pushedAt":"2023-06-27T01:51:31.222Z","pushType":"push","commitsCount":1,"pusher":{"login":"HuanCheng65","name":null,"path":"/HuanCheng65","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22636177?s=80&v=4"},"commit":{"message":"fix(test)","shortMessageHtmlLink":"fix(test)"}},{"before":"6991f65fa9bafe9d88359766e6ac1053020c26c5","after":"7aa6b573e09907bd28477133b3687a331182c573","ref":"refs/heads/dev-andy-archi","pushedAt":"2023-06-25T02:43:35.747Z","pushType":"push","commitsCount":2,"pusher":{"login":"HuanCheng65","name":null,"path":"/HuanCheng65","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22636177?s=80&v=4"},"commit":{"message":"Merge branch 'dev' into dev-andy-archi","shortMessageHtmlLink":"Merge branch 'dev' into dev-andy-archi"}},{"before":"0b52841572e58b18a94c53db68f29ecaa4527efe","after":"6991f65fa9bafe9d88359766e6ac1053020c26c5","ref":"refs/heads/dev-andy-archi","pushedAt":"2023-06-24T14:39:45.545Z","pushType":"push","commitsCount":1,"pusher":{"login":"HuanCheng65","name":null,"path":"/HuanCheng65","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22636177?s=80&v=4"},"commit":{"message":"fix","shortMessageHtmlLink":"fix"}},{"before":"b1fd24dc5aa47e6c23fead23243d88f207f84fed","after":"0b52841572e58b18a94c53db68f29ecaa4527efe","ref":"refs/heads/dev-andy-archi","pushedAt":"2023-06-24T11:25:56.085Z","pushType":"push","commitsCount":8,"pusher":{"login":"andylizf","name":"Andy Lee","path":"/andylizf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28052536?s=80&v=4"},"commit":{"message":"Merge branch 'dev' into dev-andy-archi","shortMessageHtmlLink":"Merge branch 'dev' into dev-andy-archi"}},{"before":"9846eadee34f627eb65dde4d1a2dbb81fa05016c","after":"149d88066a5033523eaa048de4dec21c9a8c1a54","ref":"refs/heads/dev-wei-alphazero","pushedAt":"2023-06-22T05:18:33.489Z","pushType":"pr_merge","commitsCount":85,"pusher":{"login":"weizihong","name":null,"path":"/weizihong","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/125332147?s=80&v=4"},"commit":{"message":"Merge pull request #46 from weizihong/dev-wei-alphazero\n\nDev wei alphazero","shortMessageHtmlLink":"Merge pull request #46 from weizihong/dev-wei-alphazero"}},{"before":null,"after":"9846eadee34f627eb65dde4d1a2dbb81fa05016c","ref":"refs/heads/dev-wei-alphazero","pushedAt":"2023-06-22T05:16:24.050Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"weizihong","name":null,"path":"/weizihong","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/125332147?s=80&v=4"},"commit":{"message":"Stage 2.\n\n* docs: add title & ci badge & link to frontend repo (#17)\r\n\r\n* refactor: `winner`&`win_type` combine `GameResult`\r\n\r\n* refactor: redesign `PlayerCouple`, close #14\r\n\r\n* feat!: player timeout\r\n\r\n* fix: default player name\r\n\r\n* feat: moves record encoding\r\n\r\n* feat!: use `data1` of `GIVEUP_OP` as role; print endpoint when launching (#20)\r\n\r\n* pref: change `export` keyword to an empty macro\r\n\r\n* fix!: use `data1` of `GIVEUP_OP` as role\r\n\r\n* feat: print server endpoint address when launching\r\n\r\n* feat: connect to remote server (#21)\r\n\r\n* fix: make `Session` only if connect succeed\r\n\r\n* fix: Position encode & decode for 11-way board\r\n\r\n* fix: zero-init for built-in types\r\n\r\n* refactor: remove `is_our_player_playing`\r\n\r\n* feat: add `CONNECT_RESULT_OP`\r\n\r\n* pref: use `deliver_ui_state`\r\n\r\n* feat: add log; add gtest (#19)\r\n\r\n* feat: remote MOVE_OP & LEAVE_OP logic.\r\n\r\n* fix: GG_OP win_pending & confirmation from loser\r\n\r\n* feat: support online play (#23)\r\n\r\n* feat: send the number of moves to frontend\r\n\r\n* fix: clear when willing to start an online game\r\n\r\n* fix: none player occupied\r\n\r\n* feat: support chat & show last/disabled move (#24)\r\n\r\n* feat: support show dangerous positions\r\n\r\n* fix: shouldn't close local session actively\r\n\r\n* fix: `REJECT_OP` also contains username\r\n\r\n* feat: send username to local when remote leaving\r\n\r\n* feat: processing received requests (#25)\r\nContest requests are processed and managed by the backend.\r\n\r\n* feat: send LEAVE_OP to local whenever disconnected\r\n\r\n* feat: record start and end time of the contest\r\n\r\n* feat: leave room before shutdown a session\r\n\r\n* fix: use name first when comparing `Participant`\r\n\r\n* chore(ci): test on windows and linux\r\n\r\n* refector: comfort msvc\r\n\r\n---------\r\n\r\nCo-authored-by: HuanCheng65 <22636177+HuanCheng65@users.noreply.github.com>\r\nCo-authored-by: weizihong <125332147+weizihong@users.noreply.github.com>","shortMessageHtmlLink":"Stage 2."}},{"before":"41f08449fa28c99b53658698bc0889ae2f72cf2c","after":"7aa80cb41e1eb2d38390376d7b46a37455451097","ref":"refs/heads/dev-wei","pushedAt":"2023-06-21T10:59:40.278Z","pushType":"push","commitsCount":1,"pusher":{"login":"weizihong","name":null,"path":"/weizihong","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/125332147?s=80&v=4"},"commit":{"message":"Delete alarm.yml","shortMessageHtmlLink":"Delete alarm.yml"}},{"before":"2183581db8e8844170981ed5dc81cf705e47d059","after":"41f08449fa28c99b53658698bc0889ae2f72cf2c","ref":"refs/heads/dev-wei","pushedAt":"2023-06-21T10:57:23.657Z","pushType":"push","commitsCount":1,"pusher":{"login":"weizihong","name":null,"path":"/weizihong","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/125332147?s=80&v=4"},"commit":{"message":"Update alarm.yml","shortMessageHtmlLink":"Update alarm.yml"}},{"before":"cff5d4df8a9eeab9216e0f73e3e1b80e5a37c29d","after":"2183581db8e8844170981ed5dc81cf705e47d059","ref":"refs/heads/dev-wei","pushedAt":"2023-06-21T10:31:45.621Z","pushType":"push","commitsCount":1,"pusher":{"login":"weizihong","name":null,"path":"/weizihong","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/125332147?s=80&v=4"},"commit":{"message":"Create alarm.yml","shortMessageHtmlLink":"Create alarm.yml"}},{"before":"22604929c5cad87b19bccfe6ef290b23ae1325da","after":null,"ref":"refs/heads/dev-huancheng-final","pushedAt":"2023-06-11T07:39:37.176Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"andylizf","name":"Andy Lee","path":"/andylizf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28052536?s=80&v=4"}},{"before":"3c376c028427edb110f6e641df84c4d848e04134","after":"5e57f25b588dab56654e8848f7fd78a55842f545","ref":"refs/heads/dev","pushedAt":"2023-06-11T07:39:32.830Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andylizf","name":"Andy Lee","path":"/andylizf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28052536?s=80&v=4"},"commit":{"message":"change: before final submission (#44)\n\n* docs: add comment for extended `OpCode`\r\n\r\n* pref: use `std::ostringstream` in `to_string`\r\n\r\n* pref: make `merge` & `put` private","shortMessageHtmlLink":"change: before final submission (#44)"}},{"before":"cb858d6157db10d9223ccc4955f1f4127125f33d","after":"22604929c5cad87b19bccfe6ef290b23ae1325da","ref":"refs/heads/dev-huancheng-final","pushedAt":"2023-06-11T04:57:02.373Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"HuanCheng65","name":null,"path":"/HuanCheng65","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22636177?s=80&v=4"},"commit":{"message":"pref: make `merge` & `put` private","shortMessageHtmlLink":"pref: make merge & put private"}},{"before":null,"after":"cb858d6157db10d9223ccc4955f1f4127125f33d","ref":"refs/heads/dev-huancheng-final","pushedAt":"2023-06-11T04:51:05.993Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"HuanCheng65","name":null,"path":"/HuanCheng65","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22636177?s=80&v=4"},"commit":{"message":"pref: make `get_rank` constexpr","shortMessageHtmlLink":"pref: make get_rank constexpr"}},{"before":"274a91b5038ad77762047ba9b33134290f1458f9","after":"b1fd24dc5aa47e6c23fead23243d88f207f84fed","ref":"refs/heads/dev-andy-archi","pushedAt":"2023-06-11T03:26:36.547Z","pushType":"push","commitsCount":1,"pusher":{"login":"andylizf","name":"Andy Lee","path":"/andylizf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28052536?s=80&v=4"},"commit":{"message":"refactor: format","shortMessageHtmlLink":"refactor: format"}},{"before":"9d0f820d214283d748d57fce9bf90f78f9eb1fe3","after":null,"ref":"refs/heads/dev-huancheng","pushedAt":"2023-06-07T13:25:53.296Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"andylizf","name":"Andy Lee","path":"/andylizf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28052536?s=80&v=4"}},{"before":"08007e4b845ce15cb41fe8f6abd6c6e5544feda4","after":"3c376c028427edb110f6e641df84c4d848e04134","ref":"refs/heads/dev","pushedAt":"2023-06-07T13:25:24.486Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andylizf","name":"Andy Lee","path":"/andylizf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28052536?s=80&v=4"},"commit":{"message":"feat: support change online play timeout (#43)\n\n* feat: support change online play timeout\r\n\r\n* fix(test)\r\n\r\n* ci: change artifact name","shortMessageHtmlLink":"feat: support change online play timeout (#43)"}},{"before":"55ab8b6310e37a8481adcd9c04385e9774a3adeb","after":"9d0f820d214283d748d57fce9bf90f78f9eb1fe3","ref":"refs/heads/dev-huancheng","pushedAt":"2023-06-07T03:13:10.186Z","pushType":"push","commitsCount":2,"pusher":{"login":"HuanCheng65","name":null,"path":"/HuanCheng65","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22636177?s=80&v=4"},"commit":{"message":"ci: change artifact name","shortMessageHtmlLink":"ci: change artifact name"}},{"before":null,"after":"55ab8b6310e37a8481adcd9c04385e9774a3adeb","ref":"refs/heads/dev-huancheng","pushedAt":"2023-06-06T12:19:45.421Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"HuanCheng65","name":null,"path":"/HuanCheng65","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22636177?s=80&v=4"},"commit":{"message":"feat: support change online play timeout","shortMessageHtmlLink":"feat: support change online play timeout"}},{"before":"9216d0517cf0d46d5483027e1056a81d1bf63b4c","after":null,"ref":"refs/heads/dev-huancheng","pushedAt":"2023-06-06T09:06:10.395Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"andylizf","name":"Andy Lee","path":"/andylizf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28052536?s=80&v=4"}},{"before":"64e4c5b86fe396d648a4031f6fe581918bc55e82","after":"08007e4b845ce15cb41fe8f6abd6c6e5544feda4","ref":"refs/heads/dev","pushedAt":"2023-06-06T09:06:04.988Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andylizf","name":"Andy Lee","path":"/andylizf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28052536?s=80&v=4"},"commit":{"message":"revert: process `READY_OP` by is `data2` empty (#42)","shortMessageHtmlLink":"revert: process READY_OP by is data2 empty (#42)"}},{"before":null,"after":"9216d0517cf0d46d5483027e1056a81d1bf63b4c","ref":"refs/heads/dev-huancheng","pushedAt":"2023-06-06T09:02:31.849Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"HuanCheng65","name":null,"path":"/HuanCheng65","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22636177?s=80&v=4"},"commit":{"message":"revert: process `READY_OP` by is `data2` empty","shortMessageHtmlLink":"revert: process READY_OP by is data2 empty"}},{"before":"931f6bddda2c6013440f8d617d8bc83b71f965e0","after":null,"ref":"refs/heads/dev-wei-bot","pushedAt":"2023-06-06T05:10:24.316Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"andylizf","name":"Andy Lee","path":"/andylizf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28052536?s=80&v=4"}},{"before":"b32a684a2b0662b429a0f4fdc2486afd7bd68c7b","after":"64e4c5b86fe396d648a4031f6fe581918bc55e82","ref":"refs/heads/dev","pushedAt":"2023-06-06T05:10:16.593Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andylizf","name":"Andy Lee","path":"/andylizf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28052536?s=80&v=4"},"commit":{"message":"fix(bot): ultimate select should pass 0 (#41)","shortMessageHtmlLink":"fix(bot): ultimate select should pass 0 (#41)"}},{"before":"b32a684a2b0662b429a0f4fdc2486afd7bd68c7b","after":"931f6bddda2c6013440f8d617d8bc83b71f965e0","ref":"refs/heads/dev-wei-bot","pushedAt":"2023-06-06T05:06:03.634Z","pushType":"push","commitsCount":1,"pusher":{"login":"andylizf","name":"Andy Lee","path":"/andylizf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28052536?s=80&v=4"},"commit":{"message":"refactor","shortMessageHtmlLink":"refactor"}},{"before":null,"after":"b32a684a2b0662b429a0f4fdc2486afd7bd68c7b","ref":"refs/heads/dev-wei-bot","pushedAt":"2023-06-06T04:59:33.203Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"andylizf","name":"Andy Lee","path":"/andylizf","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28052536?s=80&v=4"},"commit":{"message":"refactor(bot): better performance (#39)","shortMessageHtmlLink":"refactor(bot): better performance (#39)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"startCursor":"Y3Vyc29yOnYyOpK7MjAyMy0wNi0yN1QwMzoyNDo0OC4zNTEyMjlazwAAAANJkjI3","endCursor":"Y3Vyc29yOnYyOpK7MjAyMy0wNi0wNlQwNDo1OTozMy4yMDM1ODRazwAAAAM7adzf"}},"title":"Activity · The-Goo-Goo-Gang/nogo-backend"}