feat(t215): 每個知識庫顯示是否要更新,落後就給 install 頁連結

leo 08-08:「在每個知識庫會看到其他需要更新的,在每個知識庫上顯示是否要更新,
如果要,加開啓 install 頁的連結」。小幫手以前只提示自己(daemon 本體)要不要
更新,使用者連著多個雲端知識庫時完全看不出哪一個落後。

- collector/cloud_latest.go:EvalCloudUpdate + FetchLatestCloudRelease(30 分鐘節流),
  判準與 portal 版本卡 loadVersion() 同一套(bundle_version vs install.arcrun.dev/
  api/latest 的 release,semver 逐段整數比較),不是 t103 minCloudRelease 那把相容
  底線,避免同一個知識庫在兩處得到相反答案。
- direct.go/sync_status.go:每輪同步順帶算好每個帳號的 CloudUpdateKnown/
  CloudUpdateStale/CloudLatest,寫進 status.json。
- app.go:GetState 把這些欄位接進 UIAccount,供前端讀。
- main.js/style.css:首頁新增「知識庫版本」卡(每庫一行,落後才出現「前往安裝頁
  更新」按鈕,帶 email 預填);側邊欄庫名旁加警示點;各庫頁也顯示同一行版本狀態。
  查不到版本(連不上/latest 暫時查不到)一律誠實說「查不到」,不當成「已最新」。

已用假 window.go 在瀏覽器實測四種情境(落後/已最新/連不上/查得到 mine 但查不到
latest)+零知識庫的 onboarding 頁+深色模式,畫面與按鈕行為皆符合預期。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-09 00:21:40 +08:00
parent 2bbfa453d3
commit 779a1b801e
8 changed files with 328 additions and 10 deletions
+18
View File
@@ -247,3 +247,21 @@ input[type=text], input[type=password] {
}
.breaklist li:first-child { border-top: 0; }
.breaklist li span:last-child { color: rgba(var(--ink-rgb), .55); white-space: nowrap; }
/* t2152026-08-08leo:「在每個知識庫上顯示是否要更新」)——首頁「知識庫版本」卡、
各庫頁版本列、側邊欄警示點,三處共用同一組顏色:落後=--err(同 .err 那個紅),
不是額外發明一個「警告色」。 */
.kblist { display: flex; flex-direction: column; gap: 2px; margin-top: 10px; }
.kbrow {
display: flex; align-items: center; justify-content: space-between; gap: 12px;
padding: 9px 0; border-top: 1px solid rgba(var(--ink-rgb), .08);
}
.kbrow:first-child { border-top: 0; }
.kbrow .nm { font-size: 14px; font-weight: 600; flex: none; }
.kbrow .right { display: flex; align-items: center; gap: 10px; font-size: 13px; }
.kbver { margin-bottom: 14px; font-size: 13.5px; display: flex; align-items: center; gap: 10px; }
.warn { color: var(--err); font-size: 13px; }
#side .nav .dot.warn {
width: 7px; height: 7px; border-radius: 50%; flex: none;
background: var(--err); margin-left: 4px;
}