Commit Graph

9 Commits

Author SHA1 Message Date
270445a516 feat(navi): Enter 唤起搜索框 + Space 激活焦点卡片;监听器幂等守卫
- bindSearchKeys:Enter 展开搜索并聚焦(搜索框已展开/焦点在可编辑元素时放行),
  Space 激活焦点所在的 a[href]/[role=button](preventDefault 防滚动)
- bindSearchKeys/enablePeekGuard/mountViewSwitch 加幂等守卫:
  DOM 抖动场景下 HEAD 版泄漏 914 个 keydown 监听器,修复后 0
- MutationObserver 自触发加 selfWrite 计数 + 100ms 节流
- showWorkspaceBlockedModal 的 Escape 从 document 改挂 overlay
- 验收脚本:verify-search-key.js(真实按键,页面内计数断言)、
  verify-swipe.js(CDP 注入真实触摸,断言分组真的切换)
- README/AGENTS:快捷键表、手势验收方法、改样式前先确认设计基准(§9)
2026-10-02 11:24:55 +08:00
30aff4ffd8 docs: 同步「常用服务 / 历史访问」的新规则(不再限制条数、历史含站内服务)
- 常用服务:从"点击次数前 5"改为"所有被点击过的导航项(按次数降序,不限条数)"
- 历史访问:不限条数,且不再排除站内服务(相当于"最近访问");并提示可用 history.json 的 mtime 判断扩展是否还在同步
- README 三处 + AGENTS 一处的过时说明一并更新
2026-09-13 08:39:00 +08:00
ba22d3a1de docs: 记录极简页分组切换手势(README)+ 交互类改动的真实输入验证要求(AGENTS)
README 新增「极简页分组切换(点击 / 滑动 / 键盘)」:四种输入、判定阈值、clamp 边界、
只对页框内元素做动画、页签行跟随(含实测数字 1306 > 828)、防误触、以及
"接 Dashy DOM 契约、类名变化会静默失效 + data-navi-swipe 自检"这一限制。
AGENTS §5 补充:交互类改动必须用真实输入(CDP 触摸注入/真实鼠标/wheel deltaX)验证,
断言"切换真的发生"而非"监听器已挂载"——本项目实测踩过事件全到达但被自建拦截器吞掉的坑。
2026-09-12 22:10:05 +08:00
16707bdfab docs: 同步「常用服务」新机制(导航项点击计数)并补 nav-visit 接口
审计发现文档仍有旧描述,且新端点完全没写:
- README:分组注释/机制说明/系统分组警示/history-server 职责 仍写成泛指的"访问频次",
  容易让人以为常用服务来自浏览器历史。统一改为"导航项点击次数(nav-visits.json)",
  并明确两者数据源互相独立(常用服务不看浏览器历史)
- README 接口表 + AGENTS.md §4.2 补 POST /api/history/nav-visit 的可执行示例
- AGENTS.md 已知坑补一条:顺序不像"最常点的"时如何排查
2026-09-12 15:16:57 +08:00
a9845f1fba feat(nav): 常用服务改为纯访问频次 top-5,取消 Gitea 置顶
用户要求:不要固定置顶 Gitea,且每个服务都应归到准确描述其功能的分组里。

- history-server/main.go:删除「强制 Gitea/代码托管置顶」逻辑(含 isCodeHostVal
  参与的首位组装),改为按访问频次取前 5;顶部说明同步更正
- 文档:README / AGENTS.md 里"(Gitea 置顶)"的描述改为"不置顶任何服务"
- 现场分组调整:新建「代码托管」分组并把 Gitea 归入(此前它只存在于
  系统管理的 常用服务 里,等于没有功能归属)

go vet / go test 通过。
2026-09-12 12:27:35 +08:00
7c3054f14a docs: 明确 常用服务/历史访问 是系统管理分组,禁止手工加条目
用户指出:常用服务应当是按访问频次自动排序取前五,不该手工塞条目。
我部署 it-tools 时正是这么错的(把新项直接写进了 常用服务,污染频次榜)。

- AGENTS.md:写入导航条目示例前加警示(两个系统分组 + navSection 必须指向用户分组
  + 实测教训:塞进常用服务会被下次重建挤掉)
- README:配置接口章节加同样说明
现场已修正:IT Tools 移入「AI & 工具」,路由 navSection 同步改为该分组,
常用服务恢复为 4 项(系统按频次维护)。
2026-09-12 12:22:01 +08:00
e0e79c98da docs(agents): 修正 /api/item 示例(嵌套形状)+ 补 /api/item/delete(DELETE + body)
实测发现手册里两处错误(部署 it-tools 时踩到):
1. /api/item 是嵌套形状 {"sectionIndex":N,"item":{...}},
   扁平 {"name","url"} 会被拒绝并返回 "title and url required"
2. /api/item/delete 要求 **DELETE** 且 body 带 {"sectionIndex","itemIndex"},
   用 POST 会得到 "method not allowed"

同时补上"分组下标怎么取"的可执行片段,并写明:文档里的示例必须实测过,形状
不确定时先读 /api/schema 或源码里的处理函数。
2026-09-12 11:46:28 +08:00
890af22b95 fix(docs): 清除 AGENTS.md 里的真实令牌/口令/备案号(我自己写进去的),并修正端口写死
机械式 runbook 验证(照抄文档命令执行)抓到两个真问题:

1) 严重:AGENTS.md §6 脱敏自检把**真实令牌前缀、真实口令、真实备案号**当作
   "示例模式"写了进去 —— 等于把凭据与备案信息提交进仓库。
   改为特征检测(长度/字符集/格式),并排除文档自身;同时写明"不要用真实值当模式"。

2) §5 验收与 §4.3 验证把端口写死 3080:非默认端口部署(如 NAVI_ENTRY_PORT=13080)
   照抄会全部得到 000(实测)。改为 PORT=${NAVI_ENTRY_PORT:-3080} 等变量,
   并注明 NAVI_TLS=0 的部署没有跳转端口(该项 000 属预期)。

已知坑表补两条对应的现象与处理。
2026-09-12 11:17:05 +08:00
02b321ab51 docs: 拆分双版本教程 —— AGENTS.md(agent 照着做)+ README.md(人类)
用户要求:教程要能让 agent 跟着做,且区分 agent 版与人类版。

新增 AGENTS.md(可机械执行,不做叙述):
- §0 铁律 8 条(首装/升级不可混用、绝不重置门户口令、apply 后异步 reload、
  /admin/api 前缀、路由表整表替换、脱敏清单、不 sed -i 单文件挂载、部署串行)
- §1 场景判定(一条命令区分首装/升级)
- §2 首装:前置检查、三组命令示例、**逐步期望输出**、5 条失败处置表
- §3 升级:硬性前提(旧容器无 cookie 域就必须传 NAVI_COOKIE_DOMAIN)、命令、
  期望输出、收尾断言(含 navi-next 残留的处置)
- §4 配置:先取 /api/schema 清单,再给可直接照抄的六类写入命令 + **写完必须验证**
- §5 验收清单:五项探测及各自不符合时的含义
- §6 提交前脱敏清单(可执行命令 + 绝不可提交项 + "可配置项不得写死")
- §7 回滚 §8 已知坑(8 条,全部是本次实测踩过的)

README:顶部加"两种读者两个入口"导航,并在首装/部署两节加指向 AGENTS.md 的指引。
2026-09-12 10:50:02 +08:00