)]}'
{
  "log": [
    {
      "commit": "e275c6cf02dc8b4d8bb573efb940dcab03ca2efd",
      "tree": "1913f25b8b28865ad5a7a1203600af86d60d5879",
      "parents": [
        "0936f2c3ff4962f2910118348220068367541557"
      ],
      "author": {
        "name": "PingouinFerreux",
        "email": "212632237+PingouinFerreux@users.noreply.github.com",
        "time": "Thu Aug 13 09:16:17 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 13 15:16:17 2026 +0800"
      },
      "message": "docs: fix broken star history chart in README (#1748)"
    },
    {
      "commit": "0936f2c3ff4962f2910118348220068367541557",
      "tree": "26647472932d1f8c62944b2112c97c0e0e368b43",
      "parents": [
        "9a94fde4757836d1327ac8f8df0877ffc97ca66b"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Fri Aug 07 00:38:52 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Fri Aug 07 00:38:52 2026 +0800"
      },
      "message": "perf: cache compiled patterns by key2 in KeyMatch/KeyGet\n"
    },
    {
      "commit": "9a94fde4757836d1327ac8f8df0877ffc97ca66b",
      "tree": "548f83d765b4629d28722d0ad260ebc5e8b8661a",
      "parents": [
        "e9df34e092f925e0031f7db4e062f2fbddf3dc86"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Thu Aug 06 23:14:57 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Thu Aug 06 23:14:57 2026 +0800"
      },
      "message": "feat: expose Transaction.GetAdapter() to share the tx with GORM\n"
    },
    {
      "commit": "e9df34e092f925e0031f7db4e062f2fbddf3dc86",
      "tree": "27054b124a1b2e28ee9785eefc6435578dc75fe2",
      "parents": [
        "b32cfd3c36e482f1ed1eb5ba94bb4ecb183c90d4"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Aug 04 17:03:20 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Aug 04 17:03:20 2026 +0800"
      },
      "message": "ci: migrate golangci-lint to v2 and fix lint issues\n"
    },
    {
      "commit": "b32cfd3c36e482f1ed1eb5ba94bb4ecb183c90d4",
      "tree": "1986faa2de203a79b7aa23018b6cd6c263c41148",
      "parents": [
        "cfa80fc4a04fcfdf528dd739d37d46323340d149"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Aug 04 16:18:58 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Aug 04 16:18:58 2026 +0800"
      },
      "message": "fix: fix go linter\n"
    },
    {
      "commit": "cfa80fc4a04fcfdf528dd739d37d46323340d149",
      "tree": "6459d37074370704942a06dc64e9bedbfa604e19",
      "parents": [
        "d3e9928ab07b200efa0132f99fa095c084597897"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Aug 04 16:17:28 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Aug 04 16:17:28 2026 +0800"
      },
      "message": "feat: add RBAC with ABAC condition example\n"
    },
    {
      "commit": "d3e9928ab07b200efa0132f99fa095c084597897",
      "tree": "e9c7c2fa6738b43615867313a3c97c91599f8850",
      "parents": [
        "0dd2ea76ef0c7007b3fe22ce3c6905799bac0f4f"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Aug 04 16:11:57 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Aug 04 16:11:57 2026 +0800"
      },
      "message": "fix: preserve policy order in Model.RemovePolicy\n"
    },
    {
      "commit": "0dd2ea76ef0c7007b3fe22ce3c6905799bac0f4f",
      "tree": "51fa2ea448cee4a54a6cc484f3831e6a0eab6740",
      "parents": [
        "65cb98506a474e2dddd5f24ad534999306c14ec6"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Aug 04 16:08:42 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Aug 04 16:08:42 2026 +0800"
      },
      "message": "fix: keep \", \" separator in SavePolicy output\n"
    },
    {
      "commit": "65cb98506a474e2dddd5f24ad534999306c14ec6",
      "tree": "f582e17c2d590099c0243c7b5d0e27038cff43bc",
      "parents": [
        "df166f67a798dad9da970d8c3d3726d1df6a25d8"
      ],
      "author": {
        "name": "Nhan (Nolan) Huynh",
        "email": "157712338+huynhanx03@users.noreply.github.com",
        "time": "Tue Aug 04 14:56:39 2026 +0700"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Aug 04 15:59:59 2026 +0800"
      },
      "message": "perf: optimize batch policy removal (#1729)\n"
    },
    {
      "commit": "df166f67a798dad9da970d8c3d3726d1df6a25d8",
      "tree": "484fd54db6bed01bf1c8a4250fa194db8f80b448",
      "parents": [
        "c94e936ac21c68f8745361e6ce1cbfbe521941a6"
      ],
      "author": {
        "name": "legendpei",
        "email": "804141866@qq.com",
        "time": "Tue Aug 04 15:53:42 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 04 15:53:42 2026 +0800"
      },
      "message": "test: add key get wrapper coverage (#1730)"
    },
    {
      "commit": "c94e936ac21c68f8745361e6ce1cbfbe521941a6",
      "tree": "cdd7eeeb43d90baa1ff46a30b427145656c5a8be",
      "parents": [
        "9e2b76713fc4d19d8d49c41dcba336696f88ce3c"
      ],
      "author": {
        "name": "zengwei",
        "email": "13350016962@163.com",
        "time": "Tue Aug 04 15:49:45 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 04 15:49:45 2026 +0800"
      },
      "message": "fix: remove deprecated comment from RemovePolicy method (#1662)"
    },
    {
      "commit": "9e2b76713fc4d19d8d49c41dcba336696f88ce3c",
      "tree": "1f11c4685464d0766ab75ae2c223ab2ed3f85496",
      "parents": [
        "e95b15ea9e732c3420dafbba2bbbefb8af3911c6"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Aug 04 15:39:36 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Aug 04 15:39:36 2026 +0800"
      },
      "message": "perf: fast-path KeyMatch2/3/4/5 for plain keys and \"*\"\n"
    },
    {
      "commit": "e95b15ea9e732c3420dafbba2bbbefb8af3911c6",
      "tree": "30e6a8efa3b02d66c7f871137ae60f3cb867be1e",
      "parents": [
        "6259f0370a7df23ace90d10c43bf0866fb5185fb"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Aug 04 00:50:39 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Aug 04 00:50:39 2026 +0800"
      },
      "message": "fix: fix Go Report Card badge\n"
    },
    {
      "commit": "6259f0370a7df23ace90d10c43bf0866fb5185fb",
      "tree": "052003f207c55b28b4d59ac313a08d933fc485e4",
      "parents": [
        "492fcc66dfca6b66fedb7a132e4c4f67672287d8"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Aug 04 00:31:01 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Aug 04 00:31:01 2026 +0800"
      },
      "message": "ci: publish releases from manually pushed tags\n"
    },
    {
      "commit": "492fcc66dfca6b66fedb7a132e4c4f67672287d8",
      "tree": "da0017f4724b2bb9acd1cb1dcc8aaa3835540acc",
      "parents": [
        "a918daf3e94137b9fc531a2013e962df0dd34724"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Aug 04 00:17:36 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Aug 04 00:17:36 2026 +0800"
      },
      "message": "fix: remove useless asf.yaml\n"
    },
    {
      "commit": "a918daf3e94137b9fc531a2013e962df0dd34724",
      "tree": "2c5e61faf2058e0239f3a9f593a9c5f8e127f623",
      "parents": [
        "08dab401f7e78a3af923239fff1fcef20ab78464"
      ],
      "author": {
        "name": "Nikolaus Schuetz",
        "email": "nikolauspschuetz@gmail.com",
        "time": "Sun Aug 02 10:52:39 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 01:52:39 2026 +0800"
      },
      "message": "fix: preserve non-ASCII literals in EscapeStringLiterals (#1746)"
    },
    {
      "commit": "08dab401f7e78a3af923239fff1fcef20ab78464",
      "tree": "29f56d68906aca39eb5de49e2aad0b2e03b1e77b",
      "parents": [
        "a2695ae8f082533ce3ed441e025d24064d6bf0e7"
      ],
      "author": {
        "name": "Emery",
        "email": "80300166+EmryZhang@users.noreply.github.com",
        "time": "Sat Jul 25 15:00:02 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 25 15:00:02 2026 +0800"
      },
      "message": "chore: add RAT license-check policy (#1745)"
    },
    {
      "commit": "a2695ae8f082533ce3ed441e025d24064d6bf0e7",
      "tree": "116e22ff53c7347a53ce93d311d7935e88399aeb",
      "parents": [
        "6f56ed722bc0fab53cd78be36959133f5008c1b5"
      ],
      "author": {
        "name": "Emery",
        "email": "80300166+EmryZhang@users.noreply.github.com",
        "time": "Sat Jul 25 00:30:55 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 25 00:30:55 2026 +0800"
      },
      "message": "chore: complete ASF license cleanup (#1744)"
    },
    {
      "commit": "6f56ed722bc0fab53cd78be36959133f5008c1b5",
      "tree": "e3cd19309fc755becad83870c216eff307dc9162",
      "parents": [
        "db1789331bdf3e49e86d7fd73a6f117c8e2425fa"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Thu Jul 23 00:37:08 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 00:37:08 2026 +0800"
      },
      "message": "chore: migrate to ASF license header (#1743)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "db1789331bdf3e49e86d7fd73a6f117c8e2425fa",
      "tree": "8d2fde0e64e599e5164ee2ee5f2dce01d21d2d7b",
      "parents": [
        "fb3d1b80bbe155552d8bcec2915afe80ace69d7e"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Wed Jul 22 21:09:55 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 21:09:55 2026 +0800"
      },
      "message": "chore: drop yarn global setup (#1742)"
    },
    {
      "commit": "fb3d1b80bbe155552d8bcec2915afe80ace69d7e",
      "tree": "fefb38f6b1ad1132f8c4661156da1d68ac3e0231",
      "parents": [
        "95656679eac1caad13179bd209bbc87a2e8e6002"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Wed Jul 22 21:03:21 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 21:03:21 2026 +0800"
      },
      "message": "chore: fixup DISCLAIMER and NOTICE file (#1741)"
    },
    {
      "commit": "95656679eac1caad13179bd209bbc87a2e8e6002",
      "tree": "b900436b9263148024db0235d754e3adc20b53b8",
      "parents": [
        "c4d7f73e14d27e8f752d32d32b7d2bf35dfc2685"
      ],
      "author": {
        "name": "Emery",
        "email": "80300166+EmryZhang@users.noreply.github.com",
        "time": "Wed Jul 01 23:49:19 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 23:49:19 2026 +0800"
      },
      "message": "fix: add NOTICE file (#1738)"
    },
    {
      "commit": "c4d7f73e14d27e8f752d32d32b7d2bf35dfc2685",
      "tree": "652a2ec4689f4b467a5cfb4ae5d64958ae11e3a5",
      "parents": [
        "1571e4f34fdad9106d05ab8d8ef59f5efc7fe987"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Wed Jul 01 23:43:42 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Wed Jul 01 23:43:42 2026 +0800"
      },
      "message": "ci: remove automatic snapshot release workflow\n"
    },
    {
      "commit": "1571e4f34fdad9106d05ab8d8ef59f5efc7fe987",
      "tree": "f495d32e3df8ff6fbcbe6d1fbdd338231ca2d534",
      "parents": [
        "f64a3c0bb196de76f4621fdd829298dfc1e2bba1"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Wed Jun 24 00:44:58 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Wed Jun 24 00:44:58 2026 +0800"
      },
      "message": "fix: pass domains in ConditionalRoleManager transitive link check\n"
    },
    {
      "commit": "f64a3c0bb196de76f4621fdd829298dfc1e2bba1",
      "tree": "731b599d01511602d452a67ceed24566ee5012ff",
      "parents": [
        "52c2b032e89f977fe63e118f9d91afb2c5974a7d"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Jun 16 21:46:33 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Jun 16 21:51:19 2026 +0800"
      },
      "message": "feat: quote CSV fields containing commas in SavePolicy\n"
    },
    {
      "commit": "52c2b032e89f977fe63e118f9d91afb2c5974a7d",
      "tree": "ed6faef04353fd3666f1c5af6e87f99fa0645bc7",
      "parents": [
        "6c09ba275d42c0e03c46c1aae132e3254a3594dc"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Jun 16 21:44:47 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Jun 16 21:45:36 2026 +0800"
      },
      "message": "fix: update repo path in README\n"
    },
    {
      "commit": "6c09ba275d42c0e03c46c1aae132e3254a3594dc",
      "tree": "e29b0fd8cc44a9b4b90daf7a1b2c967f4f697a8d",
      "parents": [
        "12ac0c9a42e0245be6da0244737309e369aa4869"
      ],
      "author": {
        "name": "Aurélien Pupier",
        "email": "apupier@ibm.com",
        "time": "Tue Jun 16 15:12:21 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 21:12:21 2026 +0800"
      },
      "message": "fix: Configure GitHub workflows to use concurrency cancel-in-progress for (#1734)"
    },
    {
      "commit": "12ac0c9a42e0245be6da0244737309e369aa4869",
      "tree": "bb2d122f94444d768b717ab52f977f419a5701a2",
      "parents": [
        "16b0c8954262c7fbb4f4ecc01add73cf86281a8d"
      ],
      "author": {
        "name": "TT",
        "email": "70463940+Herrtian@users.noreply.github.com",
        "time": "Wed May 06 13:15:36 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 19:15:36 2026 +0800"
      },
      "message": "perf: pre-compile regex in RegexMatch using cached compilation (#1721)\n\nRegexMatch() called regexp.MatchString() which recompiles the pattern on\nevery invocation. Use the existing mustCompileOrGet() cache instead.\n\nRef #1690\n\nCo-authored-by: tengtian \u003ctengtianmoemoe@gamil,com\u003e"
    },
    {
      "commit": "16b0c8954262c7fbb4f4ecc01add73cf86281a8d",
      "tree": "f5c956e357329b6f489266b14e55f5011bfd207b",
      "parents": [
        "74322db8ebd2fa7a9e15e7369db6add65498f83b"
      ],
      "author": {
        "name": "cooronx",
        "email": "54298598+cooronx@users.noreply.github.com",
        "time": "Mon Apr 27 00:58:17 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 27 00:58:17 2026 +0800"
      },
      "message": "feat: auto release snapshot versions now (#1728)"
    },
    {
      "commit": "74322db8ebd2fa7a9e15e7369db6add65498f83b",
      "tree": "53a195d76b2867c2de6b61e7db01adbfa0811ca7",
      "parents": [
        "017ae0ea04fa5355fbdda91be64ce6df9feac011"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Fri Apr 24 21:52:57 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Apr 25 17:25:39 2026 +0800"
      },
      "message": "fix: add gFunctionCache boolean option to enforcer\n"
    },
    {
      "commit": "017ae0ea04fa5355fbdda91be64ce6df9feac011",
      "tree": "291fd518e009fb2501940e7f2258fa558b511541",
      "parents": [
        "098508551fe30a208aafc7732b19c779fbc4059d"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Mon Mar 23 20:21:23 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Mon Mar 23 20:21:23 2026 +0800"
      },
      "message": "chore: add config file\n"
    },
    {
      "commit": "098508551fe30a208aafc7732b19c779fbc4059d",
      "tree": "0c832e77cfaf006905cd89395719e7481f34b95c",
      "parents": [
        "0fe9505818b12d66739b8e86887539b3ce57942a"
      ],
      "author": {
        "name": "hulk",
        "email": "hulk.website@gmail.com",
        "time": "Fri Mar 13 00:24:31 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 13 00:24:31 2026 +0800"
      },
      "message": "feat: add .asf.yaml and DISCLAIMER (#1710)"
    },
    {
      "commit": "0fe9505818b12d66739b8e86887539b3ce57942a",
      "tree": "10ed16deb6af99955ba5464aed767dd1fc6638c2",
      "parents": [
        "6cfc46383e0de4c53eeaf0c9551f94563901e1b3"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Jan 25 16:47:55 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Jan 25 16:47:55 2026 +0800"
      },
      "message": "feat: add Explain() API to explain the authorization decisions via LLM API (#1678)\n"
    },
    {
      "commit": "6cfc46383e0de4c53eeaf0c9551f94563901e1b3",
      "tree": "0c3ceaf587b5c59c1b1f7f219c14022f2cd6e000",
      "parents": [
        "f1f03cceae31e8fd83d34e26cd19cad3eb370d8b"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Thu Jan 08 23:46:41 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Thu Jan 08 23:46:41 2026 +0800"
      },
      "message": "feat: integrate default detector into Enforcer (#1665)\n"
    },
    {
      "commit": "f1f03cceae31e8fd83d34e26cd19cad3eb370d8b",
      "tree": "b3c91f32a911bd387fd6c0da361d4f4700dcb1d5",
      "parents": [
        "9324df7a6efd447a7971c85106cddb232ded7d57"
      ],
      "author": {
        "name": "Konnyaku",
        "email": "50104361+AKonnyaku@users.noreply.github.com",
        "time": "Thu Jan 08 12:29:00 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 08 12:29:00 2026 +0800"
      },
      "message": "fix: improve CI benchmark table in PR (#1663)\n\n"
    },
    {
      "commit": "9324df7a6efd447a7971c85106cddb232ded7d57",
      "tree": "9d6eebf8be7ed323cbeced030646d6ded402d632",
      "parents": [
        "1aba8b9b0d8d2e2049bcfe60f513d45eaa9bead7"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Jan 06 17:56:14 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Jan 06 17:56:14 2026 +0800"
      },
      "message": "fix: fix \"Undefined function g\" error by copying RM fields in Assertion.copy() (#1658)\n"
    },
    {
      "commit": "1aba8b9b0d8d2e2049bcfe60f513d45eaa9bead7",
      "tree": "4c7c8dd9d8a1392e8db0d26d7230e5a436b8bf53",
      "parents": [
        "b190fce9b29ccd37ccc542d88e0df7ad451c337e"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Jan 06 15:49:32 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Jan 06 15:49:32 2026 +0800"
      },
      "message": "feat: add GetAllUsers() API to separate users from roles (#1652)\n"
    },
    {
      "commit": "b190fce9b29ccd37ccc542d88e0df7ad451c337e",
      "tree": "0215a39da36aeef20f90ad1ac1cb4c2c517b8d86",
      "parents": [
        "61c876f439e98aa51523403dd3e6531e9f4463e3"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Jan 04 23:04:00 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Jan 04 23:04:00 2026 +0800"
      },
      "message": "feat: add logger integration to Casbin core enforcement and policy APIs (#1651)\n"
    },
    {
      "commit": "61c876f439e98aa51523403dd3e6531e9f4463e3",
      "tree": "eb760d4d66733cd89a766d16e1ea9eabab013060",
      "parents": [
        "6b688f06f1316d71601208dbdf9b5a3f3324ad62"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Jan 03 23:08:30 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Jan 03 23:08:30 2026 +0800"
      },
      "message": "feat: add DefaultLogger (#1648)\n"
    },
    {
      "commit": "6b688f06f1316d71601208dbdf9b5a3f3324ad62",
      "tree": "43928d80ae9bd9c1d7e101a53d184f5bef1752ff",
      "parents": [
        "2d7173fe9c6fc4c40c3fe163e05ac740760ab72e"
      ],
      "author": {
        "name": "Zhifan Cui",
        "email": "beifengxuanxiao@126.com",
        "time": "Fri Jan 02 21:09:26 2026 +0800"
      },
      "committer": {
        "name": "Zhifan Cui",
        "email": "beifengxuanxiao@126.com",
        "time": "Sat Jan 03 22:08:29 2026 +0800"
      },
      "message": "fix: add new Logger interface (#1639)\n"
    },
    {
      "commit": "2d7173fe9c6fc4c40c3fe163e05ac740760ab72e",
      "tree": "1435adae817ba93bae35a6473d2f0056f0878b0e",
      "parents": [
        "ea5872b2df9fa3598dc5867dbb719b88f2410c6c"
      ],
      "author": {
        "name": "Zhifan Cui",
        "email": "beifengxuanxiao@126.com",
        "time": "Fri Jan 02 00:37:37 2026 +0800"
      },
      "committer": {
        "name": "Zhifan Cui",
        "email": "beifengxuanxiao@126.com",
        "time": "Fri Jan 02 00:37:37 2026 +0800"
      },
      "message": "feat: remove legacy logger implementation (#1638)\n"
    },
    {
      "commit": "ea5872b2df9fa3598dc5867dbb719b88f2410c6c",
      "tree": "0a67547f38723555a8e631607772235f9cab7010",
      "parents": [
        "c4072514d08df83773ea942a3bdc29dc766ef89d"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Thu Jan 01 01:10:49 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 01 01:10:49 2026 +0800"
      },
      "message": "fix: remove opencollective links in README"
    },
    {
      "commit": "c4072514d08df83773ea942a3bdc29dc766ef89d",
      "tree": "fc41c21410b47bf2200243230bfb5f83f4f65bcf",
      "parents": [
        "53fb4e4f952c1669038ddcea7c7b7d731d895434"
      ],
      "author": {
        "name": "Zhifan Cui",
        "email": "beifengxuanxiao@126.com",
        "time": "Thu Jan 01 01:08:33 2026 +0800"
      },
      "committer": {
        "name": "Zhifan Cui",
        "email": "beifengxuanxiao@126.com",
        "time": "Thu Jan 01 01:08:33 2026 +0800"
      },
      "message": "fix: add DefaultDetector with DFS-based RBAC cycle detection (#1632)\n"
    },
    {
      "commit": "53fb4e4f952c1669038ddcea7c7b7d731d895434",
      "tree": "aaf309d0bc19ea6f8ff640672d2a9b5cf90993be",
      "parents": [
        "0b35dfaa868cf42ce32b1eb5149dfa856260b0b0"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Wed Dec 31 21:05:01 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Wed Dec 31 21:05:01 2025 +0800"
      },
      "message": "feat: remove github-action-benchmark workflow from CI (#1631)\n"
    },
    {
      "commit": "0b35dfaa868cf42ce32b1eb5149dfa856260b0b0",
      "tree": "2f10928ad7a44fc05e8d25ca1b031689f33e2057",
      "parents": [
        "8ed48c5edc2cf76128d1dfe714cdb7df7ed98e5b"
      ],
      "author": {
        "name": "Zhifan Cui",
        "email": "beifengxuanxiao@126.com",
        "time": "Wed Dec 31 20:22:27 2025 +0800"
      },
      "committer": {
        "name": "Zhifan Cui",
        "email": "beifengxuanxiao@126.com",
        "time": "Wed Dec 31 20:22:27 2025 +0800"
      },
      "message": "fix: add Detector interface (#1629)\n"
    },
    {
      "commit": "8ed48c5edc2cf76128d1dfe714cdb7df7ed98e5b",
      "tree": "0d2fc6dfe9566279a8208ee6d73fdbdd17a6ae8a",
      "parents": [
        "f560001334c59afe896b55591c4550e7f37fecd6"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Mon Dec 29 02:22:59 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 29 02:22:59 2025 +0800"
      },
      "message": "chore: update Casbin version to v3 in README"
    },
    {
      "commit": "f560001334c59afe896b55591c4550e7f37fecd6",
      "tree": "d755545b53642b6b53646a099e1f5e6ed56364db",
      "parents": [
        "b3f44909b23dc03bc88504f175fbd890c0cf1761"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Dec 28 12:54:38 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Dec 28 12:54:38 2025 +0800"
      },
      "message": "chore: improve README"
    },
    {
      "commit": "b3f44909b23dc03bc88504f175fbd890c0cf1761",
      "tree": "4bc3cd71ffc9acede188852ce0e4dabbc9c3be96",
      "parents": [
        "0fd3ee80dac487d976cae4cb4344ee01ec63c1a3"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Dec 21 20:42:23 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Dec 21 20:42:23 2025 +0800"
      },
      "message": "fix: disable benchmark comments on merged commits (#1615)\n"
    },
    {
      "commit": "0fd3ee80dac487d976cae4cb4344ee01ec63c1a3",
      "tree": "8b7f75fa5ef4c65171862752cb8bf000c7f27ceb",
      "parents": [
        "4d32aaf15824c9207be385946400df03e01845ba"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Dec 21 18:09:38 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Dec 21 18:09:38 2025 +0800"
      },
      "message": "feat: fix enforcement failure when renaming domain parameter from \u0027dom\u0027 to arbitrary names (#1611)\n"
    },
    {
      "commit": "4d32aaf15824c9207be385946400df03e01845ba",
      "tree": "c3242833edd48ddc87e9b02f979a1c0340293f17",
      "parents": [
        "80dccb76f4a3eb6e9ad04fbf232a1b02dedb4de9"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Dec 21 15:02:31 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Dec 21 15:02:31 2025 +0800"
      },
      "message": "feat: add performance comparison CI for pull requests (#1613)\n"
    },
    {
      "commit": "80dccb76f4a3eb6e9ad04fbf232a1b02dedb4de9",
      "tree": "f07b29db5b698863858dded314b04b6daf64f4d9",
      "parents": [
        "65d40974e5a17d3defd0700fd24ada6a83b06f57"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Fri Dec 19 21:58:52 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Fri Dec 19 21:58:52 2025 +0800"
      },
      "message": "feat: return clear error for invalid JSON when EnableAcceptJsonRequest is enabled (#1610)\n"
    },
    {
      "commit": "65d40974e5a17d3defd0700fd24ada6a83b06f57",
      "tree": "fa5f6c21b23e9a3b7e61d42072b06080c4f94bcd",
      "parents": [
        "cc7d03a05e024f12567f0acf2a3dbad4af9c1b3c"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Dec 13 22:53:26 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Dec 13 22:53:26 2025 +0800"
      },
      "message": "feat: add \"constraint_definition\" section for RBAC policy validation (#1600)\n"
    },
    {
      "commit": "cc7d03a05e024f12567f0acf2a3dbad4af9c1b3c",
      "tree": "083f0cb57caf0c21c4724427f4a83e09f528b500",
      "parents": [
        "3ced5d7f04a5bbfdc439b5dd4c75a3571130e805"
      ],
      "author": {
        "name": "yuhui",
        "email": "166301612+ctfy66@users.noreply.github.com",
        "time": "Sat Dec 13 20:49:50 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Dec 13 20:49:50 2025 +0800"
      },
      "message": "fix: improve line ending for TestCasbinJsGetPermissionForUser() (#1597)\n\n"
    },
    {
      "commit": "3ced5d7f04a5bbfdc439b5dd4c75a3571130e805",
      "tree": "cf8a62c48df1d1a63d470d393599c7f7cc7e256d",
      "parents": [
        "5fc9fd80389499ebc0603c136db5ac98a357bff2"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Wed Dec 10 00:42:44 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Wed Dec 10 00:42:44 2025 +0800"
      },
      "message": "feat!: upgrade to Casbin v3 (#1595)\n\nBREAKING CHANGE: Module path changed from github.com/casbin/casbin/v2 to github.com/casbin/casbin/v3. All import paths must be updated to use v3.\n"
    },
    {
      "commit": "5fc9fd80389499ebc0603c136db5ac98a357bff2",
      "tree": "1de825dd9c1eb7e86190b085e88a21b8f133b41d",
      "parents": [
        "5d3134d00cfcd6af0adb55224ece2e174c8c9d53"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Dec 09 23:44:48 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Dec 09 23:44:48 2025 +0800"
      },
      "message": "feat: remove Travis script and issue templates\n"
    },
    {
      "commit": "5d3134d00cfcd6af0adb55224ece2e174c8c9d53",
      "tree": "51ba43301426c3b348d5767acbe4ea8b27231f9e",
      "parents": [
        "0a136642d96a93a7a0b668bc42e3ec05ec90a330"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Nov 15 01:33:10 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Nov 15 01:33:10 2025 +0800"
      },
      "message": "feat: fix inconsistent backslash handling between matcher literals and CSV-parsed values (#1577)\n"
    },
    {
      "commit": "0a136642d96a93a7a0b668bc42e3ec05ec90a330",
      "tree": "e9ff1cdd8dd070e0c9a31b4ed06bf80f7cb14437",
      "parents": [
        "4b6c4c81ba9ba40193f1e7d48ac9c2f6ef3b51a8"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Nov 15 00:29:08 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Nov 15 00:29:08 2025 +0800"
      },
      "message": "feat: fix stale g() function cache in BuildRoleLinks causing incorrect permissions (#1580)\n"
    },
    {
      "commit": "4b6c4c81ba9ba40193f1e7d48ac9c2f6ef3b51a8",
      "tree": "92874f5ff81d69061023115fe70480bcb17c0be8",
      "parents": [
        "1eef59a0116b31efe66f924e00449f15d3fb457f"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Nov 04 20:29:19 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Nov 04 20:29:19 2025 +0800"
      },
      "message": "feat: improve README\n"
    },
    {
      "commit": "1eef59a0116b31efe66f924e00449f15d3fb457f",
      "tree": "a042efd49b3faf5dc7d2b7203c2e508b8c353407",
      "parents": [
        "bb1e44390d97b9fc9da463a5e690adc96bf33ebe"
      ],
      "author": {
        "name": "Copilot",
        "email": "198982749+Copilot@users.noreply.github.com",
        "time": "Sun Nov 02 11:34:37 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 02 11:34:37 2025 +0800"
      },
      "message": "feat: fix EscapeAssertion (matcher) incorrectly matching p./r. patterns inside quoted strings (#1572)\n\n"
    },
    {
      "commit": "bb1e44390d97b9fc9da463a5e690adc96bf33ebe",
      "tree": "c309aaabc5dd2daf688980380a36e504a2595c05",
      "parents": [
        "91b9cf29fd28f55624ca7b5ae2d495524b88efd1"
      ],
      "author": {
        "name": "Copilot",
        "email": "198982749+Copilot@users.noreply.github.com",
        "time": "Sun Nov 02 01:36:11 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 02 01:36:11 2025 +0800"
      },
      "message": "feat: fix duplicate CI workflow runs and optimize to test only Go 1.21 (#1571)\n\n"
    },
    {
      "commit": "91b9cf29fd28f55624ca7b5ae2d495524b88efd1",
      "tree": "84d1923738468fa59b3ffd6c5838c89157f3d5db",
      "parents": [
        "87e9956dfd0209e5148faa65f6ef06814e8c704f"
      ],
      "author": {
        "name": "Copilot",
        "email": "198982749+Copilot@users.noreply.github.com",
        "time": "Sat Nov 01 14:18:28 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Nov 01 14:18:28 2025 +0800"
      },
      "message": "feat: add OrBAC (Organisation-Based Access Control) model support (#1567)\n\n"
    },
    {
      "commit": "87e9956dfd0209e5148faa65f6ef06814e8c704f",
      "tree": "d1fe996886489736587171fcd9b4c9c1b01025d8",
      "parents": [
        "1ef00acc917aac9da6b5fdef187fa32e97e8a0bc"
      ],
      "author": {
        "name": "Zhendong Liu",
        "email": "148350506+bugoutianzhen123@users.noreply.github.com",
        "time": "Thu Oct 09 23:03:02 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 09 23:03:02 2025 +0800"
      },
      "message": "feat: add ContextEnforcer: add ctx to AddPolicy and other APIs (#1553)\n\n"
    },
    {
      "commit": "1ef00acc917aac9da6b5fdef187fa32e97e8a0bc",
      "tree": "6591c1053a5333a8bcf64ae7b8ca1422273ed8d2",
      "parents": [
        "0c5a5740886f3964361506e92bc5679334ea16f5"
      ],
      "author": {
        "name": "D0000M",
        "email": "62919166+D0000M@users.noreply.github.com",
        "time": "Sun Sep 21 20:55:57 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 21 20:55:57 2025 +0800"
      },
      "message": "feat: enable concurrent transactions using optimistic locking, versioning and conflict detection (#1552)\n\n"
    },
    {
      "commit": "0c5a5740886f3964361506e92bc5679334ea16f5",
      "tree": "703d1d82a7e4f2c80d9f5a5ff66c21a9b77c5d2b",
      "parents": [
        "ea911954aa403f489a13c19a82a9442e35ac67ea"
      ],
      "author": {
        "name": "Zhendong Liu",
        "email": "148350506+bugoutianzhen123@users.noreply.github.com",
        "time": "Thu Sep 18 22:07:51 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 18 22:07:51 2025 +0800"
      },
      "message": "feat: add PBAC model support and test (#1548)\n\n"
    },
    {
      "commit": "ea911954aa403f489a13c19a82a9442e35ac67ea",
      "tree": "4a440cb69babf001816164e141f66bdb6a478c7e",
      "parents": [
        "c2f3635eaf2b5a176916434721421e58ac32cffa"
      ],
      "author": {
        "name": "FAUST.",
        "email": "126341483+FAUST-BENCHOU@users.noreply.github.com",
        "time": "Wed Sep 17 15:37:43 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 17 15:37:43 2025 +0800"
      },
      "message": "feat: add sync to GetRoleManager methods in SyncedEnforcer (#1544)\n\n"
    },
    {
      "commit": "c2f3635eaf2b5a176916434721421e58ac32cffa",
      "tree": "e90b0a10a9be241f2d6ff1f3dfc530655c313abd",
      "parents": [
        "e50e0f2dd8979481790d68e1d04cd49de012badd"
      ],
      "author": {
        "name": "FAUST.",
        "email": "126341483+FAUST-BENCHOU@users.noreply.github.com",
        "time": "Wed Sep 17 15:22:59 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 17 15:22:59 2025 +0800"
      },
      "message": "feat: resolve golangci-lint issues in transaction code (#1545)\n\n"
    },
    {
      "commit": "e50e0f2dd8979481790d68e1d04cd49de012badd",
      "tree": "e4fbff8df88bddcf3a4864ffb4bb539ae4819279",
      "parents": [
        "33e2e501842315865ab105c73b0d6a985df23d0c"
      ],
      "author": {
        "name": "D0000M",
        "email": "62919166+D0000M@users.noreply.github.com",
        "time": "Sun Sep 14 16:10:53 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 14 16:10:53 2025 +0800"
      },
      "message": "feat: add TransactionalEnforcer (#1541)\n\n"
    },
    {
      "commit": "33e2e501842315865ab105c73b0d6a985df23d0c",
      "tree": "a34231bfe98560063888f66c069a54b7327be862",
      "parents": [
        "b75a3e7cc841610a9436e68349ec6af4ffa7af1b"
      ],
      "author": {
        "name": "FAUST.",
        "email": "126341483+FAUST-BENCHOU@users.noreply.github.com",
        "time": "Thu Sep 04 19:40:58 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 04 19:40:58 2025 +0800"
      },
      "message": "feat: add mutex protection for FieldIndexMap to prevent concurrent writes (#1537)\n\n"
    },
    {
      "commit": "b75a3e7cc841610a9436e68349ec6af4ffa7af1b",
      "tree": "51907f040f679ef0b4d8dadf72b88c1aebf05d8a",
      "parents": [
        "c33fbc287d5d8116286647e6e72351d5cc903b50"
      ],
      "author": {
        "name": "yxrxy",
        "email": "1532529704@qq.com",
        "time": "Wed Aug 27 23:38:36 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 27 23:38:36 2025 +0800"
      },
      "message": "feat: add GetImplicitObjectPatternsForUser API to get user\u0027s resource access patterns (#1532)\n\n"
    },
    {
      "commit": "c33fbc287d5d8116286647e6e72351d5cc903b50",
      "tree": "9b56d6095da589d933f349a00eb61372a7761b41",
      "parents": [
        "e92c4ca95f76fe025a047749cef38d472b435ff8"
      ],
      "author": {
        "name": "yxrxy",
        "email": "1532529704@qq.com",
        "time": "Thu Aug 14 23:33:55 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 14 23:33:55 2025 +0800"
      },
      "message": "feat: add GetNamedImplicitUsersForResource() API to support g2 resource roles (#1523)\n\n"
    },
    {
      "commit": "e92c4ca95f76fe025a047749cef38d472b435ff8",
      "tree": "982ace90c5cf282a3a1953975cbc233db1e7c9c0",
      "parents": [
        "5bddec572032391a126459157f6c7564f4161167"
      ],
      "author": {
        "name": "yxrxy",
        "email": "1532529704@qq.com",
        "time": "Tue Aug 12 13:15:17 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 12 13:15:17 2025 +0800"
      },
      "message": "feat: add LBAC model and test case (#1522)\n\n"
    },
    {
      "commit": "5bddec572032391a126459157f6c7564f4161167",
      "tree": "c462f151fbabd9342ed78556b6480bb34e1d7ee8",
      "parents": [
        "5d4a973070592f23ca4fb23a2d8164da1e3b28d9"
      ],
      "author": {
        "name": "Zhendong Liu",
        "email": "148350506+bugoutianzhen123@users.noreply.github.com",
        "time": "Sun Aug 10 21:26:31 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 10 21:26:31 2025 +0800"
      },
      "message": "feat: add Biba model and test case (#1520)\n\n"
    },
    {
      "commit": "5d4a973070592f23ca4fb23a2d8164da1e3b28d9",
      "tree": "7ad6effdb6d6c8986ab9943e814a0fd5014dc938",
      "parents": [
        "a2a6c3aecabb730b741f16ac17d534489c20985a"
      ],
      "author": {
        "name": "yxrxy",
        "email": "1532529704@qq.com",
        "time": "Sat Aug 09 17:10:58 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 09 17:10:58 2025 +0800"
      },
      "message": "feat: improve BLP model example by removing levelMatch() custom function (#1519)\n\n"
    },
    {
      "commit": "a2a6c3aecabb730b741f16ac17d534489c20985a",
      "tree": "36c64e1df6c2ad8680ae45ac9b6b698bbe485f50",
      "parents": [
        "78ef2c179deed40f0d695a9d914fe8f508ea7c5d"
      ],
      "author": {
        "name": "yxrxy",
        "email": "1532529704@qq.com",
        "time": "Fri Aug 08 00:07:40 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 08 00:07:40 2025 +0800"
      },
      "message": "feat: add BLP (Bell-LaPadula) model support and test (#1512)\n\n"
    },
    {
      "commit": "78ef2c179deed40f0d695a9d914fe8f508ea7c5d",
      "tree": "e7de1ac2ae5f96ea67f08ab2bfb80bdd47493c8a",
      "parents": [
        "8701b5ad446f0fd4d563e3cb2aa68345eeee2f91"
      ],
      "author": {
        "name": "yxrxy",
        "email": "1532529704@qq.com",
        "time": "Sun Aug 03 21:52:09 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 03 21:52:09 2025 +0800"
      },
      "message": "feat: ensure consistent maxHierarchyLevel behavior across RBAC functions (#1508)\n\n"
    },
    {
      "commit": "8701b5ad446f0fd4d563e3cb2aa68345eeee2f91",
      "tree": "878f18b12c416b133b5f0ab1a7921d14812416ea",
      "parents": [
        "a58af29ae9d76517da00d751fd84c11ed2540ada"
      ],
      "author": {
        "name": "yxrxy",
        "email": "1532529704@qq.com",
        "time": "Sat Aug 02 14:50:17 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 02 14:50:17 2025 +0800"
      },
      "message": "feat: fix issue that RBAC pattern doesn\u0027t work with conditions (#1506)\n\n"
    },
    {
      "commit": "a58af29ae9d76517da00d751fd84c11ed2540ada",
      "tree": "aa5333a412be2c2a8f496b879bcb0bebbf0b4838",
      "parents": [
        "10e1cbf75e2d0df81ee9d1a03d0d710556afa705"
      ],
      "author": {
        "name": "bugoutianzhen123",
        "email": "148350506+bugoutianzhen123@users.noreply.github.com",
        "time": "Sat Aug 02 13:49:59 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 02 13:49:59 2025 +0800"
      },
      "message": "feat: resolve issue where Enforcer could not retrieve roles from ConditionalRoleManager (#1504)\n\n"
    },
    {
      "commit": "10e1cbf75e2d0df81ee9d1a03d0d710556afa705",
      "tree": "daac86c5bd2ad47500155851b1bd68c4b3e9aa41",
      "parents": [
        "48aadaf619011d1c1eb9c48dbe589d4efcd1d8f1"
      ],
      "author": {
        "name": "Oleksandr Redko",
        "email": "oleksandr.red+github@gmail.com",
        "time": "Fri Aug 01 15:13:38 2025 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 01 20:13:38 2025 +0800"
      },
      "message": "feat: fix typo in the file name (#1505)\n\n"
    },
    {
      "commit": "48aadaf619011d1c1eb9c48dbe589d4efcd1d8f1",
      "tree": "217efb20dd7c701acf71c8625f671a726aa684f4",
      "parents": [
        "85f9da713a738d2d2403b8e5e948f4b2fa0c9ccd"
      ],
      "author": {
        "name": "yxrxy",
        "email": "1532529704@qq.com",
        "time": "Thu Jul 31 20:14:01 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 31 20:14:01 2025 +0800"
      },
      "message": "feat(rbac): resolve GetRolesForUserInDomain issue with conditional role managers (#1503)\n\n"
    },
    {
      "commit": "85f9da713a738d2d2403b8e5e948f4b2fa0c9ccd",
      "tree": "4bd2ac242bd4c83c2babd367f70c4846219a29dd",
      "parents": [
        "992f81819e031523e4cadde2ae84fcfef77f15eb"
      ],
      "author": {
        "name": "D0000M",
        "email": "62919166+D0000M@users.noreply.github.com",
        "time": "Mon Jul 21 20:41:36 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 21 20:41:36 2025 +0800"
      },
      "message": "feat: add ReBAC model test case (#1501)\n\n"
    },
    {
      "commit": "992f81819e031523e4cadde2ae84fcfef77f15eb",
      "tree": "241bb0ecc35ea00a8c37359ecedc95238b177d8e",
      "parents": [
        "f2818d03173236338bd9cc64b9cb0df1a9470284"
      ],
      "author": {
        "name": "D0000M",
        "email": "62919166+D0000M@users.noreply.github.com",
        "time": "Thu Jul 10 14:54:45 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 10 14:54:45 2025 +0800"
      },
      "message": "feat: completely remove domain from RoleManager when calling DeleteDomains (#1496)\n\n"
    },
    {
      "commit": "f2818d03173236338bd9cc64b9cb0df1a9470284",
      "tree": "abe40ec5d1be4352db52818eab6ea422d7a5e725",
      "parents": [
        "c6f6cfcd1a0b22667290b2aba93290a5ee78ca5d"
      ],
      "author": {
        "name": "Yang Tang",
        "email": "tangyang9464@163.com",
        "time": "Sat Jun 21 23:11:39 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 21 23:11:39 2025 +0800"
      },
      "message": "feat: prevent race condition in HasLink with temporary roles (#1491)\n\n"
    },
    {
      "commit": "c6f6cfcd1a0b22667290b2aba93290a5ee78ca5d",
      "tree": "de605753bfef5ffd6c549ddd3937527e4ed20a2a",
      "parents": [
        "79a635bce75f349776d53a6967bd7063f9999206"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Jun 07 16:53:33 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Jun 07 16:53:33 2025 +0800"
      },
      "message": "feat: refactor out abac_test.go\n"
    },
    {
      "commit": "79a635bce75f349776d53a6967bd7063f9999206",
      "tree": "ebc689c74db70057770cd61356c07d7434d3c3a6",
      "parents": [
        "cbeafe9d65b66640346652ab6f4beb4862fa7ca3"
      ],
      "author": {
        "name": "nohup",
        "email": "hi@nohup.life",
        "time": "Wed Jun 04 10:03:31 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 04 10:03:31 2025 +0800"
      },
      "message": "feat: optimize the complexity of `RemovePolicy` from O(n) to O(1) (#1485)\n\n"
    },
    {
      "commit": "cbeafe9d65b66640346652ab6f4beb4862fa7ca3",
      "tree": "7a87187effa3a8829c1577641be677ee4e314424",
      "parents": [
        "133cffdab5d1d4fd4b01da6043f986f4ad164dc6"
      ],
      "author": {
        "name": "Bishoy",
        "email": "Bishoy.Magdy.Adeeb@gmail.com",
        "time": "Sat Apr 19 17:30:00 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 19 23:30:00 2025 +0800"
      },
      "message": "feat: improve SortArray2D() to support variable-length rows and prevent panics (#1481)\n\n"
    },
    {
      "commit": "133cffdab5d1d4fd4b01da6043f986f4ad164dc6",
      "tree": "0d9f781da21bf4854302a43001f2364a83484318",
      "parents": [
        "d4fc6976a9111013a372c6f60953ec92b1d4cf28"
      ],
      "author": {
        "name": "SMALL-head",
        "email": "skyzyc@126.com",
        "time": "Tue Mar 18 08:53:54 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 18 08:53:54 2025 +0800"
      },
      "message": "feat: fix addPolicyWithoutNotify()\u0027s affected value (#1475)\n\n"
    },
    {
      "commit": "d4fc6976a9111013a372c6f60953ec92b1d4cf28",
      "tree": "194b3dbd9cef45349ecb3b9517ed8249c9b66516",
      "parents": [
        "a98973beed58c2236ee453a126970f00d68c0f34"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Dec 28 20:11:50 2024 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Dec 28 20:11:50 2024 +0800"
      },
      "message": "feat: upgrade govaluate to v1.3.0\n"
    },
    {
      "commit": "a98973beed58c2236ee453a126970f00d68c0f34",
      "tree": "7c0a3ba99bffd5b6da2700ecb0d5586a70f1bb3f",
      "parents": [
        "bf330b3f9e4498561890da0ff854cf9e8bf6de5e"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Dec 01 22:33:35 2024 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Dec 01 22:33:35 2024 +0800"
      },
      "message": "feat: improve error handling in LoadPolicyArray()\n"
    },
    {
      "commit": "bf330b3f9e4498561890da0ff854cf9e8bf6de5e",
      "tree": "0d9def723b3b5f953dc4a06d7e90ab342954f7b3",
      "parents": [
        "c55ed50772950c9b6eb80460fed5b889e0df87fd"
      ],
      "author": {
        "name": "Michael Todorovic",
        "email": "michael.todorovic@outlook.com",
        "time": "Sat Nov 16 11:04:38 2024 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Nov 16 18:04:38 2024 +0800"
      },
      "message": "feat: fix typo in model error message (#1460)\n\n"
    },
    {
      "commit": "c55ed50772950c9b6eb80460fed5b889e0df87fd",
      "tree": "c6ba5c8bc15327059defedff27a9bd06fd19d22a",
      "parents": [
        "62cea2664a300899c774b472067b1e5263bbdb78"
      ],
      "author": {
        "name": "Yury Gargay",
        "email": "yury.gargay@gmail.com",
        "time": "Mon Sep 16 13:05:44 2024 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 16 19:05:44 2024 +0800"
      },
      "message": "feat: improve performance by pre-compiling regexes (#1439)\n\n* perf: Precompile regexps\r\n\r\n* perf: Cache dynamic regexps"
    },
    {
      "commit": "62cea2664a300899c774b472067b1e5263bbdb78",
      "tree": "16b503b7fdd47df199f2b2f4e251120152f1a247",
      "parents": [
        "c52a9b5fc5b721e078f411452cb66518c31110e2"
      ],
      "author": {
        "name": "rshen-tibco",
        "email": "85526583+rshen-tibco@users.noreply.github.com",
        "time": "Fri Aug 30 08:55:14 2024 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 30 21:55:14 2024 +0800"
      },
      "message": "feat: support ** in globMatch (#1436)\n\n* feat: support ** in globMatch\r\n\r\n* test: add ** tests for globMatch"
    },
    {
      "commit": "c52a9b5fc5b721e078f411452cb66518c31110e2",
      "tree": "25c928ebf60a2b44de29d1307599706635a75458",
      "parents": [
        "4e8b1f1842fa260e40a89c3570005422d85a9b4e"
      ],
      "author": {
        "name": "沐",
        "email": "MuZhou233@outlook.com",
        "time": "Thu Jul 18 17:36:08 2024 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 19 00:36:08 2024 +0800"
      },
      "message": "feat: update release CI to fix error (#1421)\n\n"
    },
    {
      "commit": "4e8b1f1842fa260e40a89c3570005422d85a9b4e",
      "tree": "391e0d3d9024bb6fe7b27dc3677ca6e1e2667e24",
      "parents": [
        "71c8c84e300cf8b276f28e21e555a39ad793d65c"
      ],
      "author": {
        "name": "Taron",
        "email": "saribekyantaron@gmail.com",
        "time": "Tue Jul 16 12:28:45 2024 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 16 17:28:45 2024 +0800"
      },
      "message": "feat: update casbin/govaluate package to fix nil pointer panic (#1420)\n\n* Update casbin/govaluate package\r\n\r\n* Update casbin/govaluate package"
    },
    {
      "commit": "71c8c84e300cf8b276f28e21e555a39ad793d65c",
      "tree": "bb78c5c1c2cadcf8e589e8264bf8bf29561c5bce",
      "parents": [
        "963e1c441c34f65a891a5b7514002f528b9f8e5f"
      ],
      "author": {
        "name": "George",
        "email": "cococolanosugar@gmail.com",
        "time": "Mon Jun 17 11:44:19 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 17 11:44:19 2024 +0800"
      },
      "message": "feat: CachedEnforcer does not clean the result cached in memory when call ClearPolicy method (#1413)\n\n* fix: CachedEnforcer does not clean the result cached in memory when call ClearPolicy method\r\n\r\n* fix: remove redundant return statement"
    },
    {
      "commit": "963e1c441c34f65a891a5b7514002f528b9f8e5f",
      "tree": "0cf39272d27ed38ec46fc6135d85b50c2ca62164",
      "parents": [
        "e97e3546451f81f5ba5b501a1b806f905383bc43"
      ],
      "author": {
        "name": "Truco",
        "email": "22969604+truc0@users.noreply.github.com",
        "time": "Wed Jun 12 14:15:00 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 12 14:15:00 2024 +0800"
      },
      "message": "feat: GetAllObjects has wrong result in RBAC with domains model (#1411)\n\n- add GetValuesForFieldInPolicyAllTypesByName function to adynamically get fieldIndex for each ptype\r\n- add test for getting objects (subjects and actions are also included) in RBAC with domains mode"
    },
    {
      "commit": "e97e3546451f81f5ba5b501a1b806f905383bc43",
      "tree": "172949e969372f8283d1bda0e1f38400daf1d0ea",
      "parents": [
        "eec10eb077847eb6fbe0060a85ae8f45abc8c31f"
      ],
      "author": {
        "name": "沐",
        "email": "MuZhou233@outlook.com",
        "time": "Mon Jun 10 09:53:29 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 10 09:53:29 2024 +0800"
      },
      "message": "feat: add named g support to `GetNamedImplicitPermissionsForUser` (#1406)\n\n"
    },
    {
      "commit": "eec10eb077847eb6fbe0060a85ae8f45abc8c31f",
      "tree": "87e5814a52a9f96152ffbc2b9f07d18a8a9b3461",
      "parents": [
        "a29d8a89854746c2ac9521a7d6f24cef83011326"
      ],
      "author": {
        "name": "沐",
        "email": "MuZhou233@outlook.com",
        "time": "Sat Jun 08 14:03:31 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 08 14:03:31 2024 +0800"
      },
      "message": "feat: improve `GetNamedImplicitPermissionsForUser` performance (#1405)\n\n"
    },
    {
      "commit": "a29d8a89854746c2ac9521a7d6f24cef83011326",
      "tree": "18c675c9f4fe0efcd7a9256add222dddf5b4edab",
      "parents": [
        "f8fc84e2d243c59554c36c49e0308c0cd5a29b1c"
      ],
      "author": {
        "name": "沐",
        "email": "MuZhou233@outlook.com",
        "time": "Sat Jun 08 02:32:35 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 08 02:32:35 2024 +0800"
      },
      "message": "feat: update PerformancePush config (#1403)\n\n* feat: update PerformancePush config\r\n\r\n* feat: update PerformancePush config"
    },
    {
      "commit": "f8fc84e2d243c59554c36c49e0308c0cd5a29b1c",
      "tree": "aa4784615009fffc41d75a0a2a0097dad3ca0a8c",
      "parents": [
        "20fd5294ad4929e4dd602b2e015d0826b00a6a69"
      ],
      "author": {
        "name": "feellmoose",
        "email": "112599845+feellmoose@users.noreply.github.com",
        "time": "Thu Jun 06 18:28:56 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 06 18:28:56 2024 +0800"
      },
      "message": "feat: check error in GetNamedImplicitPermissionsForUser of GetFieldIndex (#1401)\n\n"
    },
    {
      "commit": "20fd5294ad4929e4dd602b2e015d0826b00a6a69",
      "tree": "854da47118803828f47323762e9323c12b1a6f7b",
      "parents": [
        "75b90b0dff9915330cb91f18a4c91328c61237ef"
      ],
      "author": {
        "name": "沐",
        "email": "MuZhou233@outlook.com",
        "time": "Thu Jun 06 10:48:52 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 06 10:48:52 2024 +0800"
      },
      "message": "feat: refactor `LoadPolicy`, delete `LoadPolicyFast` (#1402)\n\n* feat: cut down the lock range in `LoadPolicy`, delete outdated `LoadPolicyFast`\r\n\r\n* fix: fix logic"
    }
  ],
  "next": "75b90b0dff9915330cb91f18a4c91328c61237ef"
}
