{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":141645094,"defaultBranch":"master","name":"cask","ownerLogin":"com-lihaoyi","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2018-07-20T00:48:20.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/79346799?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1723454694.0","currentOid":""},"activityList":{"items":[{"before":"7dec658976b413e86b5c70f78a38f43fcadc41ad","after":"d77cbb439c36d62df6a4a1a5d2447fc3fbe7b684","ref":"refs/heads/gh-pages","pushedAt":"2024-09-09T09:14:25.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"deploy: 18a6e5a8f841d1e384995c7e7bdf4465c30a3d78","shortMessageHtmlLink":"deploy: 18a6e5a"}},{"before":"bf203ec909d6674ce154007ef2c1a22460f113ac","after":"18a6e5a8f841d1e384995c7e7bdf4465c30a3d78","ref":"refs/heads/master","pushedAt":"2024-09-09T09:13:58.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":"readme","shortMessageHtmlLink":"readme"}},{"before":"781460a7d78f72b6f193257ffaf5de84b34ca770","after":"bf203ec909d6674ce154007ef2c1a22460f113ac","ref":"refs/heads/master","pushedAt":"2024-09-09T08:09:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":"Update .mill-version","shortMessageHtmlLink":"Update .mill-version"}},{"before":"428fc7445a074e8540384fda89e98bcf904794a2","after":"781460a7d78f72b6f193257ffaf5de84b34ca770","ref":"refs/heads/master","pushedAt":"2024-09-07T00:48:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":"Update readme.md","shortMessageHtmlLink":"Update readme.md"}},{"before":"f337901daaf7774fbd67d618e5d7e7fcefd933f7","after":"428fc7445a074e8540384fda89e98bcf904794a2","ref":"refs/heads/master","pushedAt":"2024-08-16T00:16:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":"Update .mill-version","shortMessageHtmlLink":"Update .mill-version"}},{"before":"080f2f3b57209931b1368144b22cdec7cea85586","after":"f337901daaf7774fbd67d618e5d7e7fcefd933f7","ref":"refs/heads/master","pushedAt":"2024-08-12T09:35:25.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jodersky","name":null,"path":"/jodersky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1007012?s=80&v=4"},"commit":{"message":"Specify utf-8 as default form encoding in undertow helper (#138)\n\nThis makes it possible to parse non-ascii characters in form fields.","shortMessageHtmlLink":"Specify utf-8 as default form encoding in undertow helper (#138)"}},{"before":"7d72a1e304ad16d272ef53b2aa26a7772038009c","after":"7dec658976b413e86b5c70f78a38f43fcadc41ad","ref":"refs/heads/gh-pages","pushedAt":"2024-08-12T09:25:57.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"deploy: 2945e1430a7c6323b21a8dfe001a90a356695d39","shortMessageHtmlLink":"deploy: 2945e14"}},{"before":null,"after":"29f5d8aa67c7b567c50021faa41e1a0cbcf30188","ref":"refs/heads/jo/form-utf8","pushedAt":"2024-08-12T09:24:54.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jodersky","name":null,"path":"/jodersky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1007012?s=80&v=4"},"commit":{"message":"Specify utf-8 as default form encoding\n\nThis makes it possible to parse non-ascii characters in form fields.","shortMessageHtmlLink":"Specify utf-8 as default form encoding"}},{"before":"6cf9c8c4fab38575d8183fce0c2c37bc3fde6008","after":"7253b61161b8100f90b417addb0b88c5488f51c5","ref":"refs/heads/jo/inputcontext","pushedAt":"2024-07-24T15:50:35.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jodersky","name":null,"path":"/jodersky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1007012?s=80&v=4"},"commit":{"message":"update example","shortMessageHtmlLink":"update example"}},{"before":"5c8ee7f6d7ca53da30469f31dfcbd4f6bf194ae9","after":"7d72a1e304ad16d272ef53b2aa26a7772038009c","ref":"refs/heads/gh-pages","pushedAt":"2024-07-23T15:14:38.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"deploy: 7a443652bdc9fd559f4aee27a5aa56e2cb521d02","shortMessageHtmlLink":"deploy: 7a44365"}},{"before":null,"after":"6cf9c8c4fab38575d8183fce0c2c37bc3fde6008","ref":"refs/heads/jo/inputcontext","pushedAt":"2024-07-23T14:35:37.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jodersky","name":null,"path":"/jodersky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1007012?s=80&v=4"},"commit":{"message":"Add support for passing custom contexts","shortMessageHtmlLink":"Add support for passing custom contexts"}},{"before":"ec7603e6633b2bcdf9b8d29ce385f268f0059a56","after":"5c8ee7f6d7ca53da30469f31dfcbd4f6bf194ae9","ref":"refs/heads/gh-pages","pushedAt":"2024-07-22T12:21:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"deploy: 080f2f3b57209931b1368144b22cdec7cea85586","shortMessageHtmlLink":"deploy: 080f2f3"}},{"before":"d26a328f87ace3f2b0f649864f669219d4f3ed83","after":null,"ref":"refs/heads/dependabot/github_actions/actions/checkout-4","pushedAt":"2024-07-16T12:56:18.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"}},{"before":"85d00b0aed14caee2d869172fbb41249e43afffd","after":null,"ref":"refs/heads/dependabot/github_actions/peaceiris/actions-gh-pages-4","pushedAt":"2024-07-16T12:56:17.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"}},{"before":"396493915939a515fffd8c8484f42da26dfb9b2a","after":null,"ref":"refs/heads/dependabot/github_actions/actions/setup-java-4","pushedAt":"2024-07-16T12:56:17.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"}},{"before":"3aa116af6dd2d1b3a7c1bde1c27f18da2ee04940","after":"ec7603e6633b2bcdf9b8d29ce385f268f0059a56","ref":"refs/heads/gh-pages","pushedAt":"2024-07-10T14:25:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"deploy: 080f2f3b57209931b1368144b22cdec7cea85586","shortMessageHtmlLink":"deploy: 080f2f3"}},{"before":"709bfd888b5d33154608e2046886526c7a30b202","after":"3aa116af6dd2d1b3a7c1bde1c27f18da2ee04940","ref":"refs/heads/gh-pages","pushedAt":"2024-07-10T14:24:25.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"deploy: 2616b5c21bab8985a1091c2fdc443e259cf41eb8","shortMessageHtmlLink":"deploy: 2616b5c"}},{"before":"2616b5c21bab8985a1091c2fdc443e259cf41eb8","after":"080f2f3b57209931b1368144b22cdec7cea85586","ref":"refs/heads/master","pushedAt":"2024-07-10T14:22:44.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":"[RFC] Allow overlap between static routes and wildcards (#134)\n\nThis changes the DispatchTrie to allow overlapping wildcard segments in\r\npaths with static ones, with a preference for the latter.\r\n\r\nFor example, consider the following routes:\r\n\r\n```\r\n@cask.get(\"/settings\")\r\ndef settings() = \"settings\"\r\n\r\n@cask.get(\"/:id\")\r\ndef user(id: String) = s\"user $id\"\r\n```\r\n\r\nThis is currently not allowed. With these changes, it would be allowed,\r\nand the static route `settings` would be preferred, with a fallback to\r\nthe dynamic route `user`:\r\n\r\n```\r\nGET /settings => settings\r\nGET /foo => user foo\r\nGET /bar => user bar\r\n```\r\n\r\n---\r\n\r\nThe reason I'm proposing this change is mostly for use in HTML\r\napplications (i.e. not RPC-style JSON APIs). In this scenario, short\r\nURLs are useful, since users may type them directly and associate\r\nmeaning to them.\r\n\r\nConsider for example the way GitHub structures URLs. If github were\r\nwritten with cask's current routing logic, it would not be possible to\r\nhave URLs such as `/settings` and `/com-lihaoyi`, and instead some\r\nnamespacing would need to be introduced (e.g. `/orgs/com-lihaoyi`) to\r\nseparate these, which might not actually be relevant for users.\r\n\r\nOf course, with these changes we will no longer catch developer errors\r\nthat accidentally define wildcard-overlapping routes with non-wildcard\r\nones. It will also be up to the application developer to make sure that\r\nthere aren't any accidental overlaps between valid values of wildcards\r\nand static routes (e.g. in the example above, the application developer\r\nwould somehow need to make sure that there isn't a user called\r\n\"settings\" in their system).\r\n\r\nGiven these drawbacks, I'd like to hear your thoughts on this in\r\ngeneral. Personally I think that it's useful to enforce non-overlaps for\r\nAPI purposes, because this forces you to design a more robust url\r\nscheme. However, for HTML application purposes, I think that allowing\r\nshorter URLs is useful and probably outweighs the current limitations.\r\nMaybe we could also come up with a way to make this configurable.","shortMessageHtmlLink":"[RFC] Allow overlap between static routes and wildcards (#134)"}},{"before":"7017cbae18bc5bd85ecc836514febfb35f8cd9d3","after":"2616b5c21bab8985a1091c2fdc443e259cf41eb8","ref":"refs/heads/master","pushedAt":"2024-07-10T14:22:31.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":"Add .bsp to .gitignore (#135)","shortMessageHtmlLink":"Add .bsp to .gitignore (#135)"}},{"before":"37352f34f34eca7e555e010292ef7b117da652c7","after":"709bfd888b5d33154608e2046886526c7a30b202","ref":"refs/heads/gh-pages","pushedAt":"2024-07-08T12:24:23.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"deploy: 927c024dc8bac5d836dad326177a2612d054b7c3","shortMessageHtmlLink":"deploy: 927c024"}},{"before":null,"after":"8e0210ef312419d05968fbd33e7df7f8bebe8176","ref":"refs/heads/jo/dispatch-overlap","pushedAt":"2024-07-08T12:14:35.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jodersky","name":null,"path":"/jodersky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1007012?s=80&v=4"},"commit":{"message":"Allow overlap between static routes and wildcards\n\nThis changes the DispatchTrie to allow overlapping wildcard segments\nin paths with static ones, with a preference for the latter.\n\nFor example, consider the following routes:\n\n```\n@cask.get(\"/settings\")\ndef settings() = \"settings\"\n\n@cask.get(\"/:user\")\ndef user(id: String) = id\n```\n\nThis is currently not allowed. With these changes, it would be\nallowed, and the static route `settings` would be preffered, with a\nfallback to the dynamic route `user`:\n\n```\nGET /settings => settings\nGET /foo => foo\nGET /bar => bar\n```\n\n---\n\nThe reason I'm proposing this change is mostly for use in HTML\napplications (i.e. not RPC-style JSON APIs). In this scenario, short\nURLs are useful, since users may type them directly and associate\nmeaning to them.\n\nConsider for example the way GitHub structures URLs. If github were\nwritten with cask's current routing logic, it would not be possible to\nhave URLs such as `/settings` and `/com-lihaoyi`, and instead some\nnamespacing would need to be introduced (e.g. /orgs/com-lihaoyi/) to\nseparate these, which might not actually be relevant for users.","shortMessageHtmlLink":"Allow overlap between static routes and wildcards"}},{"before":"a6719f691a5ddb218490238ba8e9ff0f80968b1a","after":"7017cbae18bc5bd85ecc836514febfb35f8cd9d3","ref":"refs/heads/master","pushedAt":"2024-07-04T01:26:24.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":"Pass request to error handlers (#133)\n\nThis allows customizing error responses based on data available in\r\nrequests.\r\n\r\nOne scenario would be to display a 404, but with additional context\r\ninformation, e.g. the path or login status of the user taken from\r\ncookies.","shortMessageHtmlLink":"Pass request to error handlers (#133)"}},{"before":null,"after":"f86993f49f27dd23a2d93825dcfd6d0964c98ad7","ref":"refs/heads/jo/handlers","pushedAt":"2024-07-03T15:49:01.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jodersky","name":null,"path":"/jodersky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1007012?s=80&v=4"},"commit":{"message":"Pass request to error handlers\n\nThis allows customizing error responses based on data available in requests.","shortMessageHtmlLink":"Pass request to error handlers"}},{"before":"71999dc8396a4ed3a1539716e5722e117770ee04","after":"37352f34f34eca7e555e010292ef7b117da652c7","ref":"refs/heads/gh-pages","pushedAt":"2024-06-05T13:28:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"deploy: a6719f691a5ddb218490238ba8e9ff0f80968b1a","shortMessageHtmlLink":"deploy: a6719f6"}},{"before":"358043c835ba3dcb3ae73cf082ec62b96231f57a","after":"a6719f691a5ddb218490238ba8e9ff0f80968b1a","ref":"refs/heads/master","pushedAt":"2024-06-05T13:28:05.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":"chore: Rename page 1 (#124)\n\nMotivation: \r\nThe current `:` will cause an issue when checkout on windows.\r\n\r\nModification:\r\nRename the file name.\r\n\r\nResult:\r\nWorks fine on Windows when `git clone`","shortMessageHtmlLink":"chore: Rename page 1 (#124)"}},{"before":null,"after":"d26a328f87ace3f2b0f649864f669219d4f3ed83","ref":"refs/heads/dependabot/github_actions/actions/checkout-4","pushedAt":"2024-06-01T06:15:26.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"},"commit":{"message":"Bump actions/checkout from 2 to 4\n\nBumps [actions/checkout](https://github.com/actions/checkout) from 2 to 4.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v2...v4)\n\n---\nupdated-dependencies:\n- dependency-name: actions/checkout\n dependency-type: direct:production\n update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump actions/checkout from 2 to 4"}},{"before":null,"after":"396493915939a515fffd8c8484f42da26dfb9b2a","ref":"refs/heads/dependabot/github_actions/actions/setup-java-4","pushedAt":"2024-06-01T06:15:22.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"},"commit":{"message":"Bump actions/setup-java from 3 to 4\n\nBumps [actions/setup-java](https://github.com/actions/setup-java) from 3 to 4.\n- [Release notes](https://github.com/actions/setup-java/releases)\n- [Commits](https://github.com/actions/setup-java/compare/v3...v4)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-java\n dependency-type: direct:production\n update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump actions/setup-java from 3 to 4"}},{"before":null,"after":"85d00b0aed14caee2d869172fbb41249e43afffd","ref":"refs/heads/dependabot/github_actions/peaceiris/actions-gh-pages-4","pushedAt":"2024-06-01T06:15:17.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"},"commit":{"message":"Bump peaceiris/actions-gh-pages from 3 to 4\n\nBumps [peaceiris/actions-gh-pages](https://github.com/peaceiris/actions-gh-pages) from 3 to 4.\n- [Release notes](https://github.com/peaceiris/actions-gh-pages/releases)\n- [Changelog](https://github.com/peaceiris/actions-gh-pages/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/peaceiris/actions-gh-pages/compare/v3...v4)\n\n---\nupdated-dependencies:\n- dependency-name: peaceiris/actions-gh-pages\n dependency-type: direct:production\n update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump peaceiris/actions-gh-pages from 3 to 4"}},{"before":"9e55175b835b4da812353f0ad2ae00d7ac3294a9","after":"71999dc8396a4ed3a1539716e5722e117770ee04","ref":"refs/heads/gh-pages","pushedAt":"2024-05-18T06:26:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"deploy: 358043c835ba3dcb3ae73cf082ec62b96231f57a","shortMessageHtmlLink":"deploy: 358043c"}},{"before":"6b5849899a4a2fdda81f72794f403355ec57f277","after":"358043c835ba3dcb3ae73cf082ec62b96231f57a","ref":"refs/heads/master","pushedAt":"2024-05-18T06:25:42.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":"0.9.3","shortMessageHtmlLink":"0.9.3"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0wOVQwOToxNDoyNS4wMDAwMDBazwAAAASwrm4m","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0wOVQwOToxNDoyNS4wMDAwMDBazwAAAASwrm4m","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wNS0xOFQwNjoyNTo0Mi4wMDAwMDBazwAAAARNfIIC"}},"title":"Activity ยท com-lihaoyi/cask"}