From 4f1c65a616cc3bf2b3a3fa0f2553a53bbcd821fa Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Tue, 8 Sep 2026 22:53:22 +0800 Subject: [PATCH] fix: keep manual favorites when no nav visit data; external-only visits don't trigger reorder - Favorites section only rebuilds from Top-4 by visit frequency once real navigation hosts have visit data; otherwise manual Gitea/HomeAgent/AgentMail items are preserved untouched - Pure external-site history (wikipedia etc.) no longer causes favorites to borrow tiles from other sections --- history-server/main.go | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/history-server/main.go b/history-server/main.go index 4bc33bc..ba14618 100644 --- a/history-server/main.go +++ b/history-server/main.go @@ -301,6 +301,7 @@ func rebuildDashySections() { // 收集所有导航项(排除历史访问 section 本身),带 host 访问量 hv := hostVisits() + type cand struct { nav dashyNav host string @@ -346,6 +347,36 @@ func rebuildDashySections() { return candidates[i].visits > candidates[j].visits }) + // 导航项若均无访问记录(首次/纯外站访问),保持常用服务原手动配置不动 + { + anyNav := false + for _, c := range candidates { + if c.visits > 0 { + anyNav = true + break + } + } + if !anyNav { + for _, si := range secs { + if si.name == histName { + si.raw["items"] = []any{map[string]any{ + "title": "\u7b49\u5f85\u6d4f\u89c8\u5668\u63d2\u4ef6\u63a5\u5165...", + "description": "\u540c\u6b65\u540e\u6309\u603b\u8bbf\u95ee\u9891\u6b21\u81ea\u52a8\u6392\u5e8f", + "icon": "fas fa-info-circle", "url": "/admin/", + }} + } + } + out, err := yaml.Marshal(cfg) + if err == nil { + tmp := confFile + ".sort-tmp" + if err2 := os.WriteFile(tmp, out, 0644); err2 == nil { + os.Rename(tmp, confFile) + } + } + return + } + } + // host 去重:同 host 只保留访问最高的一条导航项 // (rebuild 前常用服务可能已有上一轮写入的副本,与其它 section 同 host 会重复) {