project/luci.git
5 weeks agoluci-mod-network: add odhcpd cfg in DHCP server setup
David Härdeman [Sat, 25 Oct 2025 22:02:32 +0000 (00:02 +0200)]
luci-mod-network: add odhcpd cfg in DHCP server setup

The "Set up DHCP Server" button is meant to setup the basics for a DHCP server
on the given interface.  Add odhcpd setting "dhcpv4" as well. It is a no-op in
case odhcpd isn't setup to take care of DHCPv4 as well, but it makes it easier
to support either dnsmasq or odhpcd as the DHCPv4 server.

One might argue that the button should also set dhcpv6=server and ra=server, so
that it doesn't only setup a DHCPv4 server, but also prepares a DHCPv6 server,
but that's for another PR :)

Signed-off-by: David Härdeman <[email protected]>
5 weeks agoluci-app-attendedsysupgrade: reorder and reword error instructions
Eric Fahlgren [Tue, 23 Sep 2025 14:35:36 +0000 (07:35 -0700)]
luci-app-attendedsysupgrade: reorder and reword error instructions

Many users have been posting incomplete error information to the
forum and in git issues.  They'll not report important information
that is above the paragraph indicating where to report it, only
the partial information below it.

Remedy this by putting the reporting instructions first, and make
explicit that everything below is needed.  Add a new button that
creates a report appropriate for a forum post and saves it to the
clipboard.

Signed-off-by: Eric Fahlgren <[email protected]>
5 weeks agoluci-app-attendedsysupgrade: use the same logic as the main build when requesting...
Lili González [Sat, 25 Oct 2025 00:23:49 +0000 (18:23 -0600)]
luci-app-attendedsysupgrade: use the same logic as the main build when requesting rebuilds

When initiating a build the requests were build differently
between main and rebuild servers leading to the latter using
only POST request instead of the POST->GET flow. This led to
incorrect tracking of builds in the target ASU server due to
each request being classified unique.

This is fixed by switching rebuild requests to the POST->GET
flow and storing each server's request hash in a map and using
it regardless if it is the main or a rebuild server handling
the request.

Fixes: openwrt/asu#1526
Signed-off-by: Lili González <[email protected]>
5 weeks agoluci-mod-system: give repokeys the ability to fetch keys from a remote URL
Paul Donald [Sat, 25 Oct 2025 20:46:20 +0000 (22:46 +0200)]
luci-mod-system: give repokeys the ability to fetch keys from a remote URL

Simply paste in an http(s) URL e.g.

https://example.com/releases/SNAPSHOT/publickey.pub

and press Add Key.

Signed-off-by: Paul Donald <[email protected]>
6 weeks agoluci-mod-network: stricter feature check for odhcpd
David Härdeman [Thu, 23 Oct 2025 17:27:29 +0000 (19:27 +0200)]
luci-mod-network: stricter feature check for odhcpd

Only show the DHCPv4 option if support is compiled in.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: sort options in general/IPv4 tabs
David Härdeman [Thu, 23 Oct 2025 17:20:31 +0000 (19:20 +0200)]
luci-mod-network: sort options in general/IPv4 tabs

No actual code changes.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: rename advanced tab
David Härdeman [Thu, 23 Oct 2025 17:18:13 +0000 (19:18 +0200)]
luci-mod-network: rename advanced tab

Move the remaining three options to the general tab, mark two of them as
dnsmasq-only.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: move IPv4 options to the new tab
David Härdeman [Thu, 23 Oct 2025 17:11:10 +0000 (19:11 +0200)]
luci-mod-network: move IPv4 options to the new tab

And mark one option as being dnsmasq-only.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: mark the ignore flag as dnsmasq-only
David Härdeman [Thu, 23 Oct 2025 17:04:49 +0000 (19:04 +0200)]
luci-mod-network: mark the ignore flag as dnsmasq-only

And also hide the flag if dnsmasq isn't installed.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: add an "IPv4 Settings" tab to interfaces
David Härdeman [Thu, 23 Oct 2025 17:02:33 +0000 (19:02 +0200)]
luci-mod-network: add an "IPv4 Settings" tab to interfaces

And add one option to disable/enable odhcpd's DHCPv4 support.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: prevent double key for menu JSON
Paul Donald [Sat, 25 Oct 2025 00:19:33 +0000 (02:19 +0200)]
luci-mod-network: prevent double key for menu JSON

follow-up to 7e1b545bfa1d98a72d18c39528dade2b35421ed5

Signed-off-by: Paul Donald <[email protected]>
6 weeks agotreewide: Sync translations
Hannu Nyman [Fri, 24 Oct 2025 19:32:15 +0000 (22:32 +0300)]
treewide: Sync translations

Sync translations.

Signed-off-by: Hannu Nyman <[email protected]>
6 weeks agoTranslated using Weblate (Indonesian)
Hosted Weblate [Thu, 23 Oct 2025 15:10:52 +0000 (17:10 +0200)]
Translated using Weblate (Indonesian)

Currently translated at 0.6% (1 of 165 strings)

Translated using Weblate (Indonesian)

Currently translated at 0.5% (1 of 177 strings)

Translation: OpenWrt/LuCI/applications/adblock-fast
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock-fast/id/

Translated using Weblate (Indonesian)

