[openwrt] remove the in-tree LuCI app (proposed for openwrt/luci) - #3326
Conversation
|
cc @stintel |
There was a problem hiding this comment.
Code Review
This pull request migrates the OpenThread Border Router LuCI application from the legacy Lua-based framework to the modern LuCI client-side JavaScript framework and ucode backend. The changes involve replacing Lua controllers and templates with JS views and an RPCD ucode script. Review feedback highlights a logic error in the signal icon mapping and suggests strengthening input validation for the network key and PSKc fields by enforcing hexadecimal character checks.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #3326 +/- ##
===========================================
- Coverage 55.77% 36.87% -18.90%
===========================================
Files 87 144 +57
Lines 6890 17507 +10617
Branches 0 1431 +1431
===========================================
+ Hits 3843 6456 +2613
- Misses 3047 10683 +7636
- Partials 0 368 +368 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
304ce06 to
12fc9ac
Compare
1143ebd to
8913fc6
Compare
The OpenWrt LuCI web interface for OTBR is now maintained in the openwrt/luci repository as luci-app-openthread, per the OpenWrt maintainers' request (openthread#3431, openwrt/packages#29791). It has been rewritten there for the modern client-side JS + rpcd ucode framework. Remove the legacy Lua controller, the admin_thread .htm templates and handle_error.js from this tree, stop installing them from the OpenWrt package, and drop the now-unused luci-lua-runtime dependency.
8913fc6 to
4b19ef3
Compare
Update from a 2025-06-12 snapshot to the v2026.09.0 release and switch to release-tag versioning. The in-tree LuCI app is gone: upstream removed it in this release (openthread/ot-br-posix#3326), so the luci-app-openthread package cannot be built from this source any more. A maintained replacement is proposed as a proper LuCI app in openwrt/luci#8871. OTBR_VENDOR_NAME and OTBR_PRODUCT_NAME are now required (the 2026.08.0 release removed the built-in defaults) and are set to the values those defaults had, so existing users' border routers keep their MeshCoP instance name. OTBR_VERSION is set so --version reports the release rather than the CMake project version; see the README for the reasoning on both. The gcc14 build fix is still needed: the bundled mbedtls still lacks the upstream fix at this release's submodule pins. Three CMake options also leave the invocation: OTBR_DUA_ROUTING no longer exists upstream, and OTBR_DNSSD_DISCOVERY_PROXY and OTBR_SRP_ADVERTISING_PROXY now default appropriately from OTBR_MDNS (forcing them ON alongside the OT-core proxies is a CMake FATAL_ERROR once the internal mDNS is selected). Also add a functional smoke test. Signed-off-by: Christian Glombek <c.glombek@cosa.systems> Assisted-By: AI
Move the pin from the 2026-05-22 snapshot to the v2026.09.0 release. The openthread-br-luci package is gone: upstream removed the in-tree LuCI app in this release (openthread/ot-br-posix#3326), so it cannot be built from this source any more. A maintained replacement is proposed as a proper LuCI app in openwrt/luci#8871. The carried patches are refreshed on the new base: 020 regenerates around the reworked options.cmake (the OT_FIREWALL line it used as context is now the OTBR_NFTABLES conditional), and the ubus series 100-110 regenerates on top of the memory-safety fixes that were merged upstream from it (openthread/ot-br-posix#3487). 030, 040 and 050 apply unchanged; the whole sequence applies without fuzz. -DOTBR_SRP_ADVERTISING_PROXY=ON is dropped: since this release the OT core advertising proxy defaults on whenever an mDNS backend is selected, and forcing the otbr-side proxy on alongside it is a CMake FATAL_ERROR. The advertising proxy function moves to the OT core implementation, which is the upstream default. The vendor/product name requirement this release introduces is already met: OTBR_VENDOR_NAME is compiled in, and the init script has always passed --model-name from board.json. Assisted-by: AI Signed-off-by: Christian Glombek <c.glombek@cosa.systems>
Move the pin from the 2026-05-22 snapshot to the v2026.09.0 release. The openthread-br-luci package is gone: upstream removed the in-tree LuCI app in this release (openthread/ot-br-posix#3326), so it cannot be built from this source any more. A maintained replacement is proposed as a proper LuCI app in openwrt/luci#8871. The carried patches are refreshed on the new base: 020 regenerates around the reworked options.cmake (the OT_FIREWALL line it used as context is now the OTBR_NFTABLES conditional), and the ubus series 100-110 regenerates on top of the memory-safety fixes that were merged upstream from it (openthread/ot-br-posix#3487). 030, 040 and 050 apply unchanged; the whole sequence applies without fuzz. -DOTBR_SRP_ADVERTISING_PROXY=ON is dropped: since this release the OT core advertising proxy defaults on whenever an mDNS backend is selected, and forcing the otbr-side proxy on alongside it is a CMake FATAL_ERROR. The advertising proxy function moves to the OT core implementation, which is the upstream default. The vendor/product name requirement this release introduces is already met: OTBR_VENDOR_NAME is compiled in, and the init script has always passed --model-name from board.json. Assisted-by: AI Signed-off-by: Christian Glombek <c.glombek@cosa.systems>
Move the pin from the 2026-05-22 snapshot to the v2026.09.0 release. The openthread-br-luci package is gone: upstream removed the in-tree LuCI app in this release (openthread/ot-br-posix#3326), so it cannot be built from this source any more. A maintained replacement is proposed as a proper LuCI app in openwrt/luci#8871. The carried patches are refreshed on the new base: 020 regenerates around the reworked options.cmake (the OT_FIREWALL line it used as context is now the OTBR_NFTABLES conditional), and the ubus series 100-110 regenerates on top of the memory-safety fixes that were merged upstream from it (openthread/ot-br-posix#3487). 030, 040 and 050 apply unchanged; the whole sequence applies without fuzz. The openthread-br-avahi variant is gone too: this release removed the avahi mDNS backend outright (OTBR_MDNS=avahi is a configure error; only mDNSResponder and the OT-internal mDNS remain), so the package loses its variant machinery and always builds against mDNSResponder. -DOTBR_SRP_ADVERTISING_PROXY=ON is dropped: since this release the OT core advertising proxy defaults on whenever an mDNS backend is selected, and forcing the otbr-side proxy on alongside it is a CMake FATAL_ERROR. The advertising proxy function moves to the OT core implementation, which is the upstream default. The vendor/product name requirement this release introduces is already met: OTBR_VENDOR_NAME is compiled in, and the init script has always passed --model-name from board.json. Assisted-by: AI Signed-off-by: Christian Glombek <c.glombek@cosa.systems>
Update from a 2025-06-12 snapshot to the v2026.09.0 release and switch to release-tag versioning. The in-tree LuCI app is gone: upstream removed it in this release (openthread/ot-br-posix#3326), so the luci-app-openthread package cannot be built from this source any more. A maintained replacement is proposed as a proper LuCI app in openwrt/luci#8871. OTBR_VENDOR_NAME and OTBR_PRODUCT_NAME are now required (the 2026.08.0 release removed the built-in defaults) and are set to the values those defaults had, so existing users' border routers keep their MeshCoP instance name. OTBR_VERSION is set so --version reports the release rather than the CMake project version; see the README for the reasoning on both. The gcc14 build fix is still needed: the bundled mbedtls still lacks the upstream fix at this release's submodule pins. Three CMake options also leave the invocation: OTBR_DUA_ROUTING no longer exists upstream, and OTBR_DNSSD_DISCOVERY_PROXY and OTBR_SRP_ADVERTISING_PROXY now default appropriately from OTBR_MDNS (forcing them ON alongside the OT-core proxies is a CMake FATAL_ERROR once the internal mDNS is selected). Also add a functional smoke test. Signed-off-by: Christian Glombek <c.glombek@cosa.systems> Assisted-By: AI
Summary
Removes the in-tree OpenWrt LuCI app from ot-br-posix, so the web interface can be
maintained in the openwrt/luci repository instead (
luci-app-openthread),following the standard convention for LuCI apps, as requested by the OpenWrt
maintainers (#3431, openwrt/packages#29791).
Deletes the legacy Lua controller, the
admin_thread.htmtemplates andhandle_error.js, stops installing them from the OpenWrt package, and drops thenow-unused
luci-lua-runtimedependency.Context
This PR previously rewrote the in-tree app to client-side JS + ucode. The OpenWrt
maintainers asked to move the app to openwrt/luci instead (#3431) rather than keep
it here, so this PR now just removes it. The proposed replacement app and the feed
change are open in parallel:
for the modern client-side LuCI framework. It talks to otbr-agent's existing ubus
API and works against the current release; no ot-br-posix change is required for it.
luci-app-openthreadfrom theopenthread-brfeed package.These are all still proposals under review; this removal should land in coordination
with them so users aren't left without the app.
An earlier revision of this PR also normalized the otbr ubus reply field names to
snake_case. That was dropped: it was incomplete/error-prone (the rename collided
with method names in the ubus dispatch table, e.g.
leaderdata/joinernum), andthe openwrt/luci app simply reads the daemon's existing field names instead, which
removes the cross-repo ordering dependency entirely.
Refs: #3431, openwrt/packages#29791, openwrt/luci#8871