diff --git a/services/update_service.py b/services/update_service.py index 3bbb2e6..2a197a5 100644 --- a/services/update_service.py +++ b/services/update_service.py @@ -77,7 +77,8 @@ class UpdateService: self._task: Optional[asyncio.Task] = None self._running = False self.status: dict = {"state": "idle", "progress": 0, "error": "", - "last_check": 0, "update_available": False} + "last_check": 0, "checked": False, "update_available": False, + "current_version": "", "latest_version": ""} # 从配置读取分支和仓库地址 try: init = self.sm.get_service("init") @@ -109,6 +110,7 @@ class UpdateService: loop = asyncio.get_event_loop() data = await loop.run_in_executor(None, self._sync_fetch_json, self.version_url) self.status["last_check"] = time.time() + self.status["checked"] = True if not data: return remote_fw = data.get("framework", {}) diff --git a/static/web_panel/pages/settings.html b/static/web_panel/pages/settings.html index 5d72ca1..7ed21c2 100644 --- a/static/web_panel/pages/settings.html +++ b/static/web_panel/pages/settings.html @@ -93,12 +93,13 @@ var r = await fetch("./api/updates"), d = await r.json(); document.getElementById("ver-current").textContent = d.current_version || d.latest_version || "?"; var badge = document.getElementById("ver-badge"); + var notesHtml = ""; if (d.update_available) { badge.textContent = "↻ " + d.latest_version + " 可用"; badge.style.background = "var(--success,#4caf50)"; badge.style.color = "#fff"; document.getElementById("btn-apply").style.display = "inline-block"; - document.getElementById("update-notes").innerHTML = d.latest_version ? "最新版本: "+esc(d.latest_version)+"" : ""; + notesHtml = d.latest_version ? "最新版本: "+esc(d.latest_version)+"" : ""; } else if (d.checked) { badge.textContent = "✓ 已是最新"; badge.style.background = "var(--md-sys-color-surface-container-lowest)"; @@ -108,8 +109,9 @@ badge.textContent = "⏳ 等待检查..."; } if (d.last_check) { - document.getElementById("update-notes").innerHTML += " 上次检查: "+new Date(d.last_check*1000).toLocaleString()+""; + notesHtml += (notesHtml ? " | " : "") + "上次检查: "+new Date(d.last_check*1000).toLocaleString(); } + document.getElementById("update-notes").innerHTML = notesHtml; } catch(e) {} }