Commit Graph
269 Commits
Author SHA1 Message Date
wait4x a555a3e450 Merge remote-tracking branch 'origin/main' 2026-11-05 19:20:03 +08:00
wait4xandGLM-5.3 d37fe581c0 feat(cms): 文章页标题下说明后台可编辑 + 文章数 {n} 占位符随数量变化
后台「页面文案」新增「文章页说明」(中/英 markdown,与瞬间/书架同构的
压平结构);{n} 在构建期替换为当前可见文章数。顺修默认文案错字
(月分分组→按月分组),en 文章页补齐标题与说明行(此前只有裸列表)。

验证: pnpm astro build exit 0;dist 断言「共 10 篇」动态计数与 en 侧文案;config-check 通过;E2E 61/61

Spec: none (页面文案体系的小增量,随 5l/5m 后续直落)

Co-authored-by: GLM-5.3
2026-11-05 19:20:02 +08:00
wait4xandGLM-5.3 9b11070dd4 fix(archives): 置顶文章不再把整月拽到顶部——置顶浮出分组流自成首节
用户实测:某月有一篇置顶时,该月全部文章跟着上浮。根因:sortPosts
置顶优先后,年/月分组按顺次建桶——置顶文章让所在月提前建桶到顶部。
修复:置顶文章单独渲染为分组流之前的一节(带徽标与计数),年/月分组
只对非置顶文章按自然时序建桶,月份各归各位。

验证: pnpm astro build exit 0;产物断言分组头顺序=置顶,2026-11,2026-04,2026-03,2026-02 且置顶文仅出现一次;E2E 61/61

Spec: none (用户实测报告的排序分组 bug 紧急修复)

Co-authored-by: GLM-5.3
2026-11-05 19:20:02 +08:00
wait4x a98b2e83da Update 页面文案 “home” 2026-11-05 11:14:07 +00:00
wait4x 3ec7e48727 Merge remote-tracking branch 'origin/main' 2026-11-05 11:42:41 +08:00
wait4xandGLM-5.3 eb5e3f851e fix(cms): 页面文案可编辑性修复(结构压平)+ 样式旋钮退役 + favicon 直传
用户实测「瞬间/书架 说明文字」在后台无法编辑。根因:Sveltia 对「可选对象
嵌套可选对象」的子编辑器渲染缺陷线(sveltia-cms #446/#654,双层嵌套正踩
雷区)——压平为单层可选对象 + markdown 直挂,与已验证可编辑的主页/关于
页同构。顺应用户第二问:样式旋钮(字号/颜色/字体三档)整体退役,排版
并入内联类(Insert▸排版,预览直接可见),视觉基线由 .page-note scoped
样式承载(13px/ink-4,与原默认一致零回归);favicon 从贴路径 string
改为 image 直传(落 public/icons/,yaml 存 /icons/…)。

验证: pnpm astro build exit 0;config-check 226 字段全过;content-lint 53 页 0/0/0;E2E 61/61

Spec: none (用户实测报告的后台编辑 bug 紧急修复)

Co-authored-by: GLM-5.3
2026-11-05 11:42:40 +08:00
wait4x 35cb6e764e Update 瞬间 “2026-04-29” 2026-11-05 03:39:18 +00:00
wait4x 3c15dd47a5 Update 瞬间 “2026-11-02” 2026-11-05 03:39:01 +00:00
wait4x 1942d5b7f0 Update 页面文案 “opensource” 2026-11-05 03:38:42 +00:00
wait4x cf331ccf3d Merge branch 'spec/2026-11-05_blog-5m-heatmap-fireflies'
Phase 5m 交付:热力图 v5 选型闭环——用户在五案预览页选定「萤火」
(虫数 4),引擎落进正式开源页:贪吃蛇与月柱点亮联动退役(月柱转
静态定高),reduced-motion/无 JS 兜底不变;预览路由、五个候选组件、
lint 两处白名单全部退役,E2E 补萤火断言(61/61)。

Spec: 2026-11-05_blog-5m-heatmap-fireflies
2026-11-05 11:22:26 +08:00
wait4xandGLM-5.3 eead28f3a0 chore(spec): 归档 blog-5m——萤火落地收敛
Spec: 2026-11-05_blog-5m-heatmap-fireflies

