luci-base: fix uci write bug when input value equals default
authorAndy Chiang <redacted>
Tue, 19 May 2026 16:29:07 +0000 (23:29 +0700)
committerPaul Donald <redacted>
Wed, 27 May 2026 11:32:38 +0000 (14:32 +0300)
Avoid executing unnecessary write operations to flash/UCI when the
user's form selection or input exactly matches the component's
`default` configuration.

Previously, if a field had a valid value identical to its default,
it would bypass the empty check and trigger a `write()` call, leading
to configuration bloating. This change ensures that such values are
correctly intercepted and handled via `this.remove()` to keep the
underlying configuration file clean and precise.

Signed-off-by: Andy Chiang <redacted>
modules/luci-base/htdocs/luci-static/resources/form.js

index 6f14678de1ca8fc29ed384dafd14a578ab925a36..7e11d9299f33ca19a528713b5e19737feb9059b7 100644 (file)
@@ -2149,7 +2149,7 @@ const CBIAbstractValue = CBIAbstractElement.extend(/** @lends LuCI.form.Abstract
                        const cval = this.cfgvalue(section_id);
                        const fval = this.formvalue(section_id);
 
-                       if (fval == null || fval == '') {
+                       if (fval == null || fval == '' || (fval == this.default && (this.optional || this.rmempty))) {
                                if (this.rmempty || this.optional) {
                                        return Promise.resolve(this.remove(section_id));
                                }
git clone https://git.99rst.org/PROJECT