新增功能:

- 设置页新增「跳过检查更新」开关(settings.json 的 skip_update_check,默认关):开启后跳过 PAC 最新版拉取与程序版本检查且不输出相关日志;节点配置更新与客户端认证不受影响
This commit is contained in:
RoyirinRosmontis
2026-08-24 12:16:55 +08:00
parent 4afb810078
commit 2652213a10
+29 -1
View File
@@ -601,6 +601,18 @@ def _set_update_via_proxy(enabled):
_settings_save(data) _settings_save(data)
log(f"更新方式已设为: {'走代理隧道' if enabled else '直连仓库'}") log(f"更新方式已设为: {'走代理隧道' if enabled else '直连仓库'}")
def _skip_update_check():
"""是否跳过 PAC 数据与程序版本检查(设置项,默认关)。
不影响节点配置更新与客户端认证。"""
return bool(_settings_load().get("skip_update_check", False))
def _set_skip_update_check(enabled):
"""写回「跳过检查更新」设置(立即生效)。"""
data = _settings_load()
data["skip_update_check"] = bool(enabled)
_settings_save(data)
log(f"检查更新已{'跳过' if enabled else '恢复'}(PAC 与程序版本;节点更新不受影响)")
def _ver_tuple(v): def _ver_tuple(v):
"""版本号转数字元组:'v0.1.0' -> (0, 1, 0),无法解析的段按 0 处理。""" """版本号转数字元组:'v0.1.0' -> (0, 1, 0),无法解析的段按 0 处理。"""
parts = [] parts = []
@@ -821,6 +833,8 @@ def _user_init_remote(base_url=None):
直接拉取两个数据文件(内含 version/date),按版本比对后更新;失败用本地副本。 直接拉取两个数据文件(内含 version/date),按版本比对后更新;失败用本地副本。
节点配置的拉取走登录框(nodes_url 需 nginx 认证,见 LoginDialog)。 节点配置的拉取走登录框(nodes_url 需 nginx 认证,见 LoginDialog)。
""" """
if _skip_update_check():
return # 设置跳过:不拉取也不打日志
base = (base_url or str(_config_val("pac_base_url", "") or "")).strip().rstrip("/") base = (base_url or str(_config_val("pac_base_url", "") or "")).strip().rstrip("/")
if not base: if not base:
log("未配置 PAC 更新源(config.json 的 pac_base_url),使用本地数据") log("未配置 PAC 更新源(config.json 的 pac_base_url),使用本地数据")
@@ -1401,7 +1415,7 @@ class SettingsDialog(QDialog):
super().__init__(parent) super().__init__(parent)
self.setWindowTitle("设置") self.setWindowTitle("设置")
self.setWindowIcon(load_icon()) self.setWindowIcon(load_icon())
self.setFixedSize(300, 260) self.setFixedSize(300, 290)
self.setStyleSheet(f""" self.setStyleSheet(f"""
QDialog {{ background-color: {C_BG}; }} QDialog {{ background-color: {C_BG}; }}
QLabel {{ color: {C_TEXT}; font-family: "Microsoft YaHei", "Segoe UI", sans-serif; font-size: 12px; }} QLabel {{ color: {C_TEXT}; font-family: "Microsoft YaHei", "Segoe UI", sans-serif; font-size: 12px; }}
@@ -1456,6 +1470,17 @@ class SettingsDialog(QDialog):
upd_row.addWidget(self.cb_update_proxy) upd_row.addWidget(self.cb_update_proxy)
layout.addLayout(upd_row) layout.addLayout(upd_row)
# 跳过检查更新:左文字 + 右开关(默认关;不影响节点更新与认证)
skip_row = QHBoxLayout()
skip_lab = QLabel("跳过检查更新")
skip_lab.setStyleSheet(f"color: {C_SUBTEXT}; font-size: 12px;")
skip_row.addWidget(skip_lab)
skip_row.addStretch()
self.cb_skip_update = ToggleSwitch(checked=_skip_update_check())
self.cb_skip_update.setToolTip("跳过 PAC 数据与程序版本检查(节点更新与登录不受影响),被跳过的检查不输出日志")
skip_row.addWidget(self.cb_skip_update)
layout.addLayout(skip_row)
layout.addStretch() layout.addStretch()
# 底部:保存更改 + 退出登录 并排 # 底部:保存更改 + 退出登录 并排
@@ -1498,6 +1523,7 @@ class SettingsDialog(QDialog):
return return
_set_local_port(port) _set_local_port(port)
_set_update_via_proxy(bool(self.cb_update_proxy.isChecked())) _set_update_via_proxy(bool(self.cb_update_proxy.isChecked()))
_set_skip_update_check(bool(self.cb_skip_update.isChecked()))
self.ed_port.setText(str(port)) self.ed_port.setText(str(port))
self.lb_hint.setText(f"已保存: {port},下次开启代理生效") self.lb_hint.setText(f"已保存: {port},下次开启代理生效")
self.lb_hint.setStyleSheet(f"color: {C_GREEN}; font-size: 11px;") self.lb_hint.setStyleSheet(f"color: {C_GREEN}; font-size: 11px;")
@@ -2079,6 +2105,8 @@ class MainWindow(QWidget):
self._latest_version = "" self._latest_version = ""
self._download_url = "" self._download_url = ""
try: try:
if _skip_update_check():
return # 设置跳过:不检查也不打日志
import json, urllib.request import json, urllib.request
# 基于 Gitea 仓库 releases API 检查更新;config.json 无 update_url 时用默认地址 # 基于 Gitea 仓库 releases API 检查更新;config.json 无 update_url 时用默认地址
url = str(_config_val("update_url", "") or "").strip() url = str(_config_val("update_url", "") or "").strip()