Co-authored-by: GLM-5.3
2026-11-05 11:22:26 +08:00
wait4xandGLM-5.3 44cd62e9a2 fix(lint): 豁免预览路由的 en 孪生断链——语言切换器给 zh-only 预览页生成 /en/ 链接
验证: node scripts/build-perf/content-lint.mjs dist → 通过(54 页 0 断链)

Spec: none (预览页需先上线供用户选择)

Co-authored-by: GLM-5.3
2026-11-05 11:02:58 +08:00
wait4xandGLM-5.3 97a56f3c89 feat(heatmap): v5 五案预览页上线——墨染/潮汐/星轨/织锦/萤火并陈供选型
五个候选方案在现役 P1 贪吃蛇之上重做动效语言(更安静文气的方向),
共用 loadHeatmap 真实数据与同份组件契约(offset 定位 / reduced-motion
静态兜底 / IO 离屏即停 / ink 档位独占数据密度 / accent 只给运动元素)。
多队友并行产出:@worker-one 墨染+潮汐,三个子代理星轨/织锦/萤火;
经 glm-5.3-flash 视觉复核一轮(织锦纱线可见度提档、梭子加描边、萤火
色向转暖)后上线 /heatmap-preview/ 供用户点选。

- 五组件自包含(模板+引擎+样式),选定后落进正式开源页并删本预览路由
- content-lint 一次性白名单 /heatmap-preview/(无 en 版配对豁免)

验证: pnpm astro build exit 0;本地 18926 快照零控制台错误、六 section 帧差确认全案在动

Spec: none (预览页需先上线供用户选择,选定后落地时正式立项收尾)

Co-authored-by: GLM-5.3
2026-11-05 11:01:20 +08:00
wait4xandGLM-5.3 dac34edd9a fix(cms): 修三处后台保存裂缝——新文缺 tags 构建拦截、头像传错嵌套路径、表单与 schema 契约不对齐
- 佩德罗·巴拉莫补必填 tags(read,与等待戈多同口径)——生产构建已被拦(last-good 兜底服务中)
- 头像 118a04cd0986b9c5.jpg 从嵌套误传路径(content/site/content/site/assets/)挪到 home.yaml 引用的 content/site/assets/——Sveltia 对 file 集合 media_folder 按文件目录相对解析,content/site/assets 写法翻倍成嵌套;改为 assets
- posts/moments 标签表单 required 对齐 schema 必填(z.array 无 default,漏保存即构建失败)

验证: pnpm astro build exit 0(52 页,无 InvalidContentEntryData);config-check 通过

Spec: none (生产构建阻塞的紧急内容修复)

Co-authored-by: GLM-5.3
2026-11-05 10:10:06 +08:00
wait4x 1737bf027c Merge remote-tracking branch 'origin/main' 2026-11-05 10:03:44 +08:00
wait4x d4ddc08fbd Merge branch 'spec/2026-11-05_blog-5l-admin-preview-moments'
Phase 5l 交付:后台编辑体验三件套——①预览窗格显色显字体
(registerPreviewStyle 官方口子,排版类 CSS 从清单运行时生成,
自托管艺术字体挂切片 CSS 按需取片,pattern 放宽到多类)
②编辑字段排版速查提醒(正文/瞬间/整页正文三处 hint + 管理台文档)
③瞬间置顶/隐藏真字段(对齐 posts 契约:置顶优先→日期倒序、
隐藏=列表移除+页面保留,后台开关与灰阶 pin 徽标)。

Spec: 2026-11-05_blog-5l-admin-preview-moments
2026-11-05 10:03:34 +08:00
wait4xandGLM-5.3 b99e6e744b chore(spec): 归档 blog-5l——三任务收敛(预览一致性/排版提醒/瞬间置顶隐藏)
Spec: 2026-11-05_blog-5l-admin-preview-moments

