kayx23 commented on code in PR #13842:
URL: https://github.com/apache/apisix/pull/13842#discussion_r3820008152


##########
CHANGELOG.md:
##########
@@ -85,6 +86,184 @@ title: Changelog
 - [0.7.0](#070)
 - [0.6.0](#060)
 
+## 3.18.0
+
+**The changes marked with :warning: are not backward compatible.**
+
+### Change
+
+- :warning: change(debug): report executed plugins with phase in execution 
order. The `Apisix-Plugins` debug header now carries `name#phase` entries in 
execution order instead of a de-duplicated plugin-name list 
[#13710](https://github.com/apache/apisix/pull/13710)
+- :warning: feat: bound request and response body buffering in plugins. 
`max_req_body_size` / `max_resp_body_size` (default 64 MiB) added to ~19 
plugins; larger bodies are now rejected or truncated instead of being buffered 
without limit [#13705](https://github.com/apache/apisix/pull/13705)
+- :warning: fix(batch-processor): bound the pending entries backlog by 
default. Every batch-processor logger now defaults `max_pending_entries` to 
8192 and discards entries above it 
[#13826](https://github.com/apache/apisix/pull/13826)
+- :warning: refactor(ai-aws-content-moderation): moderate decoded LLM content 
in the access phase. Priority moved from 1050 to 1031, the plugin now requires 
ai-proxy/ai-proxy-multi, moderates the extracted prompt instead of the raw 
body, and denies with `deny_code` (default 200) instead of 400 
[#13647](https://github.com/apache/apisix/pull/13647)
+- :warning: feat(ai-aliyun-content-moderation): role-aware 
`request_check_mode` and O(n) content chunking. Request moderation now covers 
the user role of the latest turn by default instead of every message in the 
body [#13598](https://github.com/apache/apisix/pull/13598)
+- :warning: fix(sls-logger): verify the TLS certificate of the log server. New 
`ssl_verify` option, default `true` 
[#13785](https://github.com/apache/apisix/pull/13785)
+- :warning: fix(openid-connect): enforce audience, issuer and required scopes. 
Bearer introspection fails closed when the discovery document is unavailable, 
`claim_validator.audience.match_with_client_id` now implies `required`, and 
`required_scopes` is enforced on session (authorization code) flows 
[#13829](https://github.com/apache/apisix/pull/13829)
+- :warning: fix(admin): reject duplicate consumer authentication keys instead 
of silently accepting them [#13529](https://github.com/apache/apisix/pull/13529)
+- :warning: perf(core): sanitize the `X-Forwarded-*` headers in the NGINX 
config. `$var_x_forwarded_proto` is removed, while `$var_x_forwarded_host` and 
`$var_x_forwarded_port` are no longer writable from Lua, and a trusted peer 
that sends no `X-Forwarded-Host`/`X-Forwarded-Port` now receives the 
APISIX-observed values instead of falling through to `$host`/`$server_port` 
[#13803](https://github.com/apache/apisix/pull/13803)
+- :warning: feat: add `max_post_args_readable_size` to bound `post_arg.*` body 
reads. A request body above the 64 MiB default no longer resolves `post_arg.*`, 
so routes matching on those predicates stop matching it; raise the value or set 
it to `0` to restore the previous unbounded behavior 
[#13601](https://github.com/apache/apisix/pull/13601)
+- :warning: fix(ldap-auth): `tls_verify: true` now performs real certificate 
verification, which the previously pinned `lua-resty-ldap` silently ignored; an 
LDAP server with a self-signed or hostname-mismatched certificate must present 
a trusted certificate, or verification has to be turned off explicitly 
[#13762](https://github.com/apache/apisix/pull/13762)
+- :warning: fix(ldap-auth): key the consumer lookup on the escaped bind DN. A 
consumer whose `user_dn` was written in the previous unescaped form stops 
matching once the username contains RFC 4514 structural characters; rewrite 
such values in escaped form, e.g. `cn=comma\,user,ou=users,dc=example,dc=org` 
[#13805](https://github.com/apache/apisix/pull/13805)
+- :warning: feat(prometheus): add built-in LLM histograms for TTFT and token 
distribution. `apisix_llm_latency` gains a `type` label and streaming requests 
now emit both `type="total"` and `type="ttft"`, so existing queries, dashboards 
and alerts must select `type="total"` 
[#13487](https://github.com/apache/apisix/pull/13487)
+- :warning: feat(ai-plugins): add `fail_mode` for Consumer-bound protocol 
handling. Its `skip` default turns unrecognized or non-AI traffic from a hard 
error into pass-through in `ai-aliyun-content-moderation` and 
`ai-aws-content-moderation`; set `fail_mode: error` to keep the previous 
fail-closed behavior [#13489](https://github.com/apache/apisix/pull/13489)

Review Comment:
   One remaining correction: this still generalizes the previous 
hard-error/fail-closed behavior to AWS. PR #13489 states that Aliyun returned 
500/400, while AWS moderated the raw body (and `ai-prompt-guard` already passed 
through). Please use wording such as: “The `skip` default changes unrecognized 
or non-AI traffic to pass-through: Aliyun no longer returns an error, and AWS 
no longer moderates the raw body. Set `fail_mode: error` where unrecognized 
traffic must be rejected.”



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to