luci-app-adblock-fast: update to 1.2.2-r8
authorStan Grishin <redacted>
Tue, 3 Mar 2026 18:43:30 +0000 (18:43 +0000)
committerStan Grishin <redacted>
Wed, 4 Mar 2026 20:22:35 +0000 (12:22 -0800)
* implement Pause button/countdown in WebUI
* expose pause_timeout setting in WebUI
* remove outdated (uci-reliant) cron code

Signed-off-by: Stan Grishin <redacted>
applications/luci-app-adblock-fast/Makefile
applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js
applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js
applications/luci-app-adblock-fast/po/templates/adblock-fast.pot

index 76239de4f571cd00b2f5f6f16dbb996511f32136..b72ca2b3012fa0ea504149c1bc2ac1fa8bb6a6fd 100644 (file)
@@ -7,7 +7,7 @@ PKG_NAME:=luci-app-adblock-fast
 PKG_LICENSE:=AGPL-3.0-or-later
 PKG_MAINTAINER:=Stan Grishin <stangri@melmac.ca>
 PKG_VERSION:=1.2.2
-PKG_RELEASE:=6
+PKG_RELEASE:=8
 
 LUCI_TITLE:=AdBlock-Fast Web UI
 LUCI_URL:=https://github.com/mossdef-org/luci-app-adblock-fast/