Co-authored-by: GLM-5.3
2026-11-05 10:03:34 +08:00
wait4x a3d6998de5 Create 文章 “佩德罗·巴拉莫” +1 2026-11-05 01:47:53 +00:00
wait4x ac1eab3cf1 Update 文章 “deng-dai-ge-duo” +1 2026-11-05 01:43:14 +00:00
wait4x 0d40b00f5a Update 页面文案 “about” 2026-11-05 01:23:33 +00:00
wait4x 326b9bbd79 Update 页面文案 “about” 2026-11-05 01:21:55 +00:00
wait4x 59895aca2b Update 页面文案 “home” +1 2026-11-05 01:17:03 +00:00
wait4xandGLM-5.3 c5889f960b style(about): 方案 A 复核润色(名片留白 + 链接 hover 箭头)
验证: pnpm astro build exit 0;dist/about/index.html 含 .about-id 包裹

Spec: none (已上线方案的复核润色)

Co-authored-by: GLM-5.3
2026-11-04 23:49:17 +08:00
wait4x a3ddbbefdd Merge remote-tracking branch 'origin/main' 2026-11-04 23:40:48 +08:00
wait4xandGLM-5.3 e65d44df29 style(about): 方案 A 视觉复核两条微润色
视觉复核(glm-5.3-flash:max)对已上线方案 A 的两条小意见:
- 名片与正文衔接略紧 → .about-id 加一档 margin
- 找到我列表过素 → 链接 hover 显 ↗ 箭头 + 转 accent(保留素的定位,但不至于没有 UI)

验证: pnpm astro build exit 0

Spec: none (已上线方案的复核润色)

Co-authored-by: GLM-5.3
2026-11-04 23:40:38 +08:00
wait4x 609ce1eb2e Merge remote-tracking branch 'origin/main' 2026-11-04 23:37:14 +08:00
wait4x f6da3b3c32 Merge remote-tracking branch 'origin/main' 2026-11-04 23:36:36 +08:00
wait4x 160af791b5 Merge remote-tracking branch 'origin/main' 2026-11-04 23:32:38 +08:00
wait4x 0ef0fcd394 Merge branch 'spec/2026-11-04_blog-5k-about-designs'
Phase 5k 交付:关于页形态选型闭环——五案预览(A 白纸直编 / B 名片双栏 /
C 杂志分节 / D 时间线 / E 卡片流)→ 用户选定 A → 落地「白纸直编」单字段
(四级回落 doc → blocks → intro → 内置默认,blocks 降为 legacy 通道)+
后台 markdown 字段置顶 + 预览路由退役。

Spec: 2026-11-04_blog-5k-about-designs

# Conflicts:
#	scripts/build-perf/content-lint.mjs
2026-11-04 23:32:05 +08:00
wait4xandGLM-5.3 b72ecccc80 chore(spec): 归档 blog-5k——两任务收敛(关于页定稿方案 A)
Spec: 2026-11-04_blog-5k-about-designs

Co-authored-by: GLM-5.3
2026-11-04 23:30:15 +08:00
wait4x 9a3a196eea Update 文章 “writing-template” 2026-11-04 15:25:43 +00:00
wait4xandGLM-5.3 4153c6d33f feat(about): 用户选定方案 A——关于页改「白纸直编」单字段(5k T1/T2 落地)
用户在 /about-preview/ 五案中选 A。落地:
- siteAbout schema 增 `doc`(双语整页 markdown);about.yaml 现有内容已合成
  doc(身份语 + 关于我 + 找到我 + 本站如何构建,双语齐备)
- AboutPage 四级回落:**doc 白纸直编 → blocks 块式 → intro → 内置默认**
  (doc 非空时整页只渲染它,IdCard 仍在顶部;blocks 降为 legacy 通道)
- 后台「关于页」最顶部即「整页正文」markdown 字段(这就是方案 A 的编辑模型),
  块式结构标注 legacy
- 删除两个已完成的预览路由(/about-preview/、/heatmap-preview/)与 HeatGrid
  预览组件、content-lint 白名单整体移除
- docs/管理台 新增「关于页正文」一节(四级回落说明)

验证: 构建 50 页 exit 0;content-lint 51 页 0/0/0;config-check 234 字段/74 hint;
      产物断言 doc 渲染(汇文+红身份语 / 找到我链接 / mono 小标题);
      E2E 56/56(含书架开合翻转与 5j 数据板口径更新)

Spec: 2026-11-04_blog-5k-about-designs (T1/T2)

