)]}'
{
  "log": [
    {
      "commit": "0fc388aef1731cbd1b997e7b77e8dc11bf9b290e",
      "tree": "0a670f8d1582612cbcb584e2b64afaa391548242",
      "parents": [
        "62593c4a3c819b2f92fc6e287f5e09af6e90735a"
      ],
      "author": {
        "name": "Yuhan",
        "email": "37211211+lxbme@users.noreply.github.com",
        "time": "Thu Jul 23 17:13:29 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 17:13:29 2026 +0800"
      },
      "message": "fix: array\u003cstring\u003e fields rendered with wrong widgets; SSL edit wiped the mTLS client block (#3435)"
    },
    {
      "commit": "62593c4a3c819b2f92fc6e287f5e09af6e90735a",
      "tree": "29bb0c1e719ae114233ae6188d7c6f1034320ed0",
      "parents": [
        "30d4b9f0db1e3926fb109307a50dc4f573fda019"
      ],
      "author": {
        "name": "Yuhan",
        "email": "37211211+lxbme@users.noreply.github.com",
        "time": "Thu Jul 23 16:20:54 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 16:20:54 2026 +0800"
      },
      "message": "fix: stop deep-cleaning inside plugin configs, keep nested discovery_args (#3438)"
    },
    {
      "commit": "30d4b9f0db1e3926fb109307a50dc4f573fda019",
      "tree": "cbe28b873218b32d206ecd1f16f7ea507d601fe8",
      "parents": [
        "33b81ba6c9eb4954795878ed9f971136e1f42a25"
      ],
      "author": {
        "name": "Yuhan",
        "email": "37211211+lxbme@users.noreply.github.com",
        "time": "Thu Jul 23 09:52:05 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 09:52:05 2026 +0800"
      },
      "message": "fix: accessible names for header icon buttons, Monaco contrast, drawer Escape (#3442)"
    },
    {
      "commit": "33b81ba6c9eb4954795878ed9f971136e1f42a25",
      "tree": "e7c77506c4aef554e9f9226500eb0175a24245a5",
      "parents": [
        "bd1ee4f40b972b30737d2b027afa60c1aaf90193"
      ],
      "author": {
        "name": "Yuhan",
        "email": "37211211+lxbme@users.noreply.github.com",
        "time": "Thu Jul 23 09:50:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 09:50:26 2026 +0800"
      },
      "message": "fix: wire the form TOC refresh intentionally (#3439)"
    },
    {
      "commit": "bd1ee4f40b972b30737d2b027afa60c1aaf90193",
      "tree": "31fdc83d5f69d3422a6312a4550b97d03498f76c",
      "parents": [
        "5c5a00b5135c0838693ae49c951e170c9ed9f78c"
      ],
      "author": {
        "name": "Yuhan",
        "email": "37211211+lxbme@users.noreply.github.com",
        "time": "Mon Jul 20 16:57:52 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 16:57:52 2026 +0800"
      },
      "message": "fix: allow colons in label values (#3434)"
    },
    {
      "commit": "5c5a00b5135c0838693ae49c951e170c9ed9f78c",
      "tree": "f22ae3fd7d5348c3137d1735af7864f3758d134d",
      "parents": [
        "b170cd2302bce9536707f33cbae21f8c1e2916a0"
      ],
      "author": {
        "name": "Yuhan",
        "email": "37211211+lxbme@users.noreply.github.com",
        "time": "Mon Jul 20 16:57:35 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 16:57:35 2026 +0800"
      },
      "message": "fix: stop corrupting object-form upstream nodes on conversion (#3433)"
    },
    {
      "commit": "b170cd2302bce9536707f33cbae21f8c1e2916a0",
      "tree": "57557301a9e8be3714a27b5c0bc25bdde7fd5fdb",
      "parents": [
        "32b5597828aa4750e6b4618e348e57688ac05fa9"
      ],
      "author": {
        "name": "Yuhan",
        "email": "37211211+lxbme@users.noreply.github.com",
        "time": "Mon Jul 20 16:57:12 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 16:57:12 2026 +0800"
      },
      "message": "fix: guard rmDoubleUnderscoreKeys against null values (#3432)"
    },
    {
      "commit": "32b5597828aa4750e6b4618e348e57688ac05fa9",
      "tree": "599b4350f619e1d78f27085f9dc5369307ba9272",
      "parents": [
        "9dd8e4782eaf4493535f7ea2d9d750e5a60a8242"
      ],
      "author": {
        "name": "Yuhan",
        "email": "37211211+lxbme@users.noreply.github.com",
        "time": "Mon Jul 20 16:56:53 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 16:56:53 2026 +0800"
      },
      "message": "fix: stop deleting inline upstream name/desc/labels on submit (#3431)"
    },
    {
      "commit": "9dd8e4782eaf4493535f7ea2d9d750e5a60a8242",
      "tree": "85125c4658829e3260e19388ddb14d546b8e6fb9",
      "parents": [
        "318bca8f444782bf37ba16571b3ee841e2a1bab0"
      ],
      "author": {
        "name": "Yuhan",
        "email": "37211211+lxbme@users.noreply.github.com",
        "time": "Tue Jul 14 14:49:15 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 14:49:15 2026 +0800"
      },
      "message": "fix: keep plugin editor drawer open when saving fails (#3427)"
    },
    {
      "commit": "318bca8f444782bf37ba16571b3ee841e2a1bab0",
      "tree": "5cce8c091edc19723898a363706c305e9abf1059",
      "parents": [
        "4cd978e17b01d749c33292a354b4e71c33b6c909"
      ],
      "author": {
        "name": "Yuhan",
        "email": "37211211+lxbme@users.noreply.github.com",
        "time": "Tue Jul 14 14:48:29 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 14:48:29 2026 +0800"
      },
      "message": "fix: harden stream_routes error rendering and pagination search params (#3429)"
    },
    {
      "commit": "4cd978e17b01d749c33292a354b4e71c33b6c909",
      "tree": "cda4f16693fae0f96e34e7738ea1b806270361ff",
      "parents": [
        "c896b33d9fa98cff9d3f95678f27f34c2b23fca0"
      ],
      "author": {
        "name": "Yuhan",
        "email": "37211211+lxbme@users.noreply.github.com",
        "time": "Tue Jul 14 14:48:06 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 14:48:06 2026 +0800"
      },
      "message": "fix: validate route vars JSON syntax before submit (#3428)"
    },
    {
      "commit": "c896b33d9fa98cff9d3f95678f27f34c2b23fca0",
      "tree": "d281ae979bd2135605c85ef700a934b24417884f",
      "parents": [
        "2bb8665ab6bc71fdecce5aa4a4c0d702069a3f8c"
      ],
      "author": {
        "name": "Yuhan",
        "email": "37211211+lxbme@users.noreply.github.com",
        "time": "Tue Jul 14 14:47:45 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 14:47:45 2026 +0800"
      },
      "message": "fix: secrets detail must not render a blank editable form on fetch failure (#3426)"
    },
    {
      "commit": "2bb8665ab6bc71fdecce5aa4a4c0d702069a3f8c",
      "tree": "e6ed064b66f066b2fe13be10fe196feb5875cf6a",
      "parents": [
        "0302b31cd69791df30611acfb05634f71b9295e7"
      ],
      "author": {
        "name": "Yuhan",
        "email": "37211211+lxbme@users.noreply.github.com",
        "time": "Tue Jul 14 14:47:22 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 14:47:22 2026 +0800"
      },
      "message": "fix: surface network-level request failures as user-visible toasts (#3424)"
    },
    {
      "commit": "0302b31cd69791df30611acfb05634f71b9295e7",
      "tree": "76450c2b443461b5cfe9ad4a27bd4ea97138c83f",
      "parents": [
        "e0fc19d03564a317107d89da6c80a27d92239942"
      ],
      "author": {
        "name": "Ming Wen",
        "email": "moonbingbing@gmail.com",
        "time": "Mon Jul 13 17:21:37 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 13 17:21:37 2026 +0800"
      },
      "message": "fix: no-op edit-save deleted inline upstream health checks (#3423)"
    },
    {
      "commit": "e0fc19d03564a317107d89da6c80a27d92239942",
      "tree": "54a8241021c418f2214454c722a3e3145d58e7e0",
      "parents": [
        "5c0c649687d7f55833264717bd2bb659270a70ce"
      ],
      "author": {
        "name": "Ming Wen",
        "email": "moonbingbing@gmail.com",
        "time": "Mon Jul 13 10:03:45 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 13 10:03:45 2026 +0800"
      },
      "message": "fix: reject 401 responses instead of resolving fabricated empty data (#3418)"
    },
    {
      "commit": "5c0c649687d7f55833264717bd2bb659270a70ce",
      "tree": "80e6067436d226294eb28c0ed8af8c1b50e82981",
      "parents": [
        "d9121336211aaf6f387f0bc02c50279b6a50916c"
      ],
      "author": {
        "name": "Ming Wen",
        "email": "moonbingbing@gmail.com",
        "time": "Mon Jul 13 10:02:47 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 13 10:02:47 2026 +0800"
      },
      "message": "fix(plugin-metadata): stop toasting 404 probes as errors (#3419)"
    },
    {
      "commit": "d9121336211aaf6f387f0bc02c50279b6a50916c",
      "tree": "90fa0075f411b5f6d16fbdb42fd2f49c081fcd76",
      "parents": [
        "9e9497be84c0842807b748952aa17d55932c9ce2"
      ],
      "author": {
        "name": "Ming Wen",
        "email": "moonbingbing@gmail.com",
        "time": "Mon Jul 13 10:02:18 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 13 10:02:18 2026 +0800"
      },
      "message": "fix: zOneOf rejected the valid exactly-one state (inverted xor) (#3420)"
    },
    {
      "commit": "9e9497be84c0842807b748952aa17d55932c9ce2",
      "tree": "63b87e1ce4fa1712b48a9bc656e19c7ba97c1e57",
      "parents": [
        "bfd29b36fc2018b1b3131fc57d0df8526f2d5680"
      ],
      "author": {
        "name": "Ming Wen",
        "email": "moonbingbing@gmail.com",
        "time": "Mon Jul 13 09:58:15 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 13 09:58:15 2026 +0800"
      },
      "message": "fix(settings): debounce the admin-key query refresh (#3422)"
    },
    {
      "commit": "bfd29b36fc2018b1b3131fc57d0df8526f2d5680",
      "tree": "d95d47877414f1f8bd255257d7a508dcacc3b4e7",
      "parents": [
        "9979b310f4112dfc74ca1f56f24c9dfcb659ed63"
      ],
      "author": {
        "name": "Ming Wen",
        "email": "moonbingbing@gmail.com",
        "time": "Mon Jul 13 09:57:53 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 13 09:57:53 2026 +0800"
      },
      "message": "fix(consumers): redirect to /consumers after deleting a consumer (#3421)"
    },
    {
      "commit": "9979b310f4112dfc74ca1f56f24c9dfcb659ed63",
      "tree": "b9942b072dc5eff6f4c1b05f9670461aa8d8dd6c",
      "parents": [
        "c8d3466d3c36386d3888efbc8250cd8183c77298"
      ],
      "author": {
        "name": "Ming Wen",
        "email": "moonbingbing@gmail.com",
        "time": "Mon Jun 29 09:04:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 09:04:26 2026 +0800"
      },
      "message": "chore: bump pnpm to 10.34.4 to fix supply-chain advisories (#3409)"
    },
    {
      "commit": "c8d3466d3c36386d3888efbc8250cd8183c77298",
      "tree": "323e0b3e9cdd2dfabf2946fe9dbd2f02f6d517b3",
      "parents": [
        "697be33ddc68573d281b7db8f951bc34541f6488"
      ],
      "author": {
        "name": "Ming Wen",
        "email": "moonbingbing@gmail.com",
        "time": "Thu Jun 04 19:02:35 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 19:02:35 2026 +0800"
      },
      "message": "test(e2e): regression suite + form-state refactor (fixes #3293, #3342, #3344, #3370) (#3391)"
    },
    {
      "commit": "697be33ddc68573d281b7db8f951bc34541f6488",
      "tree": "d48b75d48ca45ae82ce6299a1ee68bb70c8b8d15",
      "parents": [
        "ada6b7c189be7f2f13f73776698fc8da2ca97f6d"
      ],
      "author": {
        "name": "YapWC",
        "email": "34093361+YapWC@users.noreply.github.com",
        "time": "Wed Jun 03 18:23:30 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 03 18:23:30 2026 +0800"
      },
      "message": "docs: Add guide for admin key (#3273)"
    },
    {
      "commit": "ada6b7c189be7f2f13f73776698fc8da2ca97f6d",
      "tree": "853f073ae7a8ce9ac9122bb912120abb935d47d0",
      "parents": [
        "34982e7826d55b37369cfa78a886ec699eebefad"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Jun 03 18:23:03 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 03 18:23:03 2026 +0800"
      },
      "message": "chore(deps): bump apache/skywalking-eyes (#3393)"
    },
    {
      "commit": "34982e7826d55b37369cfa78a886ec699eebefad",
      "tree": "590ff6204f37137cfef5c6d3ec255140cdd4a420",
      "parents": [
        "20811c550f79635f50d4f4578c0aea8a18eefac7"
      ],
      "author": {
        "name": "okaybase",
        "email": "75366457+okaybase@users.noreply.github.com",
        "time": "Wed Jun 03 18:22:42 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 03 18:22:42 2026 +0800"
      },
      "message": "fix: restore scrollbar interaction on disabled Monaco editors in view mode (#3392)"
    },
    {
      "commit": "20811c550f79635f50d4f4578c0aea8a18eefac7",
      "tree": "6501e8291805aeec9cf24297f51dc978362e0b39",
      "parents": [
        "03d3e8e780c4dd78fa6d04e9cd8d87f381b3c089"
      ],
      "author": {
        "name": "okaybase",
        "email": "75366457+okaybase@users.noreply.github.com",
        "time": "Wed Jun 03 18:22:14 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 03 18:22:14 2026 +0800"
      },
      "message": "fix(consumer): makes the username field read-only on the consumer edit page (#3396)"
    },
    {
      "commit": "03d3e8e780c4dd78fa6d04e9cd8d87f381b3c089",
      "tree": "e361023d2a319c3fcf11372002ed04ddf36633a5",
      "parents": [
        "e38e9d7a35b168edef3fa521733fc966c24fed61"
      ],
      "author": {
        "name": "梁桂锋",
        "email": "37197772+liangguifeng@users.noreply.github.com",
        "time": "Tue Jun 02 16:21:23 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 16:21:23 2026 +0800"
      },
      "message": "fix(header): guard missing translation progress in language menu (#3380)"
    },
    {
      "commit": "e38e9d7a35b168edef3fa521733fc966c24fed61",
      "tree": "e1f3ee2470f60ff28d49fd2f7e6e63d2e18a71b6",
      "parents": [
        "2ec818cf53a8f3f99cb4c9e9da93fc9f039c7bd6"
      ],
      "author": {
        "name": "Baoyuan",
        "email": "baoyuan.top@gmail.com",
        "time": "Mon Jun 01 09:19:44 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 09:19:44 2026 +0800"
      },
      "message": "chore: resolve dependabot security alerts (#3397)"
    },
    {
      "commit": "2ec818cf53a8f3f99cb4c9e9da93fc9f039c7bd6",
      "tree": "9f94c572e92b3fbce3a65855f1b09987e6305188",
      "parents": [
        "453a0b5649ab7340c52588a16e38cbeb5e7f4a91"
      ],
      "author": {
        "name": "Kumar Vanshaj",
        "email": "kumar.vanshaj2023@gmail.com",
        "time": "Wed May 20 05:02:07 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 07:32:07 2026 +0800"
      },
      "message": "Fix/unsaved plugin config warning (#3333)\n\n* fix(i18n): add missing services.empty translation key in zh, de, es, and tr locales\n\n* Potential fix for pull request finding\n\nCo-authored-by: Copilot Autofix powered by AI \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n* fix(i18n): fix button label consistency in es and tr services.empty translations\n\n* fix(ux): show confirmation dialog when closing plugin editor with unsaved changes\n\n* fix(ux): show confirmation dialog when closing plugin editor with unsaved changes\n\n* fix(a11y): add aria-label to plugin editor drawer close button\n\n---------\n\nCo-authored-by: Copilot Autofix powered by AI \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "453a0b5649ab7340c52588a16e38cbeb5e7f4a91",
      "tree": "fcbbe3da6b895fcdbdae3361ad1e98de7cf9a881",
      "parents": [
        "91d89d117b69d601ce62375051cbf39d1a3bcce8"
      ],
      "author": {
        "name": "SinhSinh An",
        "email": "106696583+SinhSinhAn@users.noreply.github.com",
        "time": "Tue May 19 18:30:03 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 07:30:03 2026 +0800"
      },
      "message": "fix(upstream): allow arbitrary key-value pairs in discovery_args (#3377)\n\n* fix(upstream): allow arbitrary key-value pairs in discovery_args\n\nThe Zod schema for `discovery_args` used `z.object({})`, which strips\nall unknown properties during parsing. This caused any user-entered\nJSON for Discovery Args to be silently reduced to an empty object `{}`\nbefore reaching the API.\n\nReplace with `z.record(z.string(), z.unknown())` to preserve arbitrary\nkey-value pairs, consistent with how `Plugin` is typed in `plugins.ts`.\n\nFixes #3376\n\n* test(upstream): add unit tests for discovery_args schema\n\nAdd Vitest unit tests verifying that the UpstreamDiscovery schema\ncorrectly preserves arbitrary key-value pairs in discovery_args:\n\n- Preserves flat key-value pairs (e.g., group_name, namespace_id)\n- Preserves nested values (e.g., metadata objects)\n- Accepts empty discovery_args\n- Accepts missing (undefined) discovery_args"
    },
    {
      "commit": "91d89d117b69d601ce62375051cbf39d1a3bcce8",
      "tree": "ef9e0add025975d6f4f4bbbb5890b71a5a98f25d",
      "parents": [
        "dd641c9b09defc3088cf171fa438d50e44e1f6d3"
      ],
      "author": {
        "name": "Deep Shekhar Singh",
        "email": "deepshekhar0306@gmail.com",
        "time": "Wed May 20 04:59:33 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 07:29:33 2026 +0800"
      },
      "message": "fix: pass host reset (#3295)\n\n* fix: pass_host resets to default when editing upstream nodes (#3294)\n\nAlso added E2E regression test e2e/tests/upstreams.pass-host-reset.spec.ts\n\n* chore: update generated route tree\n\n* chore: ensure route tree matches current environment\n\n* fix: update test files to ensure proper functionality and add type safety in upstream form\n\n* fix: refactor route detail forms to use useSuspenseQuery and improve cleanup logic\n\n* Potential fix for pull request finding\n\nCo-authored-by: Copilot Autofix powered by AI \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n* fix: add loading skeleton to RouteDetailForm and improve service data handling\n\n* Replaced useQuery with useSuspenseQuery \u0026 Added Suspense with Skeleton\n\n* Improved readibility\n\n* fix: resolve the must-fix issue regarding the UX regression\n\n* fix(upstream): apply Suspense boundary to UpstreamDetailForm to prevent UX regression\n\n* style(stream-routes): use consistent Skeleton Suspense fallback for detail page\n\n* test(e2e): remove global beforeAll upstream deletion to avoid race conditions\n\n* perf: useMemo for formDefaults in upstream and route detail pages\n\n* fix: resolve E2E test failures by improving form synchronization and data initialization\n\n* Fixed lint error in util.ts: The fix was typing produceVarsToAPI\u0027s return to reflect that vars becomes unknown[] | undefined after JSON.parse, which satisfies the APISIXType[\u0027Route\u0027] cast in add.tsx.\n\n* Updated the function signature to accept APISIXType[\u0027Route\u0027] to match what\u0027s actually being passed.\n\n* fix(upstream): stabilize node state sync and resolve E2E timeouts\n\n- Fix infinite update loop in FormItemNodes by ensuring stable IDs in genRecord\n- Implement atomic sync between MobX and RHF by adding deep-equal checks\n- Stabilize E2E tests by injecting safety pauses during node row transitions\n- Updated test helpers to ensure valid node data (port/weight) for Zod validation\n\n* fix: resolve merge artifacts and syntax errors in detail pages\n\n* Update routeTree.gen.ts\n\n---------\n\nCo-authored-by: Copilot Autofix powered by AI \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "dd641c9b09defc3088cf171fa438d50e44e1f6d3",
      "tree": "a69dd78c396faf3b6502aac1fc74e8891c07eb56",
      "parents": [
        "3a79f6a42ae4bc220c913a522c361ea311758e7a"
      ],
      "author": {
        "name": "Deep Shekhar Singh",
        "email": "deepshekhar0306@gmail.com",
        "time": "Mon Apr 13 19:23:35 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 13 21:53:35 2026 +0800"
      },
      "message": "fix: preserve plugins with empty config using targeted approach (#3277)"
    },
    {
      "commit": "3a79f6a42ae4bc220c913a522c361ea311758e7a",
      "tree": "82964b536df6dbd636124dc8a834b9201c6944f2",
      "parents": [
        "9b0fd13d5dbf56c83e1de715b004dd52f9cad26c"
      ],
      "author": {
        "name": "Baoyuan",
        "email": "baoyuan.top@gmail.com",
        "time": "Fri Apr 03 16:53:57 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 03 16:53:57 2026 +0800"
      },
      "message": "fix: resolve Dependabot security alerts for transitive dependencies (#3364)"
    },
    {
      "commit": "9b0fd13d5dbf56c83e1de715b004dd52f9cad26c",
      "tree": "37fcbfadbd82cb66c44e65c89ff81b78add9cc2d",
      "parents": [
        "c88b610201af6f69b594714a9cd1b6c486532e51"
      ],
      "author": {
        "name": "Divyanshu Singh",
        "email": "DIVYANSHU19122008.V18@GMAIL.COM",
        "time": "Thu Apr 02 07:56:37 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 02 10:26:37 2026 +0800"
      },
      "message": "fix(route): allow empty optional vars editor (#3362) (#3363)"
    },
    {
      "commit": "c88b610201af6f69b594714a9cd1b6c486532e51",
      "tree": "e75285555f88649a83efde07bae03ba2a4203d16",
      "parents": [
        "76f4de94483966a53b179f18a24076e94d78b68f"
      ],
      "author": {
        "name": "Deep Shekhar Singh",
        "email": "deepshekhar0306@gmail.com",
        "time": "Fri Mar 27 12:28:40 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 27 14:58:40 2026 +0800"
      },
      "message": "fix: a.trim is not a function (#3286)"
    },
    {
      "commit": "76f4de94483966a53b179f18a24076e94d78b68f",
      "tree": "8deeb323df35d7c6b57467a6e019fba18202489a",
      "parents": [
        "b4841869f4c8d7683e78b146b90e6ebc9891cb43"
      ],
      "author": {
        "name": "Baoyuan",
        "email": "baoyuan.top@gmail.com",
        "time": "Wed Mar 25 13:52:35 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 25 13:52:35 2026 +0800"
      },
      "message": "chore: bump dependencies and fix security vulnerabilities (#3357)"
    },
    {
      "commit": "b4841869f4c8d7683e78b146b90e6ebc9891cb43",
      "tree": "58cf6b985a519f4ee32065254052fbcfbe619426",
      "parents": [
        "6776b10538009f3f9d715ff2c6574bd7dd718e7d"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Mar 23 09:24:00 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 23 09:24:00 2026 +0800"
      },
      "message": "chore(deps): bump pnpm/action-setup from 4 to 5 (#3334)"
    },
    {
      "commit": "6776b10538009f3f9d715ff2c6574bd7dd718e7d",
      "tree": "3f2c2fea50aa8f7295d22ffd2a250ab4967f2d78",
      "parents": [
        "0913716a5a6d4acca675002f20434d458fc42a8b"
      ],
      "author": {
        "name": "Deep Shekhar Singh",
        "email": "deepshekhar0306@gmail.com",
        "time": "Thu Mar 19 15:59:21 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 19 18:29:21 2026 +0800"
      },
      "message": "feat: add lint workflow (#3291)"
    },
    {
      "commit": "0913716a5a6d4acca675002f20434d458fc42a8b",
      "tree": "f26c2f2fe97da9274d2f60740f68ee28ca0cb125",
      "parents": [
        "58d593303d564345fc9c2d84887ee45bc9585244"
      ],
      "author": {
        "name": "Kumar Vanshaj",
        "email": "kumar.vanshaj2023@gmail.com",
        "time": "Tue Mar 17 08:31:28 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 17 11:01:28 2026 +0800"
      },
      "message": "fix(i18n): add missing services.empty translation key (#3325)"
    },
    {
      "commit": "58d593303d564345fc9c2d84887ee45bc9585244",
      "tree": "906f2f8940a8e9c5ba010d1cba11110b0f62cb04",
      "parents": [
        "48f53f1e14a85ad2992d61d6c59ad10cf42b3847"
      ],
      "author": {
        "name": "Kumar Vanshaj",
        "email": "kumar.vanshaj2023@gmail.com",
        "time": "Thu Mar 12 13:55:34 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 12 16:25:34 2026 +0800"
      },
      "message": "fix: typo \u0027Basic Infomation\u0027 → \u0027Basic Information\u0027 in en locale (#3320)"
    },
    {
      "commit": "48f53f1e14a85ad2992d61d6c59ad10cf42b3847",
      "tree": "fdc88813026e53b4ac383995f8e960829873f555",
      "parents": [
        "6fdcbb4820c8242cfe3a301d1866c1b4bfe5c158"
      ],
      "author": {
        "name": "Baoyuan",
        "email": "baoyuan.top@gmail.com",
        "time": "Thu Mar 12 11:33:30 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 12 11:33:30 2026 +0800"
      },
      "message": "chore: fix security vulnerabilities in dependencies (#3324)"
    },
    {
      "commit": "6fdcbb4820c8242cfe3a301d1866c1b4bfe5c158",
      "tree": "a177dde7f3e924654da5222a84c0cbf779f3e2a2",
      "parents": [
        "bbe05ad95396f90db03d831660f454c2844d906e"
      ],
      "author": {
        "name": "Baluduvamsi2006",
        "email": "baluduvamsi2000@gmail.com",
        "time": "Fri Feb 27 13:43:14 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 27 16:13:14 2026 +0800"
      },
      "message": "feat: improve empty state UX for service list (#3275)\n\n"
    },
    {
      "commit": "bbe05ad95396f90db03d831660f454c2844d906e",
      "tree": "9a19a272ab6270079d3e56601999db1d3ddf054a",
      "parents": [
        "a49ccd086cf91adb63e2cd663ade26981cb65e42"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Wed Jan 14 11:08:57 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 14 11:08:57 2026 +0800"
      },
      "message": "chore: upgrade dependencies to fix security vulnerabilities (#3281)\n\n"
    },
    {
      "commit": "a49ccd086cf91adb63e2cd663ade26981cb65e42",
      "tree": "4240039b968a5b12ddde25889b8a01ff04eedd97",
      "parents": [
        "a2ee27a2a0ef786c5d925de96f37e2ddac5d73c9"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Tue Jan 13 14:30:17 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 13 14:30:17 2026 +0800"
      },
      "message": "fix: global rules tests (#3285)\n\n"
    },
    {
      "commit": "a2ee27a2a0ef786c5d925de96f37e2ddac5d73c9",
      "tree": "f1df32fc2fb0d8e8c7f255a240358335d6eacb92",
      "parents": [
        "05e30a527bd39541206be28b54081f6c2a14be1b"
      ],
      "author": {
        "name": "Deep Shekhar Singh",
        "email": "deepshekhar0306@gmail.com",
        "time": "Mon Dec 29 14:10:20 2025 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 29 16:40:20 2025 +0800"
      },
      "message": "test(e2e): add comprehensive service CRUD tests and UI utility functions (#3258)\n\n"
    },
    {
      "commit": "05e30a527bd39541206be28b54081f6c2a14be1b",
      "tree": "9c58051456c5968cc655480a74e5e42d1f4e16c9",
      "parents": [
        "4b5b2e788850b1769e39179238b5bc8ede33b9c4"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Dec 24 10:41:09 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Dec 24 10:41:09 2025 +0800"
      },
      "message": "chore(deps): bump apache/skywalking-eyes (#3268)\n\n"
    },
    {
      "commit": "4b5b2e788850b1769e39179238b5bc8ede33b9c4",
      "tree": "70c4b15eba2fc51fb5f3af403960369d80adbca1",
      "parents": [
        "b5e26d3d4fe713e111a186b402fa2527e6f1ba49"
      ],
      "author": {
        "name": "Deep Shekhar Singh",
        "email": "deepshekhar0306@gmail.com",
        "time": "Mon Dec 22 13:12:43 2025 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 22 15:42:43 2025 +0800"
      },
      "message": "test: add stream route E2E tests with detail page flows (#3255)\n\n"
    },
    {
      "commit": "b5e26d3d4fe713e111a186b402fa2527e6f1ba49",
      "tree": "e23afcd6f6c511e384fb06cf2b84a43b6fed6260",
      "parents": [
        "01b793a5d68452a615c314b5d2192a2b316bbdea"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Dec 22 15:42:10 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 22 15:42:10 2025 +0800"
      },
      "message": "chore(deps): bump apache/skywalking-eyes (#3267)\n\n"
    },
    {
      "commit": "01b793a5d68452a615c314b5d2192a2b316bbdea",
      "tree": "2ce6f275256ff3204dc411b2798343a7b0af71a9",
      "parents": [
        "1ccd78a4089a6643e5f6518dfca67fc3099f9a36"
      ],
      "author": {
        "name": "jonsk.echo",
        "email": "jonsk.echo@gmail.com",
        "time": "Tue Dec 16 18:12:07 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 16 18:12:07 2025 +0800"
      },
      "message": "feat(i18n): add Chinese (zh) language translations (#3256)\n\n"
    },
    {
      "commit": "1ccd78a4089a6643e5f6518dfca67fc3099f9a36",
      "tree": "c14224054939497b75ba54e5839fd8ec9fae1efd",
      "parents": [
        "c7f05f8f9175d94508318abec18f47845fb06ade"
      ],
      "author": {
        "name": "Deep Shekhar Singh",
        "email": "deepshekhar0306@gmail.com",
        "time": "Tue Dec 16 15:41:43 2025 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 16 18:11:43 2025 +0800"
      },
      "message": "test: add comprehensive E2E tests for Secrets resource (#3245)\n\n"
    },
    {
      "commit": "c7f05f8f9175d94508318abec18f47845fb06ade",
      "tree": "693f24d75bba93a7330c6a5cb35575dcf7e06b2a",
      "parents": [
        "b0d518137ccdd530f506eefb62b1a650aa969986"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Dec 16 14:06:10 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 16 14:06:10 2025 +0800"
      },
      "message": "chore(deps): bump actions/upload-artifact from 4 to 6 (#3265)\n\n"
    },
    {
      "commit": "b0d518137ccdd530f506eefb62b1a650aa969986",
      "tree": "dafd6c9f9e35917910a871425433485f2b3212c4",
      "parents": [
        "951f319c1db1bc7f79b9828d6b0b058227a712d4"
      ],
      "author": {
        "name": "mikasaco",
        "email": "54577442+mikasaco@users.noreply.github.com",
        "time": "Mon Dec 08 16:23:50 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 08 16:23:50 2025 +0800"
      },
      "message": "enhance toc scrolling accuracy (#3264)\n\nfix(toc): correct scroll position for FormSection, enhance toc scrolling accuracy\n\n- change block from \u0027end\u0027 to \u0027start\u0027 in TOC click handler\n- add scroll-margin-top in css\n\nFixes #3263"
    },
    {
      "commit": "951f319c1db1bc7f79b9828d6b0b058227a712d4",
      "tree": "afe4b3844aedab9e5ae7dfe4a31bfd76b4dd0cdd",
      "parents": [
        "e23b0d1bf9c24cb2dc847ee79c67afb71cc23643"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Nov 26 16:21:58 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 26 16:21:58 2025 +0800"
      },
      "message": "chore(deps): bump actions/checkout from 5 to 6 (#3260)\n\nBumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v5...v6)\n\n---\nupdated-dependencies:\n- dependency-name: actions/checkout\n  dependency-version: \u00276\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "e23b0d1bf9c24cb2dc847ee79c67afb71cc23643",
      "tree": "cd49e7353c59b0f295cdeef5c6d3163c5b5a0581",
      "parents": [
        "889cef96e02f5ee94d2c649ba3584bac00c4bb9d"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Nov 24 09:11:32 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 24 09:11:32 2025 +0800"
      },
      "message": "chore(deps): bump apache/skywalking-eyes (#3261)\n\n"
    },
    {
      "commit": "889cef96e02f5ee94d2c649ba3584bac00c4bb9d",
      "tree": "2c55b30c9419eae7723d9cc6697d5805dcbc5043",
      "parents": [
        "d32c945a43507f6bde4d0baaba1f4785072440f3"
      ],
      "author": {
        "name": "Baoyuan",
        "email": "baoyuan.top@gmail.com",
        "time": "Fri Nov 21 17:02:11 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 21 17:02:11 2025 +0800"
      },
      "message": "ci: remove label trigger e2e test (#3262)\n\n"
    },
    {
      "commit": "d32c945a43507f6bde4d0baaba1f4785072440f3",
      "tree": "df1db91caa86e1e8234e4a8d6a7c7ff803845638",
      "parents": [
        "85521820539677ac84761fbfdfb6ebb31fd5a323"
      ],
      "author": {
        "name": "Yuvraj Singh Chauhan",
        "email": "133221941+ysinghc@users.noreply.github.com",
        "time": "Fri Nov 21 07:45:29 2025 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 21 10:15:29 2025 +0800"
      },
      "message": "fix: mask sensitive fields (#3251)\n\n* feat: implement password input component and update forms to use it\n\n* fix: reorder import statements for consistency in i18n configuration\n\n* test: add visibility toggle functionality for password input"
    },
    {
      "commit": "85521820539677ac84761fbfdfb6ebb31fd5a323",
      "tree": "43f8399e82d3a6655436a9cf19930d2058674e97",
      "parents": [
        "bb5dddb62a53af851354dbd9927abcd5f4d7c622"
      ],
      "author": {
        "name": "Deep Shekhar Singh",
        "email": "deepshekhar0306@gmail.com",
        "time": "Fri Nov 21 07:34:57 2025 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 21 10:04:57 2025 +0800"
      },
      "message": "test: add E2E tests for plugin metadata resource (#3247)\n\n* test(plugin_metadata): add E2E tests for plugin metadata resource\n\n- Add POM (Page Object Model) for plugin metadata pages\n- Implement list page tests for navigation and search functionality\n- Implement CRUD tests with required fields only (simple metadata)\n- Implement CRUD tests with all fields (comprehensive metadata)\n- Tests verify add, edit, and delete operations\n- All 4 tests passing\n\nCloses #3089\n\n* test(e2e): add verification after editing plugin metadata\n\n- Add API verification to confirm configuration changes persist\n- Verify updated fields (time_iso8601, http_user_agent) appear in saved metadata\n- Address review feedback requesting verification of configuration changes\n\n* test(e2e): enhance plugin metadata dialog interactions with helper functions"
    },
    {
      "commit": "bb5dddb62a53af851354dbd9927abcd5f4d7c622",
      "tree": "5839e8d347ef22a61f5f1e8b3223802a63bd7c83",
      "parents": [
        "af28b8dc4ea74558a9d948c3f2bdfac9d2fc2963"
      ],
      "author": {
        "name": "Deep Shekhar Singh",
        "email": "deepshekhar0306@gmail.com",
        "time": "Fri Nov 21 07:33:13 2025 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 21 10:03:13 2025 +0800"
      },
      "message": "test(e2e): Add E2E tests for consumer and credentials (#3243)\n\n* feat(e2e): add E2E tests for Consumers resource\n\n- Add Page Object Model for Consumers (e2e/pom/consumers.ts)\n- Add list and pagination tests (consumers.list.spec.ts)\n- Add CRUD tests with required fields (consumers.crud-required-fields.spec.ts)\n- Add CRUD tests with all fields (consumers.crud-all-fields.spec.ts)\n- Add deleteAllConsumers() helper function in src/apis/consumers.ts\n\nAll tests follow the established pattern:\n- *.list.spec.ts for list page and pagination\n- *.crud-required-fields.spec.ts for basic CRUD operations\n- *.crud-all-fields.spec.ts for comprehensive CRUD with all fields\n\nTests cover:\n- Navigation and page assertions\n- Form validation\n- Create, Read, Update, Delete operations\n- Labels management with tags input\n- Pagination with table controls and URL params\n\nFixes username validation by using only allowed characters [a-zA-Z0-9_-]\n\n* feat: add e2e tests for consumer credentials\n\n- Add credentialsPom for page object model\n- Add comprehensive test suite for credentials CRUD operations\n- Test credential isolation between consumers\n- Test empty state handling\n- Configure serial mode to avoid race conditions\n\nAll 8 tests passing"
    },
    {
      "commit": "af28b8dc4ea74558a9d948c3f2bdfac9d2fc2963",
      "tree": "a9e11e3d1441035918d0a3ebb6e18b9014a44672",
      "parents": [
        "e611715bc79ce333a4a1147efd2cf1827c804b6d"
      ],
      "author": {
        "name": "Deep Shekhar Singh",
        "email": "deepshekhar0306@gmail.com",
        "time": "Fri Nov 21 07:27:23 2025 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 21 09:57:23 2025 +0800"
      },
      "message": "test: add E2E tests for protos (#3244)\n\n* feat: add E2E tests for protos resource (#3092)\n\n- Add Page Object Model for protos pages\n- Add list page tests with pagination\n- Add CRUD tests with required fields only\n- Add CRUD tests with all fields\n- All 11 tests passing\n\nFixes #3092\n\n* test: add UI verification to proto details page\n\n- Navigate to proto details via list page and View button\n- Verify proto content is displayed correctly in the UI\n- Addresses feedback from code review\n\n* test: use UI for update and delete operations in proto tests\n\n- Update protos via UI (Edit button -\u003e modify content -\u003e Save)\n- Delete protos via UI (Delete button -\u003e confirm dialog)\n- Add UI verification to read/view tests\n- API now only used for initial setup verification and cleanup\n- All 8 tests passing\n\nAddresses feedback to use UI for all operations except setup/cleanup"
    },
    {
      "commit": "e611715bc79ce333a4a1147efd2cf1827c804b6d",
      "tree": "471c758386957083581f9c6ac7e9ca3c5f2f8c32",
      "parents": [
        "9a7661b6f6144bfd1002b941710c142a30777fb6"
      ],
      "author": {
        "name": "Deep Shekhar Singh",
        "email": "deepshekhar0306@gmail.com",
        "time": "Fri Nov 21 07:25:52 2025 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 21 09:55:52 2025 +0800"
      },
      "message": "test(plugin_configs): add comprehensive E2E tests for plugin configs resource (#3246)\n\n- Add Page Object Model for plugin configs navigation and assertions\n- Add list page tests with pagination support\n- Add CRUD tests with required fields (name, plugins)\n- Add CRUD tests with all fields (name, desc, labels, plugins)\n- Tests cover create, read, update, delete operations\n- Tests verify form validation, plugin management, and labels\n\nCloses #3090"
    },
    {
      "commit": "9a7661b6f6144bfd1002b941710c142a30777fb6",
      "tree": "f415de0a0e42f40e985efb5669f3a09630ea445b",
      "parents": [
        "4d9480152e360d96fa02faac4e52e34434e5f76e"
      ],
      "author": {
        "name": "Deep Shekhar Singh",
        "email": "deepshekhar0306@gmail.com",
        "time": "Fri Nov 21 07:24:24 2025 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 21 09:54:24 2025 +0800"
      },
      "message": "test: add E2E tests for global rules (#3248)\n\n* test: add E2E tests for global rules (#3088)\n\n- Added global_rules POM with navigation and assertions\n- Added list test with pagination support (11 items)\n- Added CRUD test with required fields (single plugin)\n- Added CRUD test with all fields (multiple plugins)\n- Tests verify create and delete functionality\n- All 5 tests passing\n\nCloses #3088\n\n* chore: add license header to apisix_conf.yml\n\n* Restored apisix_conf.yml with explanatory comments\n\nRestored comments for clarity on configuration options."
    },
    {
      "commit": "4d9480152e360d96fa02faac4e52e34434e5f76e",
      "tree": "2d497eec73c962f4d051f0f1b9d7c85c0c6aef6b",
      "parents": [
        "b28b8841fe70bcc2ee22857e07773490dc52a1be"
      ],
      "author": {
        "name": "Deep Shekhar Singh",
        "email": "deepshekhar0306@gmail.com",
        "time": "Fri Nov 21 07:22:16 2025 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 21 09:52:16 2025 +0800"
      },
      "message": "test: add E2E tests for SSLs (#3087) (#3249)\n\n* test: add E2E tests for SSLs (#3087)\n\n- Add ssls.list.spec.ts: Tests for SSL list page navigation, field display, and pagination\n- Add ssls.crud-required-fields.spec.ts: CRUD tests with only required SSL fields\n- Add ssls.crud-all-fields.spec.ts: Comprehensive CRUD tests with all SSL fields\n\nThese tests cover:\n- SSL list page navigation and table display\n- Pagination and filtering functionality\n- Creating SSLs with required and optional fields\n- Viewing SSL details\n- Editing and updating SSLs\n- Deleting SSLs\n- Certificate and key management\n- SNI and SNIs configuration\n- SSL client configuration (CA, depth, skip_mtls_uri_regex)\n- SSL protocols (TLSv1.1, TLSv1.2, TLSv1.3)\n- SSL type (server/client)\n- Labels support\n\n* fix: update SSL E2E tests to match actual UI behavior\n\n- Fix table column check (SNI not SNIs)\n- Fix SSL data structure (use snis array, not both sni and snis)\n- Fix navigation - SSL add doesn\u0027t auto-navigate to detail\n- Fix certificate value comparison - use not.toBeEmpty instead of exact value\n- Remove duplicate variable declarations\n- Use exact match for SNI text to avoid ambiguous matches\n\n* fix: simplify SSL CRUD tests and verify all pass with serial execution\n\n- Simplified ssls.crud-all-fields test to remove complex Type and Client fields\n- Fixed ssls.crud-required-fields test to use Cancel instead of Save\n- Both tests now pass when run with --workers\u003d1\n- All 6 SSL tests passing (list, check-labels, crud-required, crud-all)\n\nNote: SSL CRUD tests should be run with --workers\u003d1 to avoid parallel execution\nconflicts with deleteAllSSLs() in beforeAll hooks."
    },
    {
      "commit": "b28b8841fe70bcc2ee22857e07773490dc52a1be",
      "tree": "7675b51cb2add5eb4d852446872d2c48d15cc442",
      "parents": [
        "2d7e1947b6fdbe37bf8ce66190aee5bd038e96a2"
      ],
      "author": {
        "name": "Deep Shekhar Singh",
        "email": "deepshekhar0306@gmail.com",
        "time": "Fri Nov 21 07:20:19 2025 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 21 09:50:19 2025 +0800"
      },
      "message": "test: add E2E tests for Consumer Groups (#3086) (#3250)\n\n* test: add E2E tests for Consumer Groups (#3086)\n\n- Add POM file for consumer groups navigation\n- Add deleteAllConsumerGroups API function\n- Add list page test with pagination\n- Add CRUD test with required fields (id + plugins)\n- Add CRUD test with all fields including description and basic-auth plugin\n- All 5 tests passing\n\n* test(e2e): create consumer group via UI instead of API\n\n- Update required-fields test to create consumer group through UI\n- Add minimal plugin configuration (basic-auth) required by UI\n- Remove API-based creation in favor of full UI workflow"
    },
    {
      "commit": "2d7e1947b6fdbe37bf8ce66190aee5bd038e96a2",
      "tree": "f5c19478c37f745aa7fae492f4c9cf9cb077c3fa",
      "parents": [
        "b0d681ec2fd45a8e63b5a301ebf0cdca9d3c4252"
      ],
      "author": {
        "name": "Anil Baki Durmus",
        "email": "anldrms34@gmail.com",
        "time": "Sun Nov 16 22:18:39 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 17 11:18:39 2025 +0800"
      },
      "message": "feat: add Turkish (tr) language support (#3252)\n\n"
    },
    {
      "commit": "b0d681ec2fd45a8e63b5a301ebf0cdca9d3c4252",
      "tree": "3155f5e7f95d1ded9dcb758188a32df35b39d069",
      "parents": [
        "461aa572e5e373b6f06cc10f2f6ae9fbdaa73534"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Oct 17 12:11:10 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 17 12:11:10 2025 +0800"
      },
      "message": "chore(deps): bump actions/setup-node from 4 to 6 (#3226)\n\nBumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 6.\n- [Release notes](https://github.com/actions/setup-node/releases)\n- [Commits](https://github.com/actions/setup-node/compare/v4...v6)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-node\n  dependency-version: \u00276\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "461aa572e5e373b6f06cc10f2f6ae9fbdaa73534",
      "tree": "a3d16642c489fa0efde041dbf4a6e2da1601f190",
      "parents": [
        "6c24fa9399af70a31402abb245feabd1a957b55d"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Oct 17 12:01:53 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 17 12:01:53 2025 +0800"
      },
      "message": "chore(deps): bump github/codeql-action from 3 to 4 (#3223)\n\nBumps [github/codeql-action](https://github.com/github/codeql-action) from 3 to 4.\n- [Release notes](https://github.com/github/codeql-action/releases)\n- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/github/codeql-action/compare/v3...v4)\n\n---\nupdated-dependencies:\n- dependency-name: github/codeql-action\n  dependency-version: \u00274\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "6c24fa9399af70a31402abb245feabd1a957b55d",
      "tree": "9fb3e1a9bdd8ef6ea661ad49d4a2215922731e53",
      "parents": [
        "39be363cdbc5395d3163572c532be95f3dbad03a"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Fri Oct 17 09:58:19 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 17 09:58:19 2025 +0800"
      },
      "message": "chore(e2e): use apisix dev image as e2e server base image (#3229)\n\n"
    },
    {
      "commit": "39be363cdbc5395d3163572c532be95f3dbad03a",
      "tree": "23bde1247e15e6bb01d9bf263f0286ae37f077a0",
      "parents": [
        "75707c65e02e7c54869c1416b2a84d6d3bbfa424"
      ],
      "author": {
        "name": "Gurleen Kaur",
        "email": "gurleen72542@gmail.com",
        "time": "Tue Oct 14 12:36:57 2025 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 14 15:06:57 2025 +0800"
      },
      "message": "fix: update etcd image to bitnamilegacy/etcd:3.5 (#3224)\n\nThe Bitnami etcd image (bitnami/etcd:3.5) is deprecated and no longer available in Docker Hub. \r\nUpdated the reference in e2e/server/docker-compose.common.yml to use bitnamilegacy/etcd:3.5 instead. \r\nThis resolves the dev container build failure mentioned in issue #3220."
    },
    {
      "commit": "75707c65e02e7c54869c1416b2a84d6d3bbfa424",
      "tree": "a61fe29050f894ad1860ffec174b74443371368d",
      "parents": [
        "984a872beb0a30292f72ab7c595dc7000036600a"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Tue Sep 30 10:54:04 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 30 11:54:04 2025 +0900"
      },
      "message": "Revert \"feat: generate gzip assets during build (#3178)\" (#3219)\n\nThis reverts commit 1bdbfa66852b3b843f3b1c91e78aee9154c071cf."
    },
    {
      "commit": "984a872beb0a30292f72ab7c595dc7000036600a",
      "tree": "cacd8ffe6741f1741dcc31dd92e49b533d034483",
      "parents": [
        "1bdbfa66852b3b843f3b1c91e78aee9154c071cf"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Tue Sep 02 15:34:19 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 02 15:34:19 2025 +0800"
      },
      "message": "fix(form/Editor): only use the bundled monaco editor (#3169)\n\n"
    },
    {
      "commit": "1bdbfa66852b3b843f3b1c91e78aee9154c071cf",
      "tree": "f76ef136c32cc36855dfba78605c2bedb0cdae0a",
      "parents": [
        "cf9444e18075a5219318b293ae4107f93fce582b"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Sun Aug 31 20:01:44 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 31 20:01:44 2025 +0800"
      },
      "message": "feat: generate gzip assets during build (#3178)\n\nCo-authored-by: copilot-swe-agent[bot] \u003c198982749+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "cf9444e18075a5219318b293ae4107f93fce582b",
      "tree": "a3eb87ceaee45e301c1b34565a7b6fda25950dad",
      "parents": [
        "fd7dc1e273df71540cf27abbfb2d2fc0897f3057"
      ],
      "author": {
        "name": "Ajinkya Pathak",
        "email": "ajinkyapathak999@gmail.com",
        "time": "Fri Aug 29 13:53:56 2025 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 29 16:23:56 2025 +0800"
      },
      "message": "feat(i18n): add Spanish (es) translations for common.json (#3182)\n\n"
    },
    {
      "commit": "fd7dc1e273df71540cf27abbfb2d2fc0897f3057",
      "tree": "8ffd569b5e867f9b804696cb181e4f7b45da9bd5",
      "parents": [
        "f5793d230e3855b54cef93d92a0a957e65166794"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Tue Aug 19 11:08:37 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 19 11:08:37 2025 +0800"
      },
      "message": "feat(LanguageMenu): selected item style (#3179)\n\nCo-authored-by: SkyeYoung \u003c48400568+SkyeYoung@users.noreply.github.com\u003e\nCo-authored-by: copilot-swe-agent[bot] \u003c198982749+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "f5793d230e3855b54cef93d92a0a957e65166794",
      "tree": "cce8ce792dff0758276635ad784609d20fd5e539",
      "parents": [
        "2b3922694d8b77eb28344df097bb45829e4bbe2d"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Tue Aug 19 11:06:50 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 19 11:06:50 2025 +0800"
      },
      "message": "fix(FormItem): Labels (#3174)\n\n"
    },
    {
      "commit": "2b3922694d8b77eb28344df097bb45829e4bbe2d",
      "tree": "d98db90b23cd22ef1c2cf332dbd2df7c2307c2b4",
      "parents": [
        "3d93a9950339b394a980fe3309cc779b46588dba"
      ],
      "author": {
        "name": "Roland Schaer",
        "email": "schaer@begasoft.ch",
        "time": "Sun Aug 17 14:59:41 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 17 20:59:41 2025 +0800"
      },
      "message": "feat(i18n): add support for german (#3177)\n\nCo-authored-by: YYYoung \u003ciskyex@outlook.com\u003e\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "3d93a9950339b394a980fe3309cc779b46588dba",
      "tree": "8dc69c580a7589123d40742478eb8c7aea6323d7",
      "parents": [
        "fd6a0692922b464afbee9242deb05f018d77b913"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Aug 14 07:52:33 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 14 07:52:33 2025 +0800"
      },
      "message": "chore(deps): bump actions/checkout from 4 to 5 (#3168)\n\nBumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v4...v5)\n\n---\nupdated-dependencies:\n- dependency-name: actions/checkout\n  dependency-version: \u00275\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "fd6a0692922b464afbee9242deb05f018d77b913",
      "tree": "8aa6e53c79551c773144446c0c14885247858d4c",
      "parents": [
        "c64c54666dc61cb20312bd02e333e52ef790e52e"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Tue Aug 12 12:13:15 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 12 12:13:15 2025 +0800"
      },
      "message": "feat(i18n): fallback to en when i18n is incomplete (#3165)\n\n"
    },
    {
      "commit": "c64c54666dc61cb20312bd02e333e52ef790e52e",
      "tree": "d68f6c68af218ebdad0690ac7932470fffd3048e",
      "parents": [
        "d1f63e56046dbc6e2361c73baf48bc29507efea8"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Wed Jul 30 16:05:59 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 30 16:05:59 2025 +0800"
      },
      "message": "chore: upgrade deps to solve vulnerability alerts (#3154)\n\n* chore: upgrade deps to solve vulnerability alerts\n\n* chore: update brace-expansion"
    },
    {
      "commit": "d1f63e56046dbc6e2361c73baf48bc29507efea8",
      "tree": "dbef486fe42b7a80bc77575224970a945f305256",
      "parents": [
        "3487911cdfb4e51ce7df0da8e5c55e2adc0920fc"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Mon Jul 28 15:07:48 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 28 15:07:48 2025 +0800"
      },
      "message": "fix: support edit and show vars (#3152)\n\n"
    },
    {
      "commit": "3487911cdfb4e51ce7df0da8e5c55e2adc0920fc",
      "tree": "4821e53676f6210dda96d8263e2e4f21a5310d3e",
      "parents": [
        "6f01f7f2a936bc9f3ac56b628012568666ed117e"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Sat Jul 26 14:14:24 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 26 14:14:24 2025 +0800"
      },
      "message": "fix(credentials/detail): delete btn style (#3132)\n\n"
    },
    {
      "commit": "6f01f7f2a936bc9f3ac56b628012568666ed117e",
      "tree": "8721a0c54136a0ff51030e27ab8b1c9cf856f4b2",
      "parents": [
        "f8e2ffa6421a50e153c4fc95ee7d93d730a3ecdb"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Sat Jul 26 14:13:54 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 26 14:13:54 2025 +0800"
      },
      "message": "refactor(consumers): use Outlet to render child routes (#3133)\n\n"
    },
    {
      "commit": "f8e2ffa6421a50e153c4fc95ee7d93d730a3ecdb",
      "tree": "292e3946c8af0be9b7737a4f8f37fccc60df1b25",
      "parents": [
        "127391c9eddc5ee2b91ec911552287b7494da632"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Sat Jul 26 14:13:21 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 26 14:13:21 2025 +0800"
      },
      "message": "feat(stores/global): use jotai (#3134)\n\n"
    },
    {
      "commit": "127391c9eddc5ee2b91ec911552287b7494da632",
      "tree": "02d775e12f2a17da6d8d978c2b2a6280af13d036",
      "parents": [
        "fde2c5f0477cb8ca61501be00d2aee063e5763c1"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Fri Jul 25 15:20:53 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 25 15:20:53 2025 +0800"
      },
      "message": "fix(routes, stream_routes): clear upstream when has upstream_id (#3151)\n\n* fix(routes, stream_routes): clear upstream when has upstream_id\n\n* test: add related cases"
    },
    {
      "commit": "fde2c5f0477cb8ca61501be00d2aee063e5763c1",
      "tree": "b7f5285d0f13c9d11263a965e9bee897531841d1",
      "parents": [
        "bee39c281cd8a3553eb98a55631eaf20d21ca5d3"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Thu Jul 24 17:33:45 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 24 17:33:45 2025 +0800"
      },
      "message": "fix(consumers): username supports hyphen (#3150)\n\n"
    },
    {
      "commit": "bee39c281cd8a3553eb98a55631eaf20d21ca5d3",
      "tree": "4624171a5a495267b762819ab7d33f0e07c2cc6b",
      "parents": [
        "70712bd33f55f7979d4cb73a898e9778e0fbfe8b"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Wed Jun 25 11:07:07 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 25 11:07:07 2025 +0800"
      },
      "message": "feat(stream_routes): show disabled error (#3130)\n\n* feat(stream_routes): show disabled error\n\n* test: add show disabled error case\n\n* fix"
    },
    {
      "commit": "70712bd33f55f7979d4cb73a898e9778e0fbfe8b",
      "tree": "5dae8d1126b54fcab6bb6366b3d74d40e9498dc6",
      "parents": [
        "91955b6f306954ebef93c5e7f2b7e87fdbb65160"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Mon Jun 16 15:38:00 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 16 15:38:00 2025 +0800"
      },
      "message": "test: stream_routes in services (#3113)\n\n* feat(services/routes): filter by `service_id`\n\n* feat(services): filter stream_routes by service_id\n\n* fix: type\n\n* test: routes in services\n\n* test: stream_routes in services\n\n* Revert \"test: stream_routes in services\"\n\nThis reverts commit 77d7803250e0365f85dc0599f9d3fbaf8a1b10f5.\n\n* test: stream_routes in services\n\n* chore: rm stream_routes pom\n\n* feat: add  only show routes with service_id case\n\n* test: add not show other service route case\n\n* feat: add services stream_routes pom\n\n* test: stream_routes in services\n\n* fix: use exact match\n\n* chore: rollback useless change"
    },
    {
      "commit": "91955b6f306954ebef93c5e7f2b7e87fdbb65160",
      "tree": "1d19bf62229b62d90fa639805e2028047ce45b1a",
      "parents": [
        "d46d627f621764c50d038190790002515a5f9d3e"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Mon Jun 16 09:23:14 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 16 09:23:14 2025 +0800"
      },
      "message": "fix(stream_routes): show server_addr instead of name (#3121)\n\n"
    },
    {
      "commit": "d46d627f621764c50d038190790002515a5f9d3e",
      "tree": "d2368c813d31005b3cb471cac916b73c79300e29",
      "parents": [
        "4d5744a99ad8be7eb50812eb939ef18e7d5025a2"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Mon Jun 16 09:22:26 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 16 09:22:26 2025 +0800"
      },
      "message": "fix(stream_routes): rm upstream when has service_id (#3120)\n\n"
    },
    {
      "commit": "4d5744a99ad8be7eb50812eb939ef18e7d5025a2",
      "tree": "e10238122f38117872b8cf89db6c1e896507fd0b",
      "parents": [
        "9085c8039d29af0951c4e304be3ecb47b4f38351"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Mon Jun 16 09:21:06 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 16 09:21:06 2025 +0800"
      },
      "message": "feat: support delete all stream routes (#3119)\n\n"
    },
    {
      "commit": "9085c8039d29af0951c4e304be3ecb47b4f38351",
      "tree": "ca1af2807058f9fae4896c4d8434afa211836b03",
      "parents": [
        "78d1c32d4b3ab90527e5e5abb21ec1b5250b2e76"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Mon Jun 16 09:19:47 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 16 09:19:47 2025 +0800"
      },
      "message": "fix(stream_routes): `protocol` related JSONInput config (#3118)\n\n"
    },
    {
      "commit": "78d1c32d4b3ab90527e5e5abb21ec1b5250b2e76",
      "tree": "43fd8a2bf101fa9f57ce6c08110d671fb3c7d48d",
      "parents": [
        "20cd07df3c801f2992e8aa17eb95b5f87692c69d"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Fri Jun 13 16:47:14 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 13 16:47:14 2025 +0800"
      },
      "message": "fix(JSONInput):  toObject logic (#3117)\n\n* fix(stream_routes): logic for processing data\n\n* Revert \"fix(stream_routes): logic for processing data\"\n\nThis reverts commit 349512666bb772b88c54c418f50d91a30c5b5ea5.\n\n* chore"
    },
    {
      "commit": "20cd07df3c801f2992e8aa17eb95b5f87692c69d",
      "tree": "9136d64822158ebf283147c5397361e4544ca0af",
      "parents": [
        "63dd73d8cedfb2ac70d55f29e3318e8410495e96"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Fri Jun 13 10:22:30 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 13 10:22:30 2025 +0800"
      },
      "message": "test: routes in services (#3112)\n\n"
    },
    {
      "commit": "63dd73d8cedfb2ac70d55f29e3318e8410495e96",
      "tree": "219d89f1422dd7f34303f5740a4fb31ec5d35e95",
      "parents": [
        "7fd10a93256ab28e5777bb9cfaaaf4fb757996f4"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Thu Jun 12 15:19:26 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 12 15:19:26 2025 +0800"
      },
      "message": "feat(services): filter routes/stream_routes by `service_id` (#3111)\n\n* feat(services/routes): filter by `service_id`\n\n* feat(services): filter stream_routes by service_id\n\n* fix: type"
    },
    {
      "commit": "7fd10a93256ab28e5777bb9cfaaaf4fb757996f4",
      "tree": "6a77d5d22ad3a40a78c397e6159a3380109cb8c8",
      "parents": [
        "b3cf7468c446504dc70d71afaa9a87b8d32541a5"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Mon Jun 09 18:06:50 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 09 18:06:50 2025 +0800"
      },
      "message": "feat(workflow/e2e): allow `repository_dispatch` trigger tests (#3110)\n\n* feat(workflow/e2e): allow `workflow_dispatch` trigger tests\n\n* feat(workflow/e2e): allow `repository_dispatch` trigger tests\n\n* Revert \"Merge branch \u0027master\u0027 into young/feat/workflow/e2e-repository-dispatch\"\n\nThis reverts commit c9976ae9aee68e905370ee00954a9d7e3a803d3b, reversing\nchanges made to da47af6b8ea2f946caa6c19dcb7edb5ca8ec7822."
    },
    {
      "commit": "b3cf7468c446504dc70d71afaa9a87b8d32541a5",
      "tree": "051ed3ed127016537f6a5c9600e14d5c3e2b21ef",
      "parents": [
        "d90211f71d4b118311429ed04fe5ddff0ce1a83b"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Mon Jun 09 17:54:14 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 09 17:54:14 2025 +0800"
      },
      "message": "feat(workflow/e2e): allow `workflow_dispatch` trigger tests (#3109)\n\n"
    },
    {
      "commit": "d90211f71d4b118311429ed04fe5ddff0ce1a83b",
      "tree": "f5f69cad6038ed42d8d324d0494d80caeb2886c2",
      "parents": [
        "636aa858dae1452255781ca438b1581d009d44b1"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Fri Jun 06 11:07:30 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 06 11:07:30 2025 +0800"
      },
      "message": "feat: `stream_routes` resource in `services` (#3105)\n\n"
    },
    {
      "commit": "636aa858dae1452255781ca438b1581d009d44b1",
      "tree": "3e29092d3daeb3ebe07794d3b9c4eda120c2a4e5",
      "parents": [
        "7055654751c34cd5fe6e1ea4b10d3bd72e1109e1"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Fri Jun 06 09:29:04 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 06 09:29:04 2025 +0800"
      },
      "message": "feat: `routes` resource in `services` (#3103)\n\n* feat: routes resource in services\n\n* fix: fetch routes data logic\n\n* fix: navigate, fetch logic\n\n* chore: rm useless file\n\n* fix(routes): PageHeader deps\n\n* feat(RouteAddForm): allow pass defaultValues\n\n* chore\n\n* fix: onDeleteSuccess logic\n\n* feat: make `service_id` readOnly in services"
    },
    {
      "commit": "7055654751c34cd5fe6e1ea4b10d3bd72e1109e1",
      "tree": "83fd387afbd802ec847cb2162cf1ddbd5108e839",
      "parents": [
        "e063e3477eac739a62670ceb0acf150eaa5094dd"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Wed Jun 04 21:28:16 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 04 21:28:16 2025 +0800"
      },
      "message": "feat: support rendering nested routes in service (#3100)\n\n* feat: support render nested route in services detail\n\n* chore: add a demo for review"
    },
    {
      "commit": "e063e3477eac739a62670ceb0acf150eaa5094dd",
      "tree": "84a4e57be13b5f366fb391aab16ca6070a49c837",
      "parents": [
        "8679cc19f57e1b7683359924be100f15d5af4c18"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Wed Jun 04 15:20:12 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 04 15:20:12 2025 +0800"
      },
      "message": "feat: disable editing of IDs while editing (#3098)\n\n"
    },
    {
      "commit": "8679cc19f57e1b7683359924be100f15d5af4c18",
      "tree": "954e7a689ab4c57c4352408ab9a3b6ca212e041e",
      "parents": [
        "c65fcb8f2f80340242ecc0179aac2218bcb4a3da"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Fri May 30 15:46:33 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 30 15:46:33 2025 +0800"
      },
      "message": "feat: i18n progress (#3094)\n\n"
    },
    {
      "commit": "c65fcb8f2f80340242ecc0179aac2218bcb4a3da",
      "tree": "65a424dd97d26eef6610996eeb7e454248457c44",
      "parents": [
        "a5fd69023290ad5bb735859695817bcd1c4626e0"
      ],
      "author": {
        "name": "YYYoung",
        "email": "iskyex@outlook.com",
        "time": "Thu May 29 11:09:13 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 29 11:09:13 2025 +0800"
      },
      "message": "fix(workflow): scheduled test (#3083)\n\n"
    }
  ],
  "next": "a5fd69023290ad5bb735859695817bcd1c4626e0"
}