Currently translated at 0.3% (8 of 2639 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/id/

Translated using Weblate (Indonesian)

Currently translated at 33.6% (69 of 205 strings)

Translation: OpenWrt/LuCI/applications/adblock
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock/id/

Translated using Weblate (Indonesian)

Currently translated at 4.4% (18 of 403 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (91 of 91 strings)

Translation: OpenWrt/LuCI/applications/frpc
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsfrpc/zh_Hans/

Translated using Weblate (French)

Currently translated at 28.3% (23 of 81 strings)

Translation: OpenWrt/LuCI/applications/email
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsemail/fr/

Translated using Weblate (French)

Currently translated at 12.1% (8 of 66 strings)

Translation: OpenWrt/LuCI/applications/sshtunnel
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssshtunnel/fr/

Translated using Weblate (Romanian)

Currently translated at 90.0% (2376 of 2639 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ro/

Co-authored-by: Anggun Caksono <[email protected]>
Co-authored-by: CRISTIAN ANDREI <[email protected]>
Co-authored-by: Camelia <[email protected]>
Co-authored-by: Hosted Weblate <[email protected]>
Co-authored-by: 大王叫我来巡山 <[email protected]>
Signed-off-by: Anggun Caksono <[email protected]>
Signed-off-by: CRISTIAN ANDREI <[email protected]>
Signed-off-by: Camelia <[email protected]>
Signed-off-by: 大王叫我来巡山 <[email protected]>
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationscoovachilli/id/
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsstatistics/id/
Translation: OpenWrt/LuCI/applications/coovachilli
Translation: OpenWrt/LuCI/applications/statistics

6 weeks agoluci-mod-status: support DUID%IAID for static leases
David Härdeman [Sun, 5 Oct 2025 11:27:29 +0000 (13:27 +0200)]
luci-mod-status: support DUID%IAID for static leases

Add support for creating DUID%IAID style static leases in luci-mod-status.

Also, this contains a bugfix. lease.ip6addrs[i] is a string of the format
"<ipv6addr>/128", which validation.parseIPv6() doesn't like (it expects an IPv6
addr without the "/128" suffix).

Signed-off-by: David Härdeman <[email protected]>
6 weeks agorpcd-mod-luci,luci-mod-network: suggest DUID%IAID values
David Härdeman [Sun, 5 Oct 2025 09:52:36 +0000 (11:52 +0200)]
rpcd-mod-luci,luci-mod-network: suggest DUID%IAID values

Change the getDUIDHints RPC method to return "DUID%IAID" hints (if the IAID is
known, which it is with odhcpd). Use the complete hints in luci-mod-network.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: add initial support for multi-DUIDs
David Härdeman [Sun, 5 Oct 2025 06:50:30 +0000 (08:50 +0200)]
luci-mod-network: add initial support for multi-DUIDs

And also add support/validation for DUID%IAID values.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: consistent language in static cfg
David Härdeman [Sun, 5 Oct 2025 06:43:58 +0000 (08:43 +0200)]
luci-mod-network: consistent language in static cfg

I've tried to make this more consistent by using "for" to describe values
that are assigned to the host by the DHCP server and "of" to describe values
that are provided by the host to the DHCP server.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: simplify multi-MAC help text
David Härdeman [Sun, 5 Oct 2025 06:36:17 +0000 (08:36 +0200)]
luci-mod-network: simplify multi-MAC help text

Simplify the help text a bit, make it more consistent, capitalize "MAC", remove
references to dnsmasq.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: change IPv6 suffix to token
David Härdeman [Sun, 5 Oct 2025 06:22:15 +0000 (08:22 +0200)]
luci-mod-network: change IPv6 suffix to token

The term "token" is widely used, e.g. in the relevant internet draft [1],
ip-token(8), systemd-network(5), NetworkManager [2], etc.

[1] https://datatracker.ietf.org/doc/html/draft-chown-6man-tokenised-ipv6-identifiers-02
[2] https://networkmanager.dev/docs/api/1.32.10/settings-ipv6.html

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network,-status: update DHCPv6 lease headers
David Härdeman [Sun, 5 Oct 2025 05:51:23 +0000 (07:51 +0200)]
luci-mod-network,-status: update DHCPv6 lease headers

Make it clearer that a single DHCPv6 lease can encompass several IPv6
addresses, e.g.  when GUA and ULA prefixes are available.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-app-olsr: fix const reassignment to let
Paul Donald [Fri, 24 Oct 2025 15:40:03 +0000 (17:40 +0200)]
luci-app-olsr: fix const reassignment to let

Signed-off-by: Paul Donald <[email protected]>
6 weeks agoluci-base: widgets: fix const -> let variable which is later reassigned
Paul Donald [Fri, 24 Oct 2025 15:30:39 +0000 (17:30 +0200)]
luci-base: widgets: fix const -> let variable which is later reassigned

Signed-off-by: Paul Donald <[email protected]>
6 weeks agoluci-mod-network: create separate tabs in dhcp.js
David Härdeman [Wed, 22 Oct 2025 00:08:35 +0000 (02:08 +0200)]
luci-mod-network: create separate tabs in dhcp.js

Create three main tabs ("dnsmasq", "odhcpd", "Leases") in dhcp.js and
sort the previous tabs under these main tabs.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: split PXE into dnsmasq/odhcpd functions in dhcp.js
David Härdeman [Tue, 21 Oct 2025 21:53:29 +0000 (23:53 +0200)]
luci-mod-network: split PXE into dnsmasq/odhcpd functions in dhcp.js

This makes it clearer which daemon each part belongs to. But more
importantly, it lays the ground for the next patch.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: add a odhcpd tab to dhcp.js
David Härdeman [Tue, 21 Oct 2025 21:43:15 +0000 (23:43 +0200)]
luci-mod-network: add a odhcpd tab to dhcp.js

Add a separate tab with the global odhcpd settings.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: move leases cfg to own function in dhcp.js
David Härdeman [Tue, 21 Oct 2025 21:06:07 +0000 (23:06 +0200)]
luci-mod-network: move leases cfg to own function in dhcp.js

This makes it a bit clearer what is specific to leases and also
prepares for the following patches. No actual code changes.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: move dnsmasq cfg to own function in dhcp.js
David Härdeman [Tue, 21 Oct 2025 20:56:00 +0000 (22:56 +0200)]
luci-mod-network: move dnsmasq cfg to own function in dhcp.js

This makes it a bit clearer what is specific to dnsmasq and also
prepares for the following patches. No actual code changes.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: reorder tabs in dhcp.js
David Härdeman [Tue, 21 Oct 2025 20:20:39 +0000 (22:20 +0200)]
luci-mod-network: reorder tabs in dhcp.js

This is just in preparation for the following patches.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: simplify cbi_update_table in dhcp.js
David Härdeman [Tue, 21 Oct 2025 20:15:56 +0000 (22:15 +0200)]
luci-mod-network: simplify cbi_update_table in dhcp.js

cbi_update_table() can already take a string suitable for
.querySelector() as its first argument. In addition, it will do the
right thing if the element isn't found, so this can be simplified a bit.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: remove customi18n() from dhcp.js
David Härdeman [Tue, 21 Oct 2025 20:03:29 +0000 (22:03 +0200)]
luci-mod-network: remove customi18n() from dhcp.js

The single user isn't really enough to warrant this function, so remove
it to prepare for the following patches.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: remove firewall loading in dhcp.js
David Härdeman [Tue, 21 Oct 2025 19:58:26 +0000 (21:58 +0200)]
luci-mod-network: remove firewall loading in dhcp.js

This is just a leftover from the dns/dhcp split. It isn't used in
dhcp.js.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: move var ipaddrs in dhcp.js
David Härdeman [Mon, 20 Oct 2025 21:46:22 +0000 (23:46 +0200)]
luci-mod-network: move var ipaddrs in dhcp.js

Move var ipaddrs down to the sole place where it is used.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: change && to || for DHCP tab predicates
Paul Donald [Fri, 24 Oct 2025 13:36:09 +0000 (15:36 +0200)]
luci-mod-network: change && to || for DHCP tab predicates

Each prerequisite inside a { } forms an and condition.
Each {} prerequisite forms an or condition.

The tab wasn't displayed because odhcpd was not installed. The condition set
required both. Now only require one or the other to display the DHCP tab.

Closes #8033

Signed-off-by: Paul Donald <[email protected]>
6 weeks agoluci-base: add ability to hide section titles
David Härdeman [Wed, 22 Oct 2025 21:22:14 +0000 (23:22 +0200)]
luci-base: add ability to hide section titles

The rationale here is that tabbed CBIMaps were introduced in commit
082fd9ff10b.

With tabbed maps, code could typically look like this:

m = new form.Map('foobar', _('FooBar'));
m.tabbed = true;
s = m.section(form.TypedSection, 'foo', _('foo Settings'));

The problem is that the title of "s" will be used as the name of the tab
rendered in "m", but also rendered as an <h3> right below the tab. IOW,
the same information will be presented twice, which looks weird.

Doing this instead...

m = new form.Map('foobar', _('FooBar'));
m.tabbed = true;
s = m.section(form.TypedSection, 'foo');

...means that the superfluous <h3> won't be rendered (since "s" has no
title), but the tab will then simply have the name of the section
("foo"), which can't be translated (bad).

After this change, the tabbed map can be written like this:

m = new form.Map('foobar', _('FooBar'));
m.tabbed = true;
s = m.section(form.TypedSection, 'foo', _('foo Settings'));
s.hidetitle = true;

Which will give the Map tab the name "foo Settings", but won't add a
title for the TypedSection right under the tab.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-app-frpc: Add the bind_addr & bind_port options to the visitor role.
Roc Lai [Tue, 21 Oct 2025 15:19:44 +0000 (23:19 +0800)]
luci-app-frpc: Add the bind_addr & bind_port options to the visitor role.

Fix: https://github.com/openwrt/luci/issues/8024

Signed-off-by: Roc Lai <[email protected]>
6 weeks agoluci-app: fix translation strings
Andy Chiang [Wed, 22 Oct 2025 09:49:29 +0000 (16:49 +0700)]
luci-app: fix translation strings

The current handling method introduces extraneous spaces into the translations.
For instance, 'System Log', which is correctly translated to Japanese as 'システムログ' (without extra spaces), is being displayed as 'システム ログ' under the current approach.
Other CJK/Southeast Asian languages are experiencing similar issues, including Chinese, Thai, and Lao.
Therefore, these elements should be translated together as a single unit, rather than separately.

Signed-off-by: Andy Chiang <[email protected]>
6 weeks agoluci-mod-network: remove unused dns_search property
Paul Donald [Wed, 22 Oct 2025 20:29:52 +0000 (22:29 +0200)]
luci-mod-network: remove unused dns_search property

The same functionality is fulfilled by the "domain" property. Two fields which
have the same semantics and purpose. None of odhcpd, dnsmasq or odhcp6c use the
dns_search property.

See also:
https://github.com/openwrt/odhcpd/issues/206

The local device might anyway use the "search" entries from /etc/resolv.conf at
the lower layers, but IPv6 RA and DHCPv6 is controlled by the "domain" property,
which is distributed to clients.

Signed-off-by: Paul Donald <[email protected]>
6 weeks agoluci-app-travelmate: sync with update 2.2.1-3
Dirk Brenken [Wed, 22 Oct 2025 19:02:44 +0000 (21:02 +0200)]
luci-app-travelmate: sync with update 2.2.1-3

Signed-off-by: Dirk Brenken <[email protected]>
6 weeks agoluci-mod-status: routes: prevent null error if the commands don't resolve
Paul Donald [Tue, 21 Oct 2025 23:22:04 +0000 (01:22 +0200)]
luci-mod-status: routes: prevent null error if the commands don't resolve

Closes #8026

Signed-off-by: Paul Donald <[email protected]>
6 weeks agoluci-mod-status: partial revert of styling changes
Paul Donald [Tue, 21 Oct 2025 14:25:18 +0000 (16:25 +0200)]
luci-mod-status: partial revert of styling changes

follow-up to 788e47034becc7806485b40dbef9774a14f8ea9d

Some of the CSS changes have knock-on effects and change behaviour in
other display areas, especially when the CSS is minified.

Simplified to change between label flavours on hide/show status.

Signed-off-by: Paul Donald <[email protected]>
6 weeks agoTranslated using Weblate (Chinese (Simplified Han script))
Hosted Weblate [Mon, 20 Oct 2025 06:48:33 +0000 (08:48 +0200)]
Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (45 of 45 strings)

Translation: OpenWrt/LuCI/applications/cloudflared
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationscloudflared/zh_Hans/

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (46 of 46 strings)

Translation: OpenWrt/LuCI/applications/xfrpc
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsxfrpc/zh_Hans/

Translated using Weblate (Persian)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Persian)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Portuguese)