Co-authored-by: GLM-5.3
2026-11-04 23:22:41 +08:00
wait4xandGLM-5.3 cb44d0b2d2 feat(about): 关于页五方案预览上线
用户要求 3-5 个方案供审阅:A 白纸单栏 / B 名片双栏 / C 杂志分节 / D 时间线 / E 卡片流,
共用 about.yaml 真实数据。

验证: 构建 exit 0;五案渲染、零溢出

Spec: none (预览页随选型迭代)

Co-authored-by: GLM-5.3
2026-11-04 23:10:56 +08:00
wait4xandGLM-5.3 b41b4ba8a5 feat(about): 关于页五方案预览上线(5k T1)
用户要求关于页「深入探索和设计提出 3-5 个方案,并设计出页面供我审阅」。五案共用
about.yaml 真实数据(选哪个都不用迁移内容):

A 白纸单栏:后台就是一个 markdown 编辑器,身份卡 + 单栏全文连排——编辑自由度最大
B 名片双栏:左侧 sticky 身份名片,右侧正文分节——个人站经典形态
C 杂志分节:大字引言 + 编号分节(01 关于我 / 02 兴趣版图 / 03 找到我 / 04 本站构建)
  + 右侧粘性目录跟随滚动
D 时间线:把"我是谁"讲成轨迹(起点气象 → 第二主线代码 → 作品 → 信条),沿线节点
E 卡片流:身份卡打头,正文/兴趣/链接/构建各占一张卡片,两列错落

content-lint 白名单加一次性预览路由(无 en 对应页)。

验证: 构建 53 页 exit 0;content-lint 53 页 0/0/0;
      Playwright 实测五案均渲染(3 枚图标 svg / IdCard / 9 条找得到我链接)、
      1280 与 390 零横向溢出

Spec: 2026-11-04_blog-5k-about-designs (T1)

Co-authored-by: GLM-5.3
2026-11-04 23:10:55 +08:00
wait4xandGLM-5.3 129b23cd2b fix(heatmap): 修蛇头坐标轴反了跑出边界;P1 智能寻食蛇落进正式开源页
用户选定 P1,同时报障「贪吃蛇跑到了窗口之外」。

根因:网格是**列优先**索引(idx → 列=floor(idx/7)、行=idx%7),P1 引擎的 posOf
把 x/y 写反——蛇头 y 会到 676px(网格仅 91px 高),一路走出下边界。
预览页坐标已修正;正式热力图按 P1 落地时直接用正确坐标系。

P1 落进正式开源页(Heatmap.astro):
- 头(accent 圆点)+ 8 节渐隐拖尾,沿「最近邻路径」只在有贡献的格子间滑行,
  空格不染色(371 格仅 51 天活跃,全网扫描会让蛇 86% 行程空转)
- 吃到的格子点亮 accent;月柱随蛇头所在月份递增点亮
- 路径首尾相接实现无缝循环;离开视口即停;reduced-motion 下头/拖尾隐藏、
  柱子以终态呈现;无 JS 兜底同款(noscript 样式)
- 清理死分支:P1 路径只访问活跃格子,walked 分支永不触发

验证: 构建 51 页 exit 0;E2E 56/56;
      Playwright 实测蛇头 transform 始终在网格包围盒内(x≤676、y≤83 含居中偏移)、
      eaten 递增至 51、月柱 13/13 点亮、reduced-motion 头隐藏柱立起、无 JS 柱立起

Spec: none (P1 为用户已选定方案的落地 + 坐标 bug 修复)

Co-authored-by: GLM-5.3
2026-11-04 23:04:14 +08:00
wait4xandGLM-5.3 6e343c80dc test(e2e): 书架改「开合翻转」口径,数据板断言更新为 5j 口径
- 书架(方案 C):置顶书默认展开是设计行为,点它=收起。原断言误点已展开的
  置顶行断言「变开」→ 必然失败。改为断言开合状态恰好翻转一次
- 数据板断言:5j T2 有意退役 streak/贡献蛇 SVG(信息并入热力图区),原
  「数据板渲染」断言过时;改为断言连续贡献统计条 + 更新时间标注 + 第三方
  资产零命中(含退役的 /github-assets/)

验证: E2E_BASE=http://127.0.0.1:18925 node tests/e2e.mjs → 56/56 PASS

Spec: none (测试口径随 5j 定稿同步)

