)]}'
{
  "log": [
    {
      "commit": "e0c1c0c628830b40311f853a10dbf82a201657c0",
      "tree": "2a379a7250b4e1823b4217a2d314672820bfe76b",
      "parents": [
        "b4d745cc0ef9ee607414ef06d509c857565c8d55"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Mon May 04 23:07:22 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Mon May 04 23:07:22 2026 +0800"
      },
      "message": "fix: support opendata repos\n"
    },
    {
      "commit": "b4d745cc0ef9ee607414ef06d509c857565c8d55",
      "tree": "35e3731d637280070fd6fd2d4b3137978d46f0cc",
      "parents": [
        "4f6f95691f4b8e67c0f279eba23824dd70a3a091"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Apr 28 02:59:11 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Apr 28 02:59:11 2026 +0800"
      },
      "message": "fix: improve upload cdn print\n"
    },
    {
      "commit": "4f6f95691f4b8e67c0f279eba23824dd70a3a091",
      "tree": "0d9d0bc17ac71400779a91d8a167b154a2bf3323",
      "parents": [
        "3561e266d8abed574b070058d5f5a698daa51416"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Apr 28 02:17:15 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Apr 28 02:17:15 2026 +0800"
      },
      "message": "feat: add casdoor_ to isFrontendBaseDirEnabledRepo()\n"
    },
    {
      "commit": "3561e266d8abed574b070058d5f5a698daa51416",
      "tree": "4e5f3f328c53d44892a319515020a83f7fb2b8bd",
      "parents": [
        "87936ab4c85831252685c72d580d8feab3f103ca"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Mar 29 21:23:34 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Mar 29 21:31:52 2026 +0800"
      },
      "message": "feat: add UrlPathRule\n"
    },
    {
      "commit": "87936ab4c85831252685c72d580d8feab3f103ca",
      "tree": "6aa285e50e4e694e09d449155b52845b4f1918bf",
      "parents": [
        "bc0c102403579272d46d90ee19519a2545299cbe"
      ],
      "author": {
        "name": "Paweł Markowski",
        "email": "pm4public@gmail.com",
        "time": "Mon Feb 16 12:43:24 2026 +0100"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Mar 29 21:31:48 2026 +0800"
      },
      "message": "feat: fix dockerfile missing package (tzdata) (#160)\n\n"
    },
    {
      "commit": "bc0c102403579272d46d90ee19519a2545299cbe",
      "tree": "b7e804d63b08d2be0dae6af2326c49d640846509",
      "parents": [
        "723f2479594386c691d1e87cb8da321980502d70"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Thu Jan 29 23:12:08 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Thu Jan 29 23:12:08 2026 +0800"
      },
      "message": "feat: fix CORS issue (#157)\n"
    },
    {
      "commit": "723f2479594386c691d1e87cb8da321980502d70",
      "tree": "99d6373bc0bb60647d31328b2ec192aab011d2f4",
      "parents": [
        "e96692bc760b7774dae815c3fd662f14df132ec5"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Thu Jan 29 22:48:45 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Thu Jan 29 22:48:45 2026 +0800"
      },
      "message": "feat: add HSTS header to HTTPS responses (#156)\n"
    },
    {
      "commit": "e96692bc760b7774dae815c3fd662f14df132ec5",
      "tree": "e8144ada79a09de8e36dc4be691fbc1c46fe4b22",
      "parents": [
        "f9b8b685ef2c32daea3546657a7b1902b2cfa181"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Thu Jan 29 22:35:44 2026 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Thu Jan 29 22:35:44 2026 +0800"
      },
      "message": "feat: add Secure flag to cookies (#153)\n"
    },
    {
      "commit": "f9b8b685ef2c32daea3546657a7b1902b2cfa181",
      "tree": "364ec2eb4147172751c89eaadf5058034a9f16d8",
      "parents": [
        "7f93e98e911a5d225e1d82b1569ade171196f87d"
      ],
      "author": {
        "name": "DacongDA",
        "email": "dacongda1@sina.com",
        "time": "Thu Jan 29 16:40:44 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 29 16:40:44 2026 +0800"
      },
      "message": "feat: improve /debug/vars handling (#142)\n\n"
    },
    {
      "commit": "7f93e98e911a5d225e1d82b1569ade171196f87d",
      "tree": "caf38a04c037122850d26da8d2db2f49105c1562",
      "parents": [
        "d203db953862ca648380ca80e3feda4fdde841ae"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Wed Dec 24 22:29:48 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Wed Dec 24 22:29:48 2025 +0800"
      },
      "message": "feat: fix Kubernetes deployment: wait-for-it timeout, add complete manifests (#136)\n"
    },
    {
      "commit": "d203db953862ca648380ca80e3feda4fdde841ae",
      "tree": "0b51f5598fab0ded9eaf24992965cfc9c5e90f02",
      "parents": [
        "1f6b0d65a7eab49ffb8696231deda0a4f443ded2"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Mon Dec 15 01:39:30 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Mon Dec 15 01:39:30 2025 +0800"
      },
      "message": "Set useProxy to true in cert renew\n"
    },
    {
      "commit": "1f6b0d65a7eab49ffb8696231deda0a4f443ded2",
      "tree": "5428849268c60987840b56dbfbb5fcc6c2982d97",
      "parents": [
        "ea2bc2ae7b79ff7706fbbe6931f8fbb1a4daf9b5"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Mon Dec 15 00:48:15 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Mon Dec 15 00:48:15 2025 +0800"
      },
      "message": "fix: improve isCertNearExpire to 7 days\n"
    },
    {
      "commit": "ea2bc2ae7b79ff7706fbbe6931f8fbb1a4daf9b5",
      "tree": "85d7cc9fd8a94d901865d2c6fe8b7e616d4beb9f",
      "parents": [
        "d574f15ac5d13cbab28d54c8713eb833858ab290"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Thu Nov 20 01:04:25 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Thu Nov 20 01:04:25 2025 +0800"
      },
      "message": "fix: fix shortcut file check to handle deleted shortcuts with existing bat files (#134)\n"
    },
    {
      "commit": "d574f15ac5d13cbab28d54c8713eb833858ab290",
      "tree": "c61aca0e4219095dd19e1a4a766dfedb977ad7c1",
      "parents": [
        "46ae7bfefda7d5ef19086b5e1f43824b865f96b7"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Wed Nov 19 23:45:47 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Wed Nov 19 23:45:47 2025 +0800"
      },
      "message": "feat: fix encoding for Windows tasklist output in IsWindowTitleActive() (#132)\n"
    },
    {
      "commit": "46ae7bfefda7d5ef19086b5e1f43824b865f96b7",
      "tree": "bb4ea53e23f4df4b36d187ba2592721c93348fe8",
      "parents": [
        "600b7cdf766fb762b9039b4ca679f19354b322d0"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Wed Nov 19 23:38:48 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Wed Nov 19 23:38:48 2025 +0800"
      },
      "message": "Fix bug in GetNode(site.Node)\n"
    },
    {
      "commit": "600b7cdf766fb762b9039b4ca679f19354b322d0",
      "tree": "3cc56c4a63093d4a5715df4d7971a8bab4a07cfd",
      "parents": [
        "79605009bf3f0a0a6e6bcc4cc72d8d9ca652a0b6"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Wed Nov 19 22:46:28 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Wed Nov 19 22:49:28 2025 +0800"
      },
      "message": "fix: add Node.UpgradeMode field to control site upgrade timing (#130)\n"
    },
    {
      "commit": "79605009bf3f0a0a6e6bcc4cc72d8d9ca652a0b6",
      "tree": "6e174a920c6b832ed51f16b630ea070ad91093f3",
      "parents": [
        "006bc9f7f729799f670b45e4a21858b73a572a70"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Wed Nov 19 22:23:11 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Wed Nov 19 22:23:11 2025 +0800"
      },
      "message": "fix: improve node list page\n"
    },
    {
      "commit": "006bc9f7f729799f670b45e4a21858b73a572a70",
      "tree": "013d740bfd90bda9b98cc45c5c3324163e5a02af",
      "parents": [
        "4c947b88213b852cc932a6b2f51e9f56c7547fb8"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Wed Nov 19 22:22:45 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Wed Nov 19 22:22:45 2025 +0800"
      },
      "message": "feat: prevent duplicate process starts during compilation by checking window title (#128)\n"
    },
    {
      "commit": "4c947b88213b852cc932a6b2f51e9f56c7547fb8",
      "tree": "9e1499bfe66e19ae2d2a4bd9e604718e8a62c488",
      "parents": [
        "ed491156a00e4d3706971347a89be68d2ced1d24"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Wed Nov 19 20:58:37 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Wed Nov 19 20:58:37 2025 +0800"
      },
      "message": "feat: add Node pages (#126)\n"
    },
    {
      "commit": "ed491156a00e4d3706971347a89be68d2ced1d24",
      "tree": "62f0020b5e423663c0edcbb26fb48775e1c4409f",
      "parents": [
        "26146f61a57761e63fea1c14467351810c16dcb2"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Wed Nov 19 16:43:17 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Wed Nov 19 16:43:17 2025 +0800"
      },
      "message": "Rename Node to NodeItem\n"
    },
    {
      "commit": "26146f61a57761e63fea1c14467351810c16dcb2",
      "tree": "bd65f708fb26e09cce3a459f02b79eeefa036fcd",
      "parents": [
        "18325289fdf45107d44bd1f739e12ad86be0d5e6"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Mon Nov 10 23:52:25 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Mon Nov 10 23:52:25 2025 +0800"
      },
      "message": "feat: fix duplicate CI runs on PRs by restricting workflow triggers to specific branches (#123)\n"
    },
    {
      "commit": "18325289fdf45107d44bd1f739e12ad86be0d5e6",
      "tree": "83ae0452928915d611a572ceceb93128645fb201",
      "parents": [
        "e0e44147f3915c605cce09a1bb420b020555f247"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Mon Nov 10 23:40:05 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Mon Nov 10 23:40:05 2025 +0800"
      },
      "message": "Fix Docker build failure when semantic-release skips version creation (#121)\n"
    },
    {
      "commit": "e0e44147f3915c605cce09a1bb420b020555f247",
      "tree": "d82b9e36f21a7f55105c16b75747c7a0fccd832d",
      "parents": [
        "96d0ad8613ca3ae0aab2f47b96b2c012daa323f3"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Mon Nov 10 14:31:32 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Mon Nov 10 14:31:32 2025 +0800"
      },
      "message": "Improve GetGlobalSites logic\n"
    },
    {
      "commit": "96d0ad8613ca3ae0aab2f47b96b2c012daa323f3",
      "tree": "5776741a3776af98125d2348850489bb3e63ea11",
      "parents": [
        "7f55f5390ce466d745f5c0710f014825a3646393"
      ],
      "author": {
        "name": "Copilot",
        "email": "198982749+Copilot@users.noreply.github.com",
        "time": "Thu Oct 30 17:21:31 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 30 17:21:31 2025 +0800"
      },
      "message": "fix: harden TLS configuration to disable weak cipher suites (#119)\n\n"
    },
    {
      "commit": "7f55f5390ce466d745f5c0710f014825a3646393",
      "tree": "5cf67e15ad8137506c1b704ac472b56d4779a417",
      "parents": [
        "11d94af8f54d12a8d0b608a4e37ceff05681ee1d"
      ],
      "author": {
        "name": "Copilot",
        "email": "198982749+Copilot@users.noreply.github.com",
        "time": "Thu Oct 30 14:35:07 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 30 14:35:07 2025 +0800"
      },
      "message": "fix: disable 3DES cipher suites (#117)\n\n"
    },
    {
      "commit": "11d94af8f54d12a8d0b608a4e37ceff05681ee1d",
      "tree": "0feecbbb887613d16c14d43cda6950c06d5d338f",
      "parents": [
        "e26fa78edb2caa973a31e8dfcf65391bea3536ae"
      ],
      "author": {
        "name": "Copilot",
        "email": "198982749+Copilot@users.noreply.github.com",
        "time": "Thu Oct 30 13:40:06 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 30 13:40:06 2025 +0800"
      },
      "message": "feat: set TLS minimum version to 1.2 for HTTPS gateway (#112)\n\n"
    },
    {
      "commit": "e26fa78edb2caa973a31e8dfcf65391bea3536ae",
      "tree": "05ca1c4b5130ed33344eab5dd8e5205c0f6b9505",
      "parents": [
        "eb7a505b31e9046fb73b2b9d0fefa6cdcca58143"
      ],
      "author": {
        "name": "Copilot",
        "email": "198982749+Copilot@users.noreply.github.com",
        "time": "Thu Oct 30 01:59:53 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 30 01:59:53 2025 +0800"
      },
      "message": "feat: add InitSelfGuard() (#108)\n\n"
    },
    {
      "commit": "eb7a505b31e9046fb73b2b9d0fefa6cdcca58143",
      "tree": "788a27559494ba93433a08389e60653fe4c93114",
      "parents": [
        "730612ca62b4a6148efb6fdf06dd1ba2d0e65ecc"
      ],
      "author": {
        "name": "Copilot",
        "email": "198982749+Copilot@users.noreply.github.com",
        "time": "Sat Oct 25 18:59:16 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 25 18:59:16 2025 +0800"
      },
      "message": "feat: add IsVerbose field to Rule for detailed debug output (#106)\n\n"
    },
    {
      "commit": "730612ca62b4a6148efb6fdf06dd1ba2d0e65ecc",
      "tree": "942d33de96622162c1c87d21e6e82feddc5aaaf6",
      "parents": [
        "2f8d0535d86e152fa498d53289a09d1cf63f3404"
      ],
      "author": {
        "name": "Copilot",
        "email": "198982749+Copilot@users.noreply.github.com",
        "time": "Sat Oct 25 18:37:23 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 25 18:37:23 2025 +0800"
      },
      "message": "feat: fix StopOldInstance bug to check gateway ports before binding (#104)\n\n"
    },
    {
      "commit": "2f8d0535d86e152fa498d53289a09d1cf63f3404",
      "tree": "0132efc66a7d582febdbfc00a722162e530f3baf",
      "parents": [
        "208e41812bb17d8ac61fedc90224ec4800d48df4"
      ],
      "author": {
        "name": "Copilot",
        "email": "198982749+Copilot@users.noreply.github.com",
        "time": "Sat Oct 25 18:16:11 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 25 18:16:11 2025 +0800"
      },
      "message": "feat: fix IsAbroadIp() to return false for intranet IPs (#100)\n\n"
    },
    {
      "commit": "208e41812bb17d8ac61fedc90224ec4800d48df4",
      "tree": "049b7cbdd46719441a6244134afed3afe6bce51a",
      "parents": [
        "ccad01d038536b867832e408cf98230c042b94e4"
      ],
      "author": {
        "name": "Copilot",
        "email": "198982749+Copilot@users.noreply.github.com",
        "time": "Sat Oct 25 18:12:35 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 25 18:12:35 2025 +0800"
      },
      "message": "feat: fix CI: restrict release-and-push job to master branch only (#102)\n\n"
    },
    {
      "commit": "ccad01d038536b867832e408cf98230c042b94e4",
      "tree": "b2d67d9298d6bd75b738dc344c061051d6b34cca",
      "parents": [
        "2b8f74ef397d78bd36ef594d5096e04e4e0ed44a"
      ],
      "author": {
        "name": "Copilot",
        "email": "198982749+Copilot@users.noreply.github.com",
        "time": "Sat Oct 25 18:07:43 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 25 18:07:43 2025 +0800"
      },
      "message": "feat: support StopOldInstance() to kill old process on startup (#96)\n\n"
    },
    {
      "commit": "2b8f74ef397d78bd36ef594d5096e04e4e0ed44a",
      "tree": "7b3c8702fc26893b6735035d4f0b481c42723f32",
      "parents": [
        "ee3e82888b635650f37c365962cd90ca705fece3"
      ],
      "author": {
        "name": "Copilot",
        "email": "198982749+Copilot@users.noreply.github.com",
        "time": "Sat Oct 25 17:43:02 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 25 17:43:02 2025 +0800"
      },
      "message": "feat: update IpRuleTable.js to add \"is abroad\" operator to the operator dropdown (#94)\n\n"
    },
    {
      "commit": "ee3e82888b635650f37c365962cd90ca705fece3",
      "tree": "2b39c7f0fcab19cda1b05081606ae39e242c9340",
      "parents": [
        "1c4a7856f96628a1cee0ddc727591ead9645a313"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Oct 25 17:38:50 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Oct 25 17:38:50 2025 +0800"
      },
      "message": "fix: improve logRequest IP logging\n"
    },
    {
      "commit": "1c4a7856f96628a1cee0ddc727591ead9645a313",
      "tree": "8fc3d369279492ff901f4e08ff55be10ffb9f5f7",
      "parents": [
        "532406a87638cb785aee222be3944289fab89881"
      ],
      "author": {
        "name": "Copilot",
        "email": "198982749+Copilot@users.noreply.github.com",
        "time": "Sat Oct 25 17:15:50 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 25 17:15:50 2025 +0800"
      },
      "message": "feat: add \"is abroad\" operator to IP rules (#92)\n\n"
    },
    {
      "commit": "532406a87638cb785aee222be3944289fab89881",
      "tree": "305d4c2378a7542d48c1a1666aae2346e7afa61f",
      "parents": [
        "131363d0ed98097a1a48728fb80b09c0a6b4d141"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Oct 25 15:44:47 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Oct 25 15:44:47 2025 +0800"
      },
      "message": "fix: add refreshRuleMap in StartMonitorSitesLoop()\n"
    },
    {
      "commit": "131363d0ed98097a1a48728fb80b09c0a6b4d141",
      "tree": "f06f81d4414c7cf805cd329137dbb7bcc9fdb012",
      "parents": [
        "f9ae159e3affa0679bcfa4bf4f3d7ed08bfb2c2f"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Oct 25 15:19:45 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Oct 25 15:19:45 2025 +0800"
      },
      "message": "feat: improve site list page, rule list page\n"
    },
    {
      "commit": "f9ae159e3affa0679bcfa4bf4f3d7ed08bfb2c2f",
      "tree": "39afd008fb4fdc13740882019ce81622be313e75",
      "parents": [
        "f335fca8faff494aaea210a64bb8b1fdd8bd1fe8"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Oct 25 14:55:58 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Oct 25 14:55:58 2025 +0800"
      },
      "message": "fix: fix bug in status code in handleRequest()\n"
    },
    {
      "commit": "f335fca8faff494aaea210a64bb8b1fdd8bd1fe8",
      "tree": "df56c4633e149c559fb7e7a575f5968020eb6671",
      "parents": [
        "dd654ff24babef0cae920b978e51d278307c32f1"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Oct 25 14:43:25 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Oct 25 14:43:25 2025 +0800"
      },
      "message": "feat: refactor ActionResult to RuleResult\n"
    },
    {
      "commit": "dd654ff24babef0cae920b978e51d278307c32f1",
      "tree": "dceb4d83d9572e6056d7a757b53db92eac09496f",
      "parents": [
        "e302b1020a9ac13e918f18ed48baf153b05c33f3"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Oct 25 12:53:25 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Oct 25 12:53:25 2025 +0800"
      },
      "message": "feat: remove Action object\n"
    },
    {
      "commit": "e302b1020a9ac13e918f18ed48baf153b05c33f3",
      "tree": "233df91bd2435d13752170385f5c2cdb546de41f",
      "parents": [
        "15631ade83f4c329dae6618dce799123bf197730"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Oct 25 11:59:54 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Oct 25 11:59:54 2025 +0800"
      },
      "message": "Fix bug in CheckRules()\n"
    },
    {
      "commit": "15631ade83f4c329dae6618dce799123bf197730",
      "tree": "515224d4891a2bbbd963c66c3ab59c2b96466c14",
      "parents": [
        "91012bb457bcf616c17de5e38040973182ba484b"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Oct 25 11:45:25 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Oct 25 11:45:25 2025 +0800"
      },
      "message": "Improve check rules code\n"
    },
    {
      "commit": "91012bb457bcf616c17de5e38040973182ba484b",
      "tree": "0cb1204cfe9769459a163558cda2011c5c26a0f0",
      "parents": [
        "d31afdf4962ffc9a6d9cdbde85d7433de532ef32"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Oct 25 10:53:05 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Oct 25 10:53:05 2025 +0800"
      },
      "message": "Update i18n files\n"
    },
    {
      "commit": "d31afdf4962ffc9a6d9cdbde85d7433de532ef32",
      "tree": "bd81804db84e676e6077ab15f9d580565791cc48",
      "parents": [
        "ddeca8d7ea375c191a1e37a64cd2cd1c345785ce"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Oct 25 10:51:21 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Oct 25 10:51:21 2025 +0800"
      },
      "message": "Fix GetAcmeClient() bug\n"
    },
    {
      "commit": "ddeca8d7ea375c191a1e37a64cd2cd1c345785ce",
      "tree": "f4a70921a5ce4dcefef29d41262197d9b6010528",
      "parents": [
        "d96bdae382d6066afd286848da6980b440a766d9"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Oct 25 10:51:04 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Oct 25 10:51:04 2025 +0800"
      },
      "message": "Add Action.UpdatedTime\n"
    },
    {
      "commit": "d96bdae382d6066afd286848da6980b440a766d9",
      "tree": "4c79532750173fea1e9c11292dbc35d4845f7101",
      "parents": [
        "4c3d9957d8c8e43368cd5240465acb9659e01f53"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Oct 25 10:50:51 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Oct 25 10:50:51 2025 +0800"
      },
      "message": "Can modify rule and action names now\n"
    },
    {
      "commit": "4c3d9957d8c8e43368cd5240465acb9659e01f53",
      "tree": "81f266fd0d19871a05b6ece320a0a848346088e9",
      "parents": [
        "f01b9d01373375cdebcdb45ddbef28777931f566"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Fri Sep 12 20:12:11 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Fri Sep 12 20:12:20 2025 +0800"
      },
      "message": "feat: improve host field UI for site list page\n"
    },
    {
      "commit": "f01b9d01373375cdebcdb45ddbef28777931f566",
      "tree": "faa3ca4ab84a1fff9c2bf0f63ae12da45212ab9e",
      "parents": [
        "bb8043cbc3127f06cce5022116c993b94dec0c73"
      ],
      "author": {
        "name": "ShixingZhou",
        "email": "53111724+FlySky-z@users.noreply.github.com",
        "time": "Sun Sep 07 19:33:18 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 07 19:33:18 2025 +0800"
      },
      "message": "feat: fix semantic release CI script (#82)\n\n"
    },
    {
      "commit": "bb8043cbc3127f06cce5022116c993b94dec0c73",
      "tree": "d07fb37c9aa81a52434ffc5315fa9983240d2655",
      "parents": [
        "66add4791ad88db6d4bb29af4537c8fdcd955b79"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Sep 07 14:20:18 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Sep 07 14:20:18 2025 +0800"
      },
      "message": "feat: fix DashboardDetailPage crash bug on empty data\n"
    },
    {
      "commit": "66add4791ad88db6d4bb29af4537c8fdcd955b79",
      "tree": "7439b239e1b6760a9b7afdcdf31b32661c6d1335",
      "parents": [
        "c3140ee46e9a6f26cedac459cc23d3dd60870b23"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Aug 05 21:39:20 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Aug 05 21:39:20 2025 +0800"
      },
      "message": "Add \"med2\" to isFrontendBaseDirEnabledRepo()\n"
    },
    {
      "commit": "c3140ee46e9a6f26cedac459cc23d3dd60870b23",
      "tree": "fea5c6579d4e01f6643a0520aea3ba6c9c918df1",
      "parents": [
        "98453552d9b6e1559d91c723c1279cd44f5b405b"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Jun 28 21:41:05 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat Jun 28 21:41:05 2025 +0800"
      },
      "message": "Add proxy for TestGetClient()\n"
    },
    {
      "commit": "98453552d9b6e1559d91c723c1279cd44f5b405b",
      "tree": "8cc39a0ab70eb15d1d1da2748167b430b8320771",
      "parents": [
        "edee9291715eb54716d3e1a6acec638800ce48d0"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Jun 08 17:45:30 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Jun 08 17:45:30 2025 +0800"
      },
      "message": "Improve gitCreateDatabaseCloud()\n"
    },
    {
      "commit": "edee9291715eb54716d3e1a6acec638800ce48d0",
      "tree": "76b97a8a7f3123eeb3384024a384b2a7858ce931",
      "parents": [
        "47b2ff652e3891164294fd41d0206e20201234ff"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Jun 08 17:38:22 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun Jun 08 17:38:22 2025 +0800"
      },
      "message": "Remove wmic in getPid()\n"
    },
    {
      "commit": "47b2ff652e3891164294fd41d0206e20201234ff",
      "tree": "e1d2dbd9c70f0cb7ecd0f6d03574a354cbd32a96",
      "parents": [
        "baf451788d36c5c5e1722b0d0bd89a24f030da57"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun May 25 11:54:47 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sun May 25 11:54:47 2025 +0800"
      },
      "message": "Support org name in updateAppConfFile()\n"
    },
    {
      "commit": "baf451788d36c5c5e1722b0d0bd89a24f030da57",
      "tree": "2f3242dc53f858709c5ebc9f5ab56279aab7b20a",
      "parents": [
        "91ce5ed5ecdbca4e7cd6f4eed36d8796713f0240"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat May 24 22:53:50 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat May 24 22:53:50 2025 +0800"
      },
      "message": "Fix DB existed bug in gitCreateDatabaseCloud()\n"
    },
    {
      "commit": "91ce5ed5ecdbca4e7cd6f4eed36d8796713f0240",
      "tree": "4f690b6414c0816ed0377ab5c125c956c10c247b",
      "parents": [
        "2e09cc4b964d6a8cd59dd5f6942d4fd5eab579ca"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat May 24 22:36:54 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat May 24 22:36:54 2025 +0800"
      },
      "message": "Improve updateAppConfFile()\n"
    },
    {
      "commit": "2e09cc4b964d6a8cd59dd5f6942d4fd5eab579ca",
      "tree": "542b0d687e51fadcdb47428d9d93a602c72ddb58",
      "parents": [
        "6242c143d25527a0f1495137c00f2fe8dda048fd"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat May 24 20:43:37 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat May 24 21:02:36 2025 +0800"
      },
      "message": "Improve addDatabaseUser()\n"
    },
    {
      "commit": "6242c143d25527a0f1495137c00f2fe8dda048fd",
      "tree": "7553d9028ef5924fa64367c866111ba0da40b9d8",
      "parents": [
        "82a00a1fc15a2a3459f88d88570070e7d8ba6fd9"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat May 24 13:35:58 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat May 24 13:35:58 2025 +0800"
      },
      "message": "Update code to support 40000\n"
    },
    {
      "commit": "82a00a1fc15a2a3459f88d88570070e7d8ba6fd9",
      "tree": "e31cb177849484ad5d1dce8631808ca54f8bc88a",
      "parents": [
        "f1aa13ec24909051b7b082cb934e45b222e9f51b"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat May 24 00:19:35 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Sat May 24 00:21:45 2025 +0800"
      },
      "message": "Add gitCreateDatabaseCloud()\n"
    },
    {
      "commit": "f1aa13ec24909051b7b082cb934e45b222e9f51b",
      "tree": "070f0ee5b303f056dc3141f6e2d3d6ace02f3f4c",
      "parents": [
        "78581155476da4ff3cb4ee6532692cf48e5ccb33"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Fri May 23 23:55:12 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Fri May 23 23:55:12 2025 +0800"
      },
      "message": "Fix cycle import\n"
    },
    {
      "commit": "78581155476da4ff3cb4ee6532692cf48e5ccb33",
      "tree": "2b49522bbb3d63b3ff36c55bddd0a08b1f6dcbf2",
      "parents": [
        "659fa89a9d209939a9c9a72f4775955423892ef3"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Fri May 23 23:29:16 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Fri May 23 23:30:26 2025 +0800"
      },
      "message": "Refactor run code\n"
    },
    {
      "commit": "659fa89a9d209939a9c9a72f4775955423892ef3",
      "tree": "6b60fdca2c728b9b5767d48f1994fb2b4c08999a",
      "parents": [
        "5fea838b78ac524d333074b9a9b6a2e1cd91ac46"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Mon May 05 17:44:52 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Mon May 05 17:44:52 2025 +0800"
      },
      "message": "Improve isFrontendBaseDirEnabledRepo()\n"
    },
    {
      "commit": "5fea838b78ac524d333074b9a9b6a2e1cd91ac46",
      "tree": "81abd38cd52bde4b8458caa8c2ed820d60a3b48c",
      "parents": [
        "424d7cfeba6921b357eaeef4a7a347b3d26e523d"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Mon May 05 14:10:57 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Mon May 05 14:10:57 2025 +0800"
      },
      "message": "Add isFrontendBaseDirEnabledRepo()\n"
    },
    {
      "commit": "424d7cfeba6921b357eaeef4a7a347b3d26e523d",
      "tree": "6714a9915f657667f268d7481a8c71113080c486",
      "parents": [
        "e8ccedb4fc415afb224b7536159b56f6e921d35e"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Thu Apr 03 00:38:23 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Thu Apr 03 00:38:23 2025 +0800"
      },
      "message": "Add path arg to wrapRepoError()\n"
    },
    {
      "commit": "e8ccedb4fc415afb224b7536159b56f6e921d35e",
      "tree": "4b2dd5fc15103fd790cb1b646aec43617aad2f72",
      "parents": [
        "9ea22994ed0bb47c13cf53bb0977dfe34df45123"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Mar 25 19:59:49 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Mar 25 19:59:49 2025 +0800"
      },
      "message": "Add \"/MP_verify_\" challenge\n"
    },
    {
      "commit": "9ea22994ed0bb47c13cf53bb0977dfe34df45123",
      "tree": "ff9855d64fc4b67c948009390016515b674493a4",
      "parents": [
        "d47def85cb90a1d89801dad26a56b368c1a1199d"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Mar 04 12:29:21 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Mar 04 12:29:21 2025 +0800"
      },
      "message": "Improve site list\n"
    },
    {
      "commit": "d47def85cb90a1d89801dad26a56b368c1a1199d",
      "tree": "79811e196ca72d604b69eb7e02145d15d7b52245",
      "parents": [
        "13651a77e876c6325ad75dc49e7d0238dda7018d"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Mon Mar 03 09:22:05 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Mon Mar 03 09:22:05 2025 +0800"
      },
      "message": "Set pagination to 1000\n"
    },
    {
      "commit": "13651a77e876c6325ad75dc49e7d0238dda7018d",
      "tree": "7eca25884fc1e850a3d40759d0d01e508935764f",
      "parents": [
        "c49fee45791c0af3d8ae496f20fbf052874b399f"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Fri Feb 28 12:35:22 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Fri Feb 28 12:35:31 2025 +0800"
      },
      "message": "feat: improve stopProcess() for casibase\n"
    },
    {
      "commit": "c49fee45791c0af3d8ae496f20fbf052874b399f",
      "tree": "04368901c3204e75c29000acb929d66358a80ed1",
      "parents": [
        "8b6f4f779a971b13b3f2b22ccff9ef162e8aea45"
      ],
      "author": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Jan 07 21:28:17 2025 +0800"
      },
      "committer": {
        "name": "Yang Luo",
        "email": "hsluoyz@gmail.com",
        "time": "Tue Jan 07 21:28:17 2025 +0800"
      },
      "message": "feat: improve stopProcess()\n"
    },
    {
      "commit": "8b6f4f779a971b13b3f2b22ccff9ef162e8aea45",
      "tree": "8ebbbf8a4be0f832d2d6b00d0da82e2f33b20cbf",
      "parents": [
        "92a0dc8ad5fe5a512f5e8f2d52f6e2a0a24c2214"
      ],
      "author": {
        "name": "Love98",
        "email": "77888749+love98ooo@users.noreply.github.com",
        "time": "Sat Sep 28 15:11:02 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 28 15:11:02 2024 +0800"
      },
      "message": "feat: add dashboard to selected menu key (#81)\n\n"
    },
    {
      "commit": "92a0dc8ad5fe5a512f5e8f2d52f6e2a0a24c2214",
      "tree": "a1203788510019e4941fe104038ceb978533d441",
      "parents": [
        "69b6af264ba5d8e2596f43c7572aa3fe12d7f870"
      ],
      "author": {
        "name": "Love98",
        "email": "77888749+love98ooo@users.noreply.github.com",
        "time": "Fri Sep 27 22:46:25 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 27 22:46:25 2024 +0800"
      },
      "message": "feat: support health check and alert for sites (#79)\n\n* feat: support health check for sites\r\n\r\n* feat: refactor out health-check and provider\r\n\r\n* feat: clean up code and support SMS\r\n\r\n* feat: support send alert with specific providers"
    },
    {
      "commit": "69b6af264ba5d8e2596f43c7572aa3fe12d7f870",
      "tree": "fb5195fa795545c51873d573a04549671f9ba2d9",
      "parents": [
        "3a211f250ea3587a0160dada2283b8342c0d2990"
      ],
      "author": {
        "name": "Love98",
        "email": "77888749+love98ooo@users.noreply.github.com",
        "time": "Fri Sep 27 01:02:44 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 27 01:02:44 2024 +0800"
      },
      "message": "feat: update casdoor sdk to v0.52.0 (#80)\n\n* feat: update casdoor sdk to v0.52.0\r\n\r\n* feat: simplify del obj in casdoor"
    },
    {
      "commit": "3a211f250ea3587a0160dada2283b8342c0d2990",
      "tree": "45417d8e0a254459cb23cd3f605dde002bb032e8",
      "parents": [
        "855e225df63a0592032d06a191c488b8756d99d8"
      ],
      "author": {
        "name": "Love98",
        "email": "77888749+love98ooo@users.noreply.github.com",
        "time": "Mon Sep 23 21:01:12 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 23 21:01:12 2024 +0800"
      },
      "message": "feat: rename Captcha to CAPTCHA (#78)\n\n"
    },
    {
      "commit": "855e225df63a0592032d06a191c488b8756d99d8",
      "tree": "d6a723833e048401589903222577d3e5752fa837",
      "parents": [
        "ab9caf5cd59933edf1382e470cc64df88f56f571"
      ],
      "author": {
        "name": "Love98",
        "email": "77888749+love98ooo@users.noreply.github.com",
        "time": "Tue Sep 17 21:22:53 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 17 21:22:53 2024 +0800"
      },
      "message": "feat: remove arm64 DockerHub image (#77)\n\n"
    },
    {
      "commit": "ab9caf5cd59933edf1382e470cc64df88f56f571",
      "tree": "88368b9a8a115e08187129d626d023755c526114",
      "parents": [
        "e57f538c3406fe98fb6182afae3a9cf37c3ca937"
      ],
      "author": {
        "name": "Gucheng",
        "email": "85475922+nomeguy@users.noreply.github.com",
        "time": "Tue Sep 17 19:48:10 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 17 19:48:10 2024 +0800"
      },
      "message": "docs: fix Docker link"
    },
    {
      "commit": "e57f538c3406fe98fb6182afae3a9cf37c3ca937",
      "tree": "b19ff2ef665fd5bdd9ac88f534884855b9283674",
      "parents": [
        "7aa147999fc363da9b145f27fffe667861e78e8c"
      ],
      "author": {
        "name": "Love98",
        "email": "77888749+love98ooo@users.noreply.github.com",
        "time": "Tue Sep 17 14:20:19 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 17 14:20:19 2024 +0800"
      },
      "message": "feat(Dockerfile): remove npmmirror and update base version (#76)\n\n1. remove npmmirror\r\n2. synchronize the node and golang version to the version used by casdoor"
    },
    {
      "commit": "7aa147999fc363da9b145f27fffe667861e78e8c",
      "tree": "fed11e53e1085404d0732941eda361e4ebbc1b3b",
      "parents": [
        "d6c659b0d3fa5113ee061cfbf601a575c1744931"
      ],
      "author": {
        "name": "Love98",
        "email": "77888749+love98ooo@users.noreply.github.com",
        "time": "Tue Sep 17 13:18:23 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 17 13:18:23 2024 +0800"
      },
      "message": "feat: re-generate yarn.lock to fix CI error (#75)\n\n* fix: double released in ci.yml make previous version equal to current version\r\n\r\n* fix: update yarn.lock to fix docker build"
    },
    {
      "commit": "d6c659b0d3fa5113ee061cfbf601a575c1744931",
      "tree": "43b8f569e64cb37722a50d6d0a6fd6e734d60e31",
      "parents": [
        "4d353b4a42b59146ac2e9ce3058fca8e66f33ab8"
      ],
      "author": {
        "name": "Love98",
        "email": "77888749+love98ooo@users.noreply.github.com",
        "time": "Tue Sep 17 11:38:06 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 17 11:38:06 2024 +0800"
      },
      "message": "feat: fix CI script for failed Dockerhub release (#74)\n\n"
    },
    {
      "commit": "4d353b4a42b59146ac2e9ce3058fca8e66f33ab8",
      "tree": "90518f1295f7de18586277959ff2b6011c8233c8",
      "parents": [
        "a4b42f3a0b445a74887e6dacfff28e7068517f69"
      ],
      "author": {
        "name": "Love98",
        "email": "77888749+love98ooo@users.noreply.github.com",
        "time": "Sun Sep 15 17:26:09 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 15 17:26:09 2024 +0800"
      },
      "message": "feat: add action object (#73)\n\n* feat: support new action in proxy.go\r\n\r\n* feat: support rule action in the frontend\r\n\r\n* chore: rename ActionId into Id and update empty action type into allow"
    },
    {
      "commit": "a4b42f3a0b445a74887e6dacfff28e7068517f69",
      "tree": "2da5df5b9f0ea7413c60d9e5796474619b82cb46",
      "parents": [
        "a9b1f4ea65ec1a8baa95c72882018ab46e19b6aa"
      ],
      "author": {
        "name": "Love98",
        "email": "77888749+love98ooo@users.noreply.github.com",
        "time": "Thu Sep 05 20:31:38 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 05 20:31:38 2024 +0800"
      },
      "message": "feat: add action object (#72)\n\n* feat: add action object\r\n\r\n* feat: remove updatedTime and set createdTime at the frontend"
    },
    {
      "commit": "a9b1f4ea65ec1a8baa95c72882018ab46e19b6aa",
      "tree": "b6d30ed4608f431de92c426950cf591b26b18db1",
      "parents": [
        "1671f43473bc29392ca257d46602eae20f532acd"
      ],
      "author": {
        "name": "Love98",
        "email": "77888749+love98ooo@users.noreply.github.com",
        "time": "Tue Aug 27 22:42:42 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 27 22:42:42 2024 +0800"
      },
      "message": "feat: support CAPTCHA action via Casdoor (#71)\n\n* feat: support CAPTCHA action via Casdoor\r\n\r\n* update: update google/uuid to 1.6.0\r\n\r\n* feat: add apache header\r\n\r\n* fix: go test error"
    },
    {
      "commit": "1671f43473bc29392ca257d46602eae20f532acd",
      "tree": "b4751eca7f10d50b63f03afa5470b4b1b89cfe53",
      "parents": [
        "a05659f62f8f75add315290ec1ffa8065be22e2e"
      ],
      "author": {
        "name": "Love98",
        "email": "77888749+love98ooo@users.noreply.github.com",
        "time": "Tue Aug 13 20:54:08 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 13 20:54:08 2024 +0800"
      },
      "message": "feat: fix rule table page crash (#67)\n\n"
    },
    {
      "commit": "a05659f62f8f75add315290ec1ffa8065be22e2e",
      "tree": "add4f7626a5f3dd7bc7f0d8af6f962f0791695c3",
      "parents": [
        "778df9d939d1201a6ba740aa8b732392d124bd75"
      ],
      "author": {
        "name": "Love98",
        "email": "77888749+love98ooo@users.noreply.github.com",
        "time": "Tue Aug 13 18:12:59 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 13 18:12:59 2024 +0800"
      },
      "message": "feat: support compound rules (#65)\n\n* feat: support compound rules\r\n\r\n* feat: GetRulesByRuleIds return error when not found\r\n\r\n* feat: impl stacks and remove gods\r\n\r\n* update: remove name field"
    },
    {
      "commit": "778df9d939d1201a6ba740aa8b732392d124bd75",
      "tree": "b1000d300095c8621fe59093ef09002d322155cb",
      "parents": [
        "95331b89bbfafe206dd3ec67450e874c759563a5"
      ],
      "author": {
        "name": "Tengtao X",
        "email": "tetaciao@gmail.com",
        "time": "Tue Aug 13 17:37:12 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 13 17:37:12 2024 +0800"
      },
      "message": "feat: Pagination not updating after last item deletion (#66)\n\n"
    },
    {
      "commit": "95331b89bbfafe206dd3ec67450e874c759563a5",
      "tree": "770d78394e1bc2c5ff54409566b69a9aba515254",
      "parents": [
        "0dfac5151b3925cd0ef3e2f7464873b42051aaf9"
      ],
      "author": {
        "name": "Tengtao X",
        "email": "tetaciao@gmail.com",
        "time": "Mon Aug 12 22:23:59 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 12 22:23:59 2024 +0800"
      },
      "message": "feat: fix pagination issue (#64)\n\n"
    },
    {
      "commit": "0dfac5151b3925cd0ef3e2f7464873b42051aaf9",
      "tree": "720207d56d9fde4c359b1ce8e9df74d18cf15da9",
      "parents": [
        "c085f09fb991b6993e82ab4f98aaa71261c91c79"
      ],
      "author": {
        "name": "Love98",
        "email": "77888749+love98ooo@users.noreply.github.com",
        "time": "Sat Aug 10 17:27:54 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 10 17:27:54 2024 +0800"
      },
      "message": "feat: fix all i18n support (#63)\n\n* feat: add i18n support for rule files\r\n\r\n* update: use User-Agent uniformly"
    },
    {
      "commit": "c085f09fb991b6993e82ab4f98aaa71261c91c79",
      "tree": "a6aabd30123b26cc3472f61da10f99303081fff9",
      "parents": [
        "31fc868ab966e437ac469343bc86ebeaf669ce69"
      ],
      "author": {
        "name": "Love98",
        "email": "77888749+love98ooo@users.noreply.github.com",
        "time": "Sat Aug 10 12:37:07 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 10 12:37:07 2024 +0800"
      },
      "message": "feat: support IP rate limiting (#59)\n\n* feat: support ip rate limiting in the backend\r\n\r\n* feat: add IpRateTable\r\n\r\n* update: rename to  IP Rate Limiting and add i18n support"
    },
    {
      "commit": "31fc868ab966e437ac469343bc86ebeaf669ce69",
      "tree": "9e3abcf5bee5f84c4a9a49f42b84a1c4cd4021a1",
      "parents": [
        "935437dcc11bc3cd023689d5c458bac6f029b500"
      ],
      "author": {
        "name": "Love98",
        "email": "77888749+love98ooo@users.noreply.github.com",
        "time": "Sat Aug 10 12:01:14 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 10 12:01:14 2024 +0800"
      },
      "message": "feat: add menu crash in frontend (#62)\n\n"
    },
    {
      "commit": "935437dcc11bc3cd023689d5c458bac6f029b500",
      "tree": "b83d25a95405415ff6bab5ffb2b5eef3a35c55a5",
      "parents": [
        "b957f74e6d134ae832917dacf40e61b488dcd750"
      ],
      "author": {
        "name": "Tengtao X",
        "email": "tetaciao@gmail.com",
        "time": "Fri Aug 09 21:22:09 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 09 21:22:09 2024 +0800"
      },
      "message": "feat: add pagination to rule and record pages (#61)\n\n* feat: sorted data for rule and record\r\n\r\n* Update record.go\r\n\r\n* Update rule.go\r\n\r\n---------\r\n\r\nCo-authored-by: Gucheng \u003c85475922+nomeguy@users.noreply.github.com\u003e"
    },
    {
      "commit": "b957f74e6d134ae832917dacf40e61b488dcd750",
      "tree": "000665de3524b59c39b85d2a6c8b31c752615595",
      "parents": [
        "ea5b69ca3193cfd16e840a4dd6e4854450ea01c3"
      ],
      "author": {
        "name": "Love98",
        "email": "77888749+love98ooo@users.noreply.github.com",
        "time": "Wed Aug 07 15:41:01 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 07 15:41:01 2024 +0800"
      },
      "message": "feat: update antd to 4.24.12 (#60)\n\n* update: update antd to ~4.24.0\r\n\r\n* update: remove ~\r\n\r\n* update: remove comments"
    },
    {
      "commit": "ea5b69ca3193cfd16e840a4dd6e4854450ea01c3",
      "tree": "ddfd887647fd8a98aaa7b09f1bdfab3ad83d22c6",
      "parents": [
        "19f148beef09faceb6b3cf2caba7d2fee8c02471"
      ],
      "author": {
        "name": "Gucheng Wang",
        "email": "nomeguy@qq.com",
        "time": "Wed Aug 07 10:50:26 2024 +0800"
      },
      "committer": {
        "name": "Gucheng Wang",
        "email": "nomeguy@qq.com",
        "time": "Wed Aug 07 10:50:37 2024 +0800"
      },
      "message": "Improve getX509CertByDomain()\n"
    },
    {
      "commit": "19f148beef09faceb6b3cf2caba7d2fee8c02471",
      "tree": "d81ba8e2be5755752df6779e3af30d71ffdfa242",
      "parents": [
        "c626055edf712bc0d0b5fe155c5464c2fcc1181e"
      ],
      "author": {
        "name": "Love98",
        "email": "77888749+love98ooo@users.noreply.github.com",
        "time": "Mon Aug 05 20:36:12 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 05 20:36:12 2024 +0800"
      },
      "message": "feat: allow custom reason for WAF rule (#56)\n\n"
    },
    {
      "commit": "c626055edf712bc0d0b5fe155c5464c2fcc1181e",
      "tree": "50f4b405f5eae1a9c5cc5865bcef396c9071326b",
      "parents": [
        "f5aae9657ad0c31d8c46e1239684966d628e1ea1"
      ],
      "author": {
        "name": "Love98",
        "email": "77888749+love98ooo@users.noreply.github.com",
        "time": "Mon Aug 05 00:03:06 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 05 00:03:06 2024 +0800"
      },
      "message": "feat: add RuleTable to SiteEditPage (#55)\n\n"
    },
    {
      "commit": "f5aae9657ad0c31d8c46e1239684966d628e1ea1",
      "tree": "4be79c514bb7794c2b3377345fdddede1b5be4d7",
      "parents": [
        "34b22781f12641f78d51dc6b153e7aef648d5f24"
      ],
      "author": {
        "name": "Love98",
        "email": "77888749+love98ooo@users.noreply.github.com",
        "time": "Sat Aug 03 18:38:24 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 03 18:38:24 2024 +0800"
      },
      "message": "feat: remove enableWaf field (#51)\n\n"
    },
    {
      "commit": "34b22781f12641f78d51dc6b153e7aef648d5f24",
      "tree": "888bca6578b54c050b9757c96c27e6d71e44b9c3",
      "parents": [
        "713226751d7a1374060b87aea61a52b6c17536d1"
      ],
      "author": {
        "name": "Love98",
        "email": "77888749+love98ooo@users.noreply.github.com",
        "time": "Sat Aug 03 17:52:01 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 03 17:52:01 2024 +0800"
      },
      "message": "feat: add verbose mode for sites (#50)\n\n* feat: add verbose mode for sites\r\n\r\n* Update SiteEditPage.js\r\n\r\n* Update proxy.go\r\n\r\n---------\r\n\r\nCo-authored-by: Gucheng \u003c85475922+nomeguy@users.noreply.github.com\u003e"
    },
    {
      "commit": "713226751d7a1374060b87aea61a52b6c17536d1",
      "tree": "a04f03ee3f63e0f398a4141cfa0c856ae5a0aacf",
      "parents": [
        "dc05abe01e0d374e765eeee8e9da67b22c665a99"
      ],
      "author": {
        "name": "Tengtao X",
        "email": "tetaciao@gmail.com",
        "time": "Sat Aug 03 10:37:59 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 03 10:37:59 2024 +0800"
      },
      "message": "feat: use Casdoor code to support delete-after-sort (#49)\n\n* fix: fix refresh and delete in cert and site after sort\r\n\r\n* Update cert.go\r\n\r\n* Update site.go\r\n\r\n* Update ormer_session.go\r\n\r\n* Update SiteListPage.js\r\n\r\n* Update CertListPage.js\r\n\r\n* CertListPage.js\r\n\r\n* fix: modify format\r\n\r\n---------\r\n\r\nCo-authored-by: Gucheng \u003c85475922+nomeguy@users.noreply.github.com\u003e"
    },
    {
      "commit": "dc05abe01e0d374e765eeee8e9da67b22c665a99",
      "tree": "52deb2601bb419d377d9c517031ab5654566dd16",
      "parents": [
        "304cc79e136a4f90b292eb8bd001d82d26aeb8d4"
      ],
      "author": {
        "name": "Love98",
        "email": "77888749+love98ooo@users.noreply.github.com",
        "time": "Fri Aug 02 12:00:03 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 02 12:00:03 2024 +0800"
      },
      "message": "feat: add WAF rule (#48)\n\n* feat: support waf rule in the backend\r\n\r\n* feat: add default rules to waf\r\n\r\n* feat: avoid editing the rule_cache from outside the object package\r\n\r\n* Update proxy.go\r\n\r\n---------\r\n\r\nCo-authored-by: Gucheng \u003c85475922+nomeguy@users.noreply.github.com\u003e"
    },
    {
      "commit": "304cc79e136a4f90b292eb8bd001d82d26aeb8d4",
      "tree": "ec1879b32dc00eb5a2f8dd72605d84e41770d0cd",
      "parents": [
        "b3cc4fb08cb9116c644796926e98cfb191b43cd9"
      ],
      "author": {
        "name": "Gucheng Wang",
        "email": "nomeguy@qq.com",
        "time": "Thu Aug 01 23:17:17 2024 +0800"
      },
      "committer": {
        "name": "Gucheng Wang",
        "email": "nomeguy@qq.com",
        "time": "Thu Aug 01 23:17:17 2024 +0800"
      },
      "message": "feat: improve CertListPage UI\n"
    },
    {
      "commit": "b3cc4fb08cb9116c644796926e98cfb191b43cd9",
      "tree": "8f7d901f73251f1693eaf32e2543a9a867fc87d2",
      "parents": [
        "0d0adb65718b9272722c031fa76b3a12ec0dd3a7"
      ],
      "author": {
        "name": "Love98",
        "email": "77888749+love98ooo@users.noreply.github.com",
        "time": "Mon Jul 29 10:58:08 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 29 10:58:08 2024 +0800"
      },
      "message": "feat: add ip rule (#46)\n\n* feat: support ip rule in the backend\r\n\r\n* feat: improve ip rule edit page\r\n\r\n* refactor: update import statement for IpRuleTable component\r\n\r\n* chore: rename IpRuleTable.js\r\n\r\n* chore: rename rule to record\r\n\r\n* chore: add apache header\r\n\r\n* chore: reduce default lan cidr\r\n\r\n* feat: improve code readability\r\n\r\n* chore: update IP rule table button label to \"Restore\"\r\n\r\n* chore: use comma instead of space to split ip addresses\r\n\r\n* feat: check IP before check IP rule and use switch case instead of bool compare\r\n\r\n* update: remove 127.0.0.0/8 from lan cidr\r\n\r\n* feat: add default case to operator match"
    },
    {
      "commit": "0d0adb65718b9272722c031fa76b3a12ec0dd3a7",
      "tree": "588a19bb4760efe0d67da88420f13cb6c213bd1c",
      "parents": [
        "49d0dba3a9615074ef0c917f09dc22597fecd40a"
      ],
      "author": {
        "name": "Gucheng Wang",
        "email": "nomeguy@qq.com",
        "time": "Sat Jul 27 00:21:55 2024 +0800"
      },
      "committer": {
        "name": "Gucheng Wang",
        "email": "nomeguy@qq.com",
        "time": "Sat Jul 27 00:25:10 2024 +0800"
      },
      "message": "feat: refactor out rule package\n"
    }
  ],
  "next": "49d0dba3a9615074ef0c917f09dc22597fecd40a"
}