Currently translated at 85.7% (24 of 28 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (28 of 28 strings)

Translation: OpenWrt/LuCI/applications/udpxy
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsudpxy/zh_Hant/

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (60 of 60 strings)

Translation: OpenWrt/LuCI/applications/ttyd
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsttyd/zh_Hans/

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (171 of 171 strings)

Translation: OpenWrt/LuCI/applications/mwan3
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsmwan3/zh_Hans/

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (168 of 168 strings)

Translation: OpenWrt/LuCI/applications/aria2
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsaria2/zh_Hans/

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (197 of 197 strings)

Translation: OpenWrt/LuCI/applications/ddns
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsddns/zh_Hans/

Translated using Weblate (Polish)

Currently translated at 100.0% (284 of 284 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (40 of 40 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (2588 of 2588 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/zh_Hant/

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (2639 of 2639 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/zh_Hans/

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (2639 of 2639 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/zh_Hans/

Translated using Weblate (Polish)

Currently translated at 100.0% (2639 of 2639 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/pl/

Translated using Weblate (Spanish)

Currently translated at 100.0% (2639 of 2639 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/es/

Translated using Weblate (Georgian)

Currently translated at 11.2% (296 of 2639 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ka/

Translated using Weblate (Georgian)

Currently translated at 68.6% (195 of 284 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (51 of 51 strings)

Translation: OpenWrt/LuCI/applications/acme
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsacme/it/

Translated using Weblate (Italian)

Currently translated at 100.0% (26 of 26 strings)

Translation: OpenWrt/LuCI/applications/dcwapd
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdcwapd/it/

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (2588 of 2588 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/zh_Hant/

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (2639 of 2639 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/zh_Hans/

Co-authored-by: Danial Behzadi <[email protected]>
Co-authored-by: DragonBluep <[email protected]>
Co-authored-by: Franco Castillo <[email protected]>
Co-authored-by: Hosted Weblate <[email protected]>
Co-authored-by: KING APPS <[email protected]>
Co-authored-by: Meano Lee <[email protected]>
Co-authored-by: Piotr Kołtun <[email protected]>
Co-authored-by: Random <[email protected]>
Co-authored-by: Temuri Doghonadze <[email protected]>
Co-authored-by: ZW <[email protected]>
Co-authored-by: nKsyn <[email protected]>
Co-authored-by: ssantos <[email protected]>
Signed-off-by: DragonBluep <[email protected]>
Signed-off-by: Franco Castillo <[email protected]>
Signed-off-by: Meano Lee <[email protected]>
Signed-off-by: Piotr Kołtun <[email protected]>
Signed-off-by: Random <[email protected]>
Signed-off-by: Temuri Doghonadze <[email protected]>
Signed-off-by: ZW <[email protected]>
Signed-off-by: nKsyn <[email protected]>
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsfirewall/ka/
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsfirewall/pl/
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnatmap/pt/
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsp910nd/pt/
Translate-URL: https://hosted.weblate.org/projects/openwrt/lucimodulesluci-mod-dashboard/fa/
Translation: OpenWrt/LuCI/applications/firewall
Translation: OpenWrt/LuCI/applications/natmap
Translation: OpenWrt/LuCI/applications/p910nd
Translation: OpenWrt/LuCI/modules/luci-mod-dashboard

6 weeks agomodules: fix default values
Andy Chiang [Mon, 20 Oct 2025 21:18:35 +0000 (04:18 +0700)]
modules: fix default values

fix default values for luci-base and luci-mod-{dashboard,status,system}

Signed-off-by: Andy Chiang <[email protected]>
6 weeks agoluci-app-acme: fix ACL JSON
Paul Donald [Tue, 21 Oct 2025 11:03:38 +0000 (13:03 +0200)]
luci-app-acme: fix ACL JSON

follow-up fix for fd830434cb5fec77b258f22655dced237ea81f0b

Signed-off-by: Paul Donald <[email protected]>
6 weeks agoluci-app-*: migrate LogreadBox consumers to use new permission ACLs
Paul Donald [Mon, 20 Oct 2025 11:11:05 +0000 (13:11 +0200)]
luci-app-*: migrate LogreadBox consumers to use new permission ACLs

"ubus": {
"log": [ "read" ]
}

Signed-off-by: Paul Donald <[email protected]>
6 weeks agoluci-mod-status: update syslog viewer to use the remodeled CBILogreadBox
Paul Donald [Mon, 20 Oct 2025 11:10:59 +0000 (13:10 +0200)]
luci-mod-status: update syslog viewer to use the remodeled CBILogreadBox

Signed-off-by: Paul Donald <[email protected]>
6 weeks agoluci-base: remodel the LogreadBox after the syslog viewer
Paul Donald [Mon, 20 Oct 2025 19:11:10 +0000 (21:11 +0200)]
luci-base: remodel the LogreadBox after the syslog viewer

Remodeled the CBILogreadBox after the syslog viewer. Also
updated to use ubus log read, and drops the use of the logread binary
(logread is broken on snapshots). The JSON output from ubus is nice
enough to work with.

One potential drawback is that all log entries are sent to the browser
(as it always has been), and no on-device pre-filtering is available yet
except for line count.

Signed-off-by: Paul Donald <[email protected]>
6 weeks agoluci-mod-*: initialize default values
Paul Donald [Mon, 20 Oct 2025 19:10:54 +0000 (21:10 +0200)]
luci-mod-*: initialize default values

follow-up to
e67465da5e4bb2afdd0216f4875c627f287a7f3d
b0004ad39cbe46ee449dd5576f0433847e777bb7
71ea35fc7f41e8b1c6c02e0bcc8d8bfcba3bde7f

Signed-off-by: Paul Donald <[email protected]>
6 weeks agoluci-theme-bootstrap: add width for localtime
Andy Chiang [Fri, 17 Oct 2025 13:43:36 +0000 (20:43 +0700)]
luci-theme-bootstrap: add width for localtime

set an appropriate width for #localtime

Signed-off-by: Andy Chiang <[email protected]>
6 weeks agoluci-mod-dashboard: use localized time
Andy Chiang [Wed, 15 Oct 2025 17:48:55 +0000 (00:48 +0700)]
luci-mod-dashboard: use localized time

use localized time

Signed-off-by: Andy Chiang <[email protected]>
6 weeks agoluci-mod-system: use localized time
Andy Chiang [Wed, 15 Oct 2025 17:48:45 +0000 (00:48 +0700)]
luci-mod-system: use localized time

use localized time

Signed-off-by: Andy Chiang <[email protected]>
6 weeks agoluci-mod-status: use localized time
Andy Chiang [Wed, 15 Oct 2025 17:48:26 +0000 (00:48 +0700)]
luci-mod-status: use localized time

use localized time

Signed-off-by: Andy Chiang <[email protected]>
6 weeks agoluci-mod-status: remove redundant spaces
Andy Chiang [Mon, 20 Oct 2025 08:43:01 +0000 (15:43 +0700)]
luci-mod-status: remove redundant  spaces

remove redundant spaces in nftables.js.

Signed-off-by: Andy Chiang <[email protected]>
6 weeks agoluci-base: use zone names without spaces
Paul Donald [Mon, 20 Oct 2025 12:38:12 +0000 (14:38 +0200)]
luci-base: use zone names without spaces

See build: stop zoneinfo builder scripts changing '_' -> ' '
f36f014229fcda2eb962ac3c5355ab089777ac0a

Signed-off-by: Paul Donald <[email protected]>
6 weeks agobuild: stop zoneinfo builder scripts changing '_' -> ' '
Paul Donald [Mon, 20 Oct 2025 12:36:52 +0000 (14:36 +0200)]
build: stop zoneinfo builder scripts changing '_' -> ' '

Zone names are correct when they contain an underscore, especially when
the zone names are used as input to functions and libraries.

See https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

e.g.

Africa/Addis_Ababa
Africa/Dar_es_Salaam
Pacific/Port_Moresby

This can be revised in future if some GUI aesthetic is required.

Signed-off-by: Paul Donald <[email protected]>
6 weeks agoluci-mod-system: fix JSMIN Error
Andy Chiang [Mon, 20 Oct 2025 01:22:11 +0000 (08:22 +0700)]
luci-mod-system: fix JSMIN Error

jsmin cannot handle regular expressions in this format, so use RegExp() instead.

fixes: #8020

Signed-off-by: Andy Chiang <[email protected]>
6 weeks agoluci-mod-network: add global DUID cfg option
David Härdeman [Fri, 10 Oct 2025 08:16:35 +0000 (10:16 +0200)]
luci-mod-network: add global DUID cfg option

This exposes the default DHCP DUID config option in the LuCI interface.

For reference:
https://github.com/openwrt/openwrt/pull/20359
https://github.com/openwrt/odhcpd/pull/274

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-app-travelmate: sync with update 2.2.1-2
Dirk Brenken [Sun, 19 Oct 2025 18:23:36 +0000 (20:23 +0200)]
luci-app-travelmate: sync with update 2.2.1-2

Signed-off-by: Dirk Brenken <[email protected]>
6 weeks agoluci-mod-network: remove unused permissions from dns
David Härdeman [Wed, 15 Oct 2025 17:54:49 +0000 (19:54 +0200)]
luci-mod-network: remove unused permissions from dns

Now that all options have been organized per view, remove unused acl
permissions from dns.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: remove unused code from dhcp/dns
David Härdeman [Wed, 15 Oct 2025 17:40:36 +0000 (19:40 +0200)]
luci-mod-network: remove unused code from dhcp/dns

Now that all options have been organized per view, remove unused code from
both.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: retitle dhcp/dns views
David Härdeman [Wed, 15 Oct 2025 17:28:56 +0000 (19:28 +0200)]
luci-mod-network: retitle dhcp/dns views

And remove a confusing reference to dnsmasq at the top of each page, the
message is a bit of a non-sequitur and doesn't really add any useful
information.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: organize "pxe_tftp" tab in dhcp/dns views
David Härdeman [Wed, 15 Oct 2025 17:12:19 +0000 (19:12 +0200)]
luci-mod-network: organize "pxe_tftp" tab in dhcp/dns views

Delete the tab from dns.js, sort the options that belong to it in dhcp.js.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: organize "relay" tab in dhcp/dns views
David Härdeman [Wed, 15 Oct 2025 17:08:31 +0000 (19:08 +0200)]
luci-mod-network: organize "relay" tab in dhcp/dns views

Delete the tab from dns.js, sort the options that belong to it in dhcp.js.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: organize "ipsets" tab in dhcp/dns views
David Härdeman [Wed, 15 Oct 2025 17:05:22 +0000 (19:05 +0200)]
luci-mod-network: organize "ipsets" tab in dhcp/dns views

Delete the tab from dhcp.js, sort the options that belong to it in dns.js.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: organize "leases" tab in dhcp/dns views
David Härdeman [Wed, 15 Oct 2025 17:02:30 +0000 (19:02 +0200)]
luci-mod-network: organize "leases" tab in dhcp/dns views

Delete the tab from dns.js, sort the options that belong to it in dhcp.js.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: organize "files" tab in dhcp/dns views
David Härdeman [Wed, 15 Oct 2025 16:56:51 +0000 (18:56 +0200)]
luci-mod-network: organize "files" tab in dhcp/dns views

Sort the options in the "files" tab so that they are all grouped together in
the order they appear in the UI and delete ones that are specific to DNS from
dhcp.js and vice versa.

Retitle the tab for the dhcp view from "Resolv & Hosts Files" to "Files".

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: organize "logging" tab in dhcp/dns views
David Härdeman [Wed, 15 Oct 2025 16:50:11 +0000 (18:50 +0200)]
luci-mod-network: organize "logging" tab in dhcp/dns views

Sort the options in the "logging" tab so that they are all grouped together in
the order they appear in the UI and delete ones that are specific to DNS from
dhcp.js and vice versa.

Note that this means that the "logfacility" option is present in both views,
since it controls the general logfacility of dnsmasq, both for DNS and DHCP.

We might consider adding a help text blurb explaining that, but I've
intentionally not changed any code in these patches.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: organize "limits" tab in dhcp/dns views
David Härdeman [Wed, 15 Oct 2025 16:43:03 +0000 (18:43 +0200)]
luci-mod-network: organize "limits" tab in dhcp/dns views

Sort the options in the "limits" tab so that they are all grouped together in
the order they appear in the UI and delete ones that are specific to DNS from
dhcp.js and vice versa.

Only one option is relevant to the dhcp view, so move it to the "general" tab.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: organize "forward" tab in dhcp/dns views
David Härdeman [Wed, 15 Oct 2025 16:40:25 +0000 (18:40 +0200)]
luci-mod-network: organize "forward" tab in dhcp/dns views

Delete the tab from dhcp.js, sort the options that belong to it in dns.js.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: organize "filteropts" tab in dhcp/dns views
David Härdeman [Wed, 15 Oct 2025 16:35:42 +0000 (18:35 +0200)]
luci-mod-network: organize "filteropts" tab in dhcp/dns views

Delete the tab from dhcp.js, sort the options that belong to it in dns.js.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: organize "dnssec" tab in dhcp/dns views
David Härdeman [Wed, 15 Oct 2025 16:29:53 +0000 (18:29 +0200)]
luci-mod-network: organize "dnssec" tab in dhcp/dns views

Delete the tab from dhcp.js, sort the options that belong to it in dns.js.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: organize "dnsrecords" tab in dhcp/dns views
David Härdeman [Wed, 15 Oct 2025 16:21:58 +0000 (18:21 +0200)]
luci-mod-network: organize "dnsrecords" tab in dhcp/dns views

Delete the tab from dhcp.js, sort the options that belong to it in dns.js.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: organize "devices" tab in dhcp/dns views
David Härdeman [Wed, 15 Oct 2025 16:02:21 +0000 (18:02 +0200)]
luci-mod-network: organize "devices" tab in dhcp/dns views

Sort the options in the "devices" tab so that they are all grouped together in
the order they appear in the UI and delete ones that are specific to DNS from
dhcp.js and vice versa.

Note that this means that the "nonwildcard", "interface" and "notinterface"
options are present in both views, since they control the interfaces that
dnsmasq listens to both for DNS and DHCP.

We might consider adding a help text blurb explaining that, but I've
intentionally not changed any code in these patches.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: organize "cache" tab in dhcp/dns views
David Härdeman [Wed, 15 Oct 2025 15:58:10 +0000 (17:58 +0200)]
luci-mod-network: organize "cache" tab in dhcp/dns views

Delete the tab from dhcp.js, mark the options that belong to it in dns.js.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: organize "general" tab in dhcp/dns views
David Härdeman [Wed, 15 Oct 2025 15:35:42 +0000 (17:35 +0200)]
luci-mod-network: organize "general" tab in dhcp/dns views

Sort the options in the "general" tab so that they are all grouped together in
the order they appear in the UI and delete ones that are specific to DNS from
dhcp.js and vice versa.

Note that this means that the "domain" option is present in both views.

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-mod-network: split dhcp and dns into separate views
David Härdeman [Wed, 15 Oct 2025 15:18:07 +0000 (17:18 +0200)]
luci-mod-network: split dhcp and dns into separate views

In order to make the following patches easier to follow, this patch simply
makes an identical copy of:

modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js

as:

modules/luci-mod-network/htdocs/luci-static/resources/view/network/dns.js

Signed-off-by: David Härdeman <[email protected]>
6 weeks agoluci-app-travelmate: sync with release 2.2.1
Dirk Brenken [Sat, 18 Oct 2025 20:02:58 +0000 (22:02 +0200)]
luci-app-travelmate: sync with release 2.2.1

Signed-off-by: Dirk Brenken <[email protected]>
7 weeks agoluci-base: rename getLocaltime to getUnixtime
Paul Donald [Fri, 17 Oct 2025 11:44:16 +0000 (13:44 +0200)]
luci-base: rename getLocaltime to getUnixtime

There appear to be no consumers of getLocaltime. One instance of a
callGetLocaltime uses the system info call whose localtime property uses
tm->tm_gmtoff which is "Seconds East of UTC" i.e. a unixtime value
with the timezone baked in to the value.

Sometimes we actually want Unixtime. So rename to clarify what this
function actually returns.

Signed-off-by: Paul Donald <[email protected]>
7 weeks agoluci-mod-status: remove superfluous argument
David Härdeman [Wed, 15 Oct 2025 18:05:27 +0000 (20:05 +0200)]
luci-mod-status: remove superfluous argument

As part of the commit adding MAC vendor identification (PR #7931), and
subsequent fixups, parseRoutes() grew an unused macs argument.

Signed-off-by: David Härdeman <[email protected]>
7 weeks agoluci-mod-status,-network: remove checkUfpInstalled
David Härdeman [Wed, 15 Oct 2025 13:07:32 +0000 (15:07 +0200)]
luci-mod-status,-network: remove checkUfpInstalled

Right now, the checkUfpInstalled RPC call is performed first, and only after
that can the other Promises be called. Simplify this by adding a single check
for /usr/sbin/ufpd in the rpcd ucode, and replace calls to checkUfpInstalled()
with simple L.hasSystemFeature('ufpd') check (which is only done once, and
cached).

This also allows the 'stat' permission to be removed from a couple of acls.

Signed-off-by: David Härdeman <[email protected]>
7 weeks agoluci-mod-status: handle ct helpers in nftables
Paul Donald [Wed, 15 Oct 2025 13:23:19 +0000 (15:23 +0200)]
luci-mod-status: handle ct helpers in nftables

These appear when modules such as the following are installed:
-kmod-nf-nathelper
-kmod-nf-nathelper-extra

They render as e.g.:

 Utilise *ftp* conntrack helper

when fw4 rules similar to the following exist

```
table inet fw4 {
        chain helper_lan {
                tcp dport 21 ct helper set "ftp" comment "!fw4: FTP passive connection tracking"
        }
}
```

ht @dave14305 for the working code diff

Signed-off-by: Paul Donald <[email protected]>
7 weeks agoMerge pull request #8003 from TDT-AG/pr/20251011-luci-mod-network
Florian Eckert [Wed, 15 Oct 2025 10:49:35 +0000 (12:49 +0200)]
Merge pull request #8003 from TDT-AG/pr/20251011-luci-mod-network

luci-mod-network: add carrier info to interface page

7 weeks agoluci-mod-network: add carrier info to interface page
Florian Eckert [Tue, 7 Oct 2025 08:44:18 +0000 (10:44 +0200)]
luci-mod-network: add carrier info to interface page

Currently the LuCI does not show whether a carrier is available on the
interface or not. On ethernet devices the carrier indicates whether a cable
is plugged in or not. This commit adds this functionality, which makes
debugging easier.

Signed-off-by: Florian Eckert <[email protected]>
7 weeks agoTranslated using Weblate (Latvian)
Hosted Weblate [Tue, 14 Oct 2025 21:10:19 +0000 (23:10 +0200)]
Translated using Weblate (Latvian)

Currently translated at 78.5% (11 of 14 strings)

Translation: OpenWrt/LuCI/applications/pagekitec
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspagekitec/lv/

Translated using Weblate (Latvian)

Currently translated at 100.0% (12 of 12 strings)

Translation: OpenWrt/LuCI/applications/bcp38
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbcp38/lv/

Translated using Weblate (Latvian)

Currently translated at 100.0% (6 of 6 strings)

Translation: OpenWrt/LuCI/applications/olsr-services
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsolsr-services/lv/

Translated using Weblate (German)

Currently translated at 92.1% (164 of 178 strings)

Translation: OpenWrt/LuCI/applications/lldpd
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationslldpd/de/

Translated using Weblate (Lithuanian)

Currently translated at 91.5% (162 of 177 strings)

Translation: OpenWrt/LuCI/applications/adblock-fast
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock-fast/lt/

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (161 of 161 strings)

Translation: OpenWrt/LuCI/applications/pbr
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspbr/lt/

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (162 of 162 strings)

Translation: OpenWrt/LuCI/applications/https-dns-proxy
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationshttps-dns-proxy/lt/

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (28 of 28 strings)

Translated using Weblate (German)

Currently translated at 100.0% (28 of 28 strings)

Translated using Weblate (German)

Currently translated at 100.0% (253 of 253 strings)

Translation: OpenWrt/LuCI/applications/keepalived
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationskeepalived/de/

Translated using Weblate (German)

Currently translated at 78.0% (139 of 178 strings)

Translation: OpenWrt/LuCI/applications/lldpd
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationslldpd/de/

Translated using Weblate (German)

Currently translated at 52.1% (62 of 119 strings)

Translation: OpenWrt/LuCI/applications/snmpd
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssnmpd/de/

Translated using Weblate (German)

Currently translated at 94.1% (16 of 17 strings)

Translation: OpenWrt/LuCI/applications/eoip
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationseoip/de/

Translated using Weblate (German)

Currently translated at 100.0% (28 of 28 strings)

Translated using Weblate (German)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (German)

Currently translated at 100.0% (211 of 211 strings)

Translation: OpenWrt/LuCI/applications/dockerman
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdockerman/de/

Translated using Weblate (German)

Currently translated at 100.0% (66 of 66 strings)

Translation: OpenWrt/LuCI/applications/frps
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsfrps/de/

Translated using Weblate (German)

Currently translated at 100.0% (59 of 59 strings)

Translation: OpenWrt/LuCI/applications/dump1090
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdump1090/de/

Translated using Weblate (German)

Currently translated at 100.0% (290 of 290 strings)

Translation: OpenWrt/LuCI/applications/banip
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbanip/de/

Translated using Weblate (German)

Currently translated at 100.0% (83 of 83 strings)

Translation: OpenWrt/LuCI/applications/attendedsysupgrade
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsattendedsysupgrade/de/

Translated using Weblate (German)

Currently translated at 100.0% (205 of 205 strings)

Translation: OpenWrt/LuCI/applications/adblock
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock/de/

Translated using Weblate (German)

Currently translated at 100.0% (171 of 171 strings)

Translation: OpenWrt/LuCI/applications/mwan3
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsmwan3/de/

Translated using Weblate (German)

Currently translated at 100.0% (113 of 113 strings)

Translated using Weblate (German)

Currently translated at 100.0% (138 of 138 strings)

Translated using Weblate (German)

Currently translated at 98.1% (52 of 53 strings)

Translated using Weblate (German)

Currently translated at 100.0% (25 of 25 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (2639 of 2639 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/es/

Translated using Weblate (German)

Currently translated at 96.9% (2558 of 2639 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/de/

Translated using Weblate (Polish)

Currently translated at 100.0% (211 of 211 strings)

Translation: OpenWrt/LuCI/applications/dockerman
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdockerman/pl/

Translated using Weblate (Vietnamese)

Currently translated at 95.6% (132 of 138 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (2639 of 2639 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/pl/

Translated using Weblate (Polish)

Currently translated at 100.0% (2639 of 2639 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/pl/

Translated using Weblate (Latvian)

Currently translated at 5.6% (149 of 2639 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/lv/

Translated using Weblate (Latvian)

Currently translated at 50.0% (6 of 12 strings)

Translation: OpenWrt/LuCI/applications/bcp38
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbcp38/lv/

Translated using Weblate (Latvian)

Currently translated at 100.0% (2 of 2 strings)

Translation: OpenWrt/LuCI/applications/olsr-viz
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsolsr-viz/lv/

Translated using Weblate (Turkish)

Currently translated at 5.0% (6 of 119 strings)

Translation: OpenWrt/LuCI/applications/snmpd
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssnmpd/tr/

Translated using Weblate (Turkish)

Currently translated at 100.0% (51 of 51 strings)

Translation: OpenWrt/LuCI/applications/acme
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsacme/tr/

Translated using Weblate (Russian)

Currently translated at 100.0% (62 of 62 strings)

Translation: OpenWrt/LuCI/applications/sqm
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssqm/ru/

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (74 of 74 strings)

Translation: OpenWrt/LuCI/applications/frps
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsfrps/zh_Hans/

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (89 of 89 strings)

Translation: OpenWrt/LuCI/applications/frpc
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsfrpc/zh_Hant/

Translated using Weblate (Turkish)

Currently translated at 100.0% (59 of 59 strings)

Translation: OpenWrt/LuCI/applications/dump1090
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdump1090/tr/

Translated using Weblate (Turkish)

Currently translated at 100.0% (26 of 26 strings)

Translation: OpenWrt/LuCI/applications/dcwapd
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdcwapd/tr/

Translated using Weblate (Turkish)

Currently translated at 97.8% (278 of 284 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (403 of 403 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (62 of 62 strings)

Translation: OpenWrt/LuCI/applications/sqm
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssqm/ru/

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 98.3% (180 of 183 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (62 of 62 strings)

Translation: OpenWrt/LuCI/applications/sqm
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssqm/ru/

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (53 of 53 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (2588 of 2588 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/zh_Hant/

Translated using Weblate (Russian)

Currently translated at 100.0% (2639 of 2639 strings)

Translation: OpenWrt/LuCI/modules/luci-base
Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ru/

Co-authored-by: Blubberland <[email protected]>
Co-authored-by: Džiugas Januševičius <[email protected]>
Co-authored-by: Edgars Andersons <[email protected]>
Co-authored-by: Franco Castillo <[email protected]>
Co-authored-by: Hosted Weblate <[email protected]>
Co-authored-by: Nguyễn Ngọc Hiền <[email protected]>
Co-authored-by: Oğuz Ersen <[email protected]>
Co-authored-by: Piotr Kołtun <[email protected]>
Co-authored-by: SnIPeRSnIPeR <[email protected]>
Co-authored-by: V.Harkonnen <[email protected]>
Co-authored-by: ZW <[email protected]>
Co-authored-by: 大王叫我来巡山 <[email protected]>
Signed-off-by: "V.Harkonnen" <[email protected]>
Signed-off-by: Blubberland <[email protected]>
Signed-off-by: Džiugas Januševičius <[email protected]>
Signed-off-by: Edgars Andersons <[email protected]>
Signed-off-by: Franco Castillo <[email protected]>
Signed-off-by: Oğuz Ersen <[email protected]>
Signed-off-by: Piotr Kołtun <[email protected]>
Signed-off-by: SnIPeRSnIPeR <[email protected]>
Signed-off-by: ZW <[email protected]>
Signed-off-by: 大王叫我来巡山 <[email protected]>
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationscommands/de/
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsfirewall/tr/
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnatmap/de/
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnatmap/lt/
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnut/de/
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnut/vi/
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsolsr/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsradicale2/de/
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsstatistics/tr/
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsupnp/de/
Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsupnp/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/openwrt/lucimodulesluci-mod-dashboard/de/
Translation: OpenWrt/LuCI/applications/commands
Translation: OpenWrt/LuCI/applications/firewall
Translation: OpenWrt/LuCI/applications/natmap
Translation: OpenWrt/LuCI/applications/nut
Translation: OpenWrt/LuCI/applications/olsr
Translation: OpenWrt/LuCI/applications/radicale2
Translation: OpenWrt/LuCI/applications/statistics
Translation: OpenWrt/LuCI/applications/upnp
Translation: OpenWrt/LuCI/modules/luci-mod-dashboard

7 weeks agoluci-app-travelmate: sync with release 2.2.0
Dirk Brenken [Tue, 14 Oct 2025 20:14:47 +0000 (22:14 +0200)]
luci-app-travelmate: sync with release 2.2.0

Signed-off-by: Dirk Brenken <[email protected]>
7 weeks agoluci-mod-status: fix ipv4 source
Andy Chiang [Mon, 13 Oct 2025 19:02:11 +0000 (02:02 +0700)]
luci-mod-status: fix ipv4 source

ipv4 source in json is prefsrc not src

Signed-off-by: Andy Chiang <[email protected]>
7 weeks agoluci-mod-status: routes; refactor and add routesj page for ip -j output
Paul Donald [Mon, 13 Oct 2025 18:28:06 +0000 (20:28 +0200)]
luci-mod-status: routes; refactor and add routesj page for ip -j output

follow-up fix to 89ae891462ea9928fc2b01e25c1611b1b71352d5

fs depends here should be OR, not AND :)

Signed-off-by: Paul Donald <[email protected]>
7 weeks agoluci-mod-system: minor code fixes for repokeys and sshkeys
Paul Donald [Mon, 13 Oct 2025 12:33:23 +0000 (14:33 +0200)]
luci-mod-system: minor code fixes for repokeys and sshkeys

Signed-off-by: Paul Donald <[email protected]>
7 weeks agoluci-mod-status: fix luci-bwc segfault
Andy Chiang [Mon, 13 Oct 2025 05:48:03 +0000 (12:48 +0700)]
luci-mod-status: fix luci-bwc segfault

fixes: #8008

Signed-off-by: Andy Chiang <[email protected]>
7 weeks agoMerge pull request #8002 from TDT-AG/pr/20251010-luci-mod-network
Florian Eckert [Mon, 13 Oct 2025 05:58:52 +0000 (07:58 +0200)]
Merge pull request #8002 from TDT-AG/pr/20251010-luci-mod-network

luci-mod-network: show stop button if interface start is pending

7 weeks agoluci-mod-status: routes; refactor and add routesj page for ip -j output
Paul Donald [Sun, 12 Oct 2025 17:51:29 +0000 (19:51 +0200)]
luci-mod-status: routes; refactor and add routesj page for ip -j output

follow-up fix to 89ae891462ea9928fc2b01e25c1611b1b71352d5

Should not have duplicate keys

Signed-off-by: Paul Donald <[email protected]>
7 weeks agoluci-mod-status: routes; refactor and add routesj page for ip -j output
Paul Donald [Sun, 12 Oct 2025 16:37:57 +0000 (18:37 +0200)]
luci-mod-status: routes; refactor and add routesj page for ip -j output

Refactor functions and variables to ES6 standard.

Detect whether one of the JSON enabled ip variants is installed, and
prefer it to display route information over the text handling. This is
handled by the acls and menu depends.

Signed-off-by: Paul Donald <[email protected]>
7 weeks agoluci-mod-status: handle vmaps in nftables
Paul Donald [Fri, 3 Oct 2025 21:49:54 +0000 (23:49 +0200)]
luci-mod-status: handle vmaps in nftables

- Support vmaps
- Support goto, continue actions
- Recognize DSCP and MAC address expressions
- Support log action without prefix.

Signed-off-by: Paul Donald <[email protected]>
7 weeks agogithub: update workflow actions
Paul Donald [Sun, 12 Oct 2025 16:31:10 +0000 (18:31 +0200)]
github: update workflow actions

checkout to v5
setup-node to v5
peaceiris/actions-gh-pages to v4

Signed-off-by: Paul Donald <[email protected]>
7 weeks agoluci-mod-status: add source/gateway display for ipv4/ipv6
Andy Chiang [Fri, 10 Oct 2025 09:58:19 +0000 (16:58 +0700)]
luci-mod-status: add source/gateway display for ipv4/ipv6

*add source display for ipv4
*add gateway display for ipv6

Signed-off-by: Andy Chiang <[email protected]>
7 weeks agoluci-mod-network: resolve authentication issues during 802.1X Wi-Fi connection
tuvokyang [Sat, 20 Sep 2025 07:05:23 +0000 (15:05 +0800)]
luci-mod-network: resolve authentication issues during 802.1X Wi-Fi connection

Signed-off-by: tuvokyang <[email protected]>
7 weeks agoluci-app-ddns: fix toggle button not working
Liangbin Lian [Wed, 6 Aug 2025 04:13:06 +0000 (12:13 +0800)]
luci-app-ddns: fix toggle button not working

`this.callInitAction('ddns', 'enable')` always return true, cause ddns service always disabled later.

Signed-off-by: Liangbin Lian <[email protected]>
7 weeks agobuild: fix Traditional Chinese name
Andy Chiang [Sat, 11 Oct 2025 06:57:43 +0000 (13:57 +0700)]
build: fix Traditional Chinese name

fix Chinese name

Signed-off-by: Andy Chiang <[email protected]>
8 weeks agoMerge pull request #7991 from stangri/master-luci-app-pbr
Stan Grishin [Fri, 10 Oct 2025 23:35:12 +0000 (16:35 -0700)]
Merge pull request #7991 from stangri/master-luci-app-pbr

luci-app-pbr: update to 1.2.0-r2

8 weeks agoluci-base: add odhcpd feature detection
David Härdeman [Fri, 10 Oct 2025 12:54:11 +0000 (14:54 +0200)]
luci-base: add odhcpd feature detection

For dnsmasq, feature detection is currently supported like this:

L.hasSystemFeature('dnsmasq', 'dhcpv6')

while for odhcpd, only a basic check is supported:

L.hasSystemFeature('odhcpd')

With this patch, a similar feature check is also possible for odhcpd,
e.g.:

L.hasSystemFeature('odhcpd', 'dhcpv6')

Signed-off-by: David Härdeman <[email protected]>
8 weeks agoluci-mod-status: Fix call params to routes.js functions
Paul Donald [Fri, 10 Oct 2025 16:39:19 +0000 (18:39 +0200)]
luci-mod-status: Fix call params to routes.js functions

follow-up fix to 70b7176fc2547e3de1fa3139d0e25adfd3fcd66e

Signed-off-by: Paul Donald <[email protected]>