Project: Easegress (Orchestration & Management / API Gateway)
File: CHANGELOG.md

Implemented enhancements: Kafka filter supports synchronous producer and message key. host and port Functions added for template of request-response builder. Proxy support set upstream host for outgoing requests. Community works Replace Github related megaease links to easegress-io Implemented enhancements: Support global filter fallthrough when meet error Fixed bugs: Fix empty proxy-timeout failure Implemented enhancements: Upgraded to Golang version 1.21. Enabled `egctl create httpproxy` command to support automatic updates for `AutoCertManager`. Introduced an exportable custom plain logger. Expanded `egctl` command utility across various namespaces. Optimized proxy filter to immediately flush responses for Server-Sent Events (SSE). Enhanced template functionality with additional functions in `RequestBuilder` and `ResponseBuilder`. Updated documentation and adhered to the latest CNCF Code of Conduct for community guidelines. Fixed bugs: Resolved the `AutoCertManager` did not remove duplicate DNS records issue. Corrected proxy filter behavior to properly escape paths. Significant changes: Support updating system controllers. Implemented enhancements: Enabled unlimited single message capability for WebsocketProxy. Add a hook in AutoCertManager for singular instance management. Fixed bugs: Resolved WebsocketProxy keepHost issue. Corrected the object status prefix in some special cases. Fixed creation error in egbuilder filter. Significant changes: Support health check for Proxy and WebSocketProxy filter. Significant changes: Support Kubernetes Gateway API v1. Converts Nginx configurations into Easegress YAMLs. Integrates all Easegress filters and resilience policies with Kubernetes Gateway API. Implemented enhancements: New RedirectorV2 filter added. Runtime log level adjustment enabled. Updated omitempty jsonschema in Specs. Introduced cookie hash support. Significant changes: Introduced a new user-friendly document. Implemented enhancements: Added support for additional annotations in Kubernetes ingress. Enabled CORS support in the easegress-server APIs. Updated the helm chart. Significant changes: Improved egctl with new commands: 'egctl logs' and 'egctl create httpproxy'. Implemented enhancements: Extended Kafka headers with additional MQTT information. Config easegress-server using environment variables. Restricted to a single running object file. Significant changes: Introduced egbuilder to build Easegress with custom plugins. Added support for Kubernetes Gateway API. Implemented enhancements: Rewrite integration tests with egctl commands. Implemented enhancements: Add documentation for the GRPCServer. Update the redirect policy for the Proxy filter. Correct typos and optimize the code. Significant changes: Enhanced the command line tool egctl. Implemented enhancements: Introduced new WebSocket options to the ingress controller. Expanded multiplexing rules to support multiple hosts. Websocket supports cross origin requests (#1021) Implemented enhancements: GRPCProxy use connection pool to manage connections (#977). Enhance SimpleHTTPProxy to support forward proxy (#1016). Fixed bugs: Websocket does not work (#998). Fix typo and other problems in the documentation (#999). Implemented enhancements: Add a new filter: Simple HTTP Proxy. Add a Canary Release cookbook. Add a ChatGPT Bot cookbook. Fixed bugs: Fix the Sampler's incorrect result bug Fix OIDCAdaptor bug. Fix typo and other minor problems in the documentation. Significant changes: Support GRPC protocol. Implemented enhancements: Enhancement to access log. Enlarge charset allowed in object names. Enhance tracing to support Cloudflare. RequestAdaptor and ResponseAdaptor support template. Fixed bugs: WASM apply data command not working. install.sh not work as expectation on some platforms. Fix typo and other minor problems in the documentation. Significant changes: Support OpenTelemetry for tracing. Add new filter Redirector to handle HTTP 3xx redirects. Add prometheus support for Proxy and HTTPServer. Implemented enhancements: Add LDAP mode for basic authentication. Add Broker mode for MQTTProxy. Support HTTPS for egctl and easegress-server. Enhance egctl delete. Significant changes: HTTPServer: support radix tree router and routing by client IP. Add new filter OPAFilter for Open Policy Agent. Implemented enhancements: Load Balance: support session and server health check. Making running objects dump interval configurable. Simplify CORSAdaptor. Fixed bugs: Fix unexpected EOF when compression is

Remove duplicated code in codectool. Update keyfunc for compatibility and bug fixes. Fix mqtt test random fail. Significant changes: Add new filter WebSocketProxy and remove controller WebSocketServer. Add new filter OIDCAdaptor for OpenID Connect 1.0 authorization. Add new filter DataBuilder. Implemented enhancements: Support routing by query string. Update wasmtime-go. Add more signing algorithm for JWT validator. Support websocket for ingress controller. Fixed bugs: Fix cluster test random fail. Fix EaseMonitorMetrics status error. Fix GlobalFilter jsonschema validator error. Implemented enhancements: Add ResultBuilder filter Speed up DNS01 challenge Add EaseTranslateBot example (code-free workflow by using Easegress pipeline) Speed up MQTTProxy client connection Check Kubernetes version for ingress controller Fixed bugs: Fix default logger bug Fix HTTP runtime ticker bug Fix ingress translation error Significant changes: Define user data in pipeline spec. `jumpIf` support jumping on an empty result. Bump API version to v2 (v1 APIs are kept for compatibility). Implemented enhancements: RequestAdaptor support signing the request (experimental). RequestBuilder support form data (HTTP only). Add `disableReport` option to tracing. Logs go to stdout/stderr by default. Fixed bugs: HTTPServer does not work as expected when match all header is enabled. `jumpIf` not working with global filter. Response headers set by filters before a Proxy are all lost. Nacos registry doesn't work. Panic in StatusSyncController. MQTT client is not closed as expected. Significant changes: Pipeline Pipeline is protocol-independent now. Add `RequestBuilder` filter, `ResponseBuilder` filter and built-in filter `END`. Add the support of `namespace`. Add the support of filter alias. Filter `Retryer`, `CircuitBreaker` and `TimeLimiter` are removed, resilience policies are now defined on pipeline and injected into filters that support resilience. Filter `APIAggregator` is removed. Implemented enhancements: Tracing is now using Zipkin B3 format. Cluster Drop the support of dynamic cluster management. Depreciated configuration method is removed. Implemented enhancements: Remove HTTP hop headers Optimize Kubernetes IngressController rule route policy Fixed bugs: Wrong HTTP request scheme if the `X-Forwarded-Proto` header contains two or more items Fix request "Content-Length" header missing bug Significant changes: Support external standalone etcd Implemented enhancements: Support Easegress ingress rewrite target Support the AND-OR header strategy in HTTPServer Support proxy to send zipkin b3 headers Fixed bugs: Fix proxy pool bug Fix FaasController request host field Fix Easemonitor metrics status convert error Fix Status sync controller pointer error Fix HTTPPipeline creation fail Significant changes: Turn profiling on/off runtime Implemented enhancements: Change the way StatusSyncController stores statuses to reduce memory usage Support custom image name HTTPServer prefix and fullpath support rewrite_target Refactor the Docker entrypoint.sh Fixed bugs: Fix proxy fallback Resolve inconsistent path selection Validate CircuitBreaker filter Significant changes: HTTP basic auth filter HeaderLookup filter HeaderToJSON filter CertExtractor filter Custom data management , NOTE: The dynamic cluster management feature (e.g. adding a new primary node without stopping the cluster) is deprecated and will be removed in the next release, please switch to static cluster management. You can refer to this cookbook or follow for more info on how to define a static cluster. Implemented enhancements: Add pipeline route for mqttproxy Install script to install the systemd service , RequestAdaptor support compress/decompress request body CorsAdaptor support origin Filter out 'TLS handshake error' Test , Documentation , , , Fixed bugs: Fix empty http request body read panic Fix paging in query nacos service registry Fix duplicate response header Add close option to httpRequest.SetBody Fix wrong service name in nacos service registry Remove method & path from httpRequest Make

to be goroutine same Fix empty request scheme Fix typo , , Implemented enhancements: Improve performance of Proxy filter Ingress Controller tutorial and Helm Charts to support multi nodes Fixed bugs: Reduce etcd server memory usage Support PEM in both base64 and plain text Only set host when server addr is IP (close #447) Copy backend http response header to httpresponse Fix httpserver httppipeline status not show error Mock filter to support header match Fix wrong content-type Fix easegress-server yaml validation Change status code 403 to 401 when jwt signer and oauth2 validation fail Fix typos Expose max-sync-message-size in options Enable calling mirrorPool reader Read after EOF Use ClusterJoinURLs for secondary members Significant changes: Support automated certificate management with ACME (Let's Encrypt) Cluster configuration made simpler WebAssembly SDK for Golang Implemented enhancements: New feature `GlobalFilters` to HTTPPipeline Linux kernel tuning guide WebSocket proxy user guide Cluster deployment guide Fixed bugs: Add more tracing information Improve robustness of WebSocket proxy Implemented enhancements: Performance improvement Fixed bugs: Wrong host function name in WasmHost Wrong name in WebSocket spec Response body corrupt after pass ResponseAdapter Failed to create pipeline when filters are not sorted as flow Implemented enhancements: Improve docker image build speed Add doc for MQTT proxy MQTT proxy performance optimization Fixed bugs: Fix MQTT closed client related bugs Change logger level from Error to Warn Fix Eureka port number Significant changes: MQTT support Implemented enhancements: Add chart files for helm-install Add license checker Improve egctl to support sending multi configs at once Create objects from spec files at startup Support bi-directional service registry controllers Fixed bugs: Fix typo Make `docker run` with default config without parameter Fix random failure of jmx test cases Correctly handle empty object name Update doc/developer-guide.md Update cluster example, no std-log-level in option Add readme in cn Correctly update restfulapi in ctl Update func match() in pkg/object/httpserver/mux.go Refine the flash sale document Fix lint warning Fix wrong link for ingress controller guide Update ingresscontroller\.md to fix permission issue Fix test fail caused by random order of map iteration Add host functions for cluster data (flash sale support) Avoid send duplicated metrics data Significant changes: Add documentation of user cases Add UnitTest and raise coverage rate Implemented enhancements: Trafficcontroller copy mutex by pointer Move limitlistener to util for other protocol proxy use Skip invalid ip cidr parse result Fixed bugs: Fix interface nil convert panic Significant changes: WASM AssemblyScript SDK Windows Supporting Websockt Proxy Implemented enhancements: Add user-guide for WasmHost filter Refactor APIAggregator filter Add PR deployment testing Format and correct code according to golint Fixed bugs: Fix http template dictory empty error Fix initTrafficGate panic when service not found Significant changes: Kubernetes Ingress Controller WASM:The new plugin mechanism for the Easegress (Still working on AssemblyScript SDK, coming soon...) Implemented enhancements: CI: Add codecov into github action Mesh: convert service instance API to `pb/json` Support dynamic admin API && correct syncer && make interface cleaner CI: check unnecessary dependencies Fixed bugs: Github Action failed due to the unit test of TestCluster Fix unit test failure of semaphore and cluster Use default spec correctly & fix httppipeline.Validate without recursively checking Significant changes: Use traffic controller to manage TrafficGate and Pipeline FaaSController Upgrade MeshController to use TrafficController Replace the Iris with Go-Chi Framework Implemented enhancements: Golang/protobuf warning Support an HTTPServer bind multiple certs HTTP `Host` header can't be written properly into headers for backend request Support strip trailing slash Add multiple certs support, close \#31 Docker: add tzdata package for latest alpine Deps: use dependabot to update dependencies Fixed bugs: Possible regression introduce by FaaSController HTTPPipeline loadBalance is required but