chore(spec): blog-5f 任务清单格式修正
Spec: 2026-10-26_blog-5f Co-authored-by: GLM-5.3
This commit is contained in:
1 parent
c1e3d30954
commit
5d18591967
1 file changed
+35
-40
@@ -1,51 +1,46 @@
|
|||||||
# 任务清单:Phase 5f(SEO 解封与功能优化批 + 美化首批)
|
# Phase 5f:SEO 解封与功能优化批 + 美化首批 - 任务拆解
|
||||||
|
|
||||||
说明:verify 命令均在仓库根执行;车道工作树开发禁 git,收编由 orchestrator 统一提交。
|
## 使用规则
|
||||||
|
- boundary/verify 齐备;verify 只读断言;车道工作树开发禁 git,收编由 orchestrator 统一提交
|
||||||
|
|
||||||
- [ ] T1
|
## 阶段一:实现
|
||||||
- id: task_0001
|
|
||||||
- title: SEO 仓库侧三件(robots.txt + admin noindex 预案 + 用户操作单)
|
|
||||||
- boundary: public/robots.txt(新建)、docs/上线检查单.md(追加操作单节)
|
|
||||||
- verify: `test -f public/robots.txt && grep -q "Sitemap: https://wait4x.online/sitemap-index.xml" public/robots.txt && grep -q "Disallow: /admin" public/robots.txt && test -f dist/robots.txt`
|
|
||||||
|
|
||||||
- [ ] T2
|
- [ ] T1 SEO 仓库侧三件(robots.txt + admin noindex 预案 + 用户操作单)
|
||||||
- id: task_0002
|
- claim: orchestrator
|
||||||
- title: localePath 双 en 修复 + 自指 canonical + 尾斜杠归一
|
- boundary: 新建 public/robots.txt(Allow 全站;Disallow /admin/ /draft/;Sitemap 行);docs/上线检查单.md 追加「SEO 解封操作单」节(nginx snippet 行号/内部 vhost 补回清单/ESA purge+TTL+绕缓存三动作);nginx/ESA 实操归用户
|
||||||
- boundary: src/lib/locale.ts、src/layouts/BaseLayout.astro(canonical 行)、src/components/Header.astro(nav-lang href 尾斜杠)
|
- verify: `test -f public/robots.txt && grep -q "Sitemap: https://wait4x.online/sitemap-index.xml" public/robots.txt && grep -q "Disallow: /admin" public/robots.txt && grep -q "SEO 解封操作单" docs/上线检查单.md`
|
||||||
|
|
||||||
|
- [ ] T2 localePath 双 en 修复 + 自指 canonical + 尾斜杠归一
|
||||||
|
- claim: op-gitea(mesh 车道)
|
||||||
|
- boundary: src/lib/locale.ts(先归一 zh 再拼前缀);BaseLayout.astro 加自指 canonical(Astro.site+withSlash);Header.astro nav-lang href 尾斜杠补齐;E2E 可加断言
|
||||||
- verify: `! grep -r "/en/en/" dist/ && grep -q 'rel="canonical"' dist/en/archives/mian-sha/index.html && node tests/e2e.mjs 2>&1 | grep -q "33/33 PASS"`
|
- verify: `! grep -r "/en/en/" dist/ && grep -q 'rel="canonical"' dist/en/archives/mian-sha/index.html && node tests/e2e.mjs 2>&1 | grep -q "33/33 PASS"`
|
||||||
|
|
||||||
- [ ] T3
|
- [ ] T3 构建期内容 lint + 生产冒烟 + build.sh 守卫挂载
|
||||||
- id: task_0003
|
- claim: op-gitea(mesh 车道)
|
||||||
- title: 构建期内容 lint + 生产冒烟 + build.sh 守卫挂载
|
- boundary: 新建 scripts/build-perf/content-lint.mjs(dist 断链:站内 a[href] 逐一对产物;图片存在性;zh/en 配对警告)+ scripts/build-perf/prod-smoke.sh(curl robots/sitemap/首页头三断言);build.sh 守卫行(存在性守卫铁律);首版 fail 但提供 SKIP 环境变量逃生门
|
||||||
- boundary: scripts/build-perf/content-lint.mjs(新)、scripts/build-perf/prod-smoke.sh(新)、infra/deploy/build.sh(守卫行)
|
|
||||||
- verify: `node scripts/build-perf/content-lint.mjs dist && bash -n infra/deploy/build.sh && test -x scripts/build-perf/prod-smoke.sh`
|
- verify: `node scripts/build-perf/content-lint.mjs dist && bash -n infra/deploy/build.sh && test -x scripts/build-perf/prod-smoke.sh`
|
||||||
|
|
||||||
- [ ] T4
|
- [ ] T4 reader 纯文本模式(html.reader + 命令面板 + r 键 + 持久化)
|
||||||
- id: task_0004
|
- claim: orchestrator
|
||||||
- title: reader 纯文本模式(html.reader + 命令面板 + r 键 + 持久化)
|
- boundary: global.css 尾部集中 html.reader 段(按 08 文档 §4.4 清单:隐 bg-glow/进度条/收 Header 尾部钮/Footer 收单行 ICP 必留;正文字号微升行宽收窄);CommandPalette data-cmd="reader" + ui.ts cmd_reader 双语键;Keyboard r 单键;localStorage 持久化;reduced-motion/无 JS 天然兼容(纯 class)
|
||||||
- boundary: src/styles/global.css(reader 段)、src/components/CommandPalette.astro、src/components/geek/Keyboard.astro、src/i18n/ui.ts(cmd_reader 键)
|
- verify: `node tests/e2e.mjs 2>&1 | grep -q "33/33 PASS" && grep -q 'data-cmd="reader"' src/components/CommandPalette.astro && grep -q "html.reader" src/styles/global.css`
|
||||||
- verify: `node tests/e2e.mjs 2>&1 | grep -q "33/33 PASS" && grep -q "reader" src/components/CommandPalette.astro && grep -q "html.reader" src/styles/global.css`
|
|
||||||
|
|
||||||
- [ ] T5
|
- [ ] T5 代码块窗条(P 卡:≥4 行灰阶窗+mono 标题+灰阶三点)
|
||||||
- id: task_0005
|
- claim: op-artalk(mesh 车道)
|
||||||
- title: 代码块窗条(P 卡:≥4 行灰阶窗+mono 标题+灰阶三点)
|
- boundary: 技术轨代码块渲染层(自查源码定落点:prose-tech 容器/全局 pre 样式);≥4 行块加窗条(灰阶三点非红黄绿+mono 语言/文件标签),单行块裸 pill;亮暗双态;scoped 样式优先不动 global.css(与 T7 划界)
|
||||||
- boundary: 技术轨正文组件的代码块样式(GalleryPage 之外;具体落点车道自查源码定)+ global.css 如需
|
- verify: `node tests/e2e.mjs 2>&1 | grep -q "33/33 PASS" && grep -rqE "code-win|codebar|窗条" src/styles/ src/components/`
|
||||||
- verify: `node tests/e2e.mjs 2>&1 | grep -q "33/33 PASS" && grep -qE "code-win|codewin" src/styles/global.css src/components/ -r`
|
|
||||||
|
|
||||||
- [ ] T6
|
- [ ] T6 书评纸面板(Q 卡:圆角米灰纸卡+暗色暖棕+hairline 边框)
|
||||||
- id: task_0006
|
- claim: op-artalk(mesh 车道)
|
||||||
- title: 书评纸面板(Q 卡:圆角米灰纸卡+暗色暖棕+hairline 边框)
|
- boundary: 书评正文容器(prose-reading 所在组件 scoped 样式):圆角纸卡+米灰 #f4f4f2 系亮/暖棕暗态;边框 hairline 级防长文竖线感(08 裁定 §6-2);标题区外置结构不动;--paper 变量需求提给 orchestrator 入 tokens(T7 协同),不直接改 tokens.css
|
||||||
- boundary: 书评轨正文容器样式(prose-reading 相关组件/tokens.css 新增 --paper 变量可与 T7 协同由 orchestrator 统一入 tokens)
|
- verify: `node tests/e2e.mjs 2>&1 | grep -q "33/33 PASS" && grep -rq "paper" src/components/ | grep -v node_modules`
|
||||||
- verify: `node tests/e2e.mjs 2>&1 | grep -q "33/33 PASS" && grep -qE "paper" src/styles/tokens.css src/styles/global.css -r`
|
|
||||||
|
|
||||||
- [ ] T7
|
- [ ] T7 版式基底(K/L/O 卡:流距 token+灰阶补档+暗色 hairline 降档+微交互曲线+focus ring)
|
||||||
- id: task_0007
|
- claim: orchestrator(tokens/global 专属车道)
|
||||||
- title: 版式基底(K/L/O 卡:流距 token+灰阶补档+暗色 hairline 降档+微交互曲线+focus ring)
|
- boundary: tokens.css(--flow-* 流距五变量+灰阶补档评估+--paper 纸色变量);global.css(h2/h3/p+p 改用流距变量、暗色 hairline 降一档、过渡曲线统一 token :where 一段、focus-visible ring 统一);标题字重 700→600(裁定 #6);行距 +2~4px(裁定 #7);移动端密集扫描复测(涉布局面)
|
||||||
- boundary: src/styles/tokens.css、src/styles/global.css(本卡为 orchestrator 专属车道,他人不并改动两文件)
|
- verify: `node tests/e2e.mjs 2>&1 | grep -q "33/33 PASS" && grep -q "flow-h2-pre" src/styles/tokens.css && grep -q "focus-visible" src/styles/global.css`
|
||||||
- verify: `node tests/e2e.mjs 2>&1 | grep -q "33/33 PASS" && grep -q "flow-h2-pre" src/styles/tokens.css && grep -q "focus-ring\|focus-visible" src/styles/global.css`
|
|
||||||
|
|
||||||
- [ ] T8
|
- [ ] T8 首屏 tagline + 图库质感(M/N 卡:身份语+圆角统一+暗色衬底)
|
||||||
- id: task_0008
|
- claim: orchestrator
|
||||||
- title: 首屏 tagline + 图库质感(M/N 卡:身份语+圆角统一+暗色 4% 衬底)
|
- boundary: 首页身份区(IdCard 或等位组件)加 tagline ≤20 字(措辞备两案入完成总结供用户选,默认「写作者 · 读者 · 快门按压者」);GalleryPage 圆角统一 --radius-img 暗色 4% 衬底(裁定 §6-4 双模式分判;衬底圆角≤照片圆角防框中框);亮色直贴不动
|
||||||
- boundary: src/components/IdCard.astro 或首页身份区、src/components/pages/GalleryPage.astro(stage 暗色衬底+radius 统一)
|
- verify: `node tests/e2e.mjs 2>&1 | grep -q "33/33 PASS" && grep -rq "tagline" src/pages/index.astro src/components/ && grep -q "radius-img" src/styles/tokens.css`
|
||||||
- verify: `node tests/e2e.mjs 2>&1 | grep -q "33/33 PASS" && grep -q "tagline\|身份" src/pages/index.astro src/components/ -r | head -1`
|
|
||||||
Reference in new issue
Block a user