全站外链系统 v1

今天做了什么

  • $grill-me 九问 + $brainstorming 定稿:独立 /links 页、只做大站(github.com 即 GitHub 首页)、site-data/links 单源、布局 C(常去栏 + 分类列表)、内嵌 A(页头细条)、导航加入口、首发 23 条大站。
  • 扩展 site/scripts/generate-data.mjs 增加 links 段 → 生成 site/src/data/links.ts;新建 site-data/links/ 23 条外链(AI 对话与创作 5 / 模型与开源 3 / 开发与文档 5 / 部署 2 / 学习与资讯 5 / 站点生态 3)。
  • 新建 /links 页面:常去 6 块(pinned)+ 6 分类紧凑列表,全部新标签打开。
  • 新建 RelatedLinks.astro 页头细条组件,接入 skills/uses/stars/projects 四个页面;Base.astro 导航加「外链」(收藏后)。
  • 构建 64 页通过;Playwright(系统 Edge)+ 冒烟断言:/links 桌面 6+23 条目、四模块外链条计数、移动端无溢出,修了一处移动端溢出。

过程与坑

  • frontmatter 解析器正则 ^--- 不认 UTF-8 BOM:PowerShell 5.1 的 Set-Content -Encoding utf8 会写 BOM,导致 generate-data.mjs 报「缺少 frontmatter 字段」。改用 .NET WriteAllText + UTF8Encoding($false) 无 BOM 写入(本项目约定:新数据文件一律无 BOM + LF)。
  • PS 5.1 的 String.Replace 没有带 StringComparison 的三参重载,批量插 import 时静默失败(组件标签已插但 import 缺失),复查页面头部时发现并补上。
  • 视觉伴侣(brainstorm server)在 Codex 环境被回收:用 node_repl 持久内核 spawn detached 进程解决;Playwright 无内置浏览器,改用系统 Edge(executablePath)。
  • /links 移动端 13px 横向溢出:.link-host 的 nowrap + 长域名(jimeng.jianying.com)导致,媒体查询里允许换行并让 summary 独占一行。

下一步

  • push 后线上验证 /links 与四模块外链条。
  • 增删外链直接编辑 site-data/links/*.md 即可(Obsidian 可编辑、push 即发布)。
  • 可选:/links 加 sticky 分类锚点导航(页面较长时快速定位);把「常去」数提到 8-10 个。