Co-authored-by: GLM-5.3
2026-11-04 23:03:45 +08:00
wait4x f73a1b3e63 Merge branch 'spec/2026-11-03_blog-5j-content-refine'
Phase 5j 交付:开源页叙述合一(story 单字段 markdown 内联链接)+ 贡献数据去重与时效
(连续贡献改热力图同源本地计算并标注更新时间,贡献蛇与 streak.svg 退役)+
瞬间/书架标题下话语后台可编辑(pages.yaml 单例,字号/颜色/字体三档夹取)+
隐藏开关假开关修复(hidden 真字段 + post-visibility 契约,RSS/sitemap 一并过滤)+
热力图蛇路径优化三案预览(P1 智能寻食/P2 平滑蛇体/P3 分月清扫)。
关于页形态探索拆分为独立包 5k。

Spec: 2026-11-03_blog-5j-content-refine
2026-11-04 22:29:49 +08:00
wait4xandGLM-5.3 19b765e5b1 chore(spec): 归档 blog-5j——四任务收敛(关于页探索拆出 5k)
Spec: 2026-11-03_blog-5j-content-refine

Co-authored-by: GLM-5.3
2026-11-04 22:29:49 +08:00
wait4xandGLM-5.3 6b501fa688 chore(spec): 5j 重划——关于页探索拆出为 5k,勾选收敛
Spec: 2026-11-03_blog-5j-content-refine

Co-authored-by: GLM-5.3
2026-11-04 22:24:03 +08:00
wait4xandGLM-5.3 f581f5bc4f docs(content): story/页面说明文案/隐藏语义同步指南(5j T5)
验证: pnpm astro build exit 0

Spec: 2026-11-03_blog-5j-content-refine (T5)

Co-authored-by: GLM-5.3
2026-11-04 22:16:46 +08:00
wait4xandGLM-5.3 a2b5755680 docs(content): story 字段/页面说明文案/隐藏语义同步到指南(5j T5)
- 管理台:开源页「叙述已合一」(推荐改 story 单字段,旧字段标 legacy)、
  新增「页面说明文案」一节(瞬间/书架标题下话语 + 三档样式 + 兜底行为)、
  置顶语义补「隐藏优先」与「多本置顶在书架的默认展开」
- 写作指南:新增「隐藏文章」一节(hidden: true / tags 两种写法、页面仍生成、
  与草稿的区别、隐藏与置顶同开以隐藏为准)

验证: pnpm astro build exit 0

Spec: 2026-11-03_blog-5j-content-refine (T5)

Co-authored-by: GLM-5.3
2026-11-04 22:16:22 +08:00
wait4x 7401b512e6 Merge branch 'spec/2026-11-03_blog-5j-content-refine'
Phase 5j 进行中合并(T1/T2/T3 已交付):开源页叙述合一(story 单字段 markdown)+
贡献数据去重与时效(连续贡献改热力图同源本地计算并标注更新时间,贡献蛇与
streak.svg 退役)+ 瞬间/书架标题下话语改为后台可编辑(pages.yaml 单例,字号/
颜色/字体三档夹取)+ **隐藏开关假开关修复**(hiddenTag 只写没人读的字段导致
隐藏+置顶仍显示并排第一;新增 hidden 真字段与可见性契约 post-visibility,
RSS/sitemap 一并过滤)+ 热力图蛇路径优化三案预览(P1 智能寻食/P2 平滑蛇体/
P3 分月清扫,均带月柱联动)。

Spec: 2026-11-03_blog-5j-content-refine
2026-11-04 22:01:06 +08:00
wait4x e5f2d0089e Merge remote-tracking branch 'origin/main' into spec/2026-11-03_blog-5j-content-refine
# Conflicts:
#	content/site/opensource.yaml
#	src/pages/heatmap-preview.astro
2026-11-04 22:01:06 +08:00
wait4xandGLM-5.3 3151d20c66 chore(spec): 5j 勾选 T2
Spec: 2026-11-03_blog-5j-content-refine

Co-authored-by: GLM-5.3
2026-11-04 22:00:15 +08:00
wait4xandGLM-5.3 49acb4cbd1 fix(posts): 隐藏开关是假开关——修「隐藏+置顶仍显示并排第一」;贡献数据去重
用户实测:「有的文章同时选择了置顶和隐藏,还会显示并置顶」。

