diff --git a/lite/proxy_lite.py b/lite/proxy_lite.py index 97f371e..8c2951f 100644 --- a/lite/proxy_lite.py +++ b/lite/proxy_lite.py @@ -601,6 +601,18 @@ def _set_update_via_proxy(enabled): _settings_save(data) 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): """版本号转数字元组:'v0.1.0' -> (0, 1, 0),无法解析的段按 0 处理。""" parts = [] @@ -821,6 +833,8 @@ def _user_init_remote(base_url=None): 直接拉取两个数据文件(内含 version/date),按版本比对后更新;失败用本地副本。 节点配置的拉取走登录框(nodes_url 需 nginx 认证,见 LoginDialog)。 """ + if _skip_update_check(): + return # 设置跳过:不拉取也不打日志 base = (base_url or str(_config_val("pac_base_url", "") or "")).strip().rstrip("/") if not base: log("未配置 PAC 更新源(config.json 的 pac_base_url),使用本地数据") @@ -1401,7 +1415,7 @@ class SettingsDialog(QDialog): super().__init__(parent) self.setWindowTitle("设置") self.setWindowIcon(load_icon()) - self.setFixedSize(300, 260) + self.setFixedSize(300, 290) self.setStyleSheet(f""" QDialog {{ background-color: {C_BG}; }} 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) 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() # 底部:保存更改 + 退出登录 并排 @@ -1498,6 +1523,7 @@ class SettingsDialog(QDialog): return _set_local_port(port) _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.lb_hint.setText(f"已保存: {port},下次开启代理生效") self.lb_hint.setStyleSheet(f"color: {C_GREEN}; font-size: 11px;") @@ -2079,6 +2105,8 @@ class MainWindow(QWidget): self._latest_version = "" self._download_url = "" try: + if _skip_update_check(): + return # 设置跳过:不检查也不打日志 import json, urllib.request # 基于 Gitea 仓库 releases API 检查更新;config.json 无 update_url 时用默认地址 url = str(_config_val("update_url", "") or "").strip()