What's Changed
🚀 Features
- [ci] package and upload source tarball in monthly release by @jwhui in #3497
- [web] support HTTPS reverse proxy for API calls by @LJspice in #3432
- [web] generate QR codes on webUI client instead of remote API by @LJspice in #3449
- [rest] add endpoints for Border Agent ephemeral key (ePSKc) by @lboue in #3480
- [docker] add stable tag to border-router Docker image by @drudchenko in #3523
- [web] add ePSKc (Thread 1.4 Credentials Sharing) support to the web GUI by @lboue in #3479
- [ncp] support the pending dataset under NCP mode by @LorbusChris in #3514
- [rest] bump REST API version to 0.5.0 for ePSKc endpoints by @lboue in #3534
- [agent] add generic readiness notification fd support by @agners in #3478
- [rest] update OpenAPI specification with corrections and enhancements by @martinzi in #3519
- [mdns] disable OT_MDNS explicitly when using platform mDNS by @martinzi in #3230
- [tests] add coverage for /.well-known/thread/br-rest discovery endpoint by @lboue in #3538
- [agent] use #if instead of #ifdef for OTBR_ENABLE_PLATFORM_ANDROID by @jwhui in #3554
- [agent] use sigaction for signal handlers at start of Application::Run by @jwhui in #3555
- [agent] add option to exit on platform reset by @agners in #3537
- [rest] add per-route method registry to fix 404/405/OPTIONS handling by @3oris in #3546
- [rest] honor If-None-Match on the dataset PUT endpoints by @LorbusChris in #3552
- [misc] replace instances of duplicated "the the" with "the" by @jwhui in #3559
- [firewall] opt-in in-process nftables backend via libnftnl/libmnl by @LorbusChris in #3325
🐛 Bug Fixes
- [tests] increase timeout in ncp_version.exp to prevent CI flakiness by @jwhui in #3493
- [tests] fix flaky timeout in RcpHostApi.StateChangesCorrectlyAfterJoin by @lboue in #3508
- [ubus] fix two memory-safety issues by @LorbusChris in #3487
- [script] use
/instead of.insysctl.confto avoid issues when the infra if name contains.by @erjiaqing in #2125 - [web] prevent OT CLI command injection via newline characters by @alimezar in #3288
- [docker] make IPv4 firewall rules idempotent and remove them on exit by @skirmess in #3517
- [tests] fix provisioning URL mismatch in dbus test-client by @jwhui in #3531
- [tests] fix epskc_test() port assertion against a real ephemeral port by @lboue in #3526
- [docker] accept IPv6 traffic leaving the Thread network by @skirmess in #3521
- [tests] fix flaky ncp DeviceRole checks by polling instead of fixed sleep by @lboue in #3511
- [rest] fix PUT errors masked as 405 by RoutingErrorHandler by @lboue in #3524
- [cmake] reorder static libraries in otbr-agent link list to resolve unresolved symbols by @backtomoon in #3545
- [host] fix Leave and migration handling on the RCP path by @LorbusChris in #3489
- [mdns] fix service loss on mDNSResponder daemon restart by @yangsong-cnyn in #3394
- [tests] give NCP dbus-send Join calls a generous expect timeout by @lboue in #3549
- [tests] pin schemathesis to ~=4.25.0 to avoid 4.24.x crash by @lboue in #3543
- [rest] fix active dataset request body content type in OpenAPI spec by @jwhui in #3560
- [ci] fix source tarball creation in monthly release workflow by @jwhui in #3563
- [ci] allow uploads endpoint for monthly release workflow by @jwhui in #3566
New Contributors
- @LJspice made their first contribution in #3432
- @lboue made their first contribution in #3480
- @LorbusChris made their first contribution in #3487
- @alimezar made their first contribution in #3288
- @skirmess made their first contribution in #3517
- @drudchenko made their first contribution in #3523
- @backtomoon made their first contribution in #3545
- @3oris made their first contribution in #3546
Full Changelog: v2026.08.0...v2026.09.0