feat(nav): 历史访问不再排除站内服务(用户:尽最大可能显示)

用户要求:历史访问应尽最大可能显示,不要限制条目;并确认取消"排除已是导航项的站点"。

此前该组会跳过所有已是导航项的 host(避免与其它分组重复),副作用是**站内服务的真实
访问记录永远进不来**,这一组长期只有 1 条(外加插件安装入口)。现改为:整份浏览器历史
全部收录,按访问次数降序;首条仍是插件安装入口。条数上限此前已移除。

注:常用服务的候选集本就排除「历史访问」分组自身,所以站内服务进了历史访问后
不会反过来污染常用服务的计数与排序。
This commit is contained in:
HomeDash Bot
2026-09-13 08:36:07 +08:00
parent 305eb27acc
commit bcc05bd352

View File

@ -381,7 +381,7 @@ func extensionInstallItem() map[string]any {
// 1. 收集除「历史访问」外所有导航项
// 2. 按各导航 host 在 history 的累计访问统计
// 3. 「常用服务」= 访问频次最高的 5 个导航(不置顶任何服务)
// 4. 「历史访问」= 非导航 host 的全部历史(不设条数上限)
// 4. 「历史访问」= 全部浏览器历史(含站内服务;不设条数上限)
func rebuildDashySections() {
// 序列化重建:同步请求、启动、以及 favicon 抓完后的重试都会调到这里。
rebuildMu.Lock()
@ -548,19 +548,11 @@ func rebuildDashySections() {
}
}
// 历史访问 = 非导航 host 的历史 top 20(排除已进常用/导航的)
// 历史访问 = 全部浏览器历史(不设条数上限)。
// 用户要求(2026-09-13):不再排除"已是导航项"的站点 —— 站内服务的真实访问记录
// 也要在这里出现(相当于"最近访问"列表)。此前排除是为了不与其它分组重复,
// 但结果是站内服务永远进不来,这一组几乎是空的。
if true {
navHosts := map[string]bool{}
for _, c := range candidates {
if c.host != "" {
navHosts[c.host] = true
}
}
for _, n := range finalNavs {
if pu, err := url.Parse(n.url); err == nil {
navHosts[strings.ToLower(pu.Hostname())] = true
}
}
mu.RLock()
entries := make([]*Entry, 0, len(history))
for _, e := range history {
@ -577,9 +569,6 @@ func rebuildDashySections() {
// 已装的浏览器由 navi.js 隐藏。
histItems = append(histItems, extensionInstallItem())
for _, e := range entries {
if navHosts[strings.ToLower(hostOf(e.URL))] {
continue // 已是导航项,不重复进历史
}
title := friendlyHistoryTitle(e.Title, e.URL)
icon := "fas fa-globe"
if hp := hostPortOf(e.URL); hp != "" {