Skip to content

[openwrt] remove the in-tree LuCI app (proposed for openwrt/luci) - #3326

Merged
jwhui merged 1 commit into
openthread:mainfrom
LorbusChris:luci-ucode
Aug 13, 2026
Merged

[openwrt] remove the in-tree LuCI app (proposed for openwrt/luci)#3326
jwhui merged 1 commit into
openthread:mainfrom
LorbusChris:luci-ucode

Conversation

@LorbusChris

@LorbusChris LorbusChris commented May 4, 2026

Copy link
Copy Markdown
Contributor

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 .htm templates and
handle_error.js, stops installing them from the OpenWrt package, and drops the
now-unused luci-lua-runtime dependency.

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:

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), and
the 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

@LorbusChris

Copy link
Copy Markdown
Contributor Author

cc @stintel

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@LorbusChris
LorbusChris marked this pull request as draft May 9, 2026 00:31
@codecov

codecov Bot commented May 11, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 36.87%. Comparing base (2b41187) to head (4b19ef3).
⚠️ Report is 1597 commits behind head on main.

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.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@LorbusChris
LorbusChris force-pushed the luci-ucode branch 3 times, most recently from 304ce06 to 12fc9ac Compare July 24, 2026 08:00
@LorbusChris
LorbusChris marked this pull request as ready for review July 24, 2026 13:59
@LorbusChris LorbusChris changed the title [openwrt] migrate LuCI WebUI from Lua to ucode + client-side JS [openwrt] normalize otbr ubus reply fields; remove in-tree LuCI app (moved to openwrt/luci) Jul 25, 2026
@LorbusChris LorbusChris changed the title [openwrt] normalize otbr ubus reply fields; remove in-tree LuCI app (moved to openwrt/luci) [openwrt] remove the in-tree LuCI app (migrated to openwrt/luci) Jul 25, 2026
@LorbusChris
LorbusChris marked this pull request as draft July 25, 2026 20:29
@LorbusChris LorbusChris changed the title [openwrt] remove the in-tree LuCI app (migrated to openwrt/luci) [openwrt] remove the in-tree LuCI app (proposed for openwrt/luci) Jul 25, 2026
@LorbusChris
LorbusChris marked this pull request as ready for review August 2, 2026 19:04
Comment thread etc/openwrt/openthread-br/Makefile Outdated
Comment thread etc/openwrt/openthread-br/Makefile
@LorbusChris
LorbusChris force-pushed the luci-ucode branch 2 times, most recently from 1143ebd to 8913fc6 Compare August 13, 2026 16:19
Comment thread etc/openwrt/openthread-br/README.md Outdated
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.

@jwhui jwhui left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! 👍🏼

@jwhui
jwhui merged commit c40529f into openthread:main Aug 13, 2026
38 of 39 checks passed
LorbusChris added a commit to LorbusChris/openwrt-packages that referenced this pull request Sep 2, 2026
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
LorbusChris added a commit to LorbusChris/matter-openwrt that referenced this pull request Sep 2, 2026
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>
LorbusChris added a commit to LorbusChris/matter-openwrt that referenced this pull request Sep 2, 2026
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>
LorbusChris added a commit to LorbusChris/matter-openwrt that referenced this pull request Sep 2, 2026
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>
LorbusChris added a commit to LorbusChris/openwrt-packages that referenced this pull request Sep 3, 2026
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature Request: Migrate OpenWrt LuCI app to the official OpenWrt LuCI repository

2 participants