)]}'
{
  "log": [
    {
      "commit": "3a7f33a3434ad88468f1a4321f1d0d2fabb9fb67",
      "tree": "d54bba9be0b5203cbcf374451f6b8fde766f07d8",
      "parents": [
        "888ed6ea9378f170368e078c667bb7869261ff35"
      ],
      "author": {
        "name": "Shreemaan Abhishek",
        "email": "shreemaan.abhishek@gmail.com",
        "time": "Thu May 07 19:13:27 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 16:58:27 2026 +0545"
      },
      "message": "chore: update github labels (#13337)"
    },
    {
      "commit": "888ed6ea9378f170368e078c667bb7869261ff35",
      "tree": "4a0ff07b738e90500649efc034fd24043042c2c2",
      "parents": [
        "c808156e997c77ca672b6880cfc5a31fb2b5734c"
      ],
      "author": {
        "name": "Nic",
        "email": "qianyong@api7.ai",
        "time": "Thu May 07 14:46:10 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 14:46:10 2026 +0800"
      },
      "message": "feat(elasticsearch-logger): support dynamic index with time and variable resolution (#13334)"
    },
    {
      "commit": "c808156e997c77ca672b6880cfc5a31fb2b5734c",
      "tree": "fdb4ed8092ecb78f9d5ccbc0c78c7656957576a6",
      "parents": [
        "03a43df484189a88a9fc89f3f095c16c63c53e33"
      ],
      "author": {
        "name": "Mohammad Izzraff Janius",
        "email": "157467092+janiussyafiq@users.noreply.github.com",
        "time": "Thu May 07 01:10:57 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 14:10:57 2026 +0800"
      },
      "message": "fix(tracer): prevent stale ctx.tracing crash on HTTPS keepalive connections (#13232)"
    },
    {
      "commit": "03a43df484189a88a9fc89f3f095c16c63c53e33",
      "tree": "fa5cfb2722e9ceb5cc3dd2b2c692919d0404f8ff",
      "parents": [
        "1dbf696ce9a0d06c9a67468daa02f698c3a28493"
      ],
      "author": {
        "name": "Shreemaan Abhishek",
        "email": "shreemaan.abhishek@gmail.com",
        "time": "Thu May 07 10:50:19 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 08:35:19 2026 +0545"
      },
      "message": "fix(admin): require admin key for schema validate endpoint (#13328)\n\nThe /apisix/admin/schema/validate/* handler did not call\nset_ctx_and_check_token() like every other Admin API handler, so the\nendpoint accepted unauthenticated requests even when admin_key_required\nwas enabled.\n\nAdd the auth check at the top of schema_validate() and cover the three\nauth states (no key, wrong key, correct key) in t/admin/token.t.\n\nReported by Kacper."
    },
    {
      "commit": "1dbf696ce9a0d06c9a67468daa02f698c3a28493",
      "tree": "dd7f439d2c92cbf4fb6aca8a48ca2881ca67715a",
      "parents": [
        "e32ed3e1661bf4ae7a863cc00b54b35195f8e678"
      ],
      "author": {
        "name": "Shreemaan Abhishek",
        "email": "shreemaan.abhishek@gmail.com",
        "time": "Thu May 07 10:49:49 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 08:34:49 2026 +0545"
      },
      "message": "fix: rebuild stream router when services change (#13318)\n\n* fix: rebuild stream router when services change\n\n* test: add integration tests for stream router rebuild on service change\n\nCover the four scenarios the fix addresses end-to-end via stream\nsockets: service status disable, re-enable, deletion, and recreation.\nEach asserts that route matching reflects the new service state once\nthe rebuild path runs.\n\nPorts the test file from api7-ee #1417 (the source PR for this\nbackport) which was omitted from the initial port.\n\n* fix: skip stream routes whose service is missing or disabled\n\nThe previous commit started rebuilding the stream router whenever\nservices.conf_version changes, but the rebuild produced the same\nrouting decisions because create_router() didn\u0027t actually consult\nservice status — service_fetch wasn\u0027t even imported in this file.\n\nAdd the missing service_id enforcement at the top of the iteration\nloop:\n\n  - If a stream_route references a service_id whose service can\u0027t be\n    fetched (deleted, or not yet synced from etcd), log\n    \u0027failed to fetch service configuration by id: \u003cid\u003e\u0027 and skip\n    the route.\n  - If the service status is 0 (explicitly disabled), skip the route.\n\nCombined with the conf_version trigger from the previous commit, a\nservice status flip / delete / late-sync now propagates into routing\ndecisions on the next match() call.\n\nThis is what the integration tests added in\nt/stream-node/service-change-rebuild-router.t exercise; without this\npatch, TESTs 2-4 fail because the disabled / deleted service is\nignored at routing time.\n\nSigned-off-by: Abhishek Choudhary \u003cshreemaan.abhishek@gmail.com\u003e\n\n* refactor(stream-router): drop unreachable service lookup in rebuild\n\nApisix admin guarantees stream_routes\u0027 referenced services exist\n(referenced services cannot be deleted), and the services schema does\nnot expose a status field, so there is no actionable outcome from a\nper-route service fetch. Rebuilding on services.conf_version is enough.\n\nRefocus the integration test on what apisix exposes: update the bound\nservice and verify routing continues to match through the\nconf_version-driven rebuild.\n\n---------\n\nSigned-off-by: Abhishek Choudhary \u003cshreemaan.abhishek@gmail.com\u003e"
    },
    {
      "commit": "e32ed3e1661bf4ae7a863cc00b54b35195f8e678",
      "tree": "28fef2164ed7e2d6aad464d45d6f177a743e413d",
      "parents": [
        "3586b2f8051ca06ec7686511ed709ca9fa553a66"
      ],
      "author": {
        "name": "Shreemaan Abhishek",
        "email": "shreemaan.abhishek@gmail.com",
        "time": "Thu May 07 10:40:49 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 08:25:49 2026 +0545"
      },
      "message": "test(ci): fix flaky tests (#13332)\n\n* test(ci): fix flaky tests (follow-up to #13266)\n\nFix four flakes that survived #13266, identified by re-running the\ncross-branch flake analysis on CI failures from the past week:\n\n- t/cli/test_etcd_sync_event_handle.sh \"Round 2 Request 1 unexpected\":\n  fixed `sleep 5` was too short on slow runners — etcd auth-toggle +\n  watch-reconnect + bulk-event-apply can take longer than 5s, so curl\n  hits the stale route. Replaced with a 30s deadline poll on /1 until\n  status 204 (the new fault-injection plugin) appears.\n- t/core/config_etcd.t TEST 10 \"timeout when waiting for the process to\n  exit\": the test calls test_sync_data which fires init_watch_ctx, leaving\n  a run_watch background timer alive; on slow runners nginx shutdown\n  exceeds the default 3s kill-wait. Bumped TEST_NGINX_TIMEOUT to 30 for\n  the file.\n- t/admin/plugins-reload.t TEST 1, TEST 2 \"grep_error_log_out empty\":\n  the post-reload \"sync local conf to etcd\" log doesn\u0027t always land\n  within ngx.sleep(1). Bumped to ngx.sleep(2).\n- t/discovery/eureka.t TEST 4 \"failed to fetch registry from\n  127.0.0.1:20997 should match\": added `--- wait: 2` so the eureka\n  fetch interval (1s) has a chance to fire before the grep runs.\n\n* test(plugins-reload): bump initial-filter-fire wait in TEST 2\n\nThe previous bump was on the wrong sleep. The flake symptom is the\n\"reload plugins on node before reload\" log line missing from the\ngrep_error_log_out diff — i.e. the initial filter fire (which logs\n\"before reload\" while before_reload\u003dtrue) didn\u0027t land before the test\nflipped before_reload\u003dfalse. The fix is to bump the sleep BETWEEN\ncore.config.new and the before_reload\u003dfalse flip, not the final sleep\nafter the reload PUT.\n\n* test(plugins-reload): bump per-test timeout to 10s\n\nThe bumped ngx.sleep calls in TEST 1/2 push handler time over the\ndefault 3s socket timeout from Test::Nginx::Util::$Timeout, causing\nprove to fail with \"ERROR: client socket timed out\". Add `--- timeout:\n10` to both tests so the test client waits long enough for the\nextended sleep windows to complete.\n\n* test(radixtree-sni3): bump TEST_NGINX_TIMEOUT to 30s\n\nSame fix shape as t/core/config_etcd.t in this PR — tests that exercise\netcd-watcher background timers can hit Test::Nginx\u0027s default 3s\nprocess-exit kill-wait on slow runners. The EE counterpart of this file\nhas tripped this in CI; the same race exists in apisix and is a free\npre-emptive fix (no test slowdown — env var only affects shutdown).\n\n* test(skywalking2): bump TEST 2 request count from 12 to 50\n\nThe test runs with workers(4) and the patched startBackendTimer only\nlogs \"start skywalking backend timer\" when ngx.worker.id()\u003d\u003d0. With 12\nkeepalive\u003dfalse connections and 4 workers, the ~3% probability that no\nconnection lands on worker 0 produced a recurring flake — observed on\nmaster + 3 unrelated branches in the past 8 days. Bumping to 50 drops\nthe miss probability to (3/4)^50 ≈ 0.0006%. No semantic change.\n\n* test(skywalking2): bump TEST 2 per-test timeout to 10s\n\nThe previous commit bumped the request loop from 12 to 50, but 50\nsequential keepalive\u003dfalse round-trips on CI runners can take longer\nthan the default 3s test-client socket timeout, causing\n\"ERROR: client socket timed out\". Add `--- timeout: 10` so the test\nclient waits long enough for the extended handler to complete."
    },
    {
      "commit": "3586b2f8051ca06ec7686511ed709ca9fa553a66",
      "tree": "ed34f2eb12a9bdfa7bc48b33b845331d79289356",
      "parents": [
        "adf0c7b3d7ad54af196d46b75b44cfd5bc7c5d59"
      ],
      "author": {
        "name": "Shreemaan Abhishek",
        "email": "shreemaan.abhishek@gmail.com",
        "time": "Thu May 07 10:40:14 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 08:25:14 2026 +0545"
      },
      "message": "fix(opentelemetry): preserve booleans, handle multi-value headers, tighten test (#13315)\n\nThree follow-ups to #13146 (which started coercing additional_attributes\nvalues to strings before sending them to OTel attr.string):\n\n1. inject_attributes() gated insertion on `if val then`, which silently\n   drops boolean false (Lua falsy) — regressing any user whose nginx\n   variable resolves to a boolean false flag. Switch to\n   `if val ~\u003d nil then` so false survives.\n\n2. ngx.req.get_headers() returns a Lua table for multi-value headers\n   (e.g. multiple Set-Cookie / X-Forwarded-For entries). tostring()\n   over a table emits \u0027table: 0x...\u0027 and that\u0027s what was landing in\n   the span attribute. Extract a coerce_attr_value() helper that joins\n   multi-value entries with \u0027, \u0027 and skips when the source is missing\n   entirely.\n\n3. TEST 22\u0027s response_body regex was qr/.*opentelemetry-lua.*/ which\n   matches the OTLP exporter marker even when the numeric attributes\n   are entirely absent from the export — i.e. the test would still\n   pass with the regression #13146 was supposed to fix. Tighten it to\n   assert each of request_time / bytes_sent appears as a stringValue.\n   (upstream_response_time is intentionally not asserted: TEST 21\n   serves /opentracing directly without proxying, so\n   $upstream_response_time is nil and the plugin correctly omits the\n   attribute.)\n\nSigned-off-by: Shreemaan Abhishek \u003cshreemaan.abhishek@gmail.com\u003e\nSigned-off-by: Abhishek Choudhary \u003cshreemaan.abhishek@gmail.com\u003e"
    },
    {
      "commit": "adf0c7b3d7ad54af196d46b75b44cfd5bc7c5d59",
      "tree": "5e80066ee1e11f94634ed7c13d5331d9a05592e8",
      "parents": [
        "90a3ad577d7d566b3cfa8f0844e3bc866937d1a5"
      ],
      "author": {
        "name": "Nic",
        "email": "qianyong@api7.ai",
        "time": "Wed May 06 10:32:09 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 10:32:09 2026 +0800"
      },
      "message": "feat(ai-proxy): rewrite Anthropic-to-OpenAI converter with whitelist body construction (#13321)"
    },
    {
      "commit": "90a3ad577d7d566b3cfa8f0844e3bc866937d1a5",
      "tree": "92f4e69e7256a1b97d6a33661a0b2b3e5b4d2ac0",
      "parents": [
        "bc5a74f7b8d880d63ef0d6f4978829e7dbb15d0c"
      ],
      "author": {
        "name": "Shreemaan Abhishek",
        "email": "shreemaan.abhishek@gmail.com",
        "time": "Wed May 06 10:13:40 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 07:58:40 2026 +0545"
      },
      "message": "feat(ai-proxy): add passthrough protocol for unrecognized API formats (#13320)"
    },
    {
      "commit": "bc5a74f7b8d880d63ef0d6f4978829e7dbb15d0c",
      "tree": "affc02ca0a58d57d09d66294a18d580e97b90f4f",
      "parents": [
        "17b9b56b8fcd42a828cab435bbe07a759797571e"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Wed May 06 09:58:27 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 09:58:27 2026 +0800"
      },
      "message": "docs: update attach-consumer-label plugin documentation (#13301)"
    },
    {
      "commit": "17b9b56b8fcd42a828cab435bbe07a759797571e",
      "tree": "852ae958b0096bb4cb02e550eff9ed6a9a1fe38c",
      "parents": [
        "c22058ce5bbf0e4fb04ce102e77fd525eedccfdb"
      ],
      "author": {
        "name": "Nic",
        "email": "qianyong@api7.ai",
        "time": "Thu Apr 30 18:57:32 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 30 18:57:32 2026 +0800"
      },
      "message": "fix(ai-proxy): populate $upstream_response_length for cosocket transport (#13323)"
    },
    {
      "commit": "c22058ce5bbf0e4fb04ce102e77fd525eedccfdb",
      "tree": "6a9f90b627b75844417b0ba4c9ee001c041fed4e",
      "parents": [
        "f1018cc44ca687a69f1dee960dc1dd6533dcc928"
      ],
      "author": {
        "name": "Nic",
        "email": "qianyong@api7.ai",
        "time": "Thu Apr 30 18:33:07 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 30 18:33:07 2026 +0800"
      },
      "message": "feat: extend secret references to all plugins with central resolution (#13312)"
    },
    {
      "commit": "f1018cc44ca687a69f1dee960dc1dd6533dcc928",
      "tree": "a8483a70e949541be310f3474bbf2a4e03702120",
      "parents": [
        "bda084d5233cec64c2c0ce202166b39b823ebe24"
      ],
      "author": {
        "name": "Nic",
        "email": "qianyong@api7.ai",
        "time": "Thu Apr 30 18:28:30 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 30 18:28:30 2026 +0800"
      },
      "message": "fix: downgrade decrypt failure log from warn to info (#13324)"
    },
    {
      "commit": "bda084d5233cec64c2c0ce202166b39b823ebe24",
      "tree": "615df806722332743577238ae8d82ace59540c05",
      "parents": [
        "a4a7f8aadf2a19a4e6c8d9f5737b0e6651344aa0"
      ],
      "author": {
        "name": "Nic",
        "email": "qianyong@api7.ai",
        "time": "Thu Apr 30 15:36:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 30 15:36:26 2026 +0800"
      },
      "message": "feat: populate upstream nginx variables when ai-proxy uses cosocket transport (#13317)"
    },
    {
      "commit": "a4a7f8aadf2a19a4e6c8d9f5737b0e6651344aa0",
      "tree": "b00da7dba3d42e9f1c50e45c980a019084dd4814",
      "parents": [
        "6aa2ba3fd4dafb7166f34b9f7254c81d4f48e86d"
      ],
      "author": {
        "name": "AlinsRan",
        "email": "alinsran@apache.org",
        "time": "Thu Apr 30 15:00:00 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 30 15:00:00 2026 +0800"
      },
      "message": "fix(admin): strip SSL private keys array in GET single and list responses (#13227)"
    },
    {
      "commit": "6aa2ba3fd4dafb7166f34b9f7254c81d4f48e86d",
      "tree": "5e236fbbc57885ad14962eca148d1891660be479",
      "parents": [
        "4762c33ff920168f5646a1a05b95590af53a7331"
      ],
      "author": {
        "name": "Shreemaan Abhishek",
        "email": "shreemaan.abhishek@gmail.com",
        "time": "Thu Apr 30 12:44:34 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 30 10:29:34 2026 +0545"
      },
      "message": "fix(ai-prompt-*): handle nil err in JSON body parse path (#13314)"
    },
    {
      "commit": "4762c33ff920168f5646a1a05b95590af53a7331",
      "tree": "d84ce8968efd6e9e47f9106486d3d71cd7322b78",
      "parents": [
        "5024b9a492b63f0447c62954868037105c9fb4cb"
      ],
      "author": {
        "name": "Nic",
        "email": "qianyong@api7.ai",
        "time": "Thu Apr 30 12:00:48 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 30 12:00:48 2026 +0800"
      },
      "message": "fix(ai-proxy-multi): resolve _dns_value in construct_upstream when nil (#13322)"
    },
    {
      "commit": "5024b9a492b63f0447c62954868037105c9fb4cb",
      "tree": "a6acc5d450a74ceaa189ab6e592debf127c07515",
      "parents": [
        "39a31b7f68d94f3ea0fff7df24b11a4f762ef65a"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Thu Apr 30 11:58:40 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 30 11:58:40 2026 +0800"
      },
      "message": "docs: update kafka-logger plugin documentation (#13278)"
    },
    {
      "commit": "39a31b7f68d94f3ea0fff7df24b11a4f762ef65a",
      "tree": "89642199c510d25866d00fe40e1ebb732d6d5da3",
      "parents": [
        "55e1cd5c45a82acbb925b0a6b6b1b9de18586795"
      ],
      "author": {
        "name": "Nic",
        "email": "qianyong@api7.ai",
        "time": "Thu Apr 30 11:57:34 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 30 11:57:34 2026 +0800"
      },
      "message": "test(ai-rate-limiting): add test for instance name containing dots (#13316)"
    },
    {
      "commit": "55e1cd5c45a82acbb925b0a6b6b1b9de18586795",
      "tree": "c5098150f69ee62dd319a49cb4a8538738714534",
      "parents": [
        "a3c4e8c2b45918389009e91bee5e3f0b7f33f6b9"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Thu Apr 30 11:24:01 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 30 11:24:01 2026 +0800"
      },
      "message": "docs: fix prometheus plugin documentation (#13275)"
    },
    {
      "commit": "a3c4e8c2b45918389009e91bee5e3f0b7f33f6b9",
      "tree": "afe8669ff006c0640e2a1794cc61d31773d4d2fa",
      "parents": [
        "6577cfa967dbaaa4d0569a1881df15b1d05307a9"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Thu Apr 30 11:23:39 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 30 11:23:39 2026 +0800"
      },
      "message": "docs(openid-connect): re-port with Admin API, ADC, and Ingress Controller tabs (#13247)"
    },
    {
      "commit": "6577cfa967dbaaa4d0569a1881df15b1d05307a9",
      "tree": "b9fe14beabf31e2d3dab61b2438447801435d558",
      "parents": [
        "2c3400a300b5c5f7321c3fb8c94459c737a1d93d"
      ],
      "author": {
        "name": "Mohammad Izzraff Janius",
        "email": "157467092+janiussyafiq@users.noreply.github.com",
        "time": "Thu Apr 30 10:14:06 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 30 10:14:06 2026 +0800"
      },
      "message": "fix(opentelemetry): inject additional_attributes in log phase (#13265)"
    },
    {
      "commit": "2c3400a300b5c5f7321c3fb8c94459c737a1d93d",
      "tree": "3ed1cf4bcf3ea9edc259496894a9e744d414d56d",
      "parents": [
        "39fa3902ab23f9ee058c6be5aef59a8f7477c2c5"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Wed Apr 29 15:13:39 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 29 15:13:39 2026 +0800"
      },
      "message": "docs: update serverless and aws-lambda plugin docs (#13309)"
    },
    {
      "commit": "39fa3902ab23f9ee058c6be5aef59a8f7477c2c5",
      "tree": "89ebc4de363e303a5bb4efb60933029566e8b00e",
      "parents": [
        "c3a5aad61a27085a627e278d5c51e29602a1d0dd"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Wed Apr 29 09:09:32 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 29 09:09:32 2026 +0800"
      },
      "message": "docs: update zipkin plugin documentation (#13277)"
    },
    {
      "commit": "c3a5aad61a27085a627e278d5c51e29602a1d0dd",
      "tree": "5f762b29c9bbc9057764e9a490c4ed550075f524",
      "parents": [
        "f9537d18439ad791a5023ad280d487ed40e94220"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Wed Apr 29 09:09:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 29 09:09:11 2026 +0800"
      },
      "message": "docs: fix opentelemetry plugin documentation (#13276)"
    },
    {
      "commit": "f9537d18439ad791a5023ad280d487ed40e94220",
      "tree": "04a299e924509e48b45a01d6758b3de6d9a6188d",
      "parents": [
        "aaabee1a7b38bc106945ddfce23490c1334d2d44"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Wed Apr 29 09:08:38 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 29 09:08:38 2026 +0800"
      },
      "message": "docs: update proxy-rewrite plugin documentation (#13292)"
    },
    {
      "commit": "aaabee1a7b38bc106945ddfce23490c1334d2d44",
      "tree": "edbb24c565081e23a7b4420f6f5f5807582a8937",
      "parents": [
        "28c7639d25bc75be2c7e9d7e43f6f010c31e79ac"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Tue Apr 28 16:39:34 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 28 16:39:34 2026 +0800"
      },
      "message": "docs: update error-log-logger and datadog plugin docs (#13270)"
    },
    {
      "commit": "28c7639d25bc75be2c7e9d7e43f6f010c31e79ac",
      "tree": "32dc46edec15a2569ba99e7f876803cda14319fa",
      "parents": [
        "cb133820c5ab795303f35d01f451b051b47990b7"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Tue Apr 28 15:23:39 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 28 15:23:39 2026 +0800"
      },
      "message": "docs(grpc-transcode, grpc-web): re-port with improved descriptions, examples, and structure (#13296)"
    },
    {
      "commit": "cb133820c5ab795303f35d01f451b051b47990b7",
      "tree": "4ff3198c1d6e8dd4b17bfae36897fe2ce55d14e8",
      "parents": [
        "52cba57a04230cf7cd015761eb80ed98427c75d1"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Tue Apr 28 15:22:48 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 28 15:22:48 2026 +0800"
      },
      "message": "docs: update body-transformer and degraphql plugin docs (#13295)"
    },
    {
      "commit": "52cba57a04230cf7cd015761eb80ed98427c75d1",
      "tree": "9c3b036b5f13bac810f46371c9fd4983777cb3e2",
      "parents": [
        "7bc498b56475cc9b5e0d25305b88a165ef296fa4"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Tue Apr 28 15:21:50 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 28 15:21:50 2026 +0800"
      },
      "message": "docs: update http-logger, rocketmq-logger, and syslog plugin docs (#13272)"
    },
    {
      "commit": "7bc498b56475cc9b5e0d25305b88a165ef296fa4",
      "tree": "c70778a8937961169729b3f631185c106958f243",
      "parents": [
        "1bff97c47952415b54fa83aee7d5e70745123894"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Tue Apr 28 15:21:13 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 28 15:21:13 2026 +0800"
      },
      "message": "docs: update fault-injection and mocking plugin documentation (#13294)"
    },
    {
      "commit": "1bff97c47952415b54fa83aee7d5e70745123894",
      "tree": "0d5d1d7fd28041dd5cd9d98c515acf070fb57263",
      "parents": [
        "2a75cedcf9e7cd4927c2e59cdb6b780d5144e383"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Tue Apr 28 15:20:25 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 28 15:20:25 2026 +0800"
      },
      "message": "docs: update clickhouse-logger, splunk-hec-logging, and google-cloud-logging plugin docs (#13273)"
    },
    {
      "commit": "2a75cedcf9e7cd4927c2e59cdb6b780d5144e383",
      "tree": "ed0b5d54f358e9f6b97dc31436e6b8b7c1ecbe7f",
      "parents": [
        "99865026dc81b320248cbb34955a4430c1894820"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Tue Apr 28 15:18:42 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 28 15:18:42 2026 +0800"
      },
      "message": "docs: update loki-logger and elasticsearch-logger plugin docs (#13271)"
    },
    {
      "commit": "99865026dc81b320248cbb34955a4430c1894820",
      "tree": "cf1f80505d360123b019f6fd91d186ba56b86311",
      "parents": [
        "99f5599aa7405d4318d7cc8616b1b34c5a3c2fd6"
      ],
      "author": {
        "name": "Shreemaan Abhishek",
        "email": "shreemaan.abhishek@gmail.com",
        "time": "Mon Apr 27 20:08:05 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 27 17:53:05 2026 +0545"
      },
      "message": "feat(ai-proxy): support aws bedrock (#13249)"
    },
    {
      "commit": "99f5599aa7405d4318d7cc8616b1b34c5a3c2fd6",
      "tree": "44ce746d9bd0a075bfd53b6547e62cc0787a0e03",
      "parents": [
        "c8bab5d97afba64fbff53e28ed38766ec45fa077"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Mon Apr 27 10:26:14 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 27 10:26:14 2026 +0800"
      },
      "message": "docs: update skywalking and skywalking-logger plugin docs (#13274)"
    },
    {
      "commit": "c8bab5d97afba64fbff53e28ed38766ec45fa077",
      "tree": "b067c463014a73029c8ab864122156f3dec7244e",
      "parents": [
        "4d81068390a963e6c7c954fb3c44d3caaf2214a3"
      ],
      "author": {
        "name": "Nic",
        "email": "qianyong@api7.ai",
        "time": "Mon Apr 27 10:07:13 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 27 10:07:13 2026 +0800"
      },
      "message": "fix: avoid logging plaintext value when encrypt/decrypt fails in ssl.lua (#13298)"
    },
    {
      "commit": "4d81068390a963e6c7c954fb3c44d3caaf2214a3",
      "tree": "458d758911fcbda7955135bf74a5558ffe5e7157",
      "parents": [
        "08bf6248ad2196109b4cf73f22f98a502362161c"
      ],
      "author": {
        "name": "Nic",
        "email": "qianyong@api7.ai",
        "time": "Mon Apr 27 10:06:58 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 27 10:06:58 2026 +0800"
      },
      "message": "fix: batch-processor infinite timer loop prevents graceful shutdown (#13288)"
    },
    {
      "commit": "08bf6248ad2196109b4cf73f22f98a502362161c",
      "tree": "40e053fcc077952c580695d8b10e1a56d7264b01",
      "parents": [
        "64f3717b75caf50a6db583e2da2e34d185e1e4d6"
      ],
      "author": {
        "name": "Nic",
        "email": "qianyong@api7.ai",
        "time": "Sat Apr 25 10:46:00 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 25 10:46:00 2026 +0800"
      },
      "message": "fix(stream/traffic-split): set route_id in stream preread phase (#13284)"
    },
    {
      "commit": "64f3717b75caf50a6db583e2da2e34d185e1e4d6",
      "tree": "9304a011170667aa4eff305d00b2a72bd7a82a3a",
      "parents": [
        "7c98580697e7d3aabea375cf88e05d7bf0e2d50e"
      ],
      "author": {
        "name": "Nic",
        "email": "qianyong@api7.ai",
        "time": "Fri Apr 24 12:27:53 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 24 12:27:53 2026 +0800"
      },
      "message": "fix(stream/traffic-split): handle upstream_id set by plugin in stream context (#13285)"
    },
    {
      "commit": "7c98580697e7d3aabea375cf88e05d7bf0e2d50e",
      "tree": "0321388d127dc5da92b62015fefbd168de84dd61",
      "parents": [
        "46773fec2fd62ea0b3195615a4e663ba3e357b23"
      ],
      "author": {
        "name": "Shreemaan Abhishek",
        "email": "shreemaan.abhishek@gmail.com",
        "time": "Fri Apr 24 11:04:30 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 24 08:49:30 2026 +0545"
      },
      "message": "test(ci): fix flaky tests (#13266)"
    },
    {
      "commit": "46773fec2fd62ea0b3195615a4e663ba3e357b23",
      "tree": "4c7e069cb7d62a37d9d73a4857b224c83e806568",
      "parents": [
        "5ca64d18b03db3deda73098ca030f6f33d33a678"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Thu Apr 23 15:24:04 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 23 15:24:04 2026 +0800"
      },
      "message": "docs(key-auth): re-port with Admin API, ADC, and Ingress Controller tabs (#13241)"
    },
    {
      "commit": "5ca64d18b03db3deda73098ca030f6f33d33a678",
      "tree": "271cd6fde77280cf155f91e601fa428b5ef28f91",
      "parents": [
        "e3cfd41b425ed142b225e17685121dfc9b7cfe64"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Wed Apr 22 14:45:43 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 14:45:43 2026 +0800"
      },
      "message": "docs(authz-keycloak): re-port with Admin API, ADC, and Ingress Controller tabs (#13246)"
    },
    {
      "commit": "e3cfd41b425ed142b225e17685121dfc9b7cfe64",
      "tree": "a57e6abb9302f89517bc48e1bb2fc30aca484fef",
      "parents": [
        "44946016806b12273b39aa122f6c3ab649406169"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Wed Apr 22 14:45:19 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 14:45:19 2026 +0800"
      },
      "message": "docs(forward-auth): re-port with Admin API, ADC, and Ingress Controller tabs (#13244)"
    },
    {
      "commit": "44946016806b12273b39aa122f6c3ab649406169",
      "tree": "8c2775a9d0db7c11c7091ab5cf430e2ccf31a795",
      "parents": [
        "f9226b250232ec52e2b8ef6d1c567427d02a766b"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Wed Apr 22 14:45:03 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 14:45:03 2026 +0800"
      },
      "message": "docs(ai-request-rewrite): re-port with Admin API, ADC, and Ingress Controller tabs (#13210)"
    },
    {
      "commit": "f9226b250232ec52e2b8ef6d1c567427d02a766b",
      "tree": "5658d76ab0c4ecfe76dfc4f77d7fc12df3c246b4",
      "parents": [
        "64a2d6f4e24be5ab78c90c0607fc469962acbc0f"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Wed Apr 22 14:44:47 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 14:44:47 2026 +0800"
      },
      "message": "docs(hmac-auth): re-port with Admin API, ADC, and Ingress Controller tabs (#13242)"
    },
    {
      "commit": "64a2d6f4e24be5ab78c90c0607fc469962acbc0f",
      "tree": "bc166754f4bb27334d0758f2e5859291722f2440",
      "parents": [
        "75442fa51598f87014b70dc1d8912beb6117c0ff"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Wed Apr 22 14:44:34 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 14:44:34 2026 +0800"
      },
      "message": "docs(opa): re-port with Admin API, ADC, and Ingress Controller tabs (#13239)"
    },
    {
      "commit": "75442fa51598f87014b70dc1d8912beb6117c0ff",
      "tree": "89d82280ea77d7f2e76ae47a94a013e14aa9b0f5",
      "parents": [
        "c11deafee2ca92a2330308fce37741e98ec71690"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Wed Apr 22 14:44:21 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 14:44:21 2026 +0800"
      },
      "message": "docs: update ai-aliyun-content-moderation plugin documentation (#13167)"
    },
    {
      "commit": "c11deafee2ca92a2330308fce37741e98ec71690",
      "tree": "6e02707f1d860b2ccb4f4e4e01281724feee2fd3",
      "parents": [
        "3f5cd10c3fe21ed4ceb9e210fa1c5e5674925198"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Wed Apr 22 14:44:08 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 14:44:08 2026 +0800"
      },
      "message": "docs(consumer-restriction): re-port with Admin API, ADC, and Ingress Controller tabs (#13262)"
    },
    {
      "commit": "3f5cd10c3fe21ed4ceb9e210fa1c5e5674925198",
      "tree": "f4aa8d9a057502841ae6abdfc5f20260b97972b3",
      "parents": [
        "67d6242a13e85fa6e694f5ca16c469d98e6e3acc"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Wed Apr 22 14:43:55 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 14:43:55 2026 +0800"
      },
      "message": "docs(cors): re-port with Admin API, ADC, and Ingress Controller tabs (#13261)"
    },
    {
      "commit": "67d6242a13e85fa6e694f5ca16c469d98e6e3acc",
      "tree": "43d5155459fb343844064dcd5670bfd2254766d7",
      "parents": [
        "a1e66466a5d9c1e7a9d67ea80688615084b1bced"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Wed Apr 22 14:29:25 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 14:29:25 2026 +0800"
      },
      "message": "docs(ai-rate-limiting): re-port with Admin API, ADC, and Ingress Controller tabs (#13209)"
    },
    {
      "commit": "a1e66466a5d9c1e7a9d67ea80688615084b1bced",
      "tree": "36c10f025113b3ee78da7e65f53f66023cc58887",
      "parents": [
        "944eac54bce939cd36ed6dd9344e40cdd1377d5c"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Wed Apr 22 14:29:10 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 14:29:10 2026 +0800"
      },
      "message": "docs: add Gemini, Vertex AI, and Anthropic examples to ai-proxy plugin (#13174)"
    },
    {
      "commit": "944eac54bce939cd36ed6dd9344e40cdd1377d5c",
      "tree": "5cdd40f4987bd45737c8a7fd6acab6970f4798a8",
      "parents": [
        "724bf976c6320d08142ec7598790ff0bcea277e8"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Wed Apr 22 14:28:48 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 14:28:48 2026 +0800"
      },
      "message": "docs(jwt-auth): re-port with Admin API, ADC, and Ingress Controller tabs (#13248)"
    },
    {
      "commit": "724bf976c6320d08142ec7598790ff0bcea277e8",
      "tree": "eeb7d4fe25bce3aa22ed12a781e0145fd16b186d",
      "parents": [
        "5205abf9190847bde1bc1470721938da70601f23"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Wed Apr 22 14:28:32 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 14:28:32 2026 +0800"
      },
      "message": "docs(ip-restriction): re-port with Admin API, ADC, and Ingress Controller tabs (#13259)"
    },
    {
      "commit": "5205abf9190847bde1bc1470721938da70601f23",
      "tree": "47a0eb6bc5a4663bd208faa9ae5aa681c2140842",
      "parents": [
        "095e8e4e4bbda4ade036486bd34565a2ca94ff67"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Wed Apr 22 14:28:12 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 14:28:12 2026 +0800"
      },
      "message": "docs(ua-restriction): re-port with Admin API, ADC, and Ingress Controller tabs (#13260)"
    },
    {
      "commit": "095e8e4e4bbda4ade036486bd34565a2ca94ff67",
      "tree": "985716f243c1f645de5a331f75198fc6ce7d30d0",
      "parents": [
        "70d86ce4dd04d1ed2e1770cf4daffa7e641cbb5b"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Wed Apr 22 14:27:55 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 14:27:55 2026 +0800"
      },
      "message": "docs(jwe-decrypt): re-port with Admin API, ADC, and Ingress Controller tabs (#13245)"
    },
    {
      "commit": "70d86ce4dd04d1ed2e1770cf4daffa7e641cbb5b",
      "tree": "3edc3470c6875677253443658d57a4c1c7cc6c48",
      "parents": [
        "546518b89b3e79e42fae02bcefeaf11a93da5b9d"
      ],
      "author": {
        "name": "Nic",
        "email": "qianyong@api7.ai",
        "time": "Wed Apr 22 14:16:13 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 14:16:13 2026 +0800"
      },
      "message": "feat(ai-proxy): add per-protocol request_body override and rename max_tokens mapping to llm_options (#13269)"
    },
    {
      "commit": "546518b89b3e79e42fae02bcefeaf11a93da5b9d",
      "tree": "2d2d3236e171c163b7ab67bac39d205fbb0aadd1",
      "parents": [
        "e4de423fc583fdf82f47a1dda6c666aa2f2b3dca"
      ],
      "author": {
        "name": "Nic",
        "email": "qianyong@api7.ai",
        "time": "Wed Apr 22 09:45:16 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 09:45:16 2026 +0800"
      },
      "message": "feat(test): replace inline AI mock servers with fixture-based system (#13234)"
    },
    {
      "commit": "e4de423fc583fdf82f47a1dda6c666aa2f2b3dca",
      "tree": "4824bfc2fc1c846e61900e60f5de901ee12a0e24",
      "parents": [
        "656a8dd3cf3e79e106485c5382dec6e07da67934"
      ],
      "author": {
        "name": "Shreemaan Abhishek",
        "email": "shreemaan.abhishek@gmail.com",
        "time": "Tue Apr 21 11:15:59 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 21 11:15:59 2026 +0800"
      },
      "message": "fix(jwt-auth): enforce algorithm match before signature verification (#13182)"
    },
    {
      "commit": "656a8dd3cf3e79e106485c5382dec6e07da67934",
      "tree": "08e17fe26cb37027242e9c4663dbc02e20a0486d",
      "parents": [
        "0c0fa801a1a0aa953cb69ebe700c4a69727338b1"
      ],
      "author": {
        "name": "Shreemaan Abhishek",
        "email": "shreemaan.abhishek@gmail.com",
        "time": "Tue Apr 21 11:15:28 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 21 11:15:28 2026 +0800"
      },
      "message": "fix(tencent-cloud-cls): add ssl_verify option and fix shared state in cls-sdk (#13194)"
    },
    {
      "commit": "0c0fa801a1a0aa953cb69ebe700c4a69727338b1",
      "tree": "9a11a04937798f059db650fb27525adbcf613940",
      "parents": [
        "4c67a314cfcded490aac17ce0b3e7991b2630b2f"
      ],
      "author": {
        "name": "Nic",
        "email": "qianyong@api7.ai",
        "time": "Tue Apr 21 11:14:16 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 21 11:14:16 2026 +0800"
      },
      "message": "feat(ai-proxy): add provider-aware max_tokens override with priority control (#13251)"
    },
    {
      "commit": "4c67a314cfcded490aac17ce0b3e7991b2630b2f",
      "tree": "67fb4f06da6696446c6bafb2a582ecd8f3d8c943",
      "parents": [
        "3072a5e5cf9d6f66e600393375fdd2248d8f9acd"
      ],
      "author": {
        "name": "Nic",
        "email": "qianyong@api7.ai",
        "time": "Tue Apr 21 11:13:20 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 21 11:13:20 2026 +0800"
      },
      "message": "fix(consul): tolerate null Service.Meta in fetch_services_from_server (#13258)"
    },
    {
      "commit": "3072a5e5cf9d6f66e600393375fdd2248d8f9acd",
      "tree": "b35e7efdd3930434f2e7c733f46a9b7d4756e6a1",
      "parents": [
        "a7e327e015070606853269fbee5c0b8931380f02"
      ],
      "author": {
        "name": "Nic",
        "email": "qianyong@api7.ai",
        "time": "Mon Apr 20 15:04:28 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 20 15:04:28 2026 +0800"
      },
      "message": "fix(ai-proxy): yield to scheduler in streaming SSE loop to avoid worker CPU starvation (#13255)"
    },
    {
      "commit": "a7e327e015070606853269fbee5c0b8931380f02",
      "tree": "5e47afedfa84254414ad2d5b0ea96de49d8557d2",
      "parents": [
        "b15341d4083146cd1a5954ba559d2a8f8b370d03"
      ],
      "author": {
        "name": "Nic",
        "email": "qianyong@api7.ai",
        "time": "Mon Apr 20 14:53:18 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 20 14:53:18 2026 +0800"
      },
      "message": "feat(ai-proxy): abort upstream read on client disconnect during streaming (#13254)"
    },
    {
      "commit": "b15341d4083146cd1a5954ba559d2a8f8b370d03",
      "tree": "1ff5cd5be998afc3cddc456a63de32bacfed7393",
      "parents": [
        "24a2a23dc946215def890319ead2af98cd1b6034"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Mon Apr 20 14:13:31 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 20 14:13:31 2026 +0800"
      },
      "message": "docs: fix broken paragraph and add custom headers example for limit-count (#13171)"
    },
    {
      "commit": "24a2a23dc946215def890319ead2af98cd1b6034",
      "tree": "79bc11fcf88047dbe8bfcd5857c1908c50403239",
      "parents": [
        "8765b3470d4d457269f4c18e2e21229b8caa7144"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Mon Apr 20 14:13:16 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 20 14:13:16 2026 +0800"
      },
      "message": "docs: update traffic-split plugin attribute types and valid values (#13173)"
    },
    {
      "commit": "8765b3470d4d457269f4c18e2e21229b8caa7144",
      "tree": "a8a94fed3b67c78236468f592e1442680b6fe278",
      "parents": [
        "9d8a08493631e43a4812563b3c6d2e79bf17e22b"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Mon Apr 20 14:12:46 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 20 14:12:46 2026 +0800"
      },
      "message": "docs(limit-conn): re-port with Admin API, ADC, and Ingress Controller tabs (#13215)"
    },
    {
      "commit": "9d8a08493631e43a4812563b3c6d2e79bf17e22b",
      "tree": "13c0adcf1d6900f8cdef600e62e740179d8f715f",
      "parents": [
        "488cdef9f23ce2c960553bc725b5647c28fb15e8"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Mon Apr 20 14:12:25 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 20 14:12:25 2026 +0800"
      },
      "message": "docs(basic-auth): re-port with Admin API, ADC, and Ingress Controller tabs (#13240)"
    },
    {
      "commit": "488cdef9f23ce2c960553bc725b5647c28fb15e8",
      "tree": "277352359875120026fa1e2494c80610f86d4af9",
      "parents": [
        "ecbb6fe89f96ce0b371964dd057d2cb17e665784"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Mon Apr 20 14:11:55 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 20 14:11:55 2026 +0800"
      },
      "message": "docs(multi-auth): re-port with Admin API, ADC, and Ingress Controller tabs (#13238)"
    },
    {
      "commit": "ecbb6fe89f96ce0b371964dd057d2cb17e665784",
      "tree": "380d45ac3756d4e8b82ffecacb6d590558a9fdf0",
      "parents": [
        "a52aab2a554c7c2848b45a1dc469a07347d2372b"
      ],
      "author": {
        "name": "Nic",
        "email": "qianyong@api7.ai",
        "time": "Mon Apr 20 10:42:51 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 20 10:42:51 2026 +0800"
      },
      "message": "feat(ai-proxy): add max_stream_duration_ms and max_response_bytes safeguards (#13250)"
    },
    {
      "commit": "a52aab2a554c7c2848b45a1dc469a07347d2372b",
      "tree": "ee6f6f69868544d2c058471193fc2e3ff30bf92d",
      "parents": [
        "4223a07e7049f6f15e4f8d868d31f72aab9239c3"
      ],
      "author": {
        "name": "Nic",
        "email": "qianyong@api7.ai",
        "time": "Mon Apr 20 10:42:02 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 20 10:42:02 2026 +0800"
      },
      "message": "refactor: extract reusable building blocks from Consul discovery (#13230)"
    },
    {
      "commit": "4223a07e7049f6f15e4f8d868d31f72aab9239c3",
      "tree": "db6e9aa9660b33c08a8d9339c6cc93fdfe43e714",
      "parents": [
        "3d300f6f6c44e05fc2972ceae18c1c6ee500f5d8"
      ],
      "author": {
        "name": "Nic",
        "email": "qianyong@api7.ai",
        "time": "Sat Apr 18 09:43:41 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 18 09:43:41 2026 +0800"
      },
      "message": "fix: add null_as_nil option to core.json.decode for AI plugins (#13231)"
    },
    {
      "commit": "3d300f6f6c44e05fc2972ceae18c1c6ee500f5d8",
      "tree": "2e9b0e94f3193fa31cc0a3e7808daec8b6599a48",
      "parents": [
        "01b15828d5f6db77d0a938825de9521990a8e06b"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Fri Apr 17 16:30:59 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 16:30:59 2026 +0800"
      },
      "message": "docs(ai-rag): re-port with Admin API, ADC, and Ingress Controller tabs (#13208)"
    },
    {
      "commit": "01b15828d5f6db77d0a938825de9521990a8e06b",
      "tree": "b6b548904a8415582bf3718d202e42e83d6172cf",
      "parents": [
        "05a9bf2526cdc89d1b0fac0cdae7082b281d06f7"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Fri Apr 17 16:30:46 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 16:30:46 2026 +0800"
      },
      "message": "docs(ai-prompt-decorator): re-port with Admin API, ADC, and Ingress Controller tabs (#13206)"
    },
    {
      "commit": "05a9bf2526cdc89d1b0fac0cdae7082b281d06f7",
      "tree": "d910d6ecf0bc33ee31737f80a0beb3d3631a0e4c",
      "parents": [
        "67d1971946c3b3d9b906781a5b7abebbc295bec9"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Fri Apr 17 16:30:31 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 16:30:31 2026 +0800"
      },
      "message": "docs: fix ai-proxy-multi attribute nesting and add missing health check sub-attributes (#13169)"
    },
    {
      "commit": "67d1971946c3b3d9b906781a5b7abebbc295bec9",
      "tree": "6bedc5a20a595e35459a3860da7ee757ce77585a",
      "parents": [
        "8ddf4974d8788309b733765e8fd0fc1719363bee"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Fri Apr 17 16:30:18 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 16:30:18 2026 +0800"
      },
      "message": "docs: add gateway logs example to request-id plugin documentation (#13168)"
    },
    {
      "commit": "8ddf4974d8788309b733765e8fd0fc1719363bee",
      "tree": "e991ef762708955c36c7431c6a658db024e28d7b",
      "parents": [
        "9b1e54627b614de251cfc2b35aedbd9f4abeaed2"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Fri Apr 17 16:29:39 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 16:29:39 2026 +0800"
      },
      "message": "docs: add ADC and Ingress Controller tabs to limit-req plugin docs (#13216)"
    },
    {
      "commit": "9b1e54627b614de251cfc2b35aedbd9f4abeaed2",
      "tree": "556b49ece0276db0ccbf3edb251f2aa19cf5b8a8",
      "parents": [
        "84996a26893ee7c941a8ec0e21747a0f96385a66"
      ],
      "author": {
        "name": "AlinsRan",
        "email": "alinsran@apache.org",
        "time": "Fri Apr 17 11:56:40 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 11:56:40 2026 +0800"
      },
      "message": "fix(security): TLS ssl_verify hardcoding and credential encryption issues (#13203)"
    },
    {
      "commit": "84996a26893ee7c941a8ec0e21747a0f96385a66",
      "tree": "cac353fb8e0eec8ffe1c0666f46e0c1a3f5323f8",
      "parents": [
        "158ab6fdd5835bc559363928b64587ceedee72ea"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Fri Apr 17 09:42:39 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 09:42:39 2026 +0800"
      },
      "message": "docs: add ADC and Ingress Controller tabs to proxy-mirror plugin docs (#13218)"
    },
    {
      "commit": "158ab6fdd5835bc559363928b64587ceedee72ea",
      "tree": "6004c8ca80065b9b6ed1a5c38cd27307cd992b4e",
      "parents": [
        "62d73e9a3a6d77c1215a2d7d1581e141447a369f"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Fri Apr 17 09:42:08 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 09:42:08 2026 +0800"
      },
      "message": "docs: add ADC and Ingress Controller tabs to proxy-cache plugin docs (#13217)"
    },
    {
      "commit": "62d73e9a3a6d77c1215a2d7d1581e141447a369f",
      "tree": "1a00182b8161aec527b20ecb569293f94503a012",
      "parents": [
        "611c319b6ef36a609d3432e4d7a52e45ddcd423d"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Fri Apr 17 09:41:41 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 09:41:41 2026 +0800"
      },
      "message": "docs(ai-aws-content-moderation): re-port with Admin API, ADC, and Ingress Controller tabs (#13211)"
    },
    {
      "commit": "611c319b6ef36a609d3432e4d7a52e45ddcd423d",
      "tree": "2a88b04ac3bf7fdbefb9a66de31dadd1566b4515",
      "parents": [
        "d93560409dbf1f5b47ee7c7a2541f71b0a9013d5"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Fri Apr 17 09:41:25 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 09:41:25 2026 +0800"
      },
      "message": "docs(ai-prompt-guard): re-port with Admin API, ADC, and Ingress Controller tabs (#13207)"
    },
    {
      "commit": "d93560409dbf1f5b47ee7c7a2541f71b0a9013d5",
      "tree": "d21305852df12e7875fbe9c32a343b914fe3faa0",
      "parents": [
        "58f10b3f0c54d63f1c6057e1d5c1d25d734219a6"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Fri Apr 17 09:39:20 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 09:39:20 2026 +0800"
      },
      "message": "docs(ai-prompt-template): re-port with Admin API, ADC, and Ingress Controller tabs (#13204)"
    },
    {
      "commit": "58f10b3f0c54d63f1c6057e1d5c1d25d734219a6",
      "tree": "33969c9bea0b1e5fdc45c8c23c7008dbc28c8177",
      "parents": [
        "e217c029e42674ddf39bf91cf820fc0cb5152cc2"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Fri Apr 17 09:38:54 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 09:38:54 2026 +0800"
      },
      "message": "docs: port workflow plugin documentation (#13221)"
    },
    {
      "commit": "e217c029e42674ddf39bf91cf820fc0cb5152cc2",
      "tree": "1dfe8fec1dbd432d190745138cbc3e120d539b8e",
      "parents": [
        "da45cbe482b6f621ebd805c031f4b6bf1fe89b65"
      ],
      "author": {
        "name": "Yilia Lin",
        "email": "114121331+Yilialinn@users.noreply.github.com",
        "time": "Fri Apr 17 09:38:35 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 09:38:35 2026 +0800"
      },
      "message": "docs: port request-validation plugin documentation (#13219)"
    },
    {
      "commit": "da45cbe482b6f621ebd805c031f4b6bf1fe89b65",
      "tree": "36b74dba0ebdefcb1666a4546cd426f2cf0569c5",
      "parents": [
        "41775ef5a15bb2f7559e7a185c3e0f1d0d111b64"
      ],
      "author": {
        "name": "Nic",
        "email": "qianyong@api7.ai",
        "time": "Thu Apr 16 15:51:57 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 16 15:51:57 2026 +0800"
      },
      "message": "fix(ai-proxy): return 502 when streaming converter receives mismatched response format (#13229)"
    },
    {
      "commit": "41775ef5a15bb2f7559e7a185c3e0f1d0d111b64",
      "tree": "733b1a2091bb2bde9a8e6adf2eb30b3cd0e06785",
      "parents": [
        "301670a12b519eecc3f487145f7df33c241e3faa"
      ],
      "author": {
        "name": "Yuhan",
        "email": "37211211+lxbme@users.noreply.github.com",
        "time": "Thu Apr 16 14:57:16 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 16 14:57:16 2026 +0800"
      },
      "message": "fix: resolve env vars before YAML parsing to preserve types in standalone mode (#13078)"
    },
    {
      "commit": "301670a12b519eecc3f487145f7df33c241e3faa",
      "tree": "df09bd34b7038b0a88cd4095f3b97d2b320b24cd",
      "parents": [
        "44fa710ebd0780422f89e2596d15af1cecdcc5de"
      ],
      "author": {
        "name": "Sihyeon Jang",
        "email": "sihyeon.jang@navercorp.com",
        "time": "Thu Apr 16 13:20:40 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 16 12:20:40 2026 +0800"
      },
      "message": "fix(ai-prompt-template): fix malformed JSON error message (#13096)"
    },
    {
      "commit": "44fa710ebd0780422f89e2596d15af1cecdcc5de",
      "tree": "4667e73e2c921c85325e15a355f2a9ec204f8a6d",
      "parents": [
        "ddddeafc21d082f2c7090819d30b445c1122bd77"
      ],
      "author": {
        "name": "Shreemaan Abhishek",
        "email": "shreemaan.abhishek@gmail.com",
        "time": "Thu Apr 16 11:49:43 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 16 11:49:43 2026 +0800"
      },
      "message": "fix(forward-auth): clear configured upstream headers not present in auth response (#13183)"
    },
    {
      "commit": "ddddeafc21d082f2c7090819d30b445c1122bd77",
      "tree": "42c5ee92a76a8a060d09d3680677d5d0421e4f88",
      "parents": [
        "474894ee47d58f1859c4d1cf5bcdc6a736ac8e25"
      ],
      "author": {
        "name": "Nic",
        "email": "qianyong@api7.ai",
        "time": "Thu Apr 16 10:14:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 16 10:14:11 2026 +0800"
      },
      "message": "feat: add core.response.get_response_source() API for response origin classification (#13224)"
    },
    {
      "commit": "474894ee47d58f1859c4d1cf5bcdc6a736ac8e25",
      "tree": "b4ee2ae64fa93ee0a0801f5403523ef199743dce",
      "parents": [
        "5a38806667e408a9e94bd21deeed0bfcdd9953ab"
      ],
      "author": {
        "name": "Sihyeon Jang",
        "email": "sihyeon.jang@navercorp.com",
        "time": "Wed Apr 15 15:34:49 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 15 12:19:49 2026 +0545"
      },
      "message": "fix(ai-request-rewrite): return 400 when request body is missing (#13097)"
    },
    {
      "commit": "5a38806667e408a9e94bd21deeed0bfcdd9953ab",
      "tree": "161050b3d43a60f5861f0c68a265d2f87d238f14",
      "parents": [
        "4b670872fec665ca92f7491974a04ed435fa589d"
      ],
      "author": {
        "name": "Nic",
        "email": "qianyong@api7.ai",
        "time": "Wed Apr 15 14:19:55 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 15 14:19:55 2026 +0800"
      },
      "message": "feat(admin): make /configs/validate available in all modes (#13220)"
    },
    {
      "commit": "4b670872fec665ca92f7491974a04ed435fa589d",
      "tree": "f2915972d1e7ea53b012c88f57ba117e052db3b2",
      "parents": [
        "5962e73e7cbef1387b061ba6892b8c98e258da45"
      ],
      "author": {
        "name": "Ming Wen",
        "email": "moonbingbing@gmail.com",
        "time": "Wed Apr 15 13:45:19 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 15 13:45:19 2026 +0800"
      },
      "message": "feat(seo): optimize plugin titles and expand Getting Started guide (#13222)"
    },
    {
      "commit": "5962e73e7cbef1387b061ba6892b8c98e258da45",
      "tree": "67ee5eff5ee14ff141ed88d638f97817e7a1934e",
      "parents": [
        "64277883e22606781e30daf0969b52363bf739a9"
      ],
      "author": {
        "name": "Nic",
        "email": "qianyong@api7.ai",
        "time": "Tue Apr 14 12:29:35 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 14 12:29:35 2026 +0800"
      },
      "message": "refactor: extract reusable building blocks from K8s and Nacos discovery (#13201)"
    },
    {
      "commit": "64277883e22606781e30daf0969b52363bf739a9",
      "tree": "5634012077494c8c346ab7ff8ac734414cd7fa31",
      "parents": [
        "55234b4b9beefe42d7aa658026b76ebc87d4c575"
      ],
      "author": {
        "name": "Nic",
        "email": "qianyong@api7.ai",
        "time": "Tue Apr 14 10:15:27 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 14 10:15:27 2026 +0800"
      },
      "message": "feat(limit-count): upgrade lua-resty-limit-traffic to v1.2.0 (#13212)"
    },
    {
      "commit": "55234b4b9beefe42d7aa658026b76ebc87d4c575",
      "tree": "0163873f13550b9197491b33a3c0cdb5d015314b",
      "parents": [
        "b383ade9ee432e159a294bfc77ee70d25b6a92c9"
      ],
      "author": {
        "name": "AlinsRan",
        "email": "alinsran@apache.org",
        "time": "Tue Apr 14 09:57:18 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 14 09:57:18 2026 +0800"
      },
      "message": "fix: remove credential-leaking log statements in sls-logger, hmac-auth, tcp-logger, udp-logger (#13205)"
    },
    {
      "commit": "b383ade9ee432e159a294bfc77ee70d25b6a92c9",
      "tree": "075519b14d310be7d556829053dd2b438d3702de",
      "parents": [
        "2e0b6b2a69c66fb10b33b947dbdcbfa5699e6f75"
      ],
      "author": {
        "name": "yuweizzz",
        "email": "yuwei764969238@gmail.com",
        "time": "Mon Apr 13 11:43:15 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 13 11:43:15 2026 +0800"
      },
      "message": "fix(brotli): Preserve ETag and Last-Modified headers in Brotli-compressed response (#12853)"
    },
    {
      "commit": "2e0b6b2a69c66fb10b33b947dbdcbfa5699e6f75",
      "tree": "e18d4fd7c131d6332f9ac6dcbb861888086d44cf",
      "parents": [
        "d212a81c065ccedfa88a0944c4de41ec30dadcea"
      ],
      "author": {
        "name": "AlinsRan",
        "email": "alinsran@apache.org",
        "time": "Mon Apr 13 11:24:54 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 13 11:24:54 2026 +0800"
      },
      "message": "fix: address TLS security vulnerabilities in SSL log, OIDC encryption, and K8s ssl_verify (#13190)"
    },
    {
      "commit": "d212a81c065ccedfa88a0944c4de41ec30dadcea",
      "tree": "f906aa8bb787f9bf9bbdbe2ad31086bbbc0e4ed2",
      "parents": [
        "ac99cd8740a87ae92937b54ce3f3dc5861935e47"
      ],
      "author": {
        "name": "Mohammad Izzraff Janius",
        "email": "157467092+janiussyafiq@users.noreply.github.com",
        "time": "Fri Apr 10 17:51:18 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 10 17:51:18 2026 +0800"
      },
      "message": "docs(ai-proxy-multi): move override.endpoint from logging to instances (#13199)\n\n* docs(ai-proxy-multi): move override.endpoint from logging to instances\n\n* add missing param from healthcheck\n\n* use precise wording"
    },
    {
      "commit": "ac99cd8740a87ae92937b54ce3f3dc5861935e47",
      "tree": "bb700c135f1690b977d5b1770b91f58500370b17",
      "parents": [
        "f8e88f3a192d30310ecb8c062c8a687d7f1f0c1d"
      ],
      "author": {
        "name": "Nic",
        "email": "qianyong@api7.ai",
        "time": "Fri Apr 10 17:39:13 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 10 17:39:13 2026 +0800"
      },
      "message": "feat(ai-rate-limiting): add expression-based limit strategy (#13191)"
    },
    {
      "commit": "f8e88f3a192d30310ecb8c062c8a687d7f1f0c1d",
      "tree": "e589af0964e61cbdb9275a1fc5276d15e7599dfa",
      "parents": [
        "d0910010b8483e49d19579ed95a99d57dc6e51b9"
      ],
      "author": {
        "name": "Shreemaan Abhishek",
        "email": "shreemaan.abhishek@gmail.com",
        "time": "Fri Apr 10 12:22:02 2026 +0545"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 10 12:22:02 2026 +0545"
      },
      "message": "ci: add explicit least permissions to workflows (#12813)\n\nSigned-off-by: Abhishek Choudhary \u003cshreemaan.abhishek@gmail.com\u003e"
    }
  ],
  "next": "d0910010b8483e49d19579ed95a99d57dc6e51b9"
}
