)]}'
{
  "log": [
    {
      "commit": "e4e73b96db23120ca43bfa4e84921d6316916dc5",
      "tree": "d76fa94797d0e27ca7c512f24582f6ece871e207",
      "parents": [
        "f5c96a656d9f287d017240b67b0d5941ca08d3a6"
      ],
      "author": {
        "name": "TTT",
        "email": "istjy@foxmail.com",
        "time": "Mon Feb 09 00:13:49 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 09 00:13:49 2026 +0800"
      },
      "message": "feat: fix category URL 404 error by adding category redirect middleware (#68)\n\n"
    },
    {
      "commit": "f5c96a656d9f287d017240b67b0d5941ca08d3a6",
      "tree": "f43d997cd86b8eaf622c3c4b2bf5954993767d4a",
      "parents": [
        "b3ae84f2819b59708dd29313d34b70c1a0ad7dd4"
      ],
      "author": {
        "name": "TTT",
        "email": "istjy@foxmail.com",
        "time": "Mon Feb 02 11:02:57 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 02 11:02:57 2026 +0800"
      },
      "message": "feat: fix copy markdown error (#64)\n\n"
    },
    {
      "commit": "b3ae84f2819b59708dd29313d34b70c1a0ad7dd4",
      "tree": "f04ab3506748cab845212cfd405848579c271acf",
      "parents": [
        "caa658d102e91322f163ccae9fa34d955831a586"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Feb 01 21:28:20 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Feb 01 21:28:20 2026 +0800"
      },
      "message": "feat: show error message for \"Copy Markdown\" button (#61)\n"
    },
    {
      "commit": "caa658d102e91322f163ccae9fa34d955831a586",
      "tree": "401a70ad1b49e37bcef5b2cd44f7c5aa7f38f4f3",
      "parents": [
        "25a3952cafe75e87818aca8195ac2b4ee3a7b92b"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Feb 01 20:57:28 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Feb 01 20:57:28 2026 +0800"
      },
      "message": "feat: move comment widget below navigation in blog articles (#60)\n"
    },
    {
      "commit": "25a3952cafe75e87818aca8195ac2b4ee3a7b92b",
      "tree": "1001ec473e8867fff68cf8d341ac16d267c452c9",
      "parents": [
        "0b3472df505134dad9f0cca8d310bfa316008449"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Feb 01 20:39:13 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Feb 01 20:39:13 2026 +0800"
      },
      "message": "feat: make Copy Markdown + Open buttons and author metadata in the same row (#50)\n"
    },
    {
      "commit": "0b3472df505134dad9f0cca8d310bfa316008449",
      "tree": "6ea62c3c93de65ed368b34cce0b6186b58194fa1",
      "parents": [
        "70d337386746b46a28df4224f71338f98ac0333d"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Feb 01 20:36:26 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Feb 01 20:36:26 2026 +0800"
      },
      "message": "fix: Reduce blog banner height\n"
    },
    {
      "commit": "70d337386746b46a28df4224f71338f98ac0333d",
      "tree": "42a491d8fdc5ae641d0f657316fd26bb337b82e2",
      "parents": [
        "f2a13a788d390be009873e929bdfabdf979a0a69"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Feb 01 20:32:49 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Feb 01 20:32:49 2026 +0800"
      },
      "message": "feat: sort blog posts by date (newest first) (#52)\n"
    },
    {
      "commit": "f2a13a788d390be009873e929bdfabdf979a0a69",
      "tree": "a4847f3d17ab2b57eb9d846713c33b303b1d1450",
      "parents": [
        "322d7ddf911c7aacc2bb5b3294800ab5e4f478e5"
      ],
      "author": {
        "name": "Gucheng Wang",
        "email": "nomeguy@qq.com",
        "time": "Sun Feb 01 20:32:30 2026 +0800"
      },
      "committer": {
        "name": "Gucheng Wang",
        "email": "nomeguy@qq.com",
        "time": "Sun Feb 01 20:32:30 2026 +0800"
      },
      "message": "feat: update tutorials page (#48)\n"
    },
    {
      "commit": "322d7ddf911c7aacc2bb5b3294800ab5e4f478e5",
      "tree": "18bd307b1d05dfb9667840247aed68920691255f",
      "parents": [
        "c15bbb3d4df8cfadde9acb4032f1edfec9ec2627"
      ],
      "author": {
        "name": "TTT",
        "email": "istjy@foxmail.com",
        "time": "Sun Feb 01 20:07:51 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Feb 01 20:07:51 2026 +0800"
      },
      "message": "fix: improve hero text layout (#46)\n\n"
    },
    {
      "commit": "c15bbb3d4df8cfadde9acb4032f1edfec9ec2627",
      "tree": "9e2b3e2a8db576008e46af13741b27c16e7fd31d",
      "parents": [
        "578c956984455a274679186c9f92045d05de35fd"
      ],
      "author": {
        "name": "TTT",
        "email": "istjy@foxmail.com",
        "time": "Sun Feb 01 16:47:10 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Feb 01 16:47:10 2026 +0800"
      },
      "message": "feat: add Discord icon in top navbar (#45)\n\n"
    },
    {
      "commit": "578c956984455a274679186c9f92045d05de35fd",
      "tree": "9b4e11444f2a3a526242194d9f3f844a7aa06f64",
      "parents": [
        "d42d829cbee20ece01854631be512d71857168d3"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Feb 01 16:13:51 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Feb 01 16:13:51 2026 +0800"
      },
      "message": "feat: show multiple authors in single line in docs page (#44)\n"
    },
    {
      "commit": "d42d829cbee20ece01854631be512d71857168d3",
      "tree": "588dafee727157d2e7bcb061db8280076c97edeb",
      "parents": [
        "8217f4c3502acab31268a01bfd22aa41f59ae07e"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Feb 01 15:59:00 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Feb 01 15:59:00 2026 +0800"
      },
      "message": "feat: fix sidebar capitalization for MAC, RBAC, and API sections (#42)\n"
    },
    {
      "commit": "8217f4c3502acab31268a01bfd22aa41f59ae07e",
      "tree": "e888c880acfd124eef07779902f26288e710b686",
      "parents": [
        "67add958da4c67b874d0a22e9a84818b587e77f0"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Feb 01 15:29:10 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Feb 01 15:29:10 2026 +0800"
      },
      "message": "fix: ignore IDEA files\n"
    },
    {
      "commit": "67add958da4c67b874d0a22e9a84818b587e77f0",
      "tree": "e0335330fc788db5bf661a438de758eb012d4798",
      "parents": [
        "3b2e1576cde36b21ac9cbf4163bc96f164a56bd8"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Feb 01 15:28:52 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Feb 01 15:28:52 2026 +0800"
      },
      "message": "feat: add semantic-release and improve README (#38)\n"
    },
    {
      "commit": "3b2e1576cde36b21ac9cbf4163bc96f164a56bd8",
      "tree": "91597aa3368568db1455cd34b793842702d04fa1",
      "parents": [
        "5d275464f37c143307c3a1210a1291ff5bc87886"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Feb 01 15:12:20 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Feb 01 15:12:20 2026 +0800"
      },
      "message": "feat: add Casbin Go v2 to v3 migration blog article (#30)\n"
    },
    {
      "commit": "5d275464f37c143307c3a1210a1291ff5bc87886",
      "tree": "083969a265bca05a086acc5438cb52e5d17d14de",
      "parents": [
        "89509e2663b63156b1d1f3b032ab127e96641268"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Feb 01 15:10:32 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Feb 01 15:10:32 2026 +0800"
      },
      "message": "fix: remove auto-generated public/last-updated.json (#34)\n"
    },
    {
      "commit": "89509e2663b63156b1d1f3b032ab127e96641268",
      "tree": "eb23e973271fbdd3b3db932b2ca8a7456a70075e",
      "parents": [
        "f6c7b35da594d2e92566a6326209f7b30d678b29"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Feb 01 15:01:23 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Feb 01 15:01:23 2026 +0800"
      },
      "message": "feat: add Prettier to CI (#31)\n"
    },
    {
      "commit": "f6c7b35da594d2e92566a6326209f7b30d678b29",
      "tree": "b16e363fdcbfb61e0bbe6e34b55af978f1def9f5",
      "parents": [
        "40403cef5601048fd40a7388610e2200caa3c014"
      ],
      "author": {
        "name": "TTT",
        "email": "istjy@foxmail.com",
        "time": "Fri Jan 30 14:58:23 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 30 14:58:23 2026 +0800"
      },
      "message": "feat: add validation and error handling for feedback forms (#25)\n\n"
    },
    {
      "commit": "40403cef5601048fd40a7388610e2200caa3c014",
      "tree": "bee7f25a3accfbf0eb660690a546cae4ddf0e3ab",
      "parents": [
        "faaf73d897fcfc4215ab0e7fb6255e4639a6913a"
      ],
      "author": {
        "name": "TTT",
        "email": "istjy@foxmail.com",
        "time": "Wed Jan 28 14:17:06 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 28 14:17:06 2026 +0800"
      },
      "message": "feat: fix docs timestamp to use casbin-website-v2 git history (#24)\n\n"
    },
    {
      "commit": "faaf73d897fcfc4215ab0e7fb6255e4639a6913a",
      "tree": "ed5c0c1f248a6a9f835afa75b28798d47eebf503",
      "parents": [
        "bac38a355422d1b7c99ee2aa159de5536b924516"
      ],
      "author": {
        "name": "TTT",
        "email": "istjy@foxmail.com",
        "time": "Tue Jan 27 22:10:33 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 27 22:10:33 2026 +0800"
      },
      "message": "feat: add giscus to blogs and docs pages (#23)\n\n"
    },
    {
      "commit": "bac38a355422d1b7c99ee2aa159de5536b924516",
      "tree": "ddb1c702094f764280417281e4132c353d784d37",
      "parents": [
        "e4517370dec50cb5625181cf7d0bbaf6e1b844d4"
      ],
      "author": {
        "name": "TTT",
        "email": "istjy@foxmail.com",
        "time": "Tue Jan 27 21:38:43 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 27 21:38:43 2026 +0800"
      },
      "message": "feat: add user avatar to pages (#22)\n\n"
    },
    {
      "commit": "e4517370dec50cb5625181cf7d0bbaf6e1b844d4",
      "tree": "f966219b1db37ca892badf2fb74053763c6f0857",
      "parents": [
        "7c70873304aae3e9b33f2537ad1d71f23749b319"
      ],
      "author": {
        "name": "TTT",
        "email": "istjy@foxmail.com",
        "time": "Tue Jan 27 17:55:36 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 27 17:55:36 2026 +0800"
      },
      "message": "fix: remove sidebar logo in blog pages (#20)\n\n"
    },
    {
      "commit": "7c70873304aae3e9b33f2537ad1d71f23749b319",
      "tree": "95bd036c3837f8e12169bffd2c11b079819c2f24",
      "parents": [
        "c540e875f82db778ad8d28591807c9785aef557a"
      ],
      "author": {
        "name": "TTT",
        "email": "istjy@foxmail.com",
        "time": "Tue Jan 27 17:52:00 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 27 17:52:00 2026 +0800"
      },
      "message": "feat: fix favicon (#21)\n\n"
    },
    {
      "commit": "c540e875f82db778ad8d28591807c9785aef557a",
      "tree": "4b9c94738562daee4203590a9cfa382b12118d24",
      "parents": [
        "b69a155d2866968368e7e700a31a99a378d1e6da"
      ],
      "author": {
        "name": "TTT",
        "email": "istjy@foxmail.com",
        "time": "Tue Jan 27 00:24:38 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 27 00:24:38 2026 +0800"
      },
      "message": "feat: add copy and open buttons in docs (#18)\n\n"
    },
    {
      "commit": "b69a155d2866968368e7e700a31a99a378d1e6da",
      "tree": "1044432059d0f035e56f8e9c979f69b4e4923b77",
      "parents": [
        "d92b7ff8f5e4dcf20f08f0e83faec25f2af452ce"
      ],
      "author": {
        "name": "TTT",
        "email": "istjy@foxmail.com",
        "time": "Mon Jan 26 22:49:42 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jan 26 22:49:42 2026 +0800"
      },
      "message": "feat: add icons to the basis section (#19)\n\n"
    },
    {
      "commit": "d92b7ff8f5e4dcf20f08f0e83faec25f2af452ce",
      "tree": "2bd6c8998895bfc1e6e911d55d92bdfba1cfc86f",
      "parents": [
        "10b1463471dd5cc890d36c1a57afe31bf31bf512"
      ],
      "author": {
        "name": "TTT",
        "email": "istjy@foxmail.com",
        "time": "Sun Jan 25 22:05:46 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jan 25 22:05:46 2026 +0800"
      },
      "message": "feat: align Casbin logo to the left in sidebar (#17)\n\n"
    },
    {
      "commit": "10b1463471dd5cc890d36c1a57afe31bf31bf512",
      "tree": "77c00527e7fc82b314b36c098a57ae983a51e244",
      "parents": [
        "b62fc41a8d4e6816b85b2ac29933b4f40a63bfbd"
      ],
      "author": {
        "name": "TTT",
        "email": "istjy@foxmail.com",
        "time": "Fri Jan 23 16:49:01 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 23 16:49:01 2026 +0800"
      },
      "message": "feat: add `Share` and `Back` buttons and author info (#11)\n\n"
    },
    {
      "commit": "b62fc41a8d4e6816b85b2ac29933b4f40a63bfbd",
      "tree": "1102b47ab2900934ac1f0468a3b4b64fc81281e4",
      "parents": [
        "8b763a2cd5e5d00f500dc495cf9654c1376b16c1"
      ],
      "author": {
        "name": "TTT",
        "email": "istjy@foxmail.com",
        "time": "Thu Jan 22 21:56:32 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 22 21:56:32 2026 +0800"
      },
      "message": "feat: improve card layout and date format in blog page (#10)\n\n"
    },
    {
      "commit": "8b763a2cd5e5d00f500dc495cf9654c1376b16c1",
      "tree": "37f0567edb15f1c1038a7244ab2a5556c73804bc",
      "parents": [
        "947020e6d0215ea80a476f06e39c3b2891266866"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Thu Jan 22 15:07:42 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Thu Jan 22 15:07:42 2026 +0800"
      },
      "message": "feat: fix ESLint errors in code (#15)\n"
    },
    {
      "commit": "947020e6d0215ea80a476f06e39c3b2891266866",
      "tree": "d1dcb6800d826d58ca9e31571e009eab266cc101",
      "parents": [
        "b26d38a4a2e61c1146604747cb89c49ccd8a1187"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Thu Jan 22 14:34:51 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Thu Jan 22 14:34:51 2026 +0800"
      },
      "message": "feat: add ESLint CI workflow (#13)\n"
    },
    {
      "commit": "b26d38a4a2e61c1146604747cb89c49ccd8a1187",
      "tree": "beb1900a6d8322cc16c1100466d0ce044b5f3cfe",
      "parents": [
        "041e075533211dc9032eeab826cbc6fb98ced090"
      ],
      "author": {
        "name": "TTT",
        "email": "istjy@foxmail.com",
        "time": "Thu Jan 22 11:27:09 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 22 11:27:09 2026 +0800"
      },
      "message": "feat: add \u0027last-modified time\u0027 and feedback components (#9)\n\n"
    },
    {
      "commit": "041e075533211dc9032eeab826cbc6fb98ced090",
      "tree": "ee339057e05a5f938f23e8520b49c8cfbe2b08a1",
      "parents": [
        "8c38cc642112ff5f64df0093844904cebdcba5e4"
      ],
      "author": {
        "name": "TTT",
        "email": "istjy@foxmail.com",
        "time": "Sat Jan 17 22:56:29 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jan 17 22:56:29 2026 +0800"
      },
      "message": "feat: add /user page with company showcase and fix some issues (#6)\n\n"
    },
    {
      "commit": "8c38cc642112ff5f64df0093844904cebdcba5e4",
      "tree": "5e8095d2f4e90603db7040ede1190e1ddb2b3a16",
      "parents": [
        "053201e893fbf4b6f4a2aa8ed12f90e8a429796e"
      ],
      "author": {
        "name": "TTT",
        "email": "istjy@foxmail.com",
        "time": "Thu Jan 15 21:26:53 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 15 21:26:53 2026 +0800"
      },
      "message": "feat: enhance homepage, add editor, gallery links (#3)\n\n"
    },
    {
      "commit": "053201e893fbf4b6f4a2aa8ed12f90e8a429796e",
      "tree": "91a9da18e1cf1992448e295d34b3c50316841a62",
      "parents": [
        "144039c7e6740b8e50bcf2429c1c64c0ecc6ce67"
      ],
      "author": {
        "name": "TTT",
        "email": "istjy@foxmail.com",
        "time": "Wed Jan 14 00:31:30 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 14 00:31:30 2026 +0800"
      },
      "message": "feat: add pages, UI components and plugin data\n\n"
    },
    {
      "commit": "144039c7e6740b8e50bcf2429c1c64c0ecc6ce67",
      "tree": "74e0e603fe1a236b5ef1293dcbc6ae8fbd0a5082",
      "parents": [
        "22ae5a8ab00737384c4f947a1ef07c754f868a22"
      ],
      "author": {
        "name": "TTT",
        "email": "istjy@foxmail.com",
        "time": "Tue Jan 06 21:25:28 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 06 21:25:28 2026 +0800"
      },
      "message": "feat: add the initial code\n\n"
    },
    {
      "commit": "22ae5a8ab00737384c4f947a1ef07c754f868a22",
      "tree": "89b88ee13de604f03b85a98baf2c1c21b93318c7",
      "parents": [],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Jan 06 10:59:36 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 06 10:59:36 2026 +0800"
      },
      "message": "Initial commit"
    }
  ]
}
