feat(nav): 「常用服务」与「历史访问」不再限制条目数
用户要求:这两个聚合分组应当尽最大可能显示,而不应限制条数。 - 常用服务:原先截断为 favTopN=5,现改为展示**所有被点击过**(visits>0)的导航项, 仍按访问频次降序、同频次保持原序、按 host 去重。0 次点击的不算"常用", 不塞进来(否则等同于把所有分组复制一份)。 - 历史访问:原先截断为 20 条(histItems >= 21 即 break),现改为全部非导航历史主机。 首条仍是插件安装入口,排序仍按访问次数降序。 - 注释同步更新(rebuildDashySections 的 4 条说明与容量提示)。 数据实况(改动前):nav-visits.json 有 10 个 host 有计数,其中 8 个是导航项 → 常用服务从 5 项变 8 项;history.json 去重主机仅 1 个 → 历史访问上限本就未触顶。
This commit is contained in:
@ -381,7 +381,7 @@ func extensionInstallItem() map[string]any {
|
||||
// 1. 收集除「历史访问」外所有导航项
|
||||
// 2. 按各导航 host 在 history 的累计访问统计
|
||||
// 3. 「常用服务」= 访问频次最高的 5 个导航(不置顶任何服务)
|
||||
// 4. 「历史访问」= 非导航 host 的 top 20
|
||||
// 4. 「历史访问」= 非导航 host 的全部历史(不设条数上限)
|
||||
func rebuildDashySections() {
|
||||
// 序列化重建:同步请求、启动、以及 favicon 抓完后的重试都会调到这里。
|
||||
rebuildMu.Lock()
|
||||
@ -516,14 +516,16 @@ func rebuildDashySections() {
|
||||
candidates = uniq
|
||||
}
|
||||
|
||||
// 「常用服务」= 纯访问频次前 N,**不置顶任何服务**。
|
||||
// 「常用服务」= 所有**被点击过**的导航项,按访问频次降序,**不设条数上限**。
|
||||
// 曾有一版把 Gitea/代码托管强制放第一位;用户要求取消:每个服务都应归在
|
||||
// 准确描述其功能的分组里,常用服务只做频次聚合。
|
||||
const favTopN = 5
|
||||
finalNavs := make([]dashyNav, 0, favTopN)
|
||||
// 用户要求(2026-09-13):尽最大可能显示,不要限制条目 —— 原先截断到 top5,
|
||||
// 现在凡有点击记录(visits > 0)的导航项全部展示;0 次的仍不算"常用",不塞进来
|
||||
// (否则等于把所有分组复制一份)。
|
||||
finalNavs := make([]dashyNav, 0, len(candidates))
|
||||
for _, c := range candidates {
|
||||
if len(finalNavs) >= favTopN {
|
||||
break
|
||||
if c.visits <= 0 {
|
||||
continue
|
||||
}
|
||||
finalNavs = append(finalNavs, c.nav)
|
||||
}
|
||||
@ -568,7 +570,9 @@ func rebuildDashySections() {
|
||||
sort.SliceStable(entries, func(i, j int) bool {
|
||||
return entries[i].TotalVisits > entries[j].TotalVisits
|
||||
})
|
||||
histItems := make([]any, 0, 21)
|
||||
// 用户要求:不限条数(原先截断到 20 条)。历史主机全部展示,
|
||||
// 排序仍按访问次数降序;首条固定为插件安装入口。
|
||||
histItems := make([]any, 0, len(entries)+1)
|
||||
// 首条固定为插件安装入口:未装插件(未注入 data-navi-ext)时保留,
|
||||
// 已装的浏览器由 navi.js 隐藏。
|
||||
histItems = append(histItems, extensionInstallItem())
|
||||
@ -590,9 +594,7 @@ func rebuildDashySections() {
|
||||
"description": fmt.Sprintf("%d\u6b21\u8bbf\u95ee", e.TotalVisits),
|
||||
"icon": icon, "url": e.URL,
|
||||
})
|
||||
if len(histItems) >= 21 {
|
||||
break
|
||||
}
|
||||
|
||||
}
|
||||
foundHist := false
|
||||
for _, si := range secs {
|
||||
|
||||
Reference in New Issue
Block a user