{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":352817527,"defaultBranch":"master","name":"caddy-ratelimit","ownerLogin":"mholt","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2021-03-30T00:02:13.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/1128849?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1715607796.0","currentOid":""},"activityList":{"items":[{"before":"2d18cd2c76cc5578483450f44f417bca8764a8bc","after":"b188193608fbe262c225d556090b9c869a66bb44","ref":"refs/heads/master","pushedAt":"2024-05-15T18:43:19.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mholt","name":"Matt Holt","path":"/mholt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1128849?s=80&v=4"},"commit":{"message":"downgrade the value of `go` directive in go.mod (#49)","shortMessageHtmlLink":"downgrade the value of go directive in go.mod (#49)"}},{"before":"691678be5e21717afa9175956e811894bf7fb532","after":"2d18cd2c76cc5578483450f44f417bca8764a8bc","ref":"refs/heads/master","pushedAt":"2024-05-13T21:17:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mholt","name":"Matt Holt","path":"/mholt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1128849?s=80&v=4"},"commit":{"message":"Downgrade some things, delete dependabot","shortMessageHtmlLink":"Downgrade some things, delete dependabot"}},{"before":"ac84d6838b547f179cb6fa000860822aabc4a311","after":"691678be5e21717afa9175956e811894bf7fb532","ref":"refs/heads/master","pushedAt":"2024-05-13T14:36:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mholt","name":"Matt Holt","path":"/mholt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1128849?s=80&v=4"},"commit":{"message":"(Sigh, stupid dependabot)","shortMessageHtmlLink":"(Sigh, stupid dependabot)"}},{"before":"37b5d9dc99d068effd9cb01262211d18b1961a7c","after":null,"ref":"refs/heads/dependabot/go_modules/github.com/caddyserver/certmagic-0.21.0","pushedAt":"2024-05-13T13:43:16.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":"71375f78015013f4be3d9273405c18fd563e9e35","after":"ac84d6838b547f179cb6fa000860822aabc4a311","ref":"refs/heads/master","pushedAt":"2024-05-13T13:43:08.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mholt","name":"Matt Holt","path":"/mholt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1128849?s=80&v=4"},"commit":{"message":"Bump github.com/caddyserver/certmagic from 0.20.0 to 0.21.0 (#47)\n\nBumps [github.com/caddyserver/certmagic](https://github.com/caddyserver/certmagic) from 0.20.0 to 0.21.0.\r\n- [Release notes](https://github.com/caddyserver/certmagic/releases)\r\n- [Commits](https://github.com/caddyserver/certmagic/compare/v0.20.0...v0.21.0)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: github.com/caddyserver/certmagic\r\n dependency-type: direct:production\r\n update-type: version-update:semver-minor\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \r\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>","shortMessageHtmlLink":"Bump github.com/caddyserver/certmagic from 0.20.0 to 0.21.0 (#47)"}},{"before":null,"after":"37b5d9dc99d068effd9cb01262211d18b1961a7c","ref":"refs/heads/dependabot/go_modules/github.com/caddyserver/certmagic-0.21.0","pushedAt":"2024-05-13T02:43:04.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 github.com/caddyserver/certmagic from 0.20.0 to 0.21.0\n\nBumps [github.com/caddyserver/certmagic](https://github.com/caddyserver/certmagic) from 0.20.0 to 0.21.0.\n- [Release notes](https://github.com/caddyserver/certmagic/releases)\n- [Commits](https://github.com/caddyserver/certmagic/compare/v0.20.0...v0.21.0)\n\n---\nupdated-dependencies:\n- dependency-name: github.com/caddyserver/certmagic\n dependency-type: direct:production\n update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump github.com/caddyserver/certmagic from 0.20.0 to 0.21.0"}},{"before":"359636d470b54958bdf331ff9c687192ba348daa","after":"71375f78015013f4be3d9273405c18fd563e9e35","ref":"refs/heads/master","pushedAt":"2024-04-25T16:39:48.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mholt","name":"Matt Holt","path":"/mholt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1128849?s=80&v=4"},"commit":{"message":"Support zone-scoped matchers in Caddyfile format (#45)","shortMessageHtmlLink":"Support zone-scoped matchers in Caddyfile format (#45)"}},{"before":"3d68475a9bf0e32fc09b674fc04579b16623dd26","after":"359636d470b54958bdf331ff9c687192ba348daa","ref":"refs/heads/master","pushedAt":"2024-03-13T14:17:09.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mholt","name":"Matt Holt","path":"/mholt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1128849?s=80&v=4"},"commit":{"message":"Fix race when initializing ringBufferRateLimiter (#43)\n\nThis closes https://github.com/mholt/caddy-ratelimit/issues/36.\r\n\r\nFixes a race condition between ringBufferRateLimiter creation and its insertion\r\ninto a map. Do this by locking the entire map when we get or insert a\r\nringBufferRateLimiter.\r\n\r\nI have replaced use of sync.Map with a normal `map[string]*ringBufferRateLimiter`\r\nand a `sync.Mutex`. They are passed around with a `rateLimitersMap` struct.\r\nI've factored out logic into methods of rateLimitersMap, which enables some\r\ncareful use of defer `rlm.mu.Unlock()`` to avoid leaving a lock held open\r\non `panic()`.\r\n\r\nWe didn't see a need for a sync.Map. The docs suggest against using it for\r\ntype safety, and none of the suggested use cases apply. https://pkg.go.dev/sync#Map.\r\nLet me know if I'm misunderstanding the use case (very possible!).\r\n\r\nI've removed the sync.Pool, for now. Since ringBufferRateLimiter creation\r\nand insertion is fully synchronized, I didn't see a need for it.\r\n\r\nNote that some of the defensive refactoring is not strictly required--I have\r\na change that preserves the existing data structures, but I think the\r\nsuggested changeset is an overall improvement in maintainability.\r\nhttps://github.com/divviup/caddy-ratelimit/pull/1/commits/65ad951ea012a5410dff297efa9da6f769e20dc0.\r\n\r\nSome discussion of the performance impact and profiles is here\r\nhttps://github.com/divviup/caddy-ratelimit/pull/1.\r\nTL;DR, no meaningful impact to CPU, memory, or latency. This implementation could\r\nbe optimized by replacing the normal mutex with a RWMutex, but it would be\r\na marginal improvement (if any) in exchange for much more complicated locking\r\nsemantics.","shortMessageHtmlLink":"Fix race when initializing ringBufferRateLimiter (#43)"}},{"before":"afdb97dee55540737429de36a9a8077a7a4b0a6d","after":"3d68475a9bf0e32fc09b674fc04579b16623dd26","ref":"refs/heads/master","pushedAt":"2024-03-06T21:08:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mholt","name":"Matt Holt","path":"/mholt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1128849?s=80&v=4"},"commit":{"message":"Log when rate limit exceeded (close #37)","shortMessageHtmlLink":"Log when rate limit exceeded (close #37)"}},{"before":"f1007d5cc0ea76933ec30d59cff08b528de828e1","after":null,"ref":"refs/heads/dependabot/go_modules/github.com/google/uuid-1.6.0","pushedAt":"2024-03-05T07:25:12.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mholt","name":"Matt Holt","path":"/mholt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1128849?s=80&v=4"}},{"before":"a2b31878ccd2f470e01f76e4673c0cebbc314b8a","after":"afdb97dee55540737429de36a9a8077a7a4b0a6d","ref":"refs/heads/master","pushedAt":"2024-03-05T07:25:09.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mholt","name":"Matt Holt","path":"/mholt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1128849?s=80&v=4"},"commit":{"message":"Bump github.com/google/uuid from 1.3.1 to 1.6.0 (#42)\n\nBumps [github.com/google/uuid](https://github.com/google/uuid) from 1.3.1 to 1.6.0.\r\n- [Release notes](https://github.com/google/uuid/releases)\r\n- [Changelog](https://github.com/google/uuid/blob/master/CHANGELOG.md)\r\n- [Commits](https://github.com/google/uuid/compare/v1.3.1...v1.6.0)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: github.com/google/uuid\r\n dependency-type: direct:production\r\n update-type: version-update:semver-minor\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \r\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>","shortMessageHtmlLink":"Bump github.com/google/uuid from 1.3.1 to 1.6.0 (#42)"}},{"before":null,"after":"f1007d5cc0ea76933ec30d59cff08b528de828e1","ref":"refs/heads/dependabot/go_modules/github.com/google/uuid-1.6.0","pushedAt":"2024-03-04T02:13:01.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 github.com/google/uuid from 1.3.1 to 1.6.0\n\nBumps [github.com/google/uuid](https://github.com/google/uuid) from 1.3.1 to 1.6.0.\n- [Release notes](https://github.com/google/uuid/releases)\n- [Changelog](https://github.com/google/uuid/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/google/uuid/compare/v1.3.1...v1.6.0)\n\n---\nupdated-dependencies:\n- dependency-name: github.com/google/uuid\n dependency-type: direct:production\n update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump github.com/google/uuid from 1.3.1 to 1.6.0"}},{"before":"1e36e18bca129bb86f0a653e0fa5b01b6b8823f7","after":null,"ref":"refs/heads/dependabot/go_modules/go.uber.org/zap-1.27.0","pushedAt":"2024-02-26T13:06:41.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":"89a7fece9addf6881169642d0b8a18e79d58e179","after":"a2b31878ccd2f470e01f76e4673c0cebbc314b8a","ref":"refs/heads/master","pushedAt":"2024-02-26T13:06:34.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mholt","name":"Matt Holt","path":"/mholt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1128849?s=80&v=4"},"commit":{"message":"Bump go.uber.org/zap from 1.26.0 to 1.27.0 (#40)","shortMessageHtmlLink":"Bump go.uber.org/zap from 1.26.0 to 1.27.0 (#40)"}},{"before":null,"after":"1e36e18bca129bb86f0a653e0fa5b01b6b8823f7","ref":"refs/heads/dependabot/go_modules/go.uber.org/zap-1.27.0","pushedAt":"2024-02-26T03:00:52.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 go.uber.org/zap from 1.26.0 to 1.27.0\n\nBumps [go.uber.org/zap](https://github.com/uber-go/zap) from 1.26.0 to 1.27.0.\n- [Release notes](https://github.com/uber-go/zap/releases)\n- [Changelog](https://github.com/uber-go/zap/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/uber-go/zap/compare/v1.26.0...v1.27.0)\n\n---\nupdated-dependencies:\n- dependency-name: go.uber.org/zap\n dependency-type: direct:production\n update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump go.uber.org/zap from 1.26.0 to 1.27.0"}},{"before":"8aeaea3aeacb873d2e7435f7cd1676b27a22be68","after":"89a7fece9addf6881169642d0b8a18e79d58e179","ref":"refs/heads/master","pushedAt":"2024-01-15T17:17:08.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mholt","name":"Matt Holt","path":"/mholt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1128849?s=80&v=4"},"commit":{"message":"Mention static and dynamic zones in readme","shortMessageHtmlLink":"Mention static and dynamic zones in readme"}},{"before":"81d4916a7b9f54c3e9af11f133e869572d5919de","after":"8aeaea3aeacb873d2e7435f7cd1676b27a22be68","ref":"refs/heads/master","pushedAt":"2023-12-19T22:58:50.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mholt","name":"Matt Holt","path":"/mholt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1128849?s=80&v=4"},"commit":{"message":"Fix `retry-after` value in distributed case (#34)\n\n* Fix `retry-after` value in distributed case\r\n\r\nThe basic approach in #30 -- to sync around the timestamp of the oldest\r\nevent -- is sound, but the implementation was flawed, because the spot\r\nbefore the cursor is not always the oldest event in the ring buffer. We\r\nnow correctly compute that value while counting events in the window\r\n(which we had to do in order to sync event counts anyway). Additionally,\r\nthis commit adds tests for the distributed rate limiter which simulate a\r\npeer by constructing a `ringBufferRateLimiter`, writing it out to\r\nstorage, and then starting up a `caddytest.Tester` on that storage.\r\n\r\n* Add test for ringbuffer\r\n\r\n* create AppDataDir\r\n\r\n* debugging: print storage path to see what's up on windows\r\n\r\n* escape storage path on windows\r\n\r\n* strip out debug print\r\n\r\n---------\r\n\r\nCo-authored-by: Matt Holt ","shortMessageHtmlLink":"Fix retry-after value in distributed case (#34)"}},{"before":"b557e57bc20621ecbc9564017846ad3ecc4f0285","after":null,"ref":"refs/heads/dependabot/go_modules/github.com/caddyserver/certmagic-0.20.0","pushedAt":"2023-12-19T20:13:23.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":"e5a75aa3cbc2e69116374a3b712ea43c02187894","after":null,"ref":"refs/heads/dependabot/go_modules/github.com/caddyserver/caddy/v2-2.7.6","pushedAt":"2023-12-19T20:12:56.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":"3cd04794dd67cd309a4f0e41ae10c93aabe928b3","after":"81d4916a7b9f54c3e9af11f133e869572d5919de","ref":"refs/heads/master","pushedAt":"2023-12-19T20:12:48.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mholt","name":"Matt Holt","path":"/mholt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1128849?s=80&v=4"},"commit":{"message":"Bump github.com/caddyserver/caddy/v2 from 2.7.5 to 2.7.6 (#32)\n\nBumps [github.com/caddyserver/caddy/v2](https://github.com/caddyserver/caddy) from 2.7.5 to 2.7.6.\r\n- [Release notes](https://github.com/caddyserver/caddy/releases)\r\n- [Changelog](https://github.com/caddyserver/caddy/blob/master/.goreleaser.yml)\r\n- [Commits](https://github.com/caddyserver/caddy/compare/v2.7.5...v2.7.6)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: github.com/caddyserver/caddy/v2\r\n dependency-type: direct:production\r\n update-type: version-update:semver-patch\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \r\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>","shortMessageHtmlLink":"Bump github.com/caddyserver/caddy/v2 from 2.7.5 to 2.7.6 (#32)"}},{"before":"9821f2f04b3699a24d62d5658db81ef05b69ace2","after":"e5a75aa3cbc2e69116374a3b712ea43c02187894","ref":"refs/heads/dependabot/go_modules/github.com/caddyserver/caddy/v2-2.7.6","pushedAt":"2023-12-12T03:53:30.000Z","pushType":"force_push","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 github.com/caddyserver/caddy/v2 from 2.7.5 to 2.7.6\n\nBumps [github.com/caddyserver/caddy/v2](https://github.com/caddyserver/caddy) from 2.7.5 to 2.7.6.\n- [Release notes](https://github.com/caddyserver/caddy/releases)\n- [Changelog](https://github.com/caddyserver/caddy/blob/master/.goreleaser.yml)\n- [Commits](https://github.com/caddyserver/caddy/compare/v2.7.5...v2.7.6)\n\n---\nupdated-dependencies:\n- dependency-name: github.com/caddyserver/caddy/v2\n dependency-type: direct:production\n update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump github.com/caddyserver/caddy/v2 from 2.7.5 to 2.7.6"}},{"before":"aa89b2b99e70bf019185724037d74a248f02b640","after":"b557e57bc20621ecbc9564017846ad3ecc4f0285","ref":"refs/heads/dependabot/go_modules/github.com/caddyserver/certmagic-0.20.0","pushedAt":"2023-12-12T03:52:51.000Z","pushType":"force_push","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 github.com/caddyserver/certmagic from 0.19.2 to 0.20.0\n\nBumps [github.com/caddyserver/certmagic](https://github.com/caddyserver/certmagic) from 0.19.2 to 0.20.0.\n- [Release notes](https://github.com/caddyserver/certmagic/releases)\n- [Commits](https://github.com/caddyserver/certmagic/compare/v0.19.2...v0.20.0)\n\n---\nupdated-dependencies:\n- dependency-name: github.com/caddyserver/certmagic\n dependency-type: direct:production\n update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump github.com/caddyserver/certmagic from 0.19.2 to 0.20.0"}},{"before":"0a1eea2f5242f00ae0f16d52bd55372f662170b7","after":"3cd04794dd67cd309a4f0e41ae10c93aabe928b3","ref":"refs/heads/master","pushedAt":"2023-12-12T03:51:48.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mholt","name":"Matt Holt","path":"/mholt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1128849?s=80&v=4"},"commit":{"message":"Tests for local rate limiter (#33)\n\nAdds tests to exercise a local rate limiter. The test harness needs\r\ncontrol over the current time, so a couple of calls to `time.Since()`\r\nand `time.Until()` are replaced with ones that use `now()` from\r\n`ringbuffer.go`.","shortMessageHtmlLink":"Tests for local rate limiter (#33)"}},{"before":null,"after":"9821f2f04b3699a24d62d5658db81ef05b69ace2","ref":"refs/heads/dependabot/go_modules/github.com/caddyserver/caddy/v2-2.7.6","pushedAt":"2023-12-11T03:00: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 github.com/caddyserver/caddy/v2 from 2.7.5 to 2.7.6\n\nBumps [github.com/caddyserver/caddy/v2](https://github.com/caddyserver/caddy) from 2.7.5 to 2.7.6.\n- [Release notes](https://github.com/caddyserver/caddy/releases)\n- [Changelog](https://github.com/caddyserver/caddy/blob/master/.goreleaser.yml)\n- [Commits](https://github.com/caddyserver/caddy/compare/v2.7.5...v2.7.6)\n\n---\nupdated-dependencies:\n- dependency-name: github.com/caddyserver/caddy/v2\n dependency-type: direct:production\n update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump github.com/caddyserver/caddy/v2 from 2.7.5 to 2.7.6"}},{"before":null,"after":"aa89b2b99e70bf019185724037d74a248f02b640","ref":"refs/heads/dependabot/go_modules/github.com/caddyserver/certmagic-0.20.0","pushedAt":"2023-12-11T03:00:05.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 github.com/caddyserver/certmagic from 0.19.2 to 0.20.0\n\nBumps [github.com/caddyserver/certmagic](https://github.com/caddyserver/certmagic) from 0.19.2 to 0.20.0.\n- [Release notes](https://github.com/caddyserver/certmagic/releases)\n- [Commits](https://github.com/caddyserver/certmagic/compare/v0.19.2...v0.20.0)\n\n---\nupdated-dependencies:\n- dependency-name: github.com/caddyserver/certmagic\n dependency-type: direct:production\n update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump github.com/caddyserver/certmagic from 0.19.2 to 0.20.0"}},{"before":"fde03d3ef1600d2bf3d04aa96417f56abd025928","after":"0a1eea2f5242f00ae0f16d52bd55372f662170b7","ref":"refs/heads/master","pushedAt":"2023-12-08T02:43:45.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mholt","name":"Matt Holt","path":"/mholt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1128849?s=80&v=4"},"commit":{"message":"Distributed rate limiting Retry-After header (#30)","shortMessageHtmlLink":"Distributed rate limiting Retry-After header (#30)"}},{"before":"1ef5298afeec6792f08a00d8bc9ce66edccbfa18","after":"fde03d3ef1600d2bf3d04aa96417f56abd025928","ref":"refs/heads/master","pushedAt":"2023-12-07T22:45:07.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mholt","name":"Matt Holt","path":"/mholt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1128849?s=80&v=4"},"commit":{"message":"Correct JSON configuration example in README (#29)\n\nIn the first JSON config example, the `distributed` block should be a\r\nsibling to `rate_limits`, as it is in the more complete example at the\r\nbottom of the README.","shortMessageHtmlLink":"Correct JSON configuration example in README (#29)"}},{"before":"0d9cd1d583fc7305af71580ce5726b8ed4506d44","after":"1ef5298afeec6792f08a00d8bc9ce66edccbfa18","ref":"refs/heads/master","pushedAt":"2023-11-21T21:37:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mholt","name":"Matt Holt","path":"/mholt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1128849?s=80&v=4"},"commit":{"message":"Update readme","shortMessageHtmlLink":"Update readme"}},{"before":"7d15a0503d79a4f929690d6657110a686f521ae1","after":"0d9cd1d583fc7305af71580ce5726b8ed4506d44","ref":"refs/heads/master","pushedAt":"2023-11-20T15:56:37.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mholt","name":"Matt Holt","path":"/mholt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1128849?s=80&v=4"},"commit":{"message":"Fix dependabot config (#28)","shortMessageHtmlLink":"Fix dependabot config (#28)"}},{"before":"312fa1c1e805e626916e94130d735558a5acc593","after":"7d15a0503d79a4f929690d6657110a686f521ae1","ref":"refs/heads/master","pushedAt":"2023-11-17T14:28:28.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mholt","name":"Matt Holt","path":"/mholt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1128849?s=80&v=4"},"commit":{"message":"Set up dependabot for Go dependencies (#27)\n\nConfigure dependabot to run weekly and open 10 PRs at once, to limit how\r\nmuch clicking the maintainer has to do at once.","shortMessageHtmlLink":"Set up dependabot for Go dependencies (#27)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAESuB47AA","startCursor":null,"endCursor":null}},"title":"Activity ยท mholt/caddy-ratelimit"}