根因:后台「隐藏」开关(hiddenTag)是个假开关——它只写 `hiddenTag: true` 这个
没人读的字段,而全站过滤只认 `tags` 里的 `hidden`。于是隐藏从未生效;
叠加置顶后,这篇还在列表最前面。

- 新增 src/lib/post-visibility.ts:可见性契约单一事实源——`!draft && !hidden &&
  !tags.includes('hidden')`(两条通道都认,历史写法兼容)
- postsSchema 增真字段 `hidden`;七处消费点(首页双轨/归档 zh/en/书架/RSS zh/en/
  文章页导航)统一走 isVisiblePost
- 后台假开关 hiddenTag 换成真开关 hidden,hint 写清语义:不进列表/RSS/sitemap,
  页面本身仍生成(链接可分享);与置顶同时打开时以隐藏为准
- sitemap 过滤隐藏文章(astro.config 配置期扫 frontmatter,两种写法都认;
  内容目录不可读时宁可不排除也不炸构建)

贡献数据去重(5j T2,回答用户「连续贡献是否实时」):
- 连续贡献不再构建期抓取 streak.svg 快照(不实时、暗色需滤镜、与热力图同源重复),
  改为热力图同一份 GraphQL 日历本地计算(src/lib/heatmap.ts streakStats):
  当前连续(以最后有贡献日为终点)/ 最长 / 总贡献,界面上标注「数据更新于 X」
- 贡献蛇块与自托管 snake/streak SVG 删除,fetch 脚本 ASSETS 清空,
  build.sh 守卫改为退役说明;开源页数据板整块并入热力图区

验证: 构建 51 页 exit 0;content-lint 52 页 0/0/0;E2E 56/56;
      临时两篇「置顶+隐藏」(新字段/旧 tags 各一)实测——首页/归档/书架/
      双语首页/RSS 双语/sitemap 全部零命中,页面本身仍生成;
      清理后归档首条恢复 writing-template(普通置顶不受影响);
      开源页 snake/streak 资产零残留、连续统计条与更新时间标注就位

Spec: 2026-11-03_blog-5j-content-refine (T2 + 隐藏 bug 修复)

Co-authored-by: GLM-5.3
2026-11-04 22:00:15 +08:00
wait4xandGLM-5.3 b3c3bcf49e feat(heatmap): 蛇家族四变体预览 + 后台补齐 story/页面说明文案
验证: 构建 exit 0;实测 F1 循环(loop 1→2、每轮吃到 51 天)、F2 身长 3→26、
      F3 双头、FJ 柱子随爬行点亮、J 柱联动

Spec: none (预览页随选型迭代)

Co-authored-by: GLM-5.3
2026-11-04 21:27:13 +08:00
wait4xandGLM-5.3 34a78dacb9 feat(heatmap): 蛇家族四变体 + 补齐后台表单(5j 预览 v3)
用户选定 F+J 方向,要求蛇能**循环**(学 GitHub README 蛇的节奏),并再看几个新变体。

四个蛇变体:
- F1 循环贪吃蛇:蛇形爬一年,吃到有贡献的日子点亮;到端点停一拍、清空、重新开始,
  无限循环,身体保持 6 节(README 蛇手感)
- F2 生长蛇:每吃到一天长一节(3 → 26 上限),吃完循环重置——"积累"的隐喻最强
- F3 双蛇对开:两条蛇从最早/最新一头相向而吃,在年中交汇
- FJ 蛇 + 月柱联动:蛇爬进某个月,对应柱子同步升起并高亮;爬到年末十二根全立,
  然后回到起点、柱子清零、再来一轮(用户点名要的组合)
- J 单独保留月度柱状图作参考

实现要点:共用一套蛇引擎(蛇形路径 = 按列推进、奇数列反向;轨迹队列控制身长;
到端点判定"本轮结束"→ 900ms 后 reset 并重入);IntersectionObserver 离开视口即停;
「减少动态效果」下直接呈终态(点亮所有有贡献的格子 + 柱子立起)。

**后台补齐(回答用户"改动同步到后台了吗"——此前确实漏了两处)**:
- 开源页新增「叙述(推荐改这里)」story 字段(双语 markdown,链接内联),
  旧 blurb 标注 legacy
