Files
blog/.spec/specs/2026-11-02_blog-5i-fonts-polish/tasks.md
T
wait4xandGLM-5.3 029633f00f chore(spec): 5i 勾选 T6/T8
Spec: 2026-11-02_blog-5i-fonts-polish

Co-authored-by: GLM-5.3
2026-11-03 11:24:29 +08:00

4.4 KiB
Raw Blame History

Phase 5i:字体加载根治、交互缺陷修复与书架/开源页再设计 - 任务拆解

使用规则

  • boundary/verify 齐备;verify 只读断言;车道工作树开发禁 git,收编由 orchestrator 统一提交
  • 构建一律 export PATH="$HOME/.local/node/bin:$PATH"(Node 26)+ pnpm astro build
  • E2E 口径:pnpm astro build → cp -a dist /tmp/dist-e2e-5i → gz-server.py 18925 /tmp/dist-e2e-5i → E2E_BASE=http://127.0.0.1:18925 node tests/e2e.mjs

阶段一:实现

  • T1 字族按需加载根治

    • claim: worker-one
    • boundary: src/layouts/BaseLayout.astro(去掉 track === 'reading' 的字体门禁,改为「本页内容实际用到的字族」驱动:构建期扫正文/页面文案里的 font-kai|font-song|font-fangsong|font-huiwen|font-kuaile|font-serif 决定注入哪几份字体 CSS;零命中时只加载 sans/mono)、src/lib/ 新增字体诉求探测工具
    • verify: grep -q "FONT_CSS\|neededFonts" src/layouts/BaseLayout.astro && E2E_BASE=http://127.0.0.1:18925 node tests/e2e.mjs 2>&1 | grep -qE "汇总: [0-9]+/[0-9]+ PASS"
  • T2 Artalk 失败误报修复

    • claim: op-artalk
    • boundary: src/components/ArtalkComments.astro(状态机重写:脚本 onerror 才是失败;artalk-lib 已存在但库未就绪时等 load 事件而非立即判失败;失败提示只在「确实未挂载且已超时」出现;mounting 在所有失败/成功路径复位)
    • verify: grep -q "onerror" src/components/ArtalkComments.astro && E2E_BASE=http://127.0.0.1:18925 node tests/e2e.mjs 2>&1 | grep -qE "汇总: [0-9]+/[0-9]+ PASS"
  • T3 瞬间评论区配色同步

    • claim: op-artalk
    • boundary: src/components/MomentComments.astro(Artalk 主题变量作用域覆盖瞬间容器 [data-artalk-panel]/mom-atk-*,复用文章页那套 --at-color-* 映射:建议抽出共享样式片段避免两份漂移)
    • verify: grep -qE "data-artalk-panel|mom-atk" src/components/MomentComments.astro && grep -q "at-color-bg" src/components/MomentComments.astro
  • T4 灯箱关闭修复 + 右侧文字可排版

    • claim: orchestrator
    • boundary: src/components/pages/GalleryPage.astro(关闭钮层级/命中区域;右侧信息栏不再拦截点击)、content/photos/*.json(caption 允许 markdown + 排版类)、必要时 src/lib/exif.ts 注释同步
    • verify: grep -q "lb-close" src/components/pages/GalleryPage.astro && E2E_BASE=http://127.0.0.1:18925 node tests/e2e.mjs 2>&1 | grep -qE "汇总: [0-9]+/[0-9]+ PASS"
  • T5 取消彩色强调次数限制

    • claim: orchestrator
    • boundary: docs/写作指南.md、docs/管理台.md、public/admin/config.yml(hint 里去掉「≤3 处」表述)、content/posts/writing-template.md + posts-en 同名(示例文章说明同步)
    • verify: ! grep -rq "一页 ≤3 处\|≤3 处/页" docs/ content/posts/writing-template.md && grep -q "彩色" docs/写作指南.md
  • T6 开源页项目墙恢复居中

    • claim: op-gitea
    • boundary: src/components/geek/ProjectWall.astro(align-items: center + text-align: center,与用户审美偏好一致)
    • verify: grep -q "align-items: center" src/components/geek/ProjectWall.astro
  • T7 书架页重做

    • claim: orchestrator(方向待用户拍板)
    • boundary: src/components/pages/BooksPage.astro、可选 content/site/books.yaml 新配置、src/i18n/ui.ts
    • verify: E2E_BASE=http://127.0.0.1:18925 node tests/e2e.mjs 2>&1 | grep -qE "汇总: [0-9]+/[0-9]+ PASS"
  • T8 README 动效图自托管与展示创新

    • claim: op-gitea
    • boundary: 新增 scripts/build-perf/fetch-readme-assets.mjs(构建期抓 typing/stats/streak/activity-graph/snake 等 SVG 到 content/.github-assets/,失败回落隐藏该块)、src/components/geek/GithubProfile.astro 或新增动效展示组件、build.sh 守卫挂载、docs 说明
    • verify: test -f scripts/build-perf/fetch-readme-assets.mjs && grep -q "github-assets" scripts/build-perf/fetch-readme-assets.mjs && python3 -c "import pathlib;p=pathlib.Path('dist/opensource/index.html').read_text();bad=[u for u in ['img.shields.io','readme-typing-svg','github-readme-stats','streak-stats','komarev'] if u in p];assert not bad,bad"
  • T9 字族扩展(款式待用户拍板)

    • claim: worker-one
    • boundary: src/styles/tokens.css、src/styles/global.css、public/admin/typography-classes.js、public/fonts/(新增字体切片)、docs/写作指南.md 字体清单
    • verify: grep -c "font-" public/admin/typography-classes.js | awk '$1>=40'