index 8047f169c444f8382c0efb5fb1f1d67610e41325..4278d9f65a12046295e862177116c7fe8c887d8b 100644 (file)
@@ -51,6 +51,14 @@ var pkg = {
        isObjEmpty: function (obj) {
                return Object.keys(obj).length === 0;
        },
+       formatPauseTimeout: function (seconds) {
+               var s = parseInt(seconds) || 20;
+               if (s < 60) return s + "s";
+               var m = Math.floor(s / 60);
+               var rem = s % 60;
+               if (rem === 0) return m + "m";
+               return m + "m " + rem + "s";
+       },
 
        statusTable: {
                statusNoInstall: _("%s is not installed or not found").format(
@@ -99,12 +107,6 @@ var pkg = {
                warningCronMissing: _(
                        "Cron daemon is not available. If BusyBox crond is present, enable it with: %s; otherwise install another cron daemon.",
                ),
-               warningCronEntryMissing: _(
-                       "Cron entry is missing; click %s to recreate it.",
-               ),
-               warningCronEntryMismatch: _(
-                       "Cron entry does not match the schedule; click %s to overwrite it.",
-               ),
        },
 
        errorTable: {
@@ -199,12 +201,6 @@ var getCronStatus = rpc.declare({
        params: ["name"],
 });
 
-var getCronEntry = rpc.declare({
-       object: "luci." + pkg.Name,
-       method: "getCronEntry",
-       params: ["name"],
-});
-
 var setCronEntry = rpc.declare({
        object: "luci." + pkg.Name,
        method: "setCronEntry",
@@ -380,16 +376,14 @@ var status = baseclass.extend({
                                        ],
                                });
                        }
-                       var cronSyncNeeded = false;
-                       var showCronWarnings =
+                       if (
                                reply.status.enabled &&
                                reply.status.running &&
                                (reply.cron.auto_update_enabled ||
-                                       reply.cron.cron_line_state === "suspended");
-                       if (showCronWarnings) {
+                                       reply.cron.cron_line_state === "suspended")
+                       ) {
                                var enableCronCmd =
                                        "<code>/etc/init.d/cron enable && /etc/init.d/cron start</code>";
-                               var resyncLabel = "<code>" + _("Resync Cron") + "</code>";
                                if (!reply.cron.cron_init || !reply.cron.cron_bin) {
                                        reply.ubus.warnings.push({
                                                code: "warningCronMissing",
@@ -401,37 +395,6 @@ var status = baseclass.extend({
                                                info: enableCronCmd,
                                        });
                                }
-                               if (reply.cron.cron_line_state === "suspended") {
-                                       reply.ubus.warnings.push({
-                                               code: "warningCronEntryMismatch",
-                                               info: resyncLabel,
-                                       });
-                                       cronSyncNeeded = true;
-                               } else if (
-                                       reply.cron.auto_update_enabled &&
-                                       (reply.cron.cron_line_state === "unsupported" ||
-                                               reply.cron.cron_line_state === "multi")
-                               ) {
-                                       reply.ubus.warnings.push({
-                                               code: "warningCronEntryMismatch",
-                                               info: resyncLabel,
-                                       });
-                                       cronSyncNeeded = true;
-                               } else if (reply.cron.auto_update_enabled) {
-                                       if (!reply.cron.cron_line_present) {
-                                               reply.ubus.warnings.push({
-                                                       code: "warningCronEntryMissing",
-                                                       info: resyncLabel,
-                                               });
-                                               cronSyncNeeded = true;
-                                       } else if (!reply.cron.cron_line_match) {
-                                               reply.ubus.warnings.push({
-                                                       code: "warningCronEntryMismatch",
-                                                       info: resyncLabel,
-                                               });
-                                               cronSyncNeeded = true;
-                                       }
-                               }
                        }
                        var text = "";
                        var outputFile = reply.status.outputFile;
@@ -641,65 +604,55 @@ var status = baseclass.extend({
                                _("Redownload"),
                        );
 
-                       var btn_sync_cron = E(
-                               "button",
-                               {
-                                       class: "btn cbi-button cbi-button-apply",
-                                       disabled: true,
-                                       click: function (ev) {
-                                               ui.showModal(null, [
-                                                       E("p", { class: "spinning" }, _("Syncing cron schedule")),
-                                               ]);
-                                               return L.resolveDefault(getCronEntry(pkg.Name), {})
-                                                       .then(function (response) {
-                                                               var entry =
-                                                                       (response?.[pkg.Name] && response[pkg.Name].entry) || "";
-                                                               if (!entry) {
-                                                                       return Promise.reject(new Error("No cron entry"));
-                                                               }
-                                                               entry = entry.replace(/^\s*#\s*/, "");
-                                                               entry = entry.replace(
-                                                                       /adblock-fast-auto-(suspended|disabled)/g,
-                                                                       "adblock-fast-auto",
-                                                               );
-                                                               return L.resolveDefault(setCronEntry(pkg.Name, entry), {
-                                                                       result: false,
-                                                               });
-                                                       })
-                                                       .then(
-                                                               function (result) {
-                                                                       if (!result || result.result === false) {
-                                                                               throw new Error("Failed to update cron schedule");
-                                                                       }
-                                                                       ui.hideModal();
-                                                                       location.reload();
-                                                               },
-                                                               function (error) {
-                                                                       ui.hideModal();
-                                                                       ui.addNotification(
-                                                                               null,
-                                                                               E("p", {}, _("Failed to sync cron schedule")),
-                                                                       );
-                                                               },
-                                                       );
-                                       },
-                               },
-                               _("Resync Cron"),
-                       );
-
+                       var pauseTimeout = parseInt(reply.status.pause_timeout) || 20;
+                       var pauseLabel =
+                               _("Pause") + " (" + pkg.formatPauseTimeout(pauseTimeout) + ")";
                        var btn_action_pause = E(
                                "button",
                                {
                                        class: "btn cbi-button cbi-button-apply",
                                        disabled: true,
                                        click: function (ev) {
-                                               ui.showModal(null, [
-                                                       E("p", { class: "spinning" }, _("Pausing %s").format(pkg.Name)),
-                                               ]);
-                                               return RPC.setInitAction(pkg.Name, "pause");
+                                               var remaining = pauseTimeout;
+                                               var allButtons = [
+                                                       btn_start,
+                                                       btn_action_dl,
+                                                       btn_action_pause,
+                                                       btn_stop,
+                                                       btn_enable,
+                                                       btn_disable,
+                                               ];
+                                               if (typeof btn_sync_cron !== "undefined")
+                                                       allButtons.push(btn_sync_cron);
+                                               allButtons.forEach(function (b) {
+                                                       b.disabled = true;
+                                               });
+                                               btn_action_pause.textContent =
+                                                       _("Pause") +
+                                                       " (" +
+                                                       pkg.formatPauseTimeout(remaining) +
+                                                       ")";
+                                               RPC.setInitAction(pkg.Name, "pause");
+                                               var countdown = setInterval(function () {
+                                                       remaining--;
+                                                       if (remaining > 0) {
+                                                               btn_action_pause.textContent =
+                                                                       _("Pause") +
+                                                                       " (" +
+                                                                       pkg.formatPauseTimeout(remaining) +
+                                                                       ")";
+                                                       } else {
+                                                               clearInterval(countdown);
+                                                               btn_action_pause.textContent =
+                                                                       _("Pause") + " (" + _("Restarting") + "…)";
+                                                               pollServiceStatus(function () {
+                                                                       location.reload();
+                                                               });
+                                                       }
+                                               }, 1000);
                                        },
                                },
-                               _("Pause"),
+                               pauseLabel,
                        );
 
                        var btn_stop = E(
@@ -792,10 +745,6 @@ var status = baseclass.extend({
                                btn_enable.disabled = false;
                                btn_disable.disabled = true;
                        }
-                       if (cronSyncNeeded) {
-                               btn_sync_cron.disabled = false;
-                       }
-
                        var buttonsDiv = [];
                        var buttonsTitle = E(
                                "label",
@@ -805,21 +754,16 @@ var status = baseclass.extend({
                        var buttonsTextItems = [
                                btn_start,
                                btn_gap,
-                               // btn_action_pause,
-                               // btn_gap,
                                btn_action_dl,
-                       ];
-                       if (cronSyncNeeded) {
-                               buttonsTextItems.push(btn_gap, btn_sync_cron);
-                       }
-                       buttonsTextItems.push(
+                               btn_gap,
+                               btn_action_pause,
                                btn_gap,
                                btn_stop,
                                btn_gap_long,
                                btn_enable,
                                btn_gap,
                                btn_disable,
-                       );
+                       ];
                        var buttonsText = E("div", {}, buttonsTextItems);
                        var buttonsField = E("div", { class: "cbi-value-field" }, buttonsText);
                        if (reply.status.version) {
@@ -857,7 +801,6 @@ return L.Class.extend({
        getFileUrlFilesizes: getFileUrlFilesizes,
        syncCron: syncCron,
        getCronStatus: getCronStatus,
-       getCronEntry: getCronEntry,
        setCronEntry: setCronEntry,
        getPlatformSupport: getPlatformSupport,
        getServiceInfo: getServiceInfo,
index 0d84eaa391c263574457b1663e5f5f4f1e806989..aec84b5f13c5e3fa785cd6c6472182832ff4eb0c 100644 (file)
@@ -674,6 +674,18 @@ return view.extend({
                o.default = "20";
                o.datatype = "range(1,60)";
 
+               o = s1.taboption(
+                       "tab_advanced",
+                       form.Value,
+                       "pause_timeout",
+                       _("Pause time-out (in seconds)"),
+                       _(
+                               "Pause ad-blocking for the specified number of seconds when the Pause button is pressed.",
+                       ),
+               );
+               o.default = "20";
+               o.datatype = "range(1,600)";
+
                o = s1.taboption(
                        "tab_advanced",
                        form.Value,
index 3d66c46578d58d6481733129ee031ff1077b1cae..324219884f63bbf5a1823e8e1b4d5bb9262bb8a6 100644 (file)
@@ -1,11 +1,11 @@
 msgid ""
 msgstr "Content-Type: text/plain; charset=UTF-8"
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:114
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:116
 msgid "%s is currently disabled"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:56
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:64
 msgid "%s is not installed or not found"
 msgstr ""
 
@@ -15,11 +15,11 @@ msgstr ""
 msgid "-"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:833
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:845
 msgid "Action"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:66
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:74
 msgid "Active"
 msgstr ""
 
@@ -41,11 +41,11 @@ msgstr ""
 msgid "AdBlock-Fast"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:784
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:796
 msgid "AdBlock-Fast - Allowed and Blocked Domains"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:808
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:820
 msgid "AdBlock-Fast - Allowed and Blocked Lists URLs"
 msgstr ""
 
@@ -53,7 +53,7 @@ msgstr ""
 msgid "AdBlock-Fast - Configuration"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:440
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:403
 msgid "AdBlock-Fast - Status"
 msgstr ""
 
@@ -69,16 +69,16 @@ msgstr ""
 msgid "Advanced Configuration"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:834
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:839
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:846
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:851
 msgid "Allow"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:792
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:804
 msgid "Allowed Domains"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:721
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:733
 msgid ""
 "Attempt to create a compressed cache of block-list in the persistent memory."
 msgstr ""
@@ -95,17 +95,17 @@ msgstr ""
 msgid "Basic Configuration"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:835
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:839
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:847
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:851
 msgid "Block"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:800
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:812
 #: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/status/include/70_adblock-fast.js:42
 msgid "Blocked Domains"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:487
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:450
 msgid "Blocking %s domains (with %s)."
 msgstr ""
 
@@ -117,11 +117,11 @@ msgstr ""
 msgid "Cache file"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:504
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:467
 msgid "Cache file found."
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:88
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:96
 msgid "Can't detect free RAM"
 msgstr ""
 
@@ -129,15 +129,15 @@ msgstr ""
 msgid "Compressed cache"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:492
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:455
 msgid "Compressed cache file created."
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:506
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:469
 msgid "Compressed cache file found."
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:111
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:113
 msgid "Config (%s) validation failure!"
 msgstr ""
 
@@ -145,29 +145,21 @@ msgstr ""
 msgid "Controls system log and console output verbosity."
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:100
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:108
 msgid ""
 "Cron daemon is not available. If BusyBox crond is present, enable it with: "
 "%s; otherwise install another cron daemon."
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:106
-msgid "Cron entry does not match the schedule; click %s to overwrite it."
-msgstr ""
-
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:103
-msgid "Cron entry is missing; click %s to recreate it."
-msgstr ""
-
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:97
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:105
 msgid "Cron service is not enabled or running. Enable it with: %s."
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:694
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:706
 msgid "Curl download retry"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:681
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:693
 msgid "Curl maximum file size (in bytes)"
 msgstr ""
 
@@ -192,32 +184,32 @@ msgstr ""
 msgid "Day of Week"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:732
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:744
 msgid "Directory for compressed cache file"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:734
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:746
 msgid ""
 "Directory for compressed cache file of block-list in the persistent memory."
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:759
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:712
 #: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:501
 #: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:648
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:752
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:765
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:764
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:777
 msgid "Disable"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:776
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:788
 msgid "Disable Debugging"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:459
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:422
 msgid "Disabled"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:753
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:706
 msgid "Disabling %s service"
 msgstr ""
 
@@ -229,11 +221,11 @@ msgstr ""
 msgid "Do not add IPv6 entries"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:724
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:736
 msgid "Do not store compressed cache"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:711
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:723
 msgid "Do not use simultaneous processing"
 msgstr ""
 
@@ -241,39 +233,39 @@ msgstr ""
 msgid "Download time-out (in seconds)"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:64
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:72
 msgid "Downloading lists"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:740
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:693
 #: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:502
 #: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:649
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:753
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:766
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:829
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:765
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:778
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:841
 msgid "Enable"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:773
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:777
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:785
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:789
 msgid "Enable Debugging"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:762
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:774
 msgid ""
 "Enable RFC 1123 compliant domain validation for dnsmasq block-lists to "
 "remove invalid entries."
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:760
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:772
 msgid "Enable dnsmasq domain validation"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:747
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:759
 msgid "Enable dnsmasq sanity check"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:749
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:761
 msgid ""
 "Enable sanity check for dnsmasq block-list processing to detect and report "
 "issues."
@@ -283,15 +275,15 @@ msgstr ""
 msgid "Enable scheduled list redownloads via /etc/init.d/adblock-fast dl."
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:774
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:786
 msgid "Enables debug output to /tmp/adblock-fast.log."
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:734
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:687
 msgid "Enabling %s service"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:587
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:550
 msgid "Errors encountered, please check the %sREADME%s"
 msgstr ""
 
@@ -305,103 +297,99 @@ msgstr ""
 msgid "Every N hours"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:133
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:135
 msgid "Failed to access shared memory"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:131
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:133
 msgid "Failed to create '%s' file"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:145
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:147
 msgid "Failed to create block-list or restart DNS resolver"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:140
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:142
 msgid "Failed to create compressed cache"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:130
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:132
 msgid "Failed to create directory for %s file"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:154
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:156
 msgid "Failed to create output/cache/gzip file directory"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:156
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:158
 msgid "Failed to detect format %s"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:149
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:151
 msgid "Failed to download %s"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:148
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:150
 msgid "Failed to download Config Update file"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:137
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:139
 msgid "Failed to format data file"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:144
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:146
 msgid "Failed to move '%s' to '%s'"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:139
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:141
 msgid "Failed to move temporary data file to '%s'"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:135
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:137
 msgid "Failed to optimize data file"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:151
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:153
 msgid "Failed to parse %s"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:150
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:152
 msgid "Failed to parse Config Update file"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:136
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:138
 msgid "Failed to process allow-list"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:147
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:149
 msgid "Failed to reload/restart DNS resolver"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:141
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:143
 msgid "Failed to remove temporary files"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:132
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:134
 msgid "Failed to restart/reload DNS resolver"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:134
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:136
 msgid "Failed to sort data file"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:65
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:73
 msgid "Failed to start"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:146
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:148
 msgid "Failed to stop %s"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:681
-msgid "Failed to sync cron schedule"
-msgstr ""
-
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:142
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:144
 msgid "Failed to unpack compressed cache"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:898
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:910
 msgid "Failed to update cron schedule."
 msgstr ""
 
@@ -409,11 +397,11 @@ msgstr ""
 msgid "Force DNS Ports"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:495
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:458
 msgid "Force DNS ports:"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:63
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:71
 msgid "Force Reloading"
 msgstr ""
 
@@ -425,7 +413,7 @@ msgstr ""
 msgid "Force Router DNS server to all local devices"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:635
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:598
 msgid "Force redownloading %s block lists"
 msgstr ""
 
@@ -433,7 +421,7 @@ msgstr ""
 msgid "Forces Router DNS use on local devices, also known as DNS Hijacking."
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:159
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:161
 msgid "Free ram (%s) is not enough to process all enabled block-lists"
 msgstr ""
 
@@ -445,7 +433,7 @@ msgstr ""
 msgid "Grant UCI and file access for luci-app-adblock-fast"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:166
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:168
 msgid "Heartbeat domain is not accessible after resolver restart"
 msgstr ""
 
@@ -457,34 +445,34 @@ msgstr ""
 msgid "IPv6 Support"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:683
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:695
 msgid ""
 "If curl is installed and detected, it would not download files bigger than "
 "this."
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:696
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:708
 msgid ""
 "If curl is installed and detected, it would retry download this many times "
 "on timeout/fail."
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:793
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:805
 msgid "Individual domains to be allowed."
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:801
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:813
 msgid "Individual domains to be blocked."
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:73
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:81
 msgid ""
 "Internal version mismatch (package: %s, luci app: %s, luci rpcd: %s), you "
 "may need to update packages or reboot the device, please check the "
 "%sREADME%s."
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:86
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:94
 msgid "Invalid compressed cache directory '%s'"
 msgstr ""
 
@@ -492,7 +480,7 @@ msgstr ""
 msgid "LED to indicate status"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:708
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:720
 msgid ""
 "Launch all lists downloads and processing simultaneously, reducing service "
 "start time."
@@ -512,7 +500,7 @@ msgid ""
 "run at the selected minute within each interval."
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:78
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:86
 msgid "Missing recommended package: '%s'"
 msgstr ""
 
@@ -524,11 +512,11 @@ msgstr ""
 msgid "Monthly"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:851
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:863
 msgid "Name"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:842
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:854
 msgid "Name/URL"
 msgstr ""
 
@@ -540,15 +528,15 @@ msgstr ""
 msgid "No Ad-blocking on dnsmasq"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:152
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:154
 msgid "No HTTPS/SSL support on device"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:157
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:159
 msgid "No blocked list URLs nor blocked-domains enabled"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:474
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:437
 msgid "Not installed or not found"
 msgstr ""
 
@@ -556,12 +544,21 @@ msgstr ""
 msgid "Output Verbosity Setting"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:702
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:609
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:631
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:640
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:647
 msgid "Pause"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:697
-msgid "Pausing %s"
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:683
+msgid ""
+"Pause ad-blocking for the specified number of seconds when the Pause button "
+"is pressed."
+msgstr ""
+
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:681
+msgid "Pause time-out (in seconds)"
 msgstr ""
 
 #: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:646
@@ -580,7 +577,7 @@ msgstr ""
 msgid "Pick the dnsmasq instance(s) for ad-blocking"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:519
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:482
 msgid "Please %sdonate%s to support development of this project."
 msgstr ""
 
@@ -597,29 +594,25 @@ msgstr ""
 msgid "Please note that %s is not supported on this system."
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:61
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:69
 msgid "Processing lists"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:641
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:604
 msgid "Redownload"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:94
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:102
 msgid ""
 "Removed %s invalid domain entries from block-list (domains starting with -/./"
 "numbers or containing invalid patterns)"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:62
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:70
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:647
 msgid "Restarting"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:392
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:687
-msgid "Resync Cron"
-msgstr ""
-
 #: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:588
 msgid "Run on the selected day of month."
 msgstr ""
@@ -636,11 +629,11 @@ msgstr ""
 msgid "Run once every N hours."
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:89
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:97
 msgid "Sanity check discovered TLDs in %s"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:91
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:99
 msgid "Sanity check discovered leading dots in %s"
 msgstr ""
 
@@ -656,35 +649,35 @@ msgstr ""
 msgid "Select how often the update should run."
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:803
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:752
 msgid "Service Control"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:513
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:476
 msgid "Service Details"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:574
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:537
 msgid "Service Errors"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:444
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:407
 msgid "Service Status"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:544
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:507
 msgid "Service Warnings"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:706
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:718
 msgid "Simultaneous processing"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:816
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:828
 msgid "Size"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:826
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:838
 msgid "Size: %s"
 msgstr ""
 
@@ -692,15 +685,15 @@ msgstr ""
 msgid "Some output"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:622
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:585
 msgid "Start"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:60
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:68
 msgid "Starting"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:616
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:579
 msgid "Starting %s service"
 msgstr ""
 
@@ -708,7 +701,7 @@ msgstr ""
 msgid "Status"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:721
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:674
 msgid "Stop"
 msgstr ""
 
@@ -716,19 +709,19 @@ msgstr ""
 msgid "Stop the download if it is stalled for set number of seconds."
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:59
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:67
 msgid "Stopped"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:715
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:668
 msgid "Stopping %s service"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:725
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:737
 msgid "Store compressed cache"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:719
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:731
 msgid "Store compressed cache file on router"
 msgstr ""
 
@@ -740,42 +733,38 @@ msgstr ""
 msgid "Suppress output"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:651
-msgid "Syncing cron schedule"
-msgstr ""
-
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:127
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:129
 msgid "The %s failed to discover WAN gateway"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:80
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:88
 msgid ""
 "The WebUI application (luci-app-adblock-fast) is outdated, please update it"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:116
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:118
 msgid ""
 "The dnsmasq ipset support is enabled, but dnsmasq is either not installed or "
 "installed dnsmasq does not support ipset"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:119
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:121
 msgid ""
 "The dnsmasq ipset support is enabled, but ipset is either not installed or "
 "installed ipset does not support '%s' type"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:122
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:124
 msgid ""
 "The dnsmasq nft set support is enabled, but dnsmasq is either not installed "
 "or installed dnsmasq does not support nft set"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:125
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:127
 msgid "The dnsmasq nft sets support is enabled, but nft is not installed"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:83
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:91
 msgid "The principal package (adblock-fast) is outdated, please update it"
 msgstr ""
 
@@ -787,7 +776,7 @@ msgstr ""
 msgid "Tuesday"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:855
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:867
 msgid "URL"
 msgstr ""
 
@@ -796,7 +785,7 @@ msgid ""
 "URL to the external dnsmasq config file, see the %sREADME%s for details."
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:809
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:821
 msgid "URLs to file(s) containing lists to be allowed or blocked."
 msgstr ""
 
@@ -804,13 +793,13 @@ msgstr ""
 msgid "Unable to retrieve %s status"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:820
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:847
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:832
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:859
 #: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/status/include/70_adblock-fast.js:50
 msgid "Unknown"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:584
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:547
 msgid "Unknown error"
 msgstr ""
 
@@ -818,7 +807,7 @@ msgstr ""
 msgid "Unknown message"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:554
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:517
 msgid "Unknown warning"
 msgstr ""
 
@@ -838,12 +827,12 @@ msgstr ""
 msgid "Use ad-blocking on the dnsmasq instance(s)"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:76
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:84
 msgid ""
 "Use of external dnsmasq config file detected, please set '%s' option to '%s'"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:712
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:724
 msgid "Use simultaneous processing"
 msgstr ""
 
@@ -855,15 +844,15 @@ msgstr ""
 msgid "Version"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:447
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:410
 msgid "Version %s"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:67
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:75
 msgid "Waiting for trigger (on_boot)"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:68
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:76
 msgid "Waiting for trigger (on_start)"
 msgstr ""
 
@@ -907,19 +896,19 @@ msgstr ""
 msgid "dnsmasq servers file"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:161
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:163
 msgid "failed to create backup file %s"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:164
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:166
 msgid "failed to create final block-list %s"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:162
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:164
 msgid "failed to delete data file %s"
 msgstr ""
 
-#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:163
+#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:165
 msgid "failed to restore backup file %s"
 msgstr ""
 
git clone https://git.99rst.org/PROJECT