{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":19346887,"defaultBranch":"horizon","name":"code.pyret.org","ownerLogin":"brownplt","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2014-05-01T14:33:23.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/391839?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1718771495.0","currentOid":""},"activityList":{"items":[{"before":"9a0e6f90050f19378705b09b452ce4c2b05b4d81","after":"3e602e3fbd78c2a530ba25a60fc35f7744a8ec75","ref":"refs/heads/release","pushedAt":"2024-08-28T20:44:58.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jpolitz","name":"Joe Politz","path":"/jpolitz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/119891?s=80&v=4"},"commit":{"message":"kick release to test travis","shortMessageHtmlLink":"kick release to test travis"}},{"before":"91c9087863a535ed41a88cbcbd03c64e9c9e508f","after":"867325c21fd293e88e515ca1230f741d1df04fc3","ref":"refs/heads/horizon","pushedAt":"2024-08-28T19:37:49.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jpolitz","name":"Joe Politz","path":"/jpolitz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/119891?s=80&v=4"},"commit":{"message":"kick horizon to test travis","shortMessageHtmlLink":"kick horizon to test travis"}},{"before":"aded6ae1382e1e0c9aae0c89d7797e87f586e1e1","after":"9a0e6f90050f19378705b09b452ce4c2b05b4d81","ref":"refs/heads/release","pushedAt":"2024-08-28T19:18:23.000Z","pushType":"push","commitsCount":6,"pusher":{"login":"jpolitz","name":"Joe Politz","path":"/jpolitz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/119891?s=80&v=4"},"commit":{"message":"faraday/ruby updates","shortMessageHtmlLink":"faraday/ruby updates"}},{"before":"3aaf59c15fe016cea1b6e252663f1109d55ebd34","after":"a3ed5023158bc10284bbe3b30836bd47a72834d9","ref":"refs/heads/vmt-initialState","pushedAt":"2024-08-14T19:16:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jpolitz","name":"Joe Politz","path":"/jpolitz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/119891?s=80&v=4"},"commit":{"message":"stop before resetting","shortMessageHtmlLink":"stop before resetting"}},{"before":"4cbd795c1bac9bab8f1ac6c66e24a0ac414f6158","after":"3aaf59c15fe016cea1b6e252663f1109d55ebd34","ref":"refs/heads/vmt-initialState","pushedAt":"2024-08-14T18:36:28.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jpolitz","name":"Joe Politz","path":"/jpolitz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/119891?s=80&v=4"},"commit":{"message":"stop before reset","shortMessageHtmlLink":"stop before reset"}},{"before":"fa1dde7653c1b43f00893a986428b18afe7ff007","after":"4cbd795c1bac9bab8f1ac6c66e24a0ac414f6158","ref":"refs/heads/vmt-initialState","pushedAt":"2024-08-14T16:26:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jpolitz","name":"Joe Politz","path":"/jpolitz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/119891?s=80&v=4"},"commit":{"message":"update cpo-main","shortMessageHtmlLink":"update cpo-main"}},{"before":"b214b90cb4e2b6a7d51b8e823bd5ea8bb722a058","after":"fa1dde7653c1b43f00893a986428b18afe7ff007","ref":"refs/heads/vmt-initialState","pushedAt":"2024-08-13T19:06:09.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jpolitz","name":"Joe Politz","path":"/jpolitz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/119891?s=80&v=4"},"commit":{"message":"try longer timeouts first; surprised these are failing when other embed tests working","shortMessageHtmlLink":"try longer timeouts first; surprised these are failing when other emb…"}},{"before":"88aadc42fd3698d593ee779be5fa1f603ef86cc0","after":"b214b90cb4e2b6a7d51b8e823bd5ea8bb722a058","ref":"refs/heads/vmt-initialState","pushedAt":"2024-08-13T18:12:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jpolitz","name":"Joe Politz","path":"/jpolitz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/119891?s=80&v=4"},"commit":{"message":"allow CI to postmessage","shortMessageHtmlLink":"allow CI to postmessage"}},{"before":"0d7bde6036fa29b2fc91fa1e918e8e19112da730","after":"88aadc42fd3698d593ee779be5fa1f603ef86cc0","ref":"refs/heads/vmt-initialState","pushedAt":"2024-08-13T17:46:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jpolitz","name":"Joe Politz","path":"/jpolitz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/119891?s=80&v=4"},"commit":{"message":"reduce timer length to make failed runs quicker","shortMessageHtmlLink":"reduce timer length to make failed runs quicker"}},{"before":"ee2d35a2f083dbc966355aaf87d23d403a773edd","after":"0d7bde6036fa29b2fc91fa1e918e8e19112da730","ref":"refs/heads/vmt-initialState","pushedAt":"2024-08-13T17:39:57.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jpolitz","name":"Joe Politz","path":"/jpolitz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/119891?s=80&v=4"},"commit":{"message":"Properly parameterize tests with the BASE_URL from env","shortMessageHtmlLink":"Properly parameterize tests with the BASE_URL from env"}},{"before":"0ef6624fbaa0ec22b597a075d65ed74d51a936a4","after":"ee2d35a2f083dbc966355aaf87d23d403a773edd","ref":"refs/heads/vmt-initialState","pushedAt":"2024-08-13T17:28:49.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jpolitz","name":"Joe Politz","path":"/jpolitz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/119891?s=80&v=4"},"commit":{"message":"Test with two frames, showing edits propagating across","shortMessageHtmlLink":"Test with two frames, showing edits propagating across"}},{"before":"b45de139e1109a65c2d682b4864628a73da9357a","after":"0ef6624fbaa0ec22b597a075d65ed74d51a936a4","ref":"refs/heads/vmt-initialState","pushedAt":"2024-08-13T17:07:30.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"jpolitz","name":"Joe Politz","path":"/jpolitz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/119891?s=80&v=4"},"commit":{"message":"Don't try to use MESSAGES.sendRpc unless it exists","shortMessageHtmlLink":"Don't try to use MESSAGES.sendRpc unless it exists"}},{"before":"01b65f3be8303f5b902397cfce4b9eeef9bfd671","after":"b45de139e1109a65c2d682b4864628a73da9357a","ref":"refs/heads/vmt-initialState","pushedAt":"2024-08-13T16:56:28.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jpolitz","name":"Joe Politz","path":"/jpolitz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/119891?s=80&v=4"},"commit":{"message":"remove stray logs (that actually log a lot of annoying junk on downloadImg)","shortMessageHtmlLink":"remove stray logs (that actually log a lot of annoying junk on downlo…"}},{"before":"cf602415fe87fa0c4371c795edee5b817ac6db3f","after":"01b65f3be8303f5b902397cfce4b9eeef9bfd671","ref":"refs/heads/vmt-initialState","pushedAt":"2024-08-13T16:31:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jpolitz","name":"Joe Politz","path":"/jpolitz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/119891?s=80&v=4"},"commit":{"message":"Revert \"Basic file locators\"\n\nThis reverts commit d504e15e0ba15c9b39f35073b75b4a8bf6b66594.\n\nThis seems to have caused an issue in the CI; not sure what it is but\nremoving this to see what happens in Travis if we undo it","shortMessageHtmlLink":"Revert \"Basic file locators\""}},{"before":"43c01a79bf271aa29d9eafa7f3b9be0f5c4191f7","after":"cf602415fe87fa0c4371c795edee5b817ac6db3f","ref":"refs/heads/vmt-initialState","pushedAt":"2024-08-13T16:00:40.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jpolitz","name":"Joe Politz","path":"/jpolitz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/119891?s=80&v=4"},"commit":{"message":"hide/remove useless elements when in headless mode","shortMessageHtmlLink":"hide/remove useless elements when in headless mode"}},{"before":"339c1c8963a347322d314f0b08446f9c3445d505","after":"43c01a79bf271aa29d9eafa7f3b9be0f5c4191f7","ref":"refs/heads/vmt-initialState","pushedAt":"2024-08-13T05:07:04.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jpolitz","name":"Joe Politz","path":"/jpolitz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/119891?s=80&v=4"},"commit":{"message":"add test for reset event","shortMessageHtmlLink":"add test for reset event"}},{"before":"fe434a14e48bf3a3947ebbfd6ae4653d774075fa","after":"339c1c8963a347322d314f0b08446f9c3445d505","ref":"refs/heads/vmt-initialState","pushedAt":"2024-08-13T04:52:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jpolitz","name":"Joe Politz","path":"/jpolitz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/119891?s=80&v=4"},"commit":{"message":"bare minimum testing for embedding API (does it send a pyret init","shortMessageHtmlLink":"bare minimum testing for embedding API (does it send a pyret init"}},{"before":"d749850b45d68799e9e20fa89f520d8f82ec2069","after":"fe434a14e48bf3a3947ebbfd6ae4653d774075fa","ref":"refs/heads/vmt-initialState","pushedAt":"2024-08-12T20:11:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jpolitz","name":"Joe Politz","path":"/jpolitz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/119891?s=80&v=4"},"commit":{"message":"reset from the current state; don't expect arbitrary messages to have the same state as a reset","shortMessageHtmlLink":"reset from the current state; don't expect arbitrary messages to have…"}},{"before":"af6f425221af5774c3b9d6bda46791f9331db191","after":"d749850b45d68799e9e20fa89f520d8f82ec2069","ref":"refs/heads/vmt-initialState","pushedAt":"2024-08-12T18:33:53.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jpolitz","name":"Joe Politz","path":"/jpolitz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/119891?s=80&v=4"},"commit":{"message":"Queue all effects from messages in a single queue, reset on run\n\nThis implements strategy #4 from https://github.com/brownplt/code.pyret.org/commit/af6f425221af5774c3b9d6bda46791f9331db191\n\nThe idea is that *all* messages (other than gain/lose control) now go\ninto a queue. Each message's effect is an async thunk (so it returns a\npromise) and there's a standard queue-processing loop for it.\n\nThe exception is run events (as in clicking the Run button), which have\nthe special effect of *stopping the program* and *clearing the queue*.\nThis makes it so clicking “Run” will bring everyone back in sync.\n\nWhen a modal is open, nothing will force it closed for clients other\nthan clicking the run button; interactions typed after it by those\nin control will queue up and wait for the active user to finish the\nmodal evaluation themselves (e.g. closing the window, their stop-when\nterminates). The promise used to finish a run or runInteraction event\nis tied to the termination of the evaluation, so all the ways we have\nof stopping evaluation are supported.\n\nA thought – we could potentially re-enable the stop button for users\nwho aren't in control for long-running or hung programs with this\nscheme, because that can be under independent control.\n\nI think that reset() needs to be rewritten in terms of the queue still,\nbecause its loop over the pending interactions will (I think) continue\nto run even after the stop() from clicking run. So if a reset event\nis followed by a run event, it won't cleanly clear up all the pending\nstuff. This is next up.","shortMessageHtmlLink":"Queue all effects from messages in a single queue, reset on run"}},{"before":"d504e15e0ba15c9b39f35073b75b4a8bf6b66594","after":"af6f425221af5774c3b9d6bda46791f9331db191","ref":"refs/heads/vmt-initialState","pushedAt":"2024-08-06T18:10:53.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jpolitz","name":"Joe Politz","path":"/jpolitz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/119891?s=80&v=4"},"commit":{"message":"Stop, and wait for results from, the last run\n\nThe high-level goal here is a clean solution to having an in-control\nuser move everyone along if a reactor or chart modal is open.\n\nThe idea is to trigger a stop if a user is (a) not in control and (b)\na run or runInteraction event comes in. This means that all users can\ninteract with the chart, reactor, etc on their own, and won't be\ninterrupted if the in-control user stops theirs. But as soon as the in-\ncontrol user moves on to run another interaction or use the Run button,\nit will forcibly stop the other clients.\n\nThis is *not* perfect. Other designs might work better.\n\nThe best case for this design is that people get told in chat that they\nshould close on their own, and the forced stop is just a way to sync\nback up.\n\nSome weaknesses and tradeoffs discussed below:\n\n1. For a main program like this, if the forced stop happens the `r`\n variable ends up not being defined, which isn't great.\n\n r = reactor:\n init: 1,\n on-tick: _ + 1\n end\n\n r.interact()\n\n2. We could capture the “close” event of the modals and try to propagate\n it around. This is tricky because:\n - It's hard to account for all the ways the modal can close (click,\n `stop-when` trigger, reactor ending in error, etc)\n - The in-control user's game might end early (because of stop-when),\n and it could be nice to let others continue.\n\n3. We could trigger something less drastic than a full “stop” event. For\n example, we could just do JSworld.shutdown({ clean: true }) when the\n next interaction happens.\n\n However, a single program can have multiple reactors that open in\n serial, conditional on what actions happened. This happens in\n practice! For example the car simulator in physics starts several\n reactors for several different initial conditions. And in general\n it's nice to have a solution that for sure gives control back to the\n REPL.\n\n4. Another option would be to:\n\n - Queue the interactions that come in while the reactor is running,\n and run them once the reactor stops.\n - Only do a force stop when the *Run* button is clicked.\n\n This would make it so folks can independently run their animations,\n and when they quit the next interactions would start to process. If\n the in control user instead re-runs the whole program, *then* all\n others get stopped. The queue is a bit nontrivial to maintain, but\n this may be a better user experience for when a \"re-sync\" ought to\n happen.\n\n The queue is also nice architecturally because there are potential\n issues of things taking different times to run on different machines\n for long-running programs. This could be a potential issue for e.g.\n loading sheets lagging on some folks' computers and causing them\n to get stopped unnecessarily, and the “queue until rerun” would help\n a lot with that.","shortMessageHtmlLink":"Stop, and wait for results from, the last run"}},{"before":"97d17f6a8901526b74b734ad03636da891ecd588","after":"d504e15e0ba15c9b39f35073b75b4a8bf6b66594","ref":"refs/heads/vmt-initialState","pushedAt":"2024-08-04T04:16:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jpolitz","name":"Joe Politz","path":"/jpolitz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/119891?s=80&v=4"},"commit":{"message":"Basic file locators\n\n- Need to make sure we report them as not present if window.MESSAGES isn't\n- Lots more we can do with modified time, etc, this is just copying from gdrive\n stuff","shortMessageHtmlLink":"Basic file locators"}},{"before":"88cee1577a2ddd0120ff8cc5caeaa4153f264064","after":"97d17f6a8901526b74b734ad03636da891ecd588","ref":"refs/heads/vmt-initialState","pushedAt":"2024-08-02T22:28:33.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jpolitz","name":"Joe Politz","path":"/jpolitz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/119891?s=80&v=4"},"commit":{"message":"RPCs (for getting file contents in VScode)","shortMessageHtmlLink":"RPCs (for getting file contents in VScode)"}},{"before":"7c54fb8c2bbd23981891de7ff917eb88f089741f","after":"aded6ae1382e1e0c9aae0c89d7797e87f586e1e1","ref":"refs/heads/release","pushedAt":"2024-08-02T22:18:18.000Z","pushType":"pr_merge","commitsCount":23,"pusher":{"login":"ds26gte","name":null,"path":"/ds26gte","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3708729?s=80&v=4"},"commit":{"message":"Merge pull request #549 from brownplt/mainmast\n\ndeploy (with new stats functions)","shortMessageHtmlLink":"Merge pull request #549 from brownplt/mainmast"}},{"before":"bd6232da8b7381c108ac491b59268334aa3a1bbf","after":"91c9087863a535ed41a88cbcbd03c64e9c9e508f","ref":"refs/heads/horizon","pushedAt":"2024-08-02T20:50:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jpolitz","name":"Joe Politz","path":"/jpolitz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/119891?s=80&v=4"},"commit":{"message":"remove old conditional for release notes","shortMessageHtmlLink":"remove old conditional for release notes"}},{"before":"69ef8c331a190a357cdd0900f321d6527f9fe3a7","after":"dc3bd720981be2a3b6f9d550da1f568fd99de36a","ref":"refs/heads/mainmast","pushedAt":"2024-08-02T19:57:49.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jpolitz","name":"Joe Politz","path":"/jpolitz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/119891?s=80&v=4"},"commit":{"message":"npm update pyret-lang","shortMessageHtmlLink":"npm update pyret-lang"}},{"before":"53124642ee2c24d2ab80a1eccebc5f2ba599486a","after":"88cee1577a2ddd0120ff8cc5caeaa4153f264064","ref":"refs/heads/vmt-initialState","pushedAt":"2024-08-02T18:42:38.000Z","pushType":"push","commitsCount":16,"pusher":{"login":"jpolitz","name":"Joe Politz","path":"/jpolitz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/119891?s=80&v=4"},"commit":{"message":"fix some initialization issues","shortMessageHtmlLink":"fix some initialization issues"}},{"before":"78ec2bfea17252ecd034d4280ee1d1c23d81becf","after":"bd6232da8b7381c108ac491b59268334aa3a1bbf","ref":"refs/heads/horizon","pushedAt":"2024-08-02T04:28:09.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jpolitz","name":"Joe Politz","path":"/jpolitz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/119891?s=80&v=4"},"commit":{"message":"set status correctly","shortMessageHtmlLink":"set status correctly"}},{"before":"a9ddf0302a533e29e3e117c794e2294bb9817b64","after":"78ec2bfea17252ecd034d4280ee1d1c23d81becf","ref":"refs/heads/horizon","pushedAt":"2024-07-31T18:54:27.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jpolitz","name":"Joe Politz","path":"/jpolitz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/119891?s=80&v=4"},"commit":{"message":"change error for access token fetch to log","shortMessageHtmlLink":"change error for access token fetch to log"}},{"before":"e1c6e1052cc3d2020def89c232e0edfa26902a76","after":"a9ddf0302a533e29e3e117c794e2294bb9817b64","ref":"refs/heads/horizon","pushedAt":"2024-07-31T18:52:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jpolitz","name":"Joe Politz","path":"/jpolitz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/119891?s=80&v=4"},"commit":{"message":"default project name to 'new-project' if not given in URL","shortMessageHtmlLink":"default project name to 'new-project' if not given in URL"}},{"before":"e8968a4876ea73229affcbdade665b22e0894f52","after":"7c54fb8c2bbd23981891de7ff917eb88f089741f","ref":"refs/heads/release","pushedAt":"2024-07-31T18:43:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jpolitz","name":"Joe Politz","path":"/jpolitz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/119891?s=80&v=4"},"commit":{"message":"kick release to pick up new parley/ changes (no new CPO code)","shortMessageHtmlLink":"kick release to pick up new parley/ changes (no new CPO code)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEpvAGIQA","startCursor":null,"endCursor":null}},"title":"Activity · brownplt/code.pyret.org"}