{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":44403028,"defaultBranch":"master","name":"VVVVVV","ownerLogin":"TerryCavanagh","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2015-10-16T18:17:22.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/2874150?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1724274260.0","currentOid":""},"activityList":{"items":[{"before":"149f5fbebc84862a81c35dd4c0eedadd901497c2","after":"8b62bb1d6541dfd5f02870dc5eef53c571b281e8","ref":"refs/heads/master","pushedAt":"2024-08-27T22:32:49.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"InfoTeddy","name":"Misa Elizabeth Kai","path":"/InfoTeddy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59748578?s=80&v=4"},"commit":{"message":"Bump version to v2.5\n\nI consider the 2.4 development cycle over now, after the most important\nbugs (and regressions) were fixed in 2.4.2.\n\n[skip ci]","shortMessageHtmlLink":"Bump version to v2.5"}},{"before":"9ec8d8b637e504addb75fbbe74e7ea2070a45b96","after":"149f5fbebc84862a81c35dd4c0eedadd901497c2","ref":"refs/heads/2.4-updates","pushedAt":"2024-08-07T01:17:04.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"InfoTeddy","name":"Misa Elizabeth Kai","path":"/InfoTeddy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59748578?s=80&v=4"},"commit":{"message":"Tweak IME selection background left bound\n\nJust extending the selection background left by one pixel so there's\nnot one pixel of black background to the left of a selection that\nstarts at the beginning of the text, and so some characters being\nselected show up better (particularly where there's a long vertical bar\nat the first pixel). We shouldn't be overlapping any part of the\nprevious character, since every character normally has a pixel of\nspacing on the right.","shortMessageHtmlLink":"Tweak IME selection background left bound"}},{"before":"9ec8d8b637e504addb75fbbe74e7ea2070a45b96","after":"149f5fbebc84862a81c35dd4c0eedadd901497c2","ref":"refs/heads/master","pushedAt":"2024-08-07T01:16:46.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"InfoTeddy","name":"Misa Elizabeth Kai","path":"/InfoTeddy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59748578?s=80&v=4"},"commit":{"message":"Tweak IME selection background left bound\n\nJust extending the selection background left by one pixel so there's\nnot one pixel of black background to the left of a selection that\nstarts at the beginning of the text, and so some characters being\nselected show up better (particularly where there's a long vertical bar\nat the first pixel). We shouldn't be overlapping any part of the\nprevious character, since every character normally has a pixel of\nspacing on the right.","shortMessageHtmlLink":"Tweak IME selection background left bound"}},{"before":"345eca5e10cd3a8cbcd0c7e293732088aba30f39","after":"9ec8d8b637e504addb75fbbe74e7ea2070a45b96","ref":"refs/heads/2.4-updates","pushedAt":"2024-08-03T05:25:37.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"InfoTeddy","name":"Misa Elizabeth Kai","path":"/InfoTeddy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59748578?s=80&v=4"},"commit":{"message":"Add selection background to IME rendering\n\nDecided to implement it anyway since the broken behavior (selection\nlength always being 0, at least on Windows) may get fixed later in SDL,\nso let's do it right in one go.","shortMessageHtmlLink":"Add selection background to IME rendering"}},{"before":"345eca5e10cd3a8cbcd0c7e293732088aba30f39","after":"9ec8d8b637e504addb75fbbe74e7ea2070a45b96","ref":"refs/heads/master","pushedAt":"2024-08-03T05:25:01.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"InfoTeddy","name":"Misa Elizabeth Kai","path":"/InfoTeddy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59748578?s=80&v=4"},"commit":{"message":"Add selection background to IME rendering\n\nDecided to implement it anyway since the broken behavior (selection\nlength always being 0, at least on Windows) may get fixed later in SDL,\nso let's do it right in one go.","shortMessageHtmlLink":"Add selection background to IME rendering"}},{"before":"6930bde91be89640c6b510d22e82d3b1a31042ac","after":"345eca5e10cd3a8cbcd0c7e293732088aba30f39","ref":"refs/heads/2.4-updates","pushedAt":"2024-08-01T05:19:39.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"InfoTeddy","name":"Misa Elizabeth Kai","path":"/InfoTeddy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59748578?s=80&v=4"},"commit":{"message":"Fix regression: Escape from conveyor spikes\n\nThis fixes a regression from 2.3. Consider the following diagram:\n\n CC\n X CC\n <<<<\n\n\"C\" indicates one tile of a checkpoint entity, \"X\" indicates a spike\ntile, and \"<\" indicates one tile of a conveyor entity that has the\ndefault speed (4 pixels per frame) going leftwards.\n\nNow consider if the player were to touch the checkpoint and die. In 2.2,\nthey would be able to escape from the spike by holding right. But in\n2.3, they would not be able to, and would die from the spike\ncontinuously with no escape.\n\nThis happens because in 2.2, the player would spawn a couple pixels off\nthe surface, and this gained them an extra frame of movement to move\naway from the conveyor. 2.3 places the player directly on the ground,\nmoving them one frame earlier and thus forcing them to their doom.\n\nNow consider the following diagram:\n\n CC\n X CC\n <<<<\n\nThe difference with the previous diagram is that this time, the spike is\none tile closer. This time, there is no escape in 2.2 and you will\nalways die no matter what.\n\nBy the way, both diagrams have the same behavior if the conveyor is\nrightwards and if everything is flipped upside-down. Thankfully, it\ndoesn't seem to be direction-dependent.\n\nThe reason 2.3 lowered the player onto the surface was for consistency\n(see PR #502), and I don't want to undo that. So I think the best\nsolution here is to re-add the extra frame of control by conveyors only\nmoving the player after lifeseq has advanced enough.","shortMessageHtmlLink":"Fix regression: Escape from conveyor spikes"}},{"before":"6930bde91be89640c6b510d22e82d3b1a31042ac","after":"345eca5e10cd3a8cbcd0c7e293732088aba30f39","ref":"refs/heads/master","pushedAt":"2024-08-01T05:17:50.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"InfoTeddy","name":"Misa Elizabeth Kai","path":"/InfoTeddy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59748578?s=80&v=4"},"commit":{"message":"Fix regression: Escape from conveyor spikes\n\nThis fixes a regression from 2.3. Consider the following diagram:\n\n CC\n X CC\n <<<<\n\n\"C\" indicates one tile of a checkpoint entity, \"X\" indicates a spike\ntile, and \"<\" indicates one tile of a conveyor entity that has the\ndefault speed (4 pixels per frame) going leftwards.\n\nNow consider if the player were to touch the checkpoint and die. In 2.2,\nthey would be able to escape from the spike by holding right. But in\n2.3, they would not be able to, and would die from the spike\ncontinuously with no escape.\n\nThis happens because in 2.2, the player would spawn a couple pixels off\nthe surface, and this gained them an extra frame of movement to move\naway from the conveyor. 2.3 places the player directly on the ground,\nmoving them one frame earlier and thus forcing them to their doom.\n\nNow consider the following diagram:\n\n CC\n X CC\n <<<<\n\nThe difference with the previous diagram is that this time, the spike is\none tile closer. This time, there is no escape in 2.2 and you will\nalways die no matter what.\n\nBy the way, both diagrams have the same behavior if the conveyor is\nrightwards and if everything is flipped upside-down. Thankfully, it\ndoesn't seem to be direction-dependent.\n\nThe reason 2.3 lowered the player onto the surface was for consistency\n(see PR #502), and I don't want to undo that. So I think the best\nsolution here is to re-add the extra frame of control by conveyors only\nmoving the player after lifeseq has advanced enough.","shortMessageHtmlLink":"Fix regression: Escape from conveyor spikes"}},{"before":"c636713a4331691d83f101c0967a4fa02d865479","after":"6930bde91be89640c6b510d22e82d3b1a31042ac","ref":"refs/heads/2.4-updates","pushedAt":"2024-07-30T05:48:46.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"InfoTeddy","name":"Misa Elizabeth Kai","path":"/InfoTeddy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59748578?s=80&v=4"},"commit":{"message":"Use variable timestep for `SDL_Delay`\n\nThis fixes a bug where fast-forward wouldn't work in 30-FPS-only mode.\n\nThis is because the 30-FPS-only code has a hardcoded check for the\nnumber 34, as in 34 milliseconds must pass before the next frame can\nadvance. This is why slowdown still worked, because slowdown means\nyou're waiting longer than 34 ms anyways, but fast-forward tries to wait\nfor only 1 ms, which wouldn't work if the 34 limit was still enforced.\n\nSo instead, swap out the 34 with game.get_timestep() and this will be\nfixed.\n\nFixes #1185.","shortMessageHtmlLink":"Use variable timestep for SDL_Delay"}},{"before":"487e0c6b2d3e0ae1bde2e2325b78a9ace30754e6","after":"6930bde91be89640c6b510d22e82d3b1a31042ac","ref":"refs/heads/master","pushedAt":"2024-07-21T01:40:17.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"InfoTeddy","name":"Misa Elizabeth Kai","path":"/InfoTeddy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59748578?s=80&v=4"},"commit":{"message":"Use variable timestep for `SDL_Delay`\n\nThis fixes a bug where fast-forward wouldn't work in 30-FPS-only mode.\n\nThis is because the 30-FPS-only code has a hardcoded check for the\nnumber 34, as in 34 milliseconds must pass before the next frame can\nadvance. This is why slowdown still worked, because slowdown means\nyou're waiting longer than 34 ms anyways, but fast-forward tries to wait\nfor only 1 ms, which wouldn't work if the 34 limit was still enforced.\n\nSo instead, swap out the 34 with game.get_timestep() and this will be\nfixed.\n\nFixes #1185.","shortMessageHtmlLink":"Use variable timestep for SDL_Delay"}},{"before":"c636713a4331691d83f101c0967a4fa02d865479","after":"487e0c6b2d3e0ae1bde2e2325b78a9ace30754e6","ref":"refs/heads/master","pushedAt":"2024-07-13T20:11:05.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"InfoTeddy","name":"Misa Elizabeth Kai","path":"/InfoTeddy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59748578?s=80&v=4"},"commit":{"message":"fix music ear blast bug","shortMessageHtmlLink":"fix music ear blast bug"}},{"before":"53d725f78a3550b750d652a62ffe9d8b51dd0e18","after":"c636713a4331691d83f101c0967a4fa02d865479","ref":"refs/heads/2.4-updates","pushedAt":"2024-07-13T04:40:04.000Z","pushType":"push","commitsCount":9,"pusher":{"login":"InfoTeddy","name":"Misa Elizabeth Kai","path":"/InfoTeddy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59748578?s=80&v=4"},"commit":{"message":"Use add_custom_command over add_custom_target\n\nThis fixes an issue where the CentOS CI kept failing because it couldn't\nfind the generated InterimVersion output file.\n\nIt seems like using the BYPRODUCTS statement in add_custom_target\ndidn't work because BYPRODUCTS was only added in CMake 3.2, so then\nadd_custom_target never ran, which is obviously a problem.\n\nThe solution is to use add_custom_command instead, and to solve the\nproblem that the interim version needs to be regenerated every time no\nmatter what (which is what BYPRODUCTS was supposed to do) we just add a\ndummy output instead.","shortMessageHtmlLink":"Use add_custom_command over add_custom_target"}},{"before":"b0d2a6a3720cbba90696c01beb9b44abf7583578","after":"c636713a4331691d83f101c0967a4fa02d865479","ref":"refs/heads/master","pushedAt":"2024-07-13T04:34:53.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"InfoTeddy","name":"Misa Elizabeth Kai","path":"/InfoTeddy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59748578?s=80&v=4"},"commit":{"message":"Use add_custom_command over add_custom_target\n\nThis fixes an issue where the CentOS CI kept failing because it couldn't\nfind the generated InterimVersion output file.\n\nIt seems like using the BYPRODUCTS statement in add_custom_target\ndidn't work because BYPRODUCTS was only added in CMake 3.2, so then\nadd_custom_target never ran, which is obviously a problem.\n\nThe solution is to use add_custom_command instead, and to solve the\nproblem that the interim version needs to be regenerated every time no\nmatter what (which is what BYPRODUCTS was supposed to do) we just add a\ndummy output instead.","shortMessageHtmlLink":"Use add_custom_command over add_custom_target"}},{"before":"7d01c6bdb0edcc0fcdd12e25545d7732d39ad4b3","after":"b0d2a6a3720cbba90696c01beb9b44abf7583578","ref":"refs/heads/master","pushedAt":"2024-07-13T04:33:48.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"InfoTeddy","name":"Misa Elizabeth Kai","path":"/InfoTeddy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59748578?s=80&v=4"},"commit":{"message":"Add -std=c99 for C-Hashmap and FAudio\n\nGCC on CentOS will default to C90, it seems. This means it needs C99\nexplicitly specified for C-Hashmap and FAudio, or it will fail on them\nusing C99 features (variable declaration in a `for`-loop and the\n`restrict` keyword, respectively).","shortMessageHtmlLink":"Add -std=c99 for C-Hashmap and FAudio"}},{"before":"a990f8d87d0c22015afb5a8630d1d37e2a5d1fac","after":"7d01c6bdb0edcc0fcdd12e25545d7732d39ad4b3","ref":"refs/heads/master","pushedAt":"2024-07-11T18:47:59.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"InfoTeddy","name":"Misa Elizabeth Kai","path":"/InfoTeddy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59748578?s=80&v=4"},"commit":{"message":"Fix double error dialog if data.zip is missing\n\nA minor gripe, but one thing I didn't notice with commit\nb4579d88d3631c36d3c6457e85ca0996c65941ca is that it now results in two\ndialogs if data.zip is missing: The first being the \"data.zip is\nmissing\" dialog, and the second is the generic \"Unable to initialize\nfilesystem\" dialog.\n\nSo just bail early if data.zip can't be found, it's going to take the\nerror path in main() and also bail regardless.","shortMessageHtmlLink":"Fix double error dialog if data.zip is missing"}},{"before":"6df7d5df8af6787e3aee1f4df6639b5aa8e3884c","after":"a990f8d87d0c22015afb5a8630d1d37e2a5d1fac","ref":"refs/heads/master","pushedAt":"2024-07-11T18:44:50.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"InfoTeddy","name":"Misa Elizabeth Kai","path":"/InfoTeddy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59748578?s=80&v=4"},"commit":{"message":"Fix wrong comment on disabling MSVC exceptions\n\n`/EHsc` does not actually disable exceptions on MSVC, it only makes the\ncompiler assume that `extern \"C\"` functions never throw C++ exceptions.\n\nWe had a discussion on Discord about actually disabling exceptions, and\nfrom research, that requires defining `_HAS_EXCEPTIONS=0`, but it's\nunsupported and undocumented so we deemed the benefits not worth it.\nThus, we will stay with `/EHsc`. But the comment still has to be\nupdated.\n\n[skip ci]","shortMessageHtmlLink":"Fix wrong comment on disabling MSVC exceptions"}},{"before":"64c554261ebd37c1cc7ab9632b2585de47e721a6","after":"6df7d5df8af6787e3aee1f4df6639b5aa8e3884c","ref":"refs/heads/master","pushedAt":"2024-06-28T15:03:55.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"InfoTeddy","name":"Misa Elizabeth Kai","path":"/InfoTeddy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59748578?s=80&v=4"},"commit":{"message":"Fix font::print_wrap() name in README-programmers\n\nlang/README-programmers.txt accidentally lists the name of the\nfont::print function twice, when the second one should've been\nfont::print_wrap instead. Oops.\n\n[skip ci]","shortMessageHtmlLink":"Fix font::print_wrap() name in README-programmers"}},{"before":"53d725f78a3550b750d652a62ffe9d8b51dd0e18","after":"64c554261ebd37c1cc7ab9632b2585de47e721a6","ref":"refs/heads/master","pushedAt":"2024-06-10T02:41:48.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"InfoTeddy","name":"Misa Elizabeth Kai","path":"/InfoTeddy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59748578?s=80&v=4"},"commit":{"message":"Fix regression: Entities not moving\n\nCommit 53d725f78a3550b750d652a62ffe9d8b51dd0e18, intended to fix an\noverzealous commit, was itself overzealous. This is because it applied\nto all entities when it should only apply to entity-emitting entities.\nTo fix this, `entityclonefix` needs to no-op if the entity is not an\nentity emitter.\n\nFixes #1176.","shortMessageHtmlLink":"Fix regression: Entities not moving"}},{"before":"c20db02f155caeaac9d241fd8ee19d50f71abec0","after":"53d725f78a3550b750d652a62ffe9d8b51dd0e18","ref":"refs/heads/2.4-updates","pushedAt":"2024-06-07T21:22:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"InfoTeddy","name":"Misa Elizabeth Kai","path":"/InfoTeddy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59748578?s=80&v=4"},"commit":{"message":"Fix regression: Overzealous emitter dupe fix\n\nCommit 4f881b9e26131b2cd259337bf81c89104b349c46 fixed a duplication bug\nwhere enemy movement types 10 and 12 would keep duplicating itself on\nevery frame if it was spawned outside of the rooms they were supposed to\nbe used in the main game. The downside was that this was an overzealous\nfix and unintentionally broke some cases that were working before.\n\nAs brought to my attention by Ally, you can no longer place an edentity\nwith a `p1` of 10 or 12 (translating to movement type 10 or 12) in the\nproper rooms and have it spawn perfectly working entities (that don't\nclone on themselves every frame), whereas you could in 2.2. This is\nconsidered a regression from 2.3.\n\nSo the problem here is that the reason the two emitter entities were so\ndangerous outside their respective rooms is because the entity they\nspawned (`createentity` entry 1) checked if it was in the correct rooms,\nand if so, it would call `setenemy`, and `setenemy` would set the\n`behave` attribute (movement type) correctly, and so the new entity\nwould have a different `behave` that wouldn't be the exact same `behave`\nas the previous one, so it wouldn't be a duplicate emitter entity.\n\nThe previous `entityclonefix` worked okay for entry 1, because it would\nonly be run if the room checks failed and `setenemy` wasn't called, but\nit broke a previously-working case for entry 56, because it was always\nrun for entry 56.\n\nSo the best way to check if we have a dangerous entity is not by seeing\nif it is still `behave` 10 or 12 at the end of entity creation - because\n10 or 12 could be harmless under the right conditions - but by checking\nif the right conditions were satisfied, and if not, then neutralize the\nentity.\n\nI considered making the emitter entities work everywhere - which would\nbe simpler - but I didn't want to go too far and add a new feature,\nespecially in a minor release.","shortMessageHtmlLink":"Fix regression: Overzealous emitter dupe fix"}},{"before":"c20db02f155caeaac9d241fd8ee19d50f71abec0","after":"53d725f78a3550b750d652a62ffe9d8b51dd0e18","ref":"refs/heads/master","pushedAt":"2024-06-07T21:20:28.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"InfoTeddy","name":"Misa Elizabeth Kai","path":"/InfoTeddy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59748578?s=80&v=4"},"commit":{"message":"Fix regression: Overzealous emitter dupe fix\n\nCommit 4f881b9e26131b2cd259337bf81c89104b349c46 fixed a duplication bug\nwhere enemy movement types 10 and 12 would keep duplicating itself on\nevery frame if it was spawned outside of the rooms they were supposed to\nbe used in the main game. The downside was that this was an overzealous\nfix and unintentionally broke some cases that were working before.\n\nAs brought to my attention by Ally, you can no longer place an edentity\nwith a `p1` of 10 or 12 (translating to movement type 10 or 12) in the\nproper rooms and have it spawn perfectly working entities (that don't\nclone on themselves every frame), whereas you could in 2.2. This is\nconsidered a regression from 2.3.\n\nSo the problem here is that the reason the two emitter entities were so\ndangerous outside their respective rooms is because the entity they\nspawned (`createentity` entry 1) checked if it was in the correct rooms,\nand if so, it would call `setenemy`, and `setenemy` would set the\n`behave` attribute (movement type) correctly, and so the new entity\nwould have a different `behave` that wouldn't be the exact same `behave`\nas the previous one, so it wouldn't be a duplicate emitter entity.\n\nThe previous `entityclonefix` worked okay for entry 1, because it would\nonly be run if the room checks failed and `setenemy` wasn't called, but\nit broke a previously-working case for entry 56, because it was always\nrun for entry 56.\n\nSo the best way to check if we have a dangerous entity is not by seeing\nif it is still `behave` 10 or 12 at the end of entity creation - because\n10 or 12 could be harmless under the right conditions - but by checking\nif the right conditions were satisfied, and if not, then neutralize the\nentity.\n\nI considered making the emitter entities work everywhere - which would\nbe simpler - but I didn't want to go too far and add a new feature,\nespecially in a minor release.","shortMessageHtmlLink":"Fix regression: Overzealous emitter dupe fix"}},{"before":"dd15d67e62a17028ecb95e27d7c0e674e67a4577","after":"c20db02f155caeaac9d241fd8ee19d50f71abec0","ref":"refs/heads/2.4-updates","pushedAt":"2024-06-04T22:44:13.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"InfoTeddy","name":"Misa Elizabeth Kai","path":"/InfoTeddy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59748578?s=80&v=4"},"commit":{"message":"Unload zips before loading zips\n\nThis fixes a minor issue where if you had a zip in the levels list, but\nthen removed it, it would still show up in the levels list after\nreloading it (if you also had a .vvvvvv file named the same as in the\nzip) even though it shouldn't.\n\nThankfully, this didn't lead to a memory leak or duplicate zip mounts or\nanything like that, because PhysFS ignores mounting a zip if it's\nalready mounted.\n\nThis also didn't result in a level entry from a zip persisting after\nremoval after reloading the levels list, because the entry would be gone\ndue to the .vvvvvv file not being found.","shortMessageHtmlLink":"Unload zips before loading zips"}},{"before":"dd15d67e62a17028ecb95e27d7c0e674e67a4577","after":"c20db02f155caeaac9d241fd8ee19d50f71abec0","ref":"refs/heads/master","pushedAt":"2024-06-04T22:42:39.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"InfoTeddy","name":"Misa Elizabeth Kai","path":"/InfoTeddy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59748578?s=80&v=4"},"commit":{"message":"Unload zips before loading zips\n\nThis fixes a minor issue where if you had a zip in the levels list, but\nthen removed it, it would still show up in the levels list after\nreloading it (if you also had a .vvvvvv file named the same as in the\nzip) even though it shouldn't.\n\nThankfully, this didn't lead to a memory leak or duplicate zip mounts or\nanything like that, because PhysFS ignores mounting a zip if it's\nalready mounted.\n\nThis also didn't result in a level entry from a zip persisting after\nremoval after reloading the levels list, because the entry would be gone\ndue to the .vvvvvv file not being found.","shortMessageHtmlLink":"Unload zips before loading zips"}},{"before":"a9d43b543f755f59d625cf71ca70617d6fb5da1d","after":"dd15d67e62a17028ecb95e27d7c0e674e67a4577","ref":"refs/heads/2.4-updates","pushedAt":"2024-06-04T04:43:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"InfoTeddy","name":"Misa Elizabeth Kai","path":"/InfoTeddy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59748578?s=80&v=4"},"commit":{"message":"Fix info args not working with -console\n\nThe intention of the `-console` argument was to enable seeing console\noutput on Windows without having to use workarounds. However, this\ndidn't actually work for arguments like `-addresses` and `-version`,\nbecause the program would exit first before it could get the chance to\ncreate the console.\n\nThe other issue is that the console closes too quickly before output can\nbe read by the user. So to fix that, we must hold it open and let the\nuser close it when they want to by waiting for an enter press from\nSTDIN.","shortMessageHtmlLink":"Fix info args not working with -console"}},{"before":"a9d43b543f755f59d625cf71ca70617d6fb5da1d","after":"dd15d67e62a17028ecb95e27d7c0e674e67a4577","ref":"refs/heads/master","pushedAt":"2024-06-04T04:42:57.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"InfoTeddy","name":"Misa Elizabeth Kai","path":"/InfoTeddy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59748578?s=80&v=4"},"commit":{"message":"Fix info args not working with -console\n\nThe intention of the `-console` argument was to enable seeing console\noutput on Windows without having to use workarounds. However, this\ndidn't actually work for arguments like `-addresses` and `-version`,\nbecause the program would exit first before it could get the chance to\ncreate the console.\n\nThe other issue is that the console closes too quickly before output can\nbe read by the user. So to fix that, we must hold it open and let the\nuser close it when they want to by waiting for an enter press from\nSTDIN.","shortMessageHtmlLink":"Fix info args not working with -console"}},{"before":"ff785aaa8af762defd66457f1f9edfb7f499413c","after":"a9d43b543f755f59d625cf71ca70617d6fb5da1d","ref":"refs/heads/2.4-updates","pushedAt":"2024-06-04T03:59:39.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"InfoTeddy","name":"Misa Elizabeth Kai","path":"/InfoTeddy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59748578?s=80&v=4"},"commit":{"message":"Fix regression: Foreground redraw after G keybind\n\nThis fixes a regression from 2.4 where the foreground wouldn't update\nafter using the G keybind to go to a room, requiring the user to touch a\ntile to update the rendering.","shortMessageHtmlLink":"Fix regression: Foreground redraw after G keybind"}},{"before":"16d75d2da81422c802dc23e54865e2b57de79d2b","after":"a9d43b543f755f59d625cf71ca70617d6fb5da1d","ref":"refs/heads/master","pushedAt":"2024-06-04T03:58:53.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"InfoTeddy","name":"Misa Elizabeth Kai","path":"/InfoTeddy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59748578?s=80&v=4"},"commit":{"message":"Fix regression: Foreground redraw after G keybind\n\nThis fixes a regression from 2.4 where the foreground wouldn't update\nafter using the G keybind to go to a room, requiring the user to touch a\ntile to update the rendering.","shortMessageHtmlLink":"Fix regression: Foreground redraw after G keybind"}},{"before":"ff6bb68f3a4594ffe037d89b37c2c8b5b84456db","after":"16d75d2da81422c802dc23e54865e2b57de79d2b","ref":"refs/heads/master","pushedAt":"2024-05-26T06:34:03.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"InfoTeddy","name":"Misa Elizabeth Kai","path":"/InfoTeddy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59748578?s=80&v=4"},"commit":{"message":"Disable state locking if inc'ing state w/ ACTION\n\nThis fixes a bug report from Elomavi that you could still softlock from\nwarping to ship and incrementing the gamestate by pressing ACTION, which\nis diverging behavior from how it was in 2.3. Warping to ship and\nincrementing by pressing ACTION is useful behavior for a couple niche\nspeedrun categories.\n\nI had already fixed this earlier by ignoring state locking if\nglitchrunner 2.2 or 2.0 was enabled, but softlocks could still happen\nbecause having glitchrunner mode off still enabled you to increment the\ngamestate when otherwise unintended. Softlocks shouldn't happen.\n\nBut without removing state locking entirely, I've chosen a middle ground\nwhere it will only be disabled if you press ACTION. That signifies\nintent that you still want to perform state incrementing glitches even\nwith glitchrunner mode off (but in the future it could be considered a\n2.3/2.4 glitch that could be patched and made re-enable-able). That way,\ncasual players can't interrupt the warp to ship by accident (unless they\naccidentally press ACTION) while softlocks will be removed.","shortMessageHtmlLink":"Disable state locking if inc'ing state w/ ACTION"}},{"before":"4b2b4fb7c9ff04e82cd702bf9983cb372c95360a","after":"ff6bb68f3a4594ffe037d89b37c2c8b5b84456db","ref":"refs/heads/master","pushedAt":"2024-05-26T06:33:45.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"InfoTeddy","name":"Misa Elizabeth Kai","path":"/InfoTeddy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59748578?s=80&v=4"},"commit":{"message":"Fix \"Thanks for playing!\" reversed in Flip Mode\n\nFor localization, the \"Thanks for playing!\" text was split into two\nlines, when it was originally one line. Unfortunately, it was not\nupdated to account for Flip Mode, so in Flip Mode, it looked like\n\"playing! Thanks for\".\n\nThis has been fixed.","shortMessageHtmlLink":"Fix \"Thanks for playing!\" reversed in Flip Mode"}},{"before":"d678bd59ff0c1643009e629b9795e87e83c8bd82","after":"4b2b4fb7c9ff04e82cd702bf9983cb372c95360a","ref":"refs/heads/master","pushedAt":"2024-05-22T03:57:20.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"InfoTeddy","name":"Misa Elizabeth Kai","path":"/InfoTeddy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59748578?s=80&v=4"},"commit":{"message":"CONTRIBUTORS.txt: leo60228 -> leo vriska","shortMessageHtmlLink":"CONTRIBUTORS.txt: leo60228 -> leo vriska"}},{"before":"ff785aaa8af762defd66457f1f9edfb7f499413c","after":"d678bd59ff0c1643009e629b9795e87e83c8bd82","ref":"refs/heads/master","pushedAt":"2024-05-02T16:12:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"TerryCavanagh","name":"Terry Cavanagh","path":"/TerryCavanagh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2874150?s=80&v=4"},"commit":{"message":"Added license exception for Recalbox project\n\nhttps://shop.recalbox.com/","shortMessageHtmlLink":"Added license exception for Recalbox project"}},{"before":"3361e71036ee716c46db01e8055ee4e426d56cdc","after":"ff785aaa8af762defd66457f1f9edfb7f499413c","ref":"refs/heads/2.4-updates","pushedAt":"2024-03-30T04:19:40.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"InfoTeddy","name":"Misa Elizabeth Kai","path":"/InfoTeddy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59748578?s=80&v=4"},"commit":{"message":"Bump version to 2.4.2\n\nWe still need to fix a couple bugs from 2.4.0.","shortMessageHtmlLink":"Bump version to 2.4.2"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOC0yN1QyMjozMjo0OS4wMDAwMDBazwAAAASl4F3s","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOC0yN1QyMjozMjo0OS4wMDAwMDBazwAAAASl4F3s","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wMy0zMFQwNDoxOTo0MC4wMDAwMDBazwAAAAQjIpCJ"}},"title":"Activity ยท TerryCavanagh/VVVVVV"}