)]}'
{
  "log": [
    {
      "commit": "1fc06751a151a3482c5cdbb607077f2db12911d9",
      "tree": "6121520ca6cbaea863bc692398b0c6405870cc74",
      "parents": [
        "f84206aa8f8f3956b53864b965c97c12846eeca3"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Thu Jun 11 11:39:08 2026 -0400"
      },
      "committer": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Thu Jun 11 11:39:41 2026 -0400"
      },
      "message": "enforce text limits for all markdown rendering paths\n"
    },
    {
      "commit": "f84206aa8f8f3956b53864b965c97c12846eeca3",
      "tree": "5d336287e31f4281c4858639c112da72616b73e0",
      "parents": [
        "77dc646341df8c80be607889e1f720a22ded9c03"
      ],
      "author": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Wed May 13 16:05:28 2026 -0600"
      },
      "committer": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Mon Jun 08 11:15:03 2026 -0400"
      },
      "message": "[#8606] Implement field level encryption for EmailAddress email field\n"
    },
    {
      "commit": "77dc646341df8c80be607889e1f720a22ded9c03",
      "tree": "2704b301b6cd8af7405a1a40298cf696f4fa6a4e",
      "parents": [
        "9635e2f437a920df49c23967e2b99fbe7f929a3e"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Fri Jun 05 13:05:32 2026 -0400"
      },
      "committer": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Fri Jun 05 13:05:32 2026 -0400"
      },
      "message": "update httpbin testing domain again\n"
    },
    {
      "commit": "9635e2f437a920df49c23967e2b99fbe7f929a3e",
      "tree": "e8c3a4e2e4571246bbc0ae8c3b473d0d2c3e05c3",
      "parents": [
        "c6f48a4ae209ad54b8e3d2be3ad91d3788aeda88"
      ],
      "author": {
        "name": "Guillermo Cruz",
        "email": "guillermo.cruz@slashdotmedia.com",
        "time": "Fri Jun 05 14:32:56 2026 +0000"
      },
      "committer": {
        "name": "Guillermo Cruz",
        "email": "guillermo.cruz@slashdotmedia.com",
        "time": "Fri Jun 05 14:32:56 2026 +0000"
      },
      "message": "bump webob 1.8.9 -\u003e 1.8.10\n"
    },
    {
      "commit": "c6f48a4ae209ad54b8e3d2be3ad91d3788aeda88",
      "tree": "58e5ba8608e6b95f960be84be99cdc1ec2c72d0c",
      "parents": [
        "2a81793127a338b96521b26d416bdb219d2ad890"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Thu Jun 04 14:30:12 2026 -0400"
      },
      "committer": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Thu Jun 04 14:52:48 2026 -0400"
      },
      "message": "[#8607] lock down get_markdown content type and only to those who could use it to update anyway\n"
    },
    {
      "commit": "2a81793127a338b96521b26d416bdb219d2ad890",
      "tree": "f74ee9f616f367a7b7298144e1174e01a9d0bb8f",
      "parents": [
        "b8de78dbbc909380f4c454ef4cf3885a11e0ca7e"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Thu Jun 04 14:12:27 2026 -0400"
      },
      "committer": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Thu Jun 04 14:12:27 2026 -0400"
      },
      "message": "[#8607] another perm check for MRs\n"
    },
    {
      "commit": "b8de78dbbc909380f4c454ef4cf3885a11e0ca7e",
      "tree": "ec31772d1e032ca79a02f4dfbf988ca5d6cc119e",
      "parents": [
        "f2d93d19a1665407b2125f13f53be59b881d74cb"
      ],
      "author": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Wed May 13 10:53:46 2026 -0600"
      },
      "committer": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Thu Jun 04 12:52:35 2026 -0400"
      },
      "message": "[#8606] Add encrypted field for email from the EmailAddress model\n"
    },
    {
      "commit": "f2d93d19a1665407b2125f13f53be59b881d74cb",
      "tree": "894ccb481f72e8ca996cbfd0017d0359cc5be863",
      "parents": [
        "481b2021abc91a633b1e39f9129b6ee6d3c891ba"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Thu Jun 04 11:43:12 2026 -0400"
      },
      "committer": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Thu Jun 04 11:43:12 2026 -0400"
      },
      "message": "autopep8\n"
    },
    {
      "commit": "481b2021abc91a633b1e39f9129b6ee6d3c891ba",
      "tree": "eee91f476b3bedf336ea620cd5153e481edb42cc",
      "parents": [
        "3e63f3b444b5fa163691e1276a4cac9de2f1b69d"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Tue Jun 02 15:09:40 2026 -0400"
      },
      "committer": {
        "name": "Daniel Castillo",
        "email": "daniel.castillo@slashdotmedia.com",
        "time": "Thu Jun 04 15:02:58 2026 +0000"
      },
      "message": "[#8607] scoping checks for ForgeChat\n"
    },
    {
      "commit": "3e63f3b444b5fa163691e1276a4cac9de2f1b69d",
      "tree": "46b77bf086371da1e7a07837d616c136a1c6df36",
      "parents": [
        "2c8e26f46a7b0845b54a59102dce8cf9ffc1227e"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Tue Jun 02 11:38:07 2026 -0400"
      },
      "committer": {
        "name": "Daniel Castillo",
        "email": "daniel.castillo@slashdotmedia.com",
        "time": "Thu Jun 04 15:02:58 2026 +0000"
      },
      "message": "[#8607] add explicit perm check on project rest controller\n"
    },
    {
      "commit": "2c8e26f46a7b0845b54a59102dce8cf9ffc1227e",
      "tree": "29a1825634a2f8ed6939e50d2cb96ab1e3f6abc5",
      "parents": [
        "160216b15b118b211de43d62f8bf789e3fc365ac"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Sat May 30 12:27:30 2026 -0400"
      },
      "committer": {
        "name": "Daniel Castillo",
        "email": "daniel.castillo@slashdotmedia.com",
        "time": "Thu Jun 04 15:02:58 2026 +0000"
      },
      "message": "[#8607] harden git operations\n"
    },
    {
      "commit": "160216b15b118b211de43d62f8bf789e3fc365ac",
      "tree": "8bdb26032d3cc6d40546db9ba3798e288b17b9cf",
      "parents": [
        "1a0e24b69bea1095197d5acd41069fde04e028ba"
      ],
      "author": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Tue Jun 02 21:01:04 2026 +0000"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Tue Jun 02 21:01:04 2026 +0000"
      },
      "message": "[#11645] Fix email subject text for authentication link test\n"
    },
    {
      "commit": "1a0e24b69bea1095197d5acd41069fde04e028ba",
      "tree": "dd4c440d6767988d970be937490b7b49f13bad76",
      "parents": [
        "500981973743ae8cbc9ec2203c9cfabddcd5fe10"
      ],
      "author": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Tue Jun 02 20:08:44 2026 +0000"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Tue Jun 02 20:08:44 2026 +0000"
      },
      "message": "[#11645] Use jQuery cookie plugin to get CSRF token\n"
    },
    {
      "commit": "500981973743ae8cbc9ec2203c9cfabddcd5fe10",
      "tree": "d3da99085d032b5654c5320eb93996812037c977",
      "parents": [
        "3c975226bfdef8801a99c391235f300303226c67"
      ],
      "author": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Tue Jun 02 20:06:45 2026 +0000"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Tue Jun 02 20:07:19 2026 +0000"
      },
      "message": "[#11645] Restore Authentication Link text in email subject\n"
    },
    {
      "commit": "3c975226bfdef8801a99c391235f300303226c67",
      "tree": "07078c02af9f61c51b844cf224714669a61746a9",
      "parents": [
        "0640949accc798d76e5f71d3cffb44e7a914e498"
      ],
      "author": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Wed May 27 18:40:58 2026 +0000"
      },
      "committer": {
        "name": "Kenton Taylor",
        "email": "ktaylor@slashdotmedia.com",
        "time": "Tue Jun 02 13:58:38 2026 +0000"
      },
      "message": "[#11645] Force /auth/logout to go through a POST request\n"
    },
    {
      "commit": "0640949accc798d76e5f71d3cffb44e7a914e498",
      "tree": "8a7cff727dd5a2603d3fc9c7a80ad60023041a59",
      "parents": [
        "e0de4b3eb1d5dfc1ad170090284c9c9e65625920"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Tue May 26 15:12:53 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:45 2026 +0000"
      },
      "message": "[#8607] solr: syntax problems deserve an escaped retry; don\u0027t expose underlying error messages\n"
    },
    {
      "commit": "e0de4b3eb1d5dfc1ad170090284c9c9e65625920",
      "tree": "c9ec5e30b2ddb03c0134b974a9b277d408682e06",
      "parents": [
        "38b68f9af66dbe271644961b0c00af40c06a2328"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Tue May 26 14:59:41 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:45 2026 +0000"
      },
      "message": "[#8607] solr: strip local-params syntax\n"
    },
    {
      "commit": "38b68f9af66dbe271644961b0c00af40c06a2328",
      "tree": "bdc866e747ce5622a5804779f6d37f21137abcec",
      "parents": [
        "27f7a6906231f4fc217b6542704a7f8b2feecf51"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Tue May 26 13:07:13 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:45 2026 +0000"
      },
      "message": "[#8607] solr: move **kw to specific params for all other tools using common search_app helper\n"
    },
    {
      "commit": "27f7a6906231f4fc217b6542704a7f8b2feecf51",
      "tree": "afdab31ffe9b574ea4d43173d4f94f470b414c9a",
      "parents": [
        "13675be72ef85f44cd33455036bc33849c737ee1"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Fri May 22 16:55:29 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:45 2026 +0000"
      },
      "message": "[#8607] solr: change ticket searches from **kw passthru to explicit\n"
    },
    {
      "commit": "13675be72ef85f44cd33455036bc33849c737ee1",
      "tree": "9e710a91dd25c6b632385bd6bc1265baaf4210a0",
      "parents": [
        "08db8530bdea64778afc9d39e30c9a21e50cf6db"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Fri May 22 16:55:05 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:45 2026 +0000"
      },
      "message": "[#8607] ./run_tests QoL: show final message, allow trailing slash for tab-complete of suites\n"
    },
    {
      "commit": "08db8530bdea64778afc9d39e30c9a21e50cf6db",
      "tree": "81e9b557b3f988cce2db57be1cff3e09fb32ad40",
      "parents": [
        "d4b50318698930b33eff86ddaf54deaf89d4ee63"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Fri May 22 15:49:24 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:45 2026 +0000"
      },
      "message": "[#8607] remove useless try/except/raise\n"
    },
    {
      "commit": "d4b50318698930b33eff86ddaf54deaf89d4ee63",
      "tree": "7522969a4b3e7aa0649264d15aa17ad6bacacb24",
      "parents": [
        "ea0aa7f0bd2bc140d3c36922e281514c36984f82"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Fri May 22 15:49:07 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:45 2026 +0000"
      },
      "message": "[#8607] remove potential info disclosure\n"
    },
    {
      "commit": "ea0aa7f0bd2bc140d3c36922e281514c36984f82",
      "tree": "53ecdb203bb785eee6e694e421539119ed762078",
      "parents": [
        "5f8dca2b79215cd169b99ff7e622f32bb5a5966c"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Thu May 21 18:12:33 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:45 2026 +0000"
      },
      "message": "[#8607] svn tarball path safety\n"
    },
    {
      "commit": "5f8dca2b79215cd169b99ff7e622f32bb5a5966c",
      "tree": "4652ea98676ce54b8441ff5c1c49cbbb65bca5d6",
      "parents": [
        "4a1ac655c4c7b0c5360549ee04d044ba878dd922"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Thu May 21 18:09:57 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:45 2026 +0000"
      },
      "message": "[#8607] be extra safe with display names\n"
    },
    {
      "commit": "4a1ac655c4c7b0c5360549ee04d044ba878dd922",
      "tree": "6a3fdca53a1e316b01cf4cb0ad138990d42ddf66",
      "parents": [
        "c17f5cb0cef71dd6f0773794022bed0c5dd6e99e"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Thu May 21 14:30:26 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:45 2026 +0000"
      },
      "message": "[#8607] various has_access improvements\n"
    },
    {
      "commit": "c17f5cb0cef71dd6f0773794022bed0c5dd6e99e",
      "tree": "1599bb17f0d085fd1a43d335cdf9623461413ce9",
      "parents": [
        "ca1ac596bcd604504bcc8a5115c773b8c8a27915"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Wed May 20 18:12:10 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:44 2026 +0000"
      },
      "message": "[#8607] check activity nbhd\n"
    },
    {
      "commit": "ca1ac596bcd604504bcc8a5115c773b8c8a27915",
      "tree": "3d9db7ab9401fe217dd4a6e5f0989674b585a683",
      "parents": [
        "a23ae3560f10b0efcdccf4c918d6d506053f7e23"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Wed May 20 17:26:21 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:44 2026 +0000"
      },
      "message": "[#8607] check subproject parent\n"
    },
    {
      "commit": "a23ae3560f10b0efcdccf4c918d6d506053f7e23",
      "tree": "7f4dd356a5e6afbf46d8d286686bd8807fe54b73",
      "parents": [
        "717a0f1f1bfa30c45401ba5aa3366a57e3531316"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Wed May 20 16:22:54 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:44 2026 +0000"
      },
      "message": "[#8607] replace last pickle usage with our own bit of compatible code\n"
    },
    {
      "commit": "717a0f1f1bfa30c45401ba5aa3366a57e3531316",
      "tree": "bd7677587a29699f3ea623aaa990a71beec59c61",
      "parents": [
        "281e56b79ddb9f26a607f4f1af18fc3dfddd937b"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Tue May 19 12:43:14 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:44 2026 +0000"
      },
      "message": "[#8607] remove old pickle-based session support\n"
    },
    {
      "commit": "281e56b79ddb9f26a607f4f1af18fc3dfddd937b",
      "tree": "c1993afd0950eebe10032fe8ab8fb31cf50094d1",
      "parents": [
        "4f58190ac1d5740a21dda9fddb4d735257563568"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Tue May 19 17:28:11 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:44 2026 +0000"
      },
      "message": "[#8607] add X-Content-Type-Options header\n"
    },
    {
      "commit": "4f58190ac1d5740a21dda9fddb4d735257563568",
      "tree": "1051a307725a53092e08dce7a5e7c74aff04792d",
      "parents": [
        "e53e9e322cbaafc59ed77055bdc1e47c08bc3cbe"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Tue May 19 12:36:38 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:44 2026 +0000"
      },
      "message": "[#8607] harden attachment upload\n"
    },
    {
      "commit": "e53e9e322cbaafc59ed77055bdc1e47c08bc3cbe",
      "tree": "9e588d03ca512768292600dc642362e0e692d473",
      "parents": [
        "36c613388e1dd352bb37b71b0b1d73438ee9dd2a"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Tue May 19 12:35:26 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:44 2026 +0000"
      },
      "message": "[#8607] test for save_attachments (export) path handling\n"
    },
    {
      "commit": "36c613388e1dd352bb37b71b0b1d73438ee9dd2a",
      "tree": "3744efc47fc939d21ad7c6b0ab07ad92fb97671d",
      "parents": [
        "bb89bba9f370db183c4d9aaa78b4929981a2fdb4"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Mon May 18 15:10:49 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:44 2026 +0000"
      },
      "message": "[#8607] check client_id when making bearer token\n"
    },
    {
      "commit": "bb89bba9f370db183c4d9aaa78b4929981a2fdb4",
      "tree": "63c07757f61134b872962a55f8b3397bf21febc6",
      "parents": [
        "2a6733f1fb8cf87df74cfa002ff59fcd4407f1ff"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Mon May 18 13:27:01 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:44 2026 +0000"
      },
      "message": "[#8607] perm checks in markdown_to_html and fix wiki tool check\n"
    },
    {
      "commit": "2a6733f1fb8cf87df74cfa002ff59fcd4407f1ff",
      "tree": "6c4e017d703353e1a466bca44ea13de60626030f",
      "parents": [
        "c57d7100e6897679d141a3a08ae2f53424a85132"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Sat May 16 11:16:00 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:44 2026 +0000"
      },
      "message": "[#8607] safer pwd comparison\n"
    },
    {
      "commit": "c57d7100e6897679d141a3a08ae2f53424a85132",
      "tree": "18202fc6c38af327d7392f0ce722dc19f984a9b5",
      "parents": [
        "b9831581ebb1d8ac63c6aa5129c14cfbfa608e5a"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Fri May 15 18:36:31 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:44 2026 +0000"
      },
      "message": "[#8607] replace random with secrets in some places\n"
    },
    {
      "commit": "b9831581ebb1d8ac63c6aa5129c14cfbfa608e5a",
      "tree": "c1bd3cd6de4f17d520c4fa07721afa65df4240f1",
      "parents": [
        "5a99493a5aecc40b9438b85c70a455648f3b4305"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Fri May 15 18:20:20 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:44 2026 +0000"
      },
      "message": "[#8607] check subscribe here too\n"
    },
    {
      "commit": "5a99493a5aecc40b9438b85c70a455648f3b4305",
      "tree": "986f13623a9b29c68f3ed7d070252b9190fcaf1a",
      "parents": [
        "b763ed7c6dac7ebcd8420f52a3d2567114d22013"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Fri May 15 18:16:58 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:44 2026 +0000"
      },
      "message": "[#8607] check before mailbox sub too\n"
    },
    {
      "commit": "b763ed7c6dac7ebcd8420f52a3d2567114d22013",
      "tree": "42a4c17907d468fd52a17a4c3ab94ae320814a88",
      "parents": [
        "13d1f75efc28efdcbadd12cc68b8b7725942210c"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Fri May 15 18:10:57 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:44 2026 +0000"
      },
      "message": "[#8607] check mailbox owner\n"
    },
    {
      "commit": "13d1f75efc28efdcbadd12cc68b8b7725942210c",
      "tree": "a56e2f3cc4480847db5eb871a77e90120e0cfa8c",
      "parents": [
        "da788988df6015778be0aecaf5808be1da940c84"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Fri May 15 18:03:43 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:44 2026 +0000"
      },
      "message": "[#8607] check project when loading role_id inputs\n"
    },
    {
      "commit": "da788988df6015778be0aecaf5808be1da940c84",
      "tree": "6fc1c5eb78bfacf5f5f4fb2aa70f55dd67178db4",
      "parents": [
        "a3d4086793c6792bf1e41c4cbe7304bcae167b43"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Fri May 15 17:53:43 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:44 2026 +0000"
      },
      "message": "[#8607] move |safe to be directly on the string source\n"
    },
    {
      "commit": "a3d4086793c6792bf1e41c4cbe7304bcae167b43",
      "tree": "3191c0ea52e1e89d6c99d554588a9e75a98fc7b8",
      "parents": [
        "120de2c81c621819553304b49f8136f330c2020d"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Fri May 15 16:51:36 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:44 2026 +0000"
      },
      "message": "[#8607] check app_config_id in update_forums\n"
    },
    {
      "commit": "120de2c81c621819553304b49f8136f330c2020d",
      "tree": "886cd2e290a5d48f5591945261bc7a5fea6488d0",
      "parents": [
        "b8d1b43991101ae85453dae18e4d844dbc6091a7"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Fri May 15 13:05:16 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:44 2026 +0000"
      },
      "message": "[#8607] add comments, add test\n"
    },
    {
      "commit": "b8d1b43991101ae85453dae18e4d844dbc6091a7",
      "tree": "64641eb84badf0538b067d78a358dc369b132758",
      "parents": [
        "3d9cc03efafe28ebdc199fc32411e6fb195a0d53"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Fri May 15 11:29:00 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:44 2026 +0000"
      },
      "message": "[#8607] test for zipdir symlink handling\n"
    },
    {
      "commit": "3d9cc03efafe28ebdc199fc32411e6fb195a0d53",
      "tree": "1bfa601301bafa9a140e6b4f6ee0e3ef906cdaf0",
      "parents": [
        "01d6fe7f657ada6590802b95a888c9f6124c46b8"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Wed May 13 17:24:19 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:44 2026 +0000"
      },
      "message": "[#8607] move webhook send from requests to urlopen so our NoInternal handlers run automatically including on redirects\n"
    },
    {
      "commit": "01d6fe7f657ada6590802b95a888c9f6124c46b8",
      "tree": "5df5981f90db80495a56b3d89864cf5cb737c3a4",
      "parents": [
        "3d53e1e17b9b80be9699e3911be55c05fde9b2c4"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Wed May 13 13:15:04 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:44 2026 +0000"
      },
      "message": "[#8607] test for oembed output security\n"
    },
    {
      "commit": "3d53e1e17b9b80be9699e3911be55c05fde9b2c4",
      "tree": "6f3a61fa3a8974af69d8a420a68e143619a65c6e",
      "parents": [
        "ff1161503cad5b71f32cfedbeabc299f186f67d3"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Wed May 13 12:14:42 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:44 2026 +0000"
      },
      "message": "[#8607] check for email code mode when verifying email link\n"
    },
    {
      "commit": "ff1161503cad5b71f32cfedbeabc299f186f67d3",
      "tree": "0368ab450f902bde0c3cd2b7073c869a2168b174",
      "parents": [
        "4bb6a4922edcf1f5a00474bc58e4bf09f5838735"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Tue May 12 16:43:57 2026 -0400"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:27:44 2026 +0000"
      },
      "message": "[#8607] escape html in a few places\n"
    },
    {
      "commit": "4bb6a4922edcf1f5a00474bc58e4bf09f5838735",
      "tree": "6355f02c2a15dbbd37382c19dcd2d47a45424acb",
      "parents": [
        "6f41f0112c77136051ef8008e4bd3ac224be2de6"
      ],
      "author": {
        "name": "Dillon Walls",
        "email": "dillon.walls@slashdotmedia.com",
        "time": "Wed May 13 14:48:21 2026 +0000"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri May 29 17:05:18 2026 +0000"
      },
      "message": "[#8605] Use C.UTF-8 locale instead of en_US.UTF-8 for SVN export\n"
    },
    {
      "commit": "6f41f0112c77136051ef8008e4bd3ac224be2de6",
      "tree": "9a30b9de990c3bc597a7017a54644a7fbf55eab0",
      "parents": [
        "25fb5386d1b5cf4ddafd5b46daea3aebcc40c433"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Wed May 27 09:53:02 2026 -0400"
      },
      "committer": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Wed May 27 09:53:02 2026 -0400"
      },
      "message": "add \u0026 update some mongo indexes\n"
    },
    {
      "commit": "25fb5386d1b5cf4ddafd5b46daea3aebcc40c433",
      "tree": "da3c03417a1b3916eb5eb1cd588f11b551b6cc83",
      "parents": [
        "4eef6f1b9f746a933a5f4ee4467eb845e206c793"
      ],
      "author": {
        "name": "Guillermo Cruz",
        "email": "guillermo.cruz@slashdotmedia.com",
        "time": "Mon May 25 10:01:53 2026 -0600"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Tue May 26 10:08:43 2026 -0600"
      },
      "message": "fixup! [#8608] precommit pin dependencies and updates\n"
    },
    {
      "commit": "4eef6f1b9f746a933a5f4ee4467eb845e206c793",
      "tree": "13faf6f60120b52f4742099ae7760b45a95644f4",
      "parents": [
        "8dd8d20a7fb1c65df2ed96cb48a2b9407f2aabc7"
      ],
      "author": {
        "name": "Guillermo Cruz",
        "email": "guillermo.cruz@slashdotmedia.com",
        "time": "Wed May 20 22:19:34 2026 +0000"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Tue May 26 10:08:43 2026 -0600"
      },
      "message": "[#8608] precommit pin dependencies and updates\n"
    },
    {
      "commit": "8dd8d20a7fb1c65df2ed96cb48a2b9407f2aabc7",
      "tree": "d31e90040bfa1a2b0e978e762d1d0a993203d082",
      "parents": [
        "9efd8e8886f99d1cf56997347ad93888e2cf73e8"
      ],
      "author": {
        "name": "Guillermo Cruz",
        "email": "guillermo.cruz@slashdotmedia.com",
        "time": "Mon May 25 08:55:35 2026 -0600"
      },
      "committer": {
        "name": "Guillermo Cruz",
        "email": "guillermo.cruz@slashdotmedia.com",
        "time": "Mon May 25 08:55:35 2026 -0600"
      },
      "message": "[#8609] include geo information that could be available for the html template\n"
    },
    {
      "commit": "9efd8e8886f99d1cf56997347ad93888e2cf73e8",
      "tree": "97e2bca08c0767b4e1cc0d347b00e0b2e5124045",
      "parents": [
        "32aa4dc400a9b58eaf9919ec27de176e467fa564"
      ],
      "author": {
        "name": "Guillermo Cruz",
        "email": "guillermo.cruz@slashdotmedia.com",
        "time": "Wed May 20 14:56:44 2026 +0000"
      },
      "committer": {
        "name": "Guillermo Cruz",
        "email": "guillermo.cruz@slashdotmedia.com",
        "time": "Wed May 20 14:56:44 2026 +0000"
      },
      "message": "bump idna 3.11 -\u003e 3.15\n"
    },
    {
      "commit": "32aa4dc400a9b58eaf9919ec27de176e467fa564",
      "tree": "9cec457a3aecb89ef871a0911350454e850bfc0f",
      "parents": [
        "1f9e0deb8817ac3e3558bafddc77363688f098b9"
      ],
      "author": {
        "name": "Daniel Castillo",
        "email": "daniel.castillo@slashdotmedia.com",
        "time": "Tue May 19 19:23:09 2026 +0000"
      },
      "committer": {
        "name": "Daniel Castillo",
        "email": "daniel.castillo@slashdotmedia.com",
        "time": "Tue May 19 19:23:09 2026 +0000"
      },
      "message": "form-action change from self to base_url to avoid proxied sites\n"
    },
    {
      "commit": "1f9e0deb8817ac3e3558bafddc77363688f098b9",
      "tree": "bc0cbb23feffe97412304560d178a6c54679c815",
      "parents": [
        "61b040c14d865ca5ea62b3d1244d8d292929b214"
      ],
      "author": {
        "name": "Daniel Castillo",
        "email": "daniel.castillo@slashdotmedia.com",
        "time": "Tue May 12 16:58:36 2026 +0000"
      },
      "committer": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Tue May 19 16:39:36 2026 +0000"
      },
      "message": "[#11526] form-action from self to base_url\n"
    },
    {
      "commit": "61b040c14d865ca5ea62b3d1244d8d292929b214",
      "tree": "f1e76dd4b8c130ee4fe67f32c1786b075f5d0a47",
      "parents": [
        "3ba29f3890047baa75d027998a2c58481b8be6b2"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Mon May 18 11:34:44 2026 -0400"
      },
      "committer": {
        "name": "Kenton Taylor",
        "email": "ktaylor@slashdotmedia.com",
        "time": "Tue May 19 15:36:54 2026 +0000"
      },
      "message": "make with_trailing_slash and without_trailing_slash apply to HEAD requests too\n"
    },
    {
      "commit": "3ba29f3890047baa75d027998a2c58481b8be6b2",
      "tree": "cc0936427a0dd7c7be60cf702d0bd9c88c7d4ff0",
      "parents": [
        "82a94e6ea07382390bb4f4e0962afd920758fd58"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Tue May 19 11:23:13 2026 -0400"
      },
      "committer": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Tue May 19 11:23:13 2026 -0400"
      },
      "message": "another fix for clone task validation: move validation down into init_as_clone and do file path and URL validation separately based on which is used\n"
    },
    {
      "commit": "82a94e6ea07382390bb4f4e0962afd920758fd58",
      "tree": "1b0cf131dbb03c4ae0d1bf5bd5050fe8079402fa",
      "parents": [
        "006ae2532cb8df95fea6984fc19dbb83f019e59f"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Mon May 18 16:13:21 2026 -0400"
      },
      "committer": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Mon May 18 16:13:21 2026 -0400"
      },
      "message": "fix scheme/protocol checking in clone task\n"
    },
    {
      "commit": "006ae2532cb8df95fea6984fc19dbb83f019e59f",
      "tree": "d3c6d050d2383f8ff77d5ed9e0439a7dd3cc2d81",
      "parents": [
        "719ec4084a17ac95cfdea595ca85a0db41888ee6"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Mon May 18 11:18:45 2026 -0400"
      },
      "committer": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Mon May 18 11:18:45 2026 -0400"
      },
      "message": "change httpbin domain we use, so redirect-to tests keep working\n"
    },
    {
      "commit": "719ec4084a17ac95cfdea595ca85a0db41888ee6",
      "tree": "80d0f39cdc9604d20e009dc11fcc8abe855bb591",
      "parents": [
        "6754e9c9fca927a74c9a30790ada9a5efcca950f"
      ],
      "author": {
        "name": "The Apache Software Foundation",
        "email": "root-asf-gitbox-commits@apache.org",
        "time": "Fri May 15 13:47:32 2026 -0500"
      },
      "committer": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Fri May 15 16:28:30 2026 -0400"
      },
      "message": "Set up default protection ruleset for default and release branches"
    },
    {
      "commit": "6754e9c9fca927a74c9a30790ada9a5efcca950f",
      "tree": "938b9f8814c2160c3c0f86301d170ba59bcd3217",
      "parents": [
        "68b8d44c0361b6936173d497b626f905f83bcd18"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Tue May 12 16:15:09 2026 -0400"
      },
      "committer": {
        "name": "Kenton Taylor",
        "email": "ktaylor@slashdotmedia.com",
        "time": "Wed May 13 17:55:15 2026 +0000"
      },
      "message": "[#8603] check multifactor login mode\n"
    },
    {
      "commit": "68b8d44c0361b6936173d497b626f905f83bcd18",
      "tree": "c2638011df608091094d9a10df58fc3c47c10be2",
      "parents": [
        "bb66149d532c4bbbc55c20dc7e7aa63360a3045f"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Mon May 11 13:42:09 2026 -0400"
      },
      "committer": {
        "name": "Kenton Taylor",
        "email": "ktaylor@slashdotmedia.com",
        "time": "Wed May 13 17:55:15 2026 +0000"
      },
      "message": "[#8603] validate URLs on clone tasks too (e.g. if task delayed from form usage, and DNS changes)\n"
    },
    {
      "commit": "bb66149d532c4bbbc55c20dc7e7aa63360a3045f",
      "tree": "f578536d4669a754413db8ba9f2f96d73419d77c",
      "parents": [
        "8e96d70099ff566055c1f82f22ea9bae03b80f08"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Wed May 06 17:18:23 2026 -0400"
      },
      "committer": {
        "name": "Kenton Taylor",
        "email": "ktaylor@slashdotmedia.com",
        "time": "Wed May 13 17:55:15 2026 +0000"
      },
      "message": "[#8603] use Markup in SxsOutputGenerator\n"
    },
    {
      "commit": "8e96d70099ff566055c1f82f22ea9bae03b80f08",
      "tree": "e670ab5f7c46730741a9bf20b87e974dcf7bce02",
      "parents": [
        "b7d28e8923c164bdd6d1b6f40840d6d039ae3f33"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Wed May 06 12:40:38 2026 -0400"
      },
      "committer": {
        "name": "Kenton Taylor",
        "email": "ktaylor@slashdotmedia.com",
        "time": "Wed May 13 17:55:15 2026 +0000"
      },
      "message": "[#8603] NonPrivateUrl checks all host\u003d\u003eIP resolutions not just one\n"
    },
    {
      "commit": "b7d28e8923c164bdd6d1b6f40840d6d039ae3f33",
      "tree": "a6dc95edcf96045b5d8de7b0cda45bf63642a504",
      "parents": [
        "4fe4e280870d357be343d7d02139db0c9bb0fc16"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Tue May 05 17:32:29 2026 -0400"
      },
      "committer": {
        "name": "Kenton Taylor",
        "email": "ktaylor@slashdotmedia.com",
        "time": "Wed May 13 17:55:15 2026 +0000"
      },
      "message": "[#8603] escape regexes in tag search\n"
    },
    {
      "commit": "4fe4e280870d357be343d7d02139db0c9bb0fc16",
      "tree": "ee9d5f21d90c7c4af89d73cda74ec9463d8cb864",
      "parents": [
        "7013d3506ea793e738be2e3762b1376eef126fed"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Tue May 05 17:21:27 2026 -0400"
      },
      "committer": {
        "name": "Kenton Taylor",
        "email": "ktaylor@slashdotmedia.com",
        "time": "Wed May 13 17:55:15 2026 +0000"
      },
      "message": "[#8603] only permit local access to /auth/repo_permissions\n"
    },
    {
      "commit": "7013d3506ea793e738be2e3762b1376eef126fed",
      "tree": "5a3a86afba814aedad5729bd5f08df11e6182c68",
      "parents": [
        "46cb8e64ff63948921d55a3c2c902dbe8681e83f"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Tue May 05 17:21:04 2026 -0400"
      },
      "committer": {
        "name": "Kenton Taylor",
        "email": "ktaylor@slashdotmedia.com",
        "time": "Wed May 13 17:55:15 2026 +0000"
      },
      "message": "[#8603] use _verify_return_to in pwd_expired_change\n"
    },
    {
      "commit": "46cb8e64ff63948921d55a3c2c902dbe8681e83f",
      "tree": "93d3910d25d685a25bb1ac18f0390710d16eba14",
      "parents": [
        "bc0c96d0dd64a19752ae59505819989a9d30c445"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Tue May 05 13:35:57 2026 -0400"
      },
      "committer": {
        "name": "Kenton Taylor",
        "email": "ktaylor@slashdotmedia.com",
        "time": "Wed May 13 17:55:15 2026 +0000"
      },
      "message": "[#8603] change AlluraUserProperty User reference so that ShortUrl doesn\u0027t error strangely on shorturl.create_user \u003d c.user._id (tests were always passing too, weird)\n"
    },
    {
      "commit": "bc0c96d0dd64a19752ae59505819989a9d30c445",
      "tree": "875def677f688cf14eb9e3ee596005cdf27d6824",
      "parents": [
        "e154040e099cbad0749f7831a691c334da2245f1"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Tue May 05 13:34:41 2026 -0400"
      },
      "committer": {
        "name": "Kenton Taylor",
        "email": "ktaylor@slashdotmedia.com",
        "time": "Wed May 13 17:55:15 2026 +0000"
      },
      "message": "[#8603] add @require_post to a few endpoints\n"
    },
    {
      "commit": "e154040e099cbad0749f7831a691c334da2245f1",
      "tree": "0808107d9cc4875e8ce15ce120611233866e3bf0",
      "parents": [
        "bbd1d71504af1060fb410905f4ca754f9a4b3ee5"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Tue May 05 12:01:35 2026 -0400"
      },
      "committer": {
        "name": "Kenton Taylor",
        "email": "ktaylor@slashdotmedia.com",
        "time": "Wed May 13 17:55:15 2026 +0000"
      },
      "message": "[#8603] test to know forgeblog/main.py setattr loop is ok\n"
    },
    {
      "commit": "bbd1d71504af1060fb410905f4ca754f9a4b3ee5",
      "tree": "bf4741e5daff9b9f77bd724447bb3081df6f98ab",
      "parents": [
        "6defa33fbc1672916216fb87e87cb25cc0a24113"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Tue May 05 11:54:36 2026 -0400"
      },
      "committer": {
        "name": "Kenton Taylor",
        "email": "ktaylor@slashdotmedia.com",
        "time": "Wed May 13 17:55:15 2026 +0000"
      },
      "message": "[#8603] urlopen_allow_internal_hostnames setting should work for webhook and importer forms\n"
    },
    {
      "commit": "6defa33fbc1672916216fb87e87cb25cc0a24113",
      "tree": "c8b4e7c29777699613fa59ec755a6c00e4458afb",
      "parents": [
        "56e69cbb321faf3a1ae619f6ce6c7fc799e925a7"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Tue May 05 11:42:25 2026 -0400"
      },
      "committer": {
        "name": "Kenton Taylor",
        "email": "ktaylor@slashdotmedia.com",
        "time": "Wed May 13 17:55:15 2026 +0000"
      },
      "message": "[#8603] use NonPrivateUrl on webhooks (does allow for IP addrs now also)\n"
    },
    {
      "commit": "56e69cbb321faf3a1ae619f6ce6c7fc799e925a7",
      "tree": "619c509ea63643c12930040b3bd9a43d32e198ae",
      "parents": [
        "06d41c29ab251f0c737f5df669b4578ee50255e2"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Wed Apr 29 17:36:37 2026 -0400"
      },
      "committer": {
        "name": "Kenton Taylor",
        "email": "ktaylor@slashdotmedia.com",
        "time": "Wed May 13 17:55:15 2026 +0000"
      },
      "message": "[#8603] disable trac importers by default\n"
    },
    {
      "commit": "06d41c29ab251f0c737f5df669b4578ee50255e2",
      "tree": "bf14e11e5a4f6fcb4f79c0a391e7bf56d2eeb534",
      "parents": [
        "640a285a97ba0cbe2c55fdd105dc7a5a19465b00"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Wed Apr 29 17:36:25 2026 -0400"
      },
      "committer": {
        "name": "Kenton Taylor",
        "email": "ktaylor@slashdotmedia.com",
        "time": "Wed May 13 17:55:15 2026 +0000"
      },
      "message": "[#8603] don\u0027t follow redirects on trac import\n"
    },
    {
      "commit": "640a285a97ba0cbe2c55fdd105dc7a5a19465b00",
      "tree": "1d4e01795274d89a51f75df333089d7a4bf7a3cc",
      "parents": [
        "32b897eea20855234bf87e579f4686c904309297"
      ],
      "author": {
        "name": "Guillermo Cruz",
        "email": "guillermo.cruz@slashdotmedia.com",
        "time": "Tue May 12 14:53:39 2026 +0000"
      },
      "committer": {
        "name": "Guillermo Cruz",
        "email": "guillermo.cruz@slashdotmedia.com",
        "time": "Tue May 12 14:53:39 2026 +0000"
      },
      "message": "bumping urllib3 2.6.3 -\u003e 2.7.0 and gitpython 3.1.47 -\u003e 3.1.50\n"
    },
    {
      "commit": "32b897eea20855234bf87e579f4686c904309297",
      "tree": "b10ecc2516bae57866acb781a9a877105c59545d",
      "parents": [
        "b715604ae4bdbfe5f2db5050af0b56b9d5c00dc3"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Wed Apr 29 15:32:05 2026 -0400"
      },
      "committer": {
        "name": "Dillon Walls",
        "email": "dillon.walls@slashdotmedia.com",
        "time": "Fri May 01 18:19:27 2026 +0000"
      },
      "message": "[#8601] avoid flash samesite cookie issues by showing error on the page directly\n"
    },
    {
      "commit": "b715604ae4bdbfe5f2db5050af0b56b9d5c00dc3",
      "tree": "539014146e37bc1e1f393c9a4ed583d8d72a165f",
      "parents": [
        "6cdda14861e97bbbaa504063e404d4ec17ae444a"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Wed Apr 22 15:53:27 2026 -0400"
      },
      "committer": {
        "name": "Dillon Walls",
        "email": "dillon.walls@slashdotmedia.com",
        "time": "Fri May 01 18:19:27 2026 +0000"
      },
      "message": "[#8601] Do email verification for untrusted logins even if they did multifactor (protects against MITM attacks)\n"
    },
    {
      "commit": "6cdda14861e97bbbaa504063e404d4ec17ae444a",
      "tree": "138cd13d28089f5bd2bc9acb4f3c1572239c96a9",
      "parents": [
        "32cf99f1226922b81271984dd0cfe2284bbe130d"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Wed Apr 22 11:37:38 2026 -0400"
      },
      "committer": {
        "name": "Dillon Walls",
        "email": "dillon.walls@slashdotmedia.com",
        "time": "Fri May 01 18:19:27 2026 +0000"
      },
      "message": "[#8601] use full domain in link for plaintext mail version to be better\n"
    },
    {
      "commit": "32cf99f1226922b81271984dd0cfe2284bbe130d",
      "tree": "7854a10267a05a72ad0e9233f5021fc4eb8e98d8",
      "parents": [
        "f39d573e71ac9f736686403a1f161cee4cb9177d"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Tue Apr 21 17:37:02 2026 -0400"
      },
      "committer": {
        "name": "Dillon Walls",
        "email": "dillon.walls@slashdotmedia.com",
        "time": "Fri May 01 18:19:27 2026 +0000"
      },
      "message": "[#8601] update precommit hook for .md.jinja2 and update hook to published version now\n"
    },
    {
      "commit": "f39d573e71ac9f736686403a1f161cee4cb9177d",
      "tree": "9769aa39f085a59e15aab8fb4a6713a056d6e648",
      "parents": [
        "ee1b878f399948f73f2a0e6917abbe3da70324ca"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Tue Apr 21 17:29:50 2026 -0400"
      },
      "committer": {
        "name": "Dillon Walls",
        "email": "dillon.walls@slashdotmedia.com",
        "time": "Fri May 01 18:19:27 2026 +0000"
      },
      "message": "[#8601] consistent file extension for mail templates\n"
    },
    {
      "commit": "ee1b878f399948f73f2a0e6917abbe3da70324ca",
      "tree": "e48e5c4a7d5642a30049b2eaee5884de04069fce",
      "parents": [
        "b14f36cf8f7a27b35138a4506275f628b48b45de"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Tue Apr 21 11:56:17 2026 -0400"
      },
      "committer": {
        "name": "Dillon Walls",
        "email": "dillon.walls@slashdotmedia.com",
        "time": "Fri May 01 18:19:27 2026 +0000"
      },
      "message": "[#8601] remove very old and not helpful showbrowser() on test assertion failures\n"
    },
    {
      "commit": "b14f36cf8f7a27b35138a4506275f628b48b45de",
      "tree": "b163d4617a58385a5f64a1035839d27e98db25e9",
      "parents": [
        "fd129f6c120015f4d44a6c97a3964e558b618984"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Tue Apr 21 11:52:52 2026 -0400"
      },
      "committer": {
        "name": "Dillon Walls",
        "email": "dillon.walls@slashdotmedia.com",
        "time": "Fri May 01 18:19:27 2026 +0000"
      },
      "message": "[#8601] use link instead of code for email auth, and longer code\n"
    },
    {
      "commit": "fd129f6c120015f4d44a6c97a3964e558b618984",
      "tree": "303605c94ef5708f44aba413f3de2c1745cd9152",
      "parents": [
        "93fa0279ce49ea42366efd13ab30249173dc67ee"
      ],
      "author": {
        "name": "Dillon Walls",
        "email": "dillon.walls@slashdotmedia.com",
        "time": "Wed Apr 29 22:02:05 2026 +0000"
      },
      "committer": {
        "name": "Dave Brondsema",
        "email": "dbrondsema@slashdotmedia.com",
        "time": "Fri May 01 16:58:05 2026 +0000"
      },
      "message": "[#8602] increment bugfix_rev to invalidate template cache\n"
    },
    {
      "commit": "93fa0279ce49ea42366efd13ab30249173dc67ee",
      "tree": "05949f752595156060a6b540acdc18164bf7ea9e",
      "parents": [
        "bc5f3c304ce35cfa142b072e2caa76f0affdf969"
      ],
      "author": {
        "name": "Dillon Walls",
        "email": "dillon.walls@slashdotmedia.com",
        "time": "Tue Apr 28 04:07:43 2026 +0000"
      },
      "committer": {
        "name": "Dave Brondsema",
        "email": "dbrondsema@slashdotmedia.com",
        "time": "Fri May 01 16:58:05 2026 +0000"
      },
      "message": "[#8602] do not treat periods in text as external urls to be displayed as warnings\n"
    },
    {
      "commit": "bc5f3c304ce35cfa142b072e2caa76f0affdf969",
      "tree": "eb87879bd54ac65126fc138391586b10e9624a6c",
      "parents": [
        "4650550ce32903f2e80f07fe2736e0055ce1d5c8"
      ],
      "author": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Thu Apr 16 03:30:38 2026 +0000"
      },
      "committer": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Wed Apr 29 13:54:17 2026 -0400"
      },
      "message": "[#11283] Remove plaintext author username field from from_username query\n"
    },
    {
      "commit": "4650550ce32903f2e80f07fe2736e0055ce1d5c8",
      "tree": "87b25099856512a14688f9a0e17261bb6a36b735",
      "parents": [
        "83e27e40b1827df74d9d540dcf26e2bc81add78a"
      ],
      "author": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Fri Mar 27 11:03:46 2026 -0600"
      },
      "committer": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Tue Apr 28 13:27:10 2026 -0400"
      },
      "message": "encrypt snapshot author nested fields\n"
    },
    {
      "commit": "83e27e40b1827df74d9d540dcf26e2bc81add78a",
      "tree": "52670ad3623a3708335b7d6640a8fed388ffa9c1",
      "parents": [
        "31840bd9d3ae97e89ef6d10d27bd580fc2064319"
      ],
      "author": {
        "name": "Guillermo Cruz",
        "email": "guillermo.cruz@slashdotmedia.com",
        "time": "Mon Apr 27 15:00:22 2026 +0000"
      },
      "committer": {
        "name": "Guillermo Cruz",
        "email": "guillermo.cruz@slashdotmedia.com",
        "time": "Mon Apr 27 15:00:22 2026 +0000"
      },
      "message": "bump gitpython 3.1.46 -\u003e 3.1.47\n"
    },
    {
      "commit": "31840bd9d3ae97e89ef6d10d27bd580fc2064319",
      "tree": "87ba78574d74c03c2482c662ef645bac18d162bb",
      "parents": [
        "d38f6371ab2be1c944c3b50b702d67af405afde7"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Thu Apr 23 14:42:23 2026 -0400"
      },
      "committer": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Thu Apr 23 14:42:23 2026 -0400"
      },
      "message": "remove pygments optimization no longer needed\n"
    },
    {
      "commit": "d38f6371ab2be1c944c3b50b702d67af405afde7",
      "tree": "469b8e407eaca96ad62d892fab75feb929a3b2ac",
      "parents": [
        "72a31893d6a3176b47afe9b421bbddf599070c22"
      ],
      "author": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Thu Apr 23 14:41:43 2026 -0400"
      },
      "committer": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Thu Apr 23 14:42:07 2026 -0400"
      },
      "message": "add limit option to convert_encrypted_field.py\n"
    },
    {
      "commit": "72a31893d6a3176b47afe9b421bbddf599070c22",
      "tree": "d219620dfac52dc1baac45a6276d84b5cf5e6fc6",
      "parents": [
        "ba211a8894c5e0dbc0f58c32114e4af050829d72"
      ],
      "author": {
        "name": "Carlos Cruz",
        "email": "carlos.cruz@slashdotmedia.com",
        "time": "Wed Apr 15 21:00:59 2026 +0000"
      },
      "committer": {
        "name": "Dave Brondsema",
        "email": "dave@brondsema.net",
        "time": "Thu Apr 23 14:42:04 2026 -0400"
      },
      "message": "Fix convert plaintext to encrypted script to support nested fields\n"
    },
    {
      "commit": "ba211a8894c5e0dbc0f58c32114e4af050829d72",
      "tree": "e58f309020aeeea9d4db844addacc7f309e24134",
      "parents": [
        "4d4137f96be9df1daf4b3881f02ac9457c8d07df"
      ],
      "author": {
        "name": "Daniel Castillo",
        "email": "daniel.castillo@slashdotmedia.com",
        "time": "Wed Apr 22 15:31:59 2026 +0000"
      },
      "committer": {
        "name": "Daniel Castillo",
        "email": "daniel.castillo@slashdotmedia.com",
        "time": "Wed Apr 22 15:31:59 2026 +0000"
      },
      "message": "[#8600] Upgrade lxml 6.0.4 -\u003e 6.1.0\n"
    },
    {
      "commit": "4d4137f96be9df1daf4b3881f02ac9457c8d07df",
      "tree": "b7f5dbaa9950bd24e6b4704e69615c1c5d06a877",
      "parents": [
        "89f7f8b9025b76f4ed9ad552363cbefb5779d30f"
      ],
      "author": {
        "name": "Daniel Castillo",
        "email": "daniel.castillo@slashdotmedia.com",
        "time": "Tue Apr 21 20:17:19 2026 +0000"
      },
      "committer": {
        "name": "Daniel Castillo",
        "email": "daniel.castillo@slashdotmedia.com",
        "time": "Tue Apr 21 20:17:19 2026 +0000"
      },
      "message": "[#8600] Upgrade boto3 1.42.89 -\u003e no upgrade\n"
    },
    {
      "commit": "89f7f8b9025b76f4ed9ad552363cbefb5779d30f",
      "tree": "815e1bf2a4ea078b8d13f12895294b27793ece99",
      "parents": [
        "86aae545c4a4d8ab3a161769abb2ec298ff2f9ba"
      ],
      "author": {
        "name": "Daniel Castillo",
        "email": "daniel.castillo@slashdotmedia.com",
        "time": "Tue Apr 21 20:17:10 2026 +0000"
      },
      "committer": {
        "name": "Daniel Castillo",
        "email": "daniel.castillo@slashdotmedia.com",
        "time": "Tue Apr 21 20:17:10 2026 +0000"
      },
      "message": "[#8600] Upgrade setuptools 81.0.0 -\u003e no upgrade\n"
    },
    {
      "commit": "86aae545c4a4d8ab3a161769abb2ec298ff2f9ba",
      "tree": "32809142212c5a6a86913b25f09586a0df162d14",
      "parents": [
        "0834a0b6654de20ff5f377ef95bde168205bddd3"
      ],
      "author": {
        "name": "Daniel Castillo",
        "email": "daniel.castillo@slashdotmedia.com",
        "time": "Tue Apr 21 20:17:06 2026 +0000"
      },
      "committer": {
        "name": "Daniel Castillo",
        "email": "daniel.castillo@slashdotmedia.com",
        "time": "Tue Apr 21 20:17:06 2026 +0000"
      },
      "message": "[#8600] Upgrade pre_commit 4.5.1 -\u003e no upgrade\n"
    },
    {
      "commit": "0834a0b6654de20ff5f377ef95bde168205bddd3",
      "tree": "34f6681dfbd319b20023e819f23faf3903781736",
      "parents": [
        "86ddacd9294047688582279efcbef17285b6c1fe"
      ],
      "author": {
        "name": "Daniel Castillo",
        "email": "daniel.castillo@slashdotmedia.com",
        "time": "Tue Apr 21 20:16:57 2026 +0000"
      },
      "committer": {
        "name": "Daniel Castillo",
        "email": "daniel.castillo@slashdotmedia.com",
        "time": "Tue Apr 21 20:16:57 2026 +0000"
      },
      "message": "[#8600] Upgrade gunicorn 25.3.0 -\u003e no upgrade\n"
    },
    {
      "commit": "86ddacd9294047688582279efcbef17285b6c1fe",
      "tree": "3507c1d51694ff80f3935c1647b11504144500e5",
      "parents": [
        "3c97e99a65dcb35bee955eb524111f5ea784020a"
      ],
      "author": {
        "name": "Daniel Castillo",
        "email": "daniel.castillo@slashdotmedia.com",
        "time": "Tue Apr 21 20:16:46 2026 +0000"
      },
      "committer": {
        "name": "Daniel Castillo",
        "email": "daniel.castillo@slashdotmedia.com",
        "time": "Tue Apr 21 20:16:46 2026 +0000"
      },
      "message": "[#8600] Upgrade pytest-sugar 1.1.1 -\u003e no upgrade\n"
    },
    {
      "commit": "3c97e99a65dcb35bee955eb524111f5ea784020a",
      "tree": "28bde6dcfea1e1b900aa94c2052d57aa4c319582",
      "parents": [
        "b32067a44c222e050d72910559e6d86f4312c06f"
      ],
      "author": {
        "name": "Daniel Castillo",
        "email": "daniel.castillo@slashdotmedia.com",
        "time": "Tue Apr 21 20:16:38 2026 +0000"
      },
      "committer": {
        "name": "Daniel Castillo",
        "email": "daniel.castillo@slashdotmedia.com",
        "time": "Tue Apr 21 20:16:38 2026 +0000"
      },
      "message": "[#8600] Upgrade pytest-xdist 3.8.0 -\u003e no upgrade\n"
    },
    {
      "commit": "b32067a44c222e050d72910559e6d86f4312c06f",
      "tree": "dee92ec5f1a53d18af1984a5ea608bc81213a96f",
      "parents": [
        "5a0ca11a482a1bf39b56727575e8acf98faf1b2e"
      ],
      "author": {
        "name": "Daniel Castillo",
        "email": "daniel.castillo@slashdotmedia.com",
        "time": "Tue Apr 21 20:16:28 2026 +0000"
      },
      "committer": {
        "name": "Daniel Castillo",
        "email": "daniel.castillo@slashdotmedia.com",
        "time": "Tue Apr 21 20:16:28 2026 +0000"
      },
      "message": "[#8600] Upgrade pytest 9.0.3 -\u003e no upgrade\n"
    },
    {
      "commit": "5a0ca11a482a1bf39b56727575e8acf98faf1b2e",
      "tree": "822541e73ddf0a77cf78f28a3068e28c69e5bf27",
      "parents": [
        "5fc5acc7f784448db6310099b0760233419750bb"
      ],
      "author": {
        "name": "Daniel Castillo",
        "email": "daniel.castillo@slashdotmedia.com",
        "time": "Tue Apr 21 20:16:23 2026 +0000"
      },
      "committer": {
        "name": "Daniel Castillo",
        "email": "daniel.castillo@slashdotmedia.com",
        "time": "Tue Apr 21 20:16:23 2026 +0000"
      },
      "message": "[#8600] Upgrade ruff 0.15.10 -\u003e no upgrade\n"
    }
  ],
  "next": "5fc5acc7f784448db6310099b0760233419750bb"
}