- 新增「瞬间 / 书架 标题下的说明」文件条目:文字(markdown)+ 字号(11–16)
  + 颜色(ink 灰阶四级)+ 字体(12 族下拉),两页独立

验证: 构建 52 页 exit 0;config-check 231 字段 / 73 hint 全过;
      Playwright 实测——F1 身长 6 且 loop 计数 1→2、第 1 轮吃到 51 天;
      F2 身长 3→26、吃掉 38 天;F3 同时 2 个蛇头;FJ 柱子随爬行递增点亮(3→5→7→10);
      J 柱子升起并悬停联动

Spec: 2026-11-03_blog-5j-content-refine (预览 v3)

Co-authored-by: GLM-5.3
2026-11-04 21:27:12 +08:00
wait4xandGLM-5.3 d6dfe39db3 feat(heatmap): 热力图六案 v2 预览上线(含贪吃蛇)
按用户反馈重做:F 贪吃蛇 / G 心跳呼吸 / H 雨滴涟漪 / I 3D 地形 / J 周冠军柱 / K 显微镜。

验证: 构建 exit 0;Playwright 逐案实测动效均生效(蛇 371 格爬完吃到 51 天)

Spec: none (预览页随选型迭代)

Co-authored-by: GLM-5.3
2026-11-04 20:47:26 +08:00
wait4xandGLM-5.3 d9721cdbd8 feat(heatmap): 热力图方案 v2——六案重做,含「贪吃蛇」(5j 预览迭代)
用户看过 v1 五案后反馈「不是很满意」,并要求「类似贪吃蛇般的方案」,故重做六案:
F 贪吃蛇 / G 心跳呼吸 / H 雨滴涟漪 / I 3D 地形 / J 周冠军柱 / K 显微镜。

**贪吃蛇(F)的关键设计判断**:真实数据 371 格里只有 51 天有贡献(总 306 次),
若照 GitHub 的做法"只吃有贡献的格子",蛇有 86% 的行程毫无反馈、看起来像卡住。
改为「爬过即留淡色轨迹 + 有贡献处强调色加重」,并把节奏 55ms→30ms(371 格约 11 秒
爬完一年),末尾给出「走过 371 格,吃到 51 天」的收束统计。

其余五案:
- G 心跳呼吸:按当日贡献量给每格不同的呼吸时长(3.4s→1.2s),纯 CSS 合成层动画
- H 雨滴涟漪:以「最后一次贡献」为圆心按距离错峰扩散,扫过闪一下;可重播
- I 3D 地形:贡献量当海拔(translateZ 0–14px),指针倾斜整块网格
- J 周冠军柱:月度总计柱状图,进视口逐根升起,悬停柱子联动高亮该月所有格子
- K 显微镜:指针处浮起圆镜,放大 5×5 邻域(用数据档位绘制)+ 日期与次数

六案共同约束:accent 只做高亮不参与数据编码(数据仍由 ink 四档承载)、
reduced-motion 全部静态、离开视口即停(IntersectionObserver)、零第三方依赖。

验证: 构建 52 页 exit 0;content-lint 52 页 0/0/0;Playwright 逐案实测——
      F 蛇身逐格推进至 371/371、吃到 51 天、读数实时更新;
      G 52 格动画 hmBreath 时长生效(2.6/3.35/3.06s…);
      H wrap.play 且 animationName=hmWave;
      I .hg-raise 有 translateZ 且容器 matrix3d 倾斜;
      J 柱子 grow 后高 14px、13 个月、悬停联动 28 格;
      K 圆镜 25 个迷你格 + 日期读数 + 焦点格 1;
      390 零横向溢出;reduced-motion 下 breath none / 蛇静态全亮 / 地形无倾斜

Spec: 2026-11-03_blog-5j-content-refine (热力图预览 v2)

Co-authored-by: GLM-5.3
2026-11-04 20:47:25 +08:00
wait4xandGLM-5.3 1a486a20d2 chore(spec): 5j 勾选 T1/T3
Spec: 2026-11-03_blog-5j-content-refine

Co-authored-by: GLM-5.3
2026-11-04 20:14:59 +08:00