From be9e0ef719bf1ea2b974c0658440180b095f736a Mon Sep 17 00:00:00 2001
From: Youzini-afk <13153778771cx@gmail.com>
Date: Wed, 15 Apr 2026 21:32:46 +0800
Subject: [PATCH] refactor: move persistence repair actions into actions tab
---
ui/panel.html | 57 +++++++++++++++++++++++++++++----------------------
ui/panel.js | 51 +++++++++++++++++++++++++--------------------
2 files changed, 61 insertions(+), 47 deletions(-)
diff --git a/ui/panel.html b/ui/panel.html
index f90e99a..5381d73 100644
--- a/ui/panel.html
+++ b/ui/panel.html
@@ -252,31 +252,6 @@
—
-
-
-
-
-
-
-
-
-
-
@@ -488,6 +463,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ui/panel.js b/ui/panel.js
index cef2fd0..df7b2f2 100644
--- a/ui/panel.js
+++ b/ui/panel.js
@@ -11750,12 +11750,15 @@ function _refreshPersistenceRepairUi(
loadInfo = _getGraphPersistenceSnapshot(),
batchStatus = _getLatestBatchStatusSnapshot(),
) {
- const row = document.getElementById("bme-persist-repair-row");
const help = document.getElementById("bme-persist-repair-help");
+ const lukerGroup = document.getElementById("bme-luker-sidecar-group");
+ const actionHelp = document.getElementById("bme-actions-persist-repair-help");
const lukerCacheBtn = document.getElementById("bme-act-rebuild-luker-cache");
const lukerRepairBtn = document.getElementById("bme-act-repair-luker-sidecar");
const lukerCompactBtn = document.getElementById("bme-act-compact-luker-sidecar");
- if (!row || !help) return;
+ const retryBtn = document.getElementById("bme-act-retry-persist");
+ const probeBtn = document.getElementById("bme-act-probe-graph-load");
+ if (!help) return;
const persistence = batchStatus?.persistence || null;
const accepted = _isPersistenceRevisionAccepted(persistence, loadInfo);
@@ -11764,41 +11767,45 @@ function _refreshPersistenceRepairUi(
Boolean(loadInfo?.persistMismatchReason) ||
(_hasMeaningfulPersistenceRecord(persistence) && !accepted);
- row.hidden = !shouldShow;
help.hidden = !shouldShow;
const isLuker = String(loadInfo?.hostProfile || "") === "luker";
+ if (lukerGroup) lukerGroup.hidden = !shouldShow;
+ if (retryBtn) retryBtn.hidden = false;
+ if (probeBtn) probeBtn.hidden = false;
if (lukerCacheBtn) lukerCacheBtn.hidden = !isLuker;
if (lukerRepairBtn) lukerRepairBtn.hidden = !isLuker;
if (lukerCompactBtn) lukerCompactBtn.hidden = !isLuker;
if (!shouldShow) {
help.textContent = "";
+ if (actionHelp) actionHelp.textContent = "";
return;
}
+ let helpText = "";
if (loadInfo?.pendingPersist === true) {
- const baseMessage =
+ helpText =
isLuker
- ? "最近一批提取已经完成,但 Luker manifest 还没确认。先试“重试持久化”,如果仍未确认,再试“修复主 Sidecar”或“重建本地缓存”。"
+ ? "最近一批提取已经完成,但 Luker manifest 还没确认。先试“重试持久化”,如果仍未确认,再到“操作”页的 Luker Sidecar 区域做“修复主 Sidecar”或“重建本地缓存”。"
: "最近一批提取已经完成,但正式写回还没确认。先试“重试持久化”,如果状态没变化,再试“重新探测图谱”。";
- help.textContent = loadInfo?.indexedDbLastError
- ? `${baseMessage}\n本地错误:${loadInfo.indexedDbLastError}`
- : baseMessage;
- return;
+ if (loadInfo?.indexedDbLastError) {
+ helpText = `${helpText}\n本地错误:${loadInfo.indexedDbLastError}`;
+ }
+ } else if (loadInfo?.persistMismatchReason) {
+ helpText = _formatPersistMismatchHelp(loadInfo.persistMismatchReason);
+ } else {
+ helpText =
+ persistence?.recoverable === true
+ ? isLuker
+ ? "最近一批已经捕获了恢复锚点,但 Luker 主 sidecar 还没确认。可以先重试持久化;必要时再到“操作”页的持久化修复区域执行更深修复。"
+ : "最近一批已经捕获了恢复锚点,但还没有进入正式 accepted 存储。可以先重试持久化;如果仍未确认,再重新探测图谱。"
+ : isLuker
+ ? "最近一批持久化没有被 Luker manifest 接受。可以先重试持久化;如果主 sidecar 与本地缓存脱节,再到“操作”页的持久化修复区域执行更深修复。"
+ : "最近一批持久化没有被接受。可以先重试持久化;如果宿主延迟加载了本地存储,再重新探测图谱。";
}
-
- if (loadInfo?.persistMismatchReason) {
- help.textContent = _formatPersistMismatchHelp(loadInfo.persistMismatchReason);
- return;
+ help.textContent = helpText;
+ if (actionHelp) {
+ actionHelp.textContent = helpText;
}
-
- help.textContent =
- persistence?.recoverable === true
- ? isLuker
- ? "最近一批已经捕获了恢复锚点,但 Luker 主 sidecar 还没确认。可以先重试持久化;必要时再修复主 Sidecar或重建本地缓存。"
- : "最近一批已经捕获了恢复锚点,但还没有进入正式 accepted 存储。可以先重试持久化;如果仍未确认,再重新探测图谱。"
- : isLuker
- ? "最近一批持久化没有被 Luker manifest 接受。可以先重试持久化;如果主 sidecar 与本地缓存脱节,再修复主 Sidecar或重建本地缓存。"
- : "最近一批持久化没有被接受。可以先重试持久化;如果宿主延迟加载了本地存储,再重新探测图谱。";
}
function _canRenderGraphData(loadInfo = _getGraphPersistenceSnapshot()) {