diff --git a/docker/Makefile b/docker/Makefile index b9e03787..aafd5709 100644 --- a/docker/Makefile +++ b/docker/Makefile @@ -1,12 +1,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=docker -PKG_VERSION:=29.9.0-rc.2 +PKG_VERSION:=29.9.0 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/docker/cli/tar.gz/v$(PKG_VERSION)? -PKG_HASH:=309a75127705c6f7b9a1b9430b11cee77ccf812b966a8c8c95cd49aa6a0b46aa +PKG_HASH:=853af65a119a538d7402515ad8d8f907effc5abe805b0dd6631ad4b2ecf26d5b PKG_BUILD_DIR:=$(BUILD_DIR)/cli-$(PKG_VERSION) PKG_GIT_SHORT_COMMIT:=$(shell $(CURDIR)/git-short-commit.sh 'github.com/docker/cli' 'v$(PKG_VERSION)' '$(TMP_DIR)/git-short-commit/$(PKG_NAME)-$(PKG_VERSION)') diff --git a/dockerd/Makefile b/dockerd/Makefile index b9facd0d..fa3cc0d9 100644 --- a/dockerd/Makefile +++ b/dockerd/Makefile @@ -1,7 +1,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=dockerd -PKG_VERSION:=29.8.2 +PKG_VERSION:=29.9.0 PKG_RELEASE:=1 PKG_LICENSE:=Apache-2.0 PKG_LICENSE_FILES:=LICENSE @@ -10,7 +10,7 @@ PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_GIT_URL:=github.com/moby/moby PKG_GIT_REF:=docker-v$(PKG_VERSION) PKG_SOURCE_URL:=https://codeload.$(PKG_GIT_URL)/tar.gz/$(PKG_GIT_REF)? -PKG_HASH:=5ed520023fe6600579e5c910733814a5ddb7100db41bc3672682a5b50146f6bd +PKG_HASH:=ee76bfc375c4e498e2405a26b2b0792eb3dd999a96b9f521af16989c3b95e9ac PKG_GIT_SHORT_COMMIT:=$(shell $(CURDIR)/git-short-commit.sh '$(PKG_GIT_URL)' '$(PKG_GIT_REF)' '$(TMP_DIR)/git-short-commit/$(PKG_NAME)-$(PKG_VERSION)') PKG_MAINTAINER:=Gerard Ryan diff --git a/honk/Makefile b/honk/Makefile index 939d233c..39b4ad8f 100644 --- a/honk/Makefile +++ b/honk/Makefile @@ -3,17 +3,17 @@ include $(TOPDIR)/rules.mk PKG_NAME:=honk -PKG_VERSION:=2026.10.9_pre2 +PKG_VERSION:=2026.10.9_pre3 PKG_RELEASE:=1 # Raw upstream release tag. It keeps the dots in qualifiers (e.g. v0.0.1.beta.49) # because that is what the GitHub release asset name uses. -HONK_RELEASE_TAG:=debug.2026.10.9.native-api.2 +HONK_RELEASE_TAG:=debug.2026.10.9.native-api.3 HONK_ASSET_TAG:=debug # SHA256 of each release tarball, kept in sync by scripts/update_honk_version.sh. -HONK_HASH_X86_64:=d46eecc460ad9f9fdfad30b80828e4b64ec9f94bbcabff942b8fe68d3793f9b2 -HONK_HASH_AARCH64:=b706100f6a9ba9879bf2c1e018f64072ebe66f128f8dcb8b8a11d803eefe8174 +HONK_HASH_X86_64:=179dac725195f04899ae871b9fbcf47deec4b99f6b30c539296d31fdcd9a8c2e +HONK_HASH_AARCH64:=6bcf738b8c618d9c87a412fa3dbb976e041349f6614ebd1ea2c7044ede3a4d48 PKG_LICENSE:=AGPL-3.0-only PKG_LICENSE_FILE:=LICENSE diff --git a/honk/files/config.dae b/honk/files/config.dae index 0e58a5c2..159259b8 100644 --- a/honk/files/config.dae +++ b/honk/files/config.dae @@ -11,6 +11,7 @@ global { lan_interface: br-lan wan_interface: auto auto_config_kernel_parameter: true + disable_waiting_network: false data_dir: '/etc/honk' log_file: '/var/log/honk/honk.log' store_subscribe: true diff --git a/luci-app-clashoo/Makefile b/luci-app-clashoo/Makefile index 2e0ed92d..7fc42f44 100644 --- a/luci-app-clashoo/Makefile +++ b/luci-app-clashoo/Makefile @@ -13,7 +13,7 @@ define Package/luci-app-clashoo CATEGORY:=LuCI SUBMENU:=3. Applications TITLE:=LuCI app for Clashoo - DEPENDS:=+luci-base +clashoo + DEPENDS:=+luci-base +clashoo +luci-i18n-clashoo-zh-cn PKGARCH:=all MAINTAINER:=kenzok8 endef diff --git a/luci-app-clashoo/htdocs/luci-static/resources/view/clashoo/overview.js b/luci-app-clashoo/htdocs/luci-static/resources/view/clashoo/overview.js index a0bf9cf5..f3673013 100644 --- a/luci-app-clashoo/htdocs/luci-static/resources/view/clashoo/overview.js +++ b/luci-app-clashoo/htdocs/luci-static/resources/view/clashoo/overview.js @@ -247,7 +247,7 @@ function clKernelUnlock() { return view.extend({ _busy: false, - _op: null, /* 'start' | 'stop' | 'restart' | null */ + _op: null, /* 'start' | 'stop' | 'restart' | 'reload' | null */ _opTimers: null, /* array of setTimeout IDs for cleanup */ _accessRefreshing: false, _coreSwitchBusy: false, @@ -788,7 +788,29 @@ return view.extend({ if (disabled) return; return running ? self._stop() : self._start(); } - }, [E('span', { 'class': 'cl-service-knob' })]) + }, [E('span', { 'class': 'cl-service-knob' })]), + E('button', { + type: 'button', + 'class': 'btn cbi-button-action cl-btn-sm', + title: _("Restart Service"), + disabled: (disabled || !running) ? '' : null, + click: function (ev) { + ev.preventDefault(); + if (disabled || !running) return; + return self._restart(); + } + }, _("Restart")), + E('button', { + type: 'button', + 'class': 'btn cbi-button-action cl-btn-sm', + title: _("Reload Service"), + disabled: (disabled || !running) ? '' : null, + click: function (ev) { + ev.preventDefault(); + if (disabled || !running) return; + return self._reload(); + } + }, _("Reload")) ]); }, @@ -1940,7 +1962,7 @@ return view.extend({ // preflight: refuse start when no profile selected. // backend select_config also defends but toast is slow, UI would flash. - if (opKey === 'start' || opKey === 'restart') { + if (opKey === 'start' || opKey === 'restart' || opKey === 'reload') { var st0 = this._lastSt || {}; var hasConfig = !!(st0.config || st0.conf_path); if (!hasConfig) { @@ -1962,7 +1984,7 @@ return view.extend({ btn.setAttribute('aria-pressed', newRunning ? 'true' : 'false'); btn.className = 'cl-service-switch' + (newRunning ? ' is-on' : ' is-off'); } - self._showOpMsg(opKey === 'stop' ? _("Stopping…") : _("Starting…")); + self._showOpMsg(opKey === 'stop' ? _("Stopping…") : opKey === 'reload' ? _("Reloading…") : _("Starting…")); } var maxWait = opKey === 'stop' ? 15000 : 35000; @@ -2002,6 +2024,7 @@ return view.extend({ _start: function () { return this._svc(function () { return clashoo.start(); }, 'start'); }, _stop: function () { return this._svc(function () { return clashoo.stop(); }, 'stop'); }, _restart: function () { return this._svc(function () { return clashoo.restart(); }, 'restart'); }, + _reload: function () { return this._svc(function () { return clashoo.reload(); }, 'reload'); }, _updSubs: function (ev) { var btn = ev && ev.target; diff --git a/luci-app-clashoo/po/zh-cn/clashoo.po b/luci-app-clashoo/po/zh-cn/clashoo.po index 20a4e4bf..6cc35a92 100644 --- a/luci-app-clashoo/po/zh-cn/clashoo.po +++ b/luci-app-clashoo/po/zh-cn/clashoo.po @@ -1059,12 +1059,27 @@ msgstr "推荐留空" msgid "Redirect Port" msgstr "Redirect 端口" +msgid "Reload" +msgstr "重新加载" + +msgid "Reload Service" +msgstr "重新加载服务" + +msgid "Reloading…" +msgstr "重新加载中…" + msgid "Refresh" msgstr "刷新" msgid "Refresh Access Check" msgstr "刷新访问检查" +msgid "Restart" +msgstr "重启" + +msgid "Restart Service" +msgstr "重启服务" + msgid "Regular domains use overseas DNS only and follow proxy rules; DoT/DoQ is blocked. Takes effect after restart.
" msgstr "普通域名只走境外 DNS 并遵守代理规则,阻断 DoT/DoQ。重启生效。
" diff --git a/luci-app-clashoo/root/usr/share/rpcd/ucode/luci.clashoo b/luci-app-clashoo/root/usr/share/rpcd/ucode/luci.clashoo index 06caa060..38dbaa7b 100755 --- a/luci-app-clashoo/root/usr/share/rpcd/ucode/luci.clashoo +++ b/luci-app-clashoo/root/usr/share/rpcd/ucode/luci.clashoo @@ -2145,8 +2145,16 @@ call: function() { let c = cursor(); c.load('clashoo'); sync_legacy_core_fields(c); +let enabled = c.get('clashoo', 'config', 'enable') == '1'; +let conf_path = c.get('clashoo', 'config', 'use_config') || ''; c.commit('clashoo'); let rc = system('uci commit clashoo >/dev/null 2>&1'); +// Issue #67: auto-start on first configuration. If the service is enabled +// but not running (fresh install where the user configured settings but the +// service never started), start it now so no reboot or manual Startup-page +// restart is needed. Fire-and-forget like the other service operations. +if (rc == 0 && enabled && conf_path != '' && !is_running()) + system('sh /usr/share/clashoo/rpc/rpc_async.sh start >/dev/null 2>&1'); return { success: rc === 0 }; } }, diff --git a/luci-app-oxidns/README.en.md b/luci-app-oxidns/README.en.md index 25b48c73..58d4b453 100644 --- a/luci-app-oxidns/README.en.md +++ b/luci-app-oxidns/README.en.md @@ -4,7 +4,7 @@ Language: [中文](./README.md) | English `luci-app-oxidns` is the LuCI management app for OxiDNS on OpenWrt. After installation, LuCI adds `Services -> OxiDNS` pages for installing the OxiDNS core binary, managing the OpenWrt service, editing configuration, and viewing logs. -This app does not embed the OxiDNS core binary and no longer manages a separate OpenWrt `oxidns` runtime package. LuCI downloads the official OxiDNS GitHub Release archive, verifies the SHA256 digest, and installs the binary as an OpenWrt service. Future OxiDNS core upgrades are handled by OxiDNS itself; LuCI does not provide core-upgrade or LuCI-app self-upgrade buttons. +This repository provides only a simple implementation for installing and managing OxiDNS. Other developers are welcome to extend it or build alternative LuCI plugins that cover the existing functionality and offer more features. ## What To Install diff --git a/luci-app-oxidns/README.md b/luci-app-oxidns/README.md index d743c358..669d1599 100644 --- a/luci-app-oxidns/README.md +++ b/luci-app-oxidns/README.md @@ -4,7 +4,7 @@ `luci-app-oxidns` 是 OxiDNS 的 OpenWrt / LuCI 管理插件。安装后,LuCI 会出现 `Services -> OxiDNS` 页面,用来安装 OxiDNS 内核二进制、管理 OpenWrt 服务、编辑配置和查看日志。 -这个插件不内置 OxiDNS 内核,也不再管理独立的 OpenWrt `oxidns` 包。LuCI 负责从 OxiDNS 官方 GitHub Releases 下载 release archive,校验 SHA256 digest,并把二进制安装为 OpenWrt 服务。后续 OxiDNS 内核升级由 OxiDNS 自带的升级功能完成,LuCI 不提供内核升级或 LuCI app 自升级按钮。 +本仓库仅提供用于安装和管理 OxiDNS 的简单实现。欢迎其他开发者在此基础上扩展,或重新实现覆盖现有功能、提供更多功能的 LuCI 插件。 ## 你需要安装什么