wait4x
|
a868bf94fd
|
Update 文章 “shu-zui” +1
|
2026-11-03 06:42:01 +00:00 |
|
wait4x
|
a46430b088
|
Update 文章 “ni-tan” +1
|
2026-11-03 06:40:43 +00:00 |
|
wait4x
|
1ce9cd65ea
|
Update 文章 “mian-sha” +1
|
2026-11-03 06:39:33 +00:00 |
|
wait4x
|
6e4d6c2f88
|
Update 页面文案 “opensource”
|
2026-11-03 06:38:05 +00:00 |
|
wait4x
|
6abca9f412
|
Merge branch 'spec/2026-11-02_blog-5i-fonts-polish'
Phase 5i 交付:字体切换失效根治(按内容诉求注入字体 CSS,此前四份字体 CSS 被
关在阅读轨分支里,技术轨与全站页面从不加载)+ 六款自托管 OFL 字族(@fontsource
切片粒度不达标→改原始 TTF 字频序细切,单页增量 27–46KB 全过闸门)+ 评论失败提示
误报的状态机修复 + 瞬间评论区配色同步(Artalk .artalk 类的 CDN 样式平级压制)+
灯箱右上关闭被全高侧栏遮挡修复 + 灯箱 caption 支持字体与颜色 + 取消彩色强调次数
限制 + 开源页项目墙恢复居中 + README 动效自托管与数据板 + 书架定稿方案 C(抽书
阅读、置顶图标化、多本置顶默认展开)。
Spec: 2026-11-02_blog-5i-fonts-polish
|
2026-11-03 12:47:54 +08:00 |
|
wait4x
|
c9fb46f5a9
|
Merge remote-tracking branch 'origin/main' into spec/2026-11-02_blog-5i-fonts-polish
# Conflicts:
# docs/管理台.md
|
2026-11-03 12:47:53 +08:00 |
|
 wait4xandGLM-5.3
|
edc34a8a8c
|
chore(spec): 归档 blog-5i——九任务收敛
Spec: 2026-11-02_blog-5i-fonts-polish
Co-authored-by: GLM-5.3
|
2026-11-03 12:47:13 +08:00 |
|
 wait4xandGLM-5.3
|
83e0b863fc
|
chore(spec): 5i 勾选 T7/T9(九任务全勾)
Spec: 2026-11-02_blog-5i-fonts-polish
Co-authored-by: GLM-5.3
|
2026-11-03 12:35:20 +08:00 |
|
 wait4xandGLM-5.3
|
9df86cb05b
|
feat(fonts): 新增六款自托管字族(体积闸门内)(5i T9)
用户拍板「字族扩展都补」。六款按三类各两款落地,全部单页增量 ≤150KB:
小薇(文学·宋体气质)、新晰黑(文学·现代黑)、得意黑(标题)、庆科黄油(标题·圆润)、
马善政毛笔与柳建毛草(书法),许可证均 OFL。
关键取舍:@fontsource 官方中文切片粒度太粗(每片约 33 字、单片 40KB+),一句话命中
7 片即 308–442KB/页,四款全部超闸门;即便用 subset-fonts.py 按站内用字重裁仍剩
205–346KB(笔画类字族单片就 50KB)。故改为从 google/fonts 取原始 TTF,按**字频序
细切**(约 19 字/片、单片 2–12KB),每族 99–100 片、族总量 0.5–1.2MB,浏览器只拉
命中的片。四个 @fontsource 依赖随之移除,package.json 净零变更。
实测单页增量(一句话场景):xiaowei 44.9KB / huangyou 27.1KB / mashanzheng 45.7KB /
liujianmaocao 30.0KB / smiley 27.1KB / neoxihei 30.0KB——全部 PASS;
六族同页共 105KB。
接线(一处漏就静默失效,踩过两次):
- rehype-class-whitelist 放行新类(不放行则 span 的 class 被整条剥掉,页面有字没脸)
- site-content 的 ALLOWED_PAGE_FONTS 与后台排版下拉同源补齐(三处下拉 + hint)
- font-needs 扩六个 key,保证「内容用到才加载」的按需契约继续成立
- global.css 六组规则含 .mom-text 作用域(5h 补的瞬间作用域不能漏)
- typography-classes.js(后台可视化面板单一事实源)35→42 项
- subset-fonts.py 新增 --split-ttf / --slices / --order-from(hwmc 的 --css 用法未动)
覆盖边界(已在 docs 与后台 hint 写明):切片只含站内用字(约 1900 字),
新写生僻字会回落系统字族,需按 docs 命令重切。
验证: 构建 50 页 exit 0;content-lint 51 页 0/0/0;config-check 211 字段/66 hint;
六类逐项 getComputedStyle 首项 = ZCOOL XiaoWei / ZCOOL QingKe HuangYou /
Ma Shan Zheng / Liu Jian Mao Cao / Smiley Sans / LXGW Neo XiHei(6/6);
六族全部出现在 document.fonts;首页字体请求数保持 17(零回归)
Spec: 2026-11-02_blog-5i-fonts-polish (T9)
Co-authored-by: GLM-5.3
|
2026-11-03 12:35:20 +08:00 |
|
 wait4xandGLM-5.3
|
d096d45c58
|
feat(books): 书架定稿方案 C——抽书阅读 + 多本置顶默认展开
用户拍板选 C,置顶标记改为向上箭头图标(不写文字),并确认支持多本置顶。
- 抽书列表:情绪色脊 + 定宽标题列 + 展开 chevron,details 原生展开看封面与简介
- 置顶:所有 pinned 书排最前且默认展开,标记换成 ↑+横线 图标
- 删除一次性预览路由 /books-preview/ 与其 lint 白名单
验证: 构建 exit 0;content-lint 53 页 0/0/0;Playwright 实测展开/箭头旋转/
作者列对齐/390 无溢出;两本临置顶实测均排前且同时展开
Spec: none (先行上线,完整 5i 包仍在 spec/2026-11-02_blog-5i-fonts-polish)
Co-authored-by: GLM-5.3
|
2026-11-03 12:28:30 +08:00 |
|
 wait4xandGLM-5.3
|
073e124344
|
feat(books): 书架定稿方案 C——抽书阅读 + 多本置顶默认展开
用户 2026-11-03 拍板:选方案 C,「指定换成一个向上的箭头即可,不用表示为文字」,
并问是否支持多个置顶(答:支持,已实现并实测)。
- BooksPage 重写为抽书列表:情绪色脊 + 定宽标题列 + 作者 + 展开 chevron,
details 原生展开显示封面与简介,零 JS
- 置顶标记改为图标:↑ + 横线的「回到顶部」字形,不写「置顶」二字,
与右侧 chevron 形状区分;title/aria 仍带「置顶」以便读屏
- 多本置顶:所有 pinned: true 的书排在最前(沿用 sortPosts 契约)且全部
默认展开;实测两本同时置顶 → 序列前两位、两条都 open、两个图标
- 展开/收起用 chevron(收起朝下、展开旋转 180°),reduced-motion 下不旋转
- 移动端:标题列自适应、作者隐藏、简介与封面改纵向堆叠
- 删除一次性预览路由 /books-preview/ 与 content-lint 的临时白名单;
文档补「书架页置顶图标语义 + 多本置顶」
验证: 构建 exit 0;content-lint 53 页 0/0/0;Playwright 实测 5 行/作者列 x 唯一/
标题零截断/点击展开且 chevron 旋转 179°/390 无溢出;
临时两本置顶实测:顺序前两位、两条 open、图标 2 个(数据已还原)
Spec: 2026-11-02_blog-5i-fonts-polish (T7 定稿)
Co-authored-by: GLM-5.3
|
2026-11-03 12:27:00 +08:00 |
|
 wait4xandGLM-5.3
|
d6e08a29f9
|
feat(books): 预览页新增 D 方案(封面网格 × 抽书),C 改置顶默认展开
验证: 构建 53 页 exit 0;Playwright 实测 C/D 各自唯一展开项 = 置顶书,
D 5 格 / 3 列 / 置顶角标 1、1280 与 390 零横向溢出
Spec: none (预览页随选型迭代,正式改动在 spec/2026-11-02_blog-5i-fonts-polish)
Co-authored-by: GLM-5.3
|
2026-11-03 12:15:50 +08:00 |
|
 wait4xandGLM-5.3
|
18ea5b17b8
|
feat(books): 新增 D 方案(封面网格 × 抽书),C 改置顶默认展开
用户反馈「B 和 C 都不错,C 方案可以默认展开置顶的书目」——故:
- 新增方案 D:格子仍是 B 的封面网格,但每格用原生 details 抽开成详情卡,
置顶书默认展开、封面左上角带置顶角标;零 JS
- C 的默认展开从「第一行」改为「置顶书目」(frontmatter pinned: true,与文章
置顶同一字段同一排序契约),行内显示置顶徽标
- 当前没有书被置顶,预览页用最新一本演示并明示(真实使用由后台开关决定)
验证: 构建 53 页 exit 0;Playwright 实测 C/D 各自唯一展开项 = 置顶书(等待戈多)、
D 5 格 / 1 置顶 / 3 列 / 角标 1、1280 与 390 零横向溢出
Spec: 2026-11-02_blog-5i-fonts-polish (T7 预览迭代)
Co-authored-by: GLM-5.3
|
2026-11-03 12:15:34 +08:00 |
|
 wait4xandGLM-5.3
|
d119d6b555
|
feat(books): 书架三案按视觉复核修订后更新预览页
长标题/作者裁切、卡片参差、4+1 孤儿位、抽书页无展开暗示等缺陷已修,
用户可直接在 /books-preview/ 看修订版。
Spec: none (预览页随选型迭代,正式改动在 spec/2026-11-02_blog-5i-fonts-polish)
Co-authored-by: GLM-5.3
|
2026-11-03 11:55:33 +08:00 |
|
 wait4xandGLM-5.3
|
31fb52cb06
|
feat(books): 书架三案按视觉复核修完(长标题裁切/参差/孤儿位/无暗示)
视觉复核逐案挑出的缺陷全修:
A 竖排色脊:书名/作者按脊内竖向容量确定性截断(此前 10 字书名与 9 字作者挤成
第二窄列被 40px 脊宽裁掉);脊顶上留 10px hover 余量 + 底部基线;情绪色混色
从 16% 提到 26% 并加内描边(淡紫脊原本在白底上几乎消隐,墙被读断);短标题脊
补竖排年份填白;移动端脊高 120→172 保持 1:4 书脊比例,不再退化成矮胖色块
B 封面网格:改 3 列(5 本排 3+2,消掉 4+1 孤儿位);标题定两行高、卡片等高
(实测同行 394px 一致),同排基线不再锯齿;占位卡从单字换成竖排书名,视觉
重量向真封面靠拢
C 抽书阅读:首行默认展开 + 每行加「封面与简介 ▾」暗示(此前收起态没有任何可点
信号,看着像静态列表);去掉恒为同值的年份列;标题改定宽列 + 省略号(实测
作者列 x 全部 518,消除锯齿);作者前加「·」并与标题拉开色阶;色条加宽成贯通行
高的窄脊
验证: 构建 exit 0;content-lint 54 页 0/0/0;Playwright 实测 A 标题/作者零裁切、
B 三列且同行等高 394、C 作者列全对齐 518 且首行展开、390 下脊高 172 不溢出
Spec: 2026-11-02_blog-5i-fonts-polish (T7 预览修订)
Co-authored-by: GLM-5.3
|
2026-11-03 11:55:32 +08:00 |
|
 wait4xandGLM-5.3
|
6061c16396
|
test(e2e): 覆盖 5i 的字体加载/评论不误报/灯箱关闭/开源页动效(46→55 项)
新增九条断言,把本包修的四类回归固化成门禁:
- 字体真加载:技术轨文章的 document.fonts 必须含 LXGW WenKai Screen 与 WF-Hwmc
(此前「class 在、计算值对、字体集里没有」是静默失效,只有这条能抓到)
- 评论不误报:进视口挂载后 #artalk-retry 必须保持 hidden,且容器打上 mounted 标记
- 灯箱关闭:点 #lb-close 后 dialog 必须变 closed(此前被右侧全高侧栏吃掉点击,
表现是点了没反应,只能靠这条兜住)
- 开源页:零第三方外链图 + 打字机存在 + 数据板有自托管资产
验证: E2E_BASE=http://127.0.0.1:18934 node tests/e2e.mjs → 55/55 PASS
Spec: 2026-11-02_blog-5i-fonts-polish
Co-authored-by: GLM-5.3
|
2026-11-03 11:50:10 +08:00 |
|
 wait4xandGLM-5.3
|
cfe508ff14
|
fix(opensource): 修视觉终审的四个 P1 与灰阶/对齐细节
视觉终审对开源页改版判「需修」,逐条修完并量化复验。
P1-1 数据板空档与三段右缘不齐:streak 只占半栏、snake 通栏 → 右侧空 306px。
- 网格改 `repeat(auto-fit, minmax(320px, 1fr))`,仅一张非通栏卡时加 `.pf-card-solo`
(`grid-column: 1/-1`),语言条去掉 max-width
- 实测:统计行/语言条/数据板右缘统一 959px,streak 卡宽 298→638
P1-2 卡内 SVG 文字不可读:streak 固有 495px 被压到 298px(0.6×),14px 标签变 8.4px。
- 卡改全宽后 1:1 渲染(实测 rendered=495=natural);抓取参数把次级灰换成站点 ink:
亮色 #3f424a(10.05:1)、暗色 #b9bec8(9.07:1),旧值 #9aa0aa 仅 2.63:1
P1-3 移动端打字机折行推挤:390 下第 4 句 260px > 可用 230px 必折两行,
min-height:1.6em 挡不住 → 每轮下推 21px 再弹回。
- `@media(max-width:560px){.typing{min-height:calc(1.6em*2)}}`(实测 42px 恒定零推挤)
- 光标收成 2px 竖条 + baseline 对齐(原来是 0.5em 实心块,两行时被拉到行间)
- typing 第 4 句裁短(中文 ≤16 字、英文 ≤36 字符)
P1-4 streak 卡入场动画空壳帧:SVG 内 fadein 序列(环 0.4s/数字 0.6s/…/1.2s)+ lazy
加载 → 用户先看到 0.5–1.5s 半成品,截图也会随机拍到空卡。
- 抓取脚本新增 freezeAnimations():剥掉全部 animation 声明、opacity:0 改 1、
删除 @keyframes;重抓后 grep animation:/opacity: 0 均为 0(streak 各 6KB、
snake 35KB→20KB)
P2 一并:
- streak 亮色容器 grayscale(1) 回到灰阶基调;暗色蛇卡改 grayscale+invert+contrast+
brightness 组合,空网格不再与底色同色
- 项目墙描述 text-wrap: pretty(长描述末行孤词)
- 统计口径注释改为「三格」,不硬塞第 4 格(贡献数已由热力图承载)
- 社交图标行负 margin 做光学对齐
附:content-lint 增加 SKIP_ALL 白名单(一次性预览路由 /books-preview/ 无 en 对应页,
语言切换链接会误报断链+配对缺)
验证: 构建 51 页 exit 0;content-lint 54 页 0/0/0;E2E 46/46;
Playwright 实测三段右缘 959 一致、streak 1:1、1280/390 零横向溢出、
移动打字机高度 42px 恒定、光标 2px、项目墙 text-wrap=pretty
Spec: 2026-11-02_blog-5i-fonts-polish (T8 修复)
Co-authored-by: GLM-5.3
|
2026-11-03 11:48:25 +08:00 |
|
 wait4xandGLM-5.3
|
b8c5e1c86e
|
feat(books): 书架三方案预览页先行上线(临时路由)
用户要「直接查看网页」来选方案,故本页单独先部署;其余改版(字体按需加载、
灯箱关闭与 caption 排版、评论误报、开源页动效)仍在验证分支,选定方案后一并
合并并删掉本临时路由。
Spec: none (预览页需先上线供用户选择,其余改动仍在 spec/2026-11-02_blog-5i-fonts-polish 验证)
Co-authored-by: GLM-5.3
|
2026-11-03 11:42:25 +08:00 |
|
 wait4xandGLM-5.3
|
907f64472a
|
feat(books): 书架改版三方案预览页(临时路由)
用户要求「书架页多做出几个方案让我直接查看网页供我选择」,故先并陈三案:
A 竖排色脊墙(书脊 writing-mode 竖排、情绪色即是视觉线索)
B 封面网格(封面为主角,无封面用色脊占位 + 首字,悬停浮起并显出简介)
C 抽书阅读(一排书脊,点开原生 details 抽书,显示封面/简介/入口)
同一份数据渲染三案(posts category=reading),页顶 sticky 锚点跳转。
用户选定后:把选中方案落进 BooksPage.astro 并删除本临时路由。
验证: 构建 exit 0;dist/books-preview 27KB;Playwright 实测三案均渲染
(脊 5 / 卡 5 / 抽书行 5)、1280 与 390 均零横向溢出、破图 0
Spec: 2026-11-02_blog-5i-fonts-polish (T7 预览)
Co-authored-by: GLM-5.3
|
2026-11-03 11:41:10 +08:00 |
|
 wait4xandGLM-5.3
|
6293fe25d5
|
chore(spec): 5i 勾选 T1
Spec: 2026-11-02_blog-5i-fonts-polish
Co-authored-by: GLM-5.3
|
2026-11-03 11:28:51 +08:00 |
|
 wait4xandGLM-5.3
|
8d82aab213
|
fix(fonts): 字体切换真加载——按内容诉求注入,含瞬间排版类作用域缺口(5i T1)
用户实测「字族渲染没有成功,尤其是字体的切换」。根因不是字体没做,是加载门禁错:
BaseLayout 把 serif/kai/kuaile/hwmc 四份字体 CSS 全关在 `track === 'reading'` 分支里,
技术轨文章与全站页面(默认 track='tech')从不加载它们——于是 `.font-kai` 计算值虽是
`"LXGW WenKai Screen"`,但该 @font-face 根本不在文档字体集里,浏览器静默回退系统宋体。
- 新增 `src/lib/font-needs.ts`:`fontsFromText()` 纯函数 + `fontsForPage(pathname, track)`
按路径取该页内容(文章正文 / home.yaml / about.yaml / opensource.yaml / 全部瞬间文本)
与页面静态诉求(reading→serif;书架标题写死楷体→kai 等)算出所需字族集合
- BaseLayout 改为逐项按需注入(非阻塞 preload+onload 写法保留),noscript 同步;
汇文明朝仍走 public 手工切片路径,network/font-display 未动
- **顺手补掉 5h 遗留的用户可见缺口**:瞬间富文本容器 class 是 `mom-text`,而全局排版类
规则只覆盖 `.prose-*/.rich/.prose-body` → 瞬间里写 `font-kai`/`c-teal` 一直只有 class
没有样式(新瞬间正是这么写的,用户看到的就是"没变色没换字")。global.css 给 38 处
选择器组补 `.mom-text`
- 另修自写 bug:en 路由切分 `slice(3)` 残留前导 `/` 导致 en 页按需字体全部落空,改 `slice(4)`
验证: 构建 exit 0(content-lint 51 页 0/0/0);E2E 46/46;Playwright 实测
技术轨文章 document.fonts 命中 LXGW WenKai Screen / WF-Hwmc / ZCOOL KuaiLe /
Noto Serif SC,`.font-kai` 计算族 = LXGW 且 check=true;
首页仍为基线(零增量);瞬间页因有 font-kai 内容而命中 LXGW;
书评页只拉 serif(41 片,0 kai 0 汇文)
Spec: 2026-11-02_blog-5i-fonts-polish (T1)
Co-authored-by: GLM-5.3
|
2026-11-03 11:28:51 +08:00 |
|
 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 |
|
 wait4xandGLM-5.3
|
0ff4ede91f
|
feat(opensource): 项目墙恢复居中,README 动效以自托管方式回归(5i T6/T8)
用户两项要求:开源页 Projects「依旧采取居中即可,不用左对齐」;README 迁移后
「很多图片元素还有一些 svg 基本上都摒弃了,可以在 readme 的基础上进行再创新,
保留那些动效的图,以及创新更多一些显示方式」。
T6 项目墙居中:`.repo` 从 align-items:stretch/text-align:left 改回 center/center,
`.repo-desc` 加 max-width:34em 防居中后长描述散架;语言点保持灰阶(与对齐无关)。
T8 动效回归(零运行时外链):
- 新增 geek/TypingLines.astro:自绘打字机(SSR 先出首行防闪白,JS 逐字打出/删除/
轮播,光标 CSS 闪烁,prefers-reduced-motion 与单条文案时保持静态,min-height
防抖,astro:page-load 重挂兼容软导航)——替代 readme-typing-svg 外链,且跟随主题
- 新增 scripts/build-perf/fetch-readme-assets.mjs:抓 stats/top-langs/streak/snake
到 public/github-assets/(10s 超时 + UA、透明底、亮暗两套站点色),产物入仓保证
离线可构建;单资产失败保留旧文件、无旧文件则该卡不渲染
- GithubProfile 新增「数据板」:灰阶 hairline 卡 + mono 小标题 + 2 列网格(移动单列),
与原生统计四格、语言占比、热力图组合成展示区;贡献蛇在暗色加 grayscale+invert
滤镜(SVG 内部是自带绿阶,直接贴暗底刺眼)
- build.sh 只做存在性守卫 + 缺资产 WARN,**不挂抓取**(发布链不被外网抖动拖累)
- 后台开源页新增 typing 字段(list,zh/en 双语,≤6 条,summary 取 zh)+ schema 声明
验证: 构建 51 页 exit 0;config-check 211 字段/66 hint 全过;E2E 46/46;
产物断言第三方外链零命中、本地引用 streak-light/streak-dark/snake;
Playwright 实测打字机文本 900ms 内变化(动效在跑)、streak naturalWidth=495、
snake=880、暗色自动切 streak-dark、项目墙 center/center、1280 与 390 均零横向溢出
备注: github-readme-stats 今日全局 503,stats/top-langs 两卡按契约跳过(原生四格与
语言条已覆盖同一信息);服务恢复后跑一次 fetch-readme-assets.mjs 即自动补上。
Spec: 2026-11-02_blog-5i-fonts-polish (T6/T8)
Co-authored-by: GLM-5.3
|
2026-11-03 11:24:28 +08:00 |
|
 wait4xandGLM-5.3
|
23303bd39a
|
chore(spec): 5i 勾选 T2-T5
Spec: 2026-11-02_blog-5i-fonts-polish
Co-authored-by: GLM-5.3
|
2026-11-03 11:18:36 +08:00 |
|
 wait4xandGLM-5.3
|
31eb44caee
|
fix(comments): 评论失败提示误报与瞬间评论区配色脱同步(5i T2/T3)
用户实测:「评论区总是显示加载失败,但是实际上是正常显示的,另外瞬间的评论区
的颜色和主题色不同步」。
T2 误报根因:软导航/二次挂载时 `#artalk-lib` 脚本标签已在 DOM,但 `window.Artalk`
尚未就绪,旧代码直接 `initArtalk()` → `!lib` 分支 `showRetry(true)` → 失败提示
永久显示;随后库加载完成、评论正常渲染,提示却留在页面上。
- 脚本标签在但库未就绪 → 等它的 load 事件再 init,不再立即判失败
- 失败提示只留真失败:script.onerror,或超时且确实未挂载
- `mounting` 在所有成功/失败路径复位(旧代码失败后永真,把 IO/锚点/滚底/重试全堵死)
- 成功路径清提示;三条触发路径与重试钮、astro:page-load 复核全部保留
T3 配色脱同步:18 个 `--at-color-*` 映射原先只写在 `#artalk-container` 作用域,
瞬间容器是 `mom-atk-<slug>` 不在其内 → 回落到 Artalk 默认白底。
- 抽成共享片段 geek/ArtalkThemeStyles.astro(两处引用,杜绝双份漂移)
- **额外挖出的第 4 个坑**:Artalk init 成功会给容器加 `.artalk` 类,其 CDN 样式表
里 `.artalk{--at-color-bg:#fff}` 与裸属性选择器 `[data-artalk-panel]` 同特异性
且后加载 → 平级后来居上。瞬间容器选择器加 `body` 前缀 (0,1,1) 压住;
文章页是 `#artalk-container`(1,0,0) 本来就压得住,所以只有瞬间翻白
验证: 构建 exit 0;E2E 46/46;我独立复测——
① 文章页挂载成功且 #artalk-retry 保持 hidden
② 连发 3 次 astro:page-load 仍不误报、仍挂载
③ 瞬间评论区明暗两态 --at-color-bg 实测 rgb(255,255,255)/rgb(25,29,35)
分别等于 --bg,容器带 .artalk 类(说明是 init 后真态)
Spec: 2026-11-02_blog-5i-fonts-polish (T2/T3)
Co-authored-by: GLM-5.3
|
2026-11-03 11:18:35 +08:00 |
|
 wait4xandGLM-5.3
|
5c015c6577
|
docs(writing): 取消彩色强调次数限制,补灯箱 caption 排版说明
用户原话:「色彩强调不要设置限制,取消一页不超过三处的限制」。原「一页 ≤3 处」
是文档纪律(代码层从未硬性拦截),故改动集中在文档、模板文章与后台提示:
- 写作指南 / 管理台:改为「彩色不限次数」,同时明确仍守的另一条红线是
**外壳灰阶**(导航/页脚/按钮/背景不染色)——外壳是气质,正文是表达
- 写作模板文章中英双语同步:章节改名「想用多少用多少」,删掉"三处之后不再上色"
的示范约束,表格里「一页 ≤3 处」改为「不限次数(外壳仍灰阶)」
- 顺带补灯箱 caption 文档:照片说明支持 markdown + 排版类,深底自动取暗档;
以及灯箱四种关闭路径(右上 ×、Esc、点背景、1× 时点图)
验证: 构建 exit 0;全仓 grep 「≤3 处/页」只剩「已取消」的历史说明
Spec: 2026-11-02_blog-5i-fonts-polish (T5)
Co-authored-by: GLM-5.3
|
2026-11-03 11:18:14 +08:00 |
|
 wait4xandGLM-5.3
|
138d3d976b
|
fix(gallery): 修灯箱右上关闭点不动,caption 支持字体与颜色
用户实测:「图库中的图片点击查看之后,点击右上角的关闭无法关闭,其次就是右侧
的文字是否支持字体的更换和颜色的更换」。
关闭失灵的根因(生产实测取证):桌面端信息栏 `.lb-l2` 是 top:0→bottom:0 的
右侧全高侧栏(宽 200px),且 DOM 顺序在关闭钮之后;`document.elementFromPoint`
在按钮中心命中 `.lb-meta.lb-l2` —— 点击被侧栏吃掉,`lb.close()` 永不触发
(实测 Playwright 点击 #lb-close 30s 超时、dialog 保持 open)。给 `#lb-close`
提层级 z-index:12 后「点击 → open=false」通过。
caption 富文本:
- 照片 caption 走全站同一条管线(markdown → 内容净化三层白名单 → class 白名单),
构建期预渲染成 HTML 挂在卡片的 data-caption-html 上,换图时写 innerHTML
- 灯箱容器加 `.rich`,global.css 的 .rich .c-blue / .rich .font-kai 才生效(此前
只有触发类名的选择器、容器无 .rich 前缀,故颜色字体都不生效)
- 深底适配:灯箱内的彩色取柔和对暗底的档位;段间距收紧、首尾不撑高
- 容器由 <p> 改 <div>:caption 可含多段落,<p> 套 <p> 会被浏览器拆散
验证: 构建 exit 0;生产同款探针实测关闭生效(此前超时);
注入测试 caption 后产物含 class="c-blue"(保留)、font-kai(保留)、
**加粗**→<strong>、<script> 被净化丢弃(验收数据已还原)
Spec: 2026-11-02_blog-5i-fonts-polish (T4)
Co-authored-by: GLM-5.3
|
2026-11-03 11:18:13 +08:00 |
|
 wait4xandGLM-5.3
|
d30b5decbb
|
docs(spec): Phase 5i 立项——字体加载根治与交互缺陷修复
七项用户实测问题的取证结论写入 spec:字体切换失效根因是 BaseLayout 把四份
字体 CSS 关在 track==='reading' 里(技术轨与全站页面从不加载);Artalk 失败提示
误报源于软导航后脚本标签存在但库未就绪即判失败;灯箱右上关闭被 .lb-meta 命中
遮挡(elementFromPoint 实测)。任务拆 9 项,字族款式与书架方向待用户拍板。
Spec: 2026-11-02_blog-5i-fonts-polish
Co-authored-by: GLM-5.3
|
2026-11-03 11:03:32 +08:00 |
|
wait4x
|
2526b98323
|
Update 页面文案 “home”
|
2026-11-03 02:41:48 +00:00 |
|
 wait4xandGLM-5.3
|
36643f5cf0
|
chore(spec): 合入 CMS 侧内容编辑并解决 opensource.yaml 冲突
合远端 main(后台 CMS 期间产出 3 个「Update 页面文案」提交)时的两处冲突:
- blurb_after:取 CMS 版本(用户的编辑为准);折号间隙已由模板
`{a}{' '}{blurbAfter.trim()}` 保证,不再依赖数据前导空格
- opensource.yaml 尾部:CMS 侧把 perSource 改成 github、intro_from 切到
github-readme。**perSource 尊重用户选择**;intro_from 改回 "off" 并补注释——
本阶段的目的正是用原生档案卡替换 README 原样渲染(README 带 7 类第三方外链图,
且 `<div align="center">` 在本站失效,正是用户报告的「没居中、图片不显示」根因)。
想回退在后台把该字段切回 github-readme 即可。
顺带对齐:关于页「找到我」的邮箱原来是 admin@wait4x.online(我拟的),
改为与站点 socials 一致的 X@alumni.nudt.edu.cn,避免出现一个不存在的地址。
验证: 构建 51 页 exit 0;content-lint 51 页 0/0/0;config-check 全过;
E2E 46/46 PASS
Spec: 2026-11-02_blog-5h-content-social
Co-authored-by: GLM-5.3
|
2026-11-02 21:21:41 +08:00 |
|
wait4x
|
52188d5b12
|
Merge branch 'spec/2026-11-02_blog-5h-content-social'
Phase 5h 交付:文章置顶(sortPosts 统一口径 + 灰阶 pin 徽标 + 后台开关)、瞬间富文本(复用净化管线,字体与颜色可换)、瞬间逐条评论(展开才挂 Artalk,评论键用虚拟路径避开 # 截断)、浏览/评论计数徽标(眼睛+气泡本地 SVG,修同载双计与同页数字不一致)、开源页去 README 外链依赖(原生 GitHub 档案卡 + 语言占比灰阶 + 修 GitHub API 无 token 被打满)、关于页承接个人叙述、写作模板示例文章(中英双语,本身即置顶活样本),以及视觉终审两轮修复(日期折行、emoji 豆腐块、移动导航折行、灰阶纪律清剿)。
Spec: 2026-11-02_blog-5h-content-social
|
2026-11-02 21:16:43 +08:00 |
|
 wait4xandGLM-5.3
|
fef2de1d37
|
chore(spec): 归档 blog-5h——七任务收敛
Spec: 2026-11-02_blog-5h-content-social
Co-authored-by: GLM-5.3
|
2026-11-02 21:16:42 +08:00 |
|
 wait4xandGLM-5.3
|
bdaf02f9ca
|
fix(opensource): 项目墙卡片左对齐与 bio 间隙兜底(视觉终审二轮)
Finding 1(P1)项目墙卡片内容被居中:
- 根因是全局 `.tap { display:inline-flex; align-items:center; justify-content:center }`
沿列向 flex 的交叉轴生效,`.repo`(scoped)只赢下 display 没接管 align-items,
于是标题与「● 语言 ★ n」行落在卡中部、卡片间左缘参差
- `.repo` 显式 align-items: stretch + text-align: left;实测四张卡的
.repo-name 与 .repo-meta 左缘全部 313px(= 卡左 296 + 内距 16 + 边框 1)
Finding 2(P2)bio 破折号间隙修在数据不在模板:
- 原靠 opensource.yaml 串前导空格产生间隙,后台清空走兜底串时缺陷回归
- 模板改为 `{a}{' '}{blurbAfter.trim()}`:间隙由模板保证,数据怎么改都不会贴链接
验证: 构建 51 页 exit 0;content-lint 0/0/0;spec_verify 七项 exit=0(新指纹
62086ce4cccd);check 收敛;DOM 实测对齐与间隙均符合预期
Spec: 2026-11-02_blog-5h-content-social (视觉终审二轮)
Co-authored-by: GLM-5.3
|
2026-11-02 21:14:37 +08:00 |
|
 wait4xandGLM-5.3
|
c7d1e7b975
|
fix(moments): 评论流键从 #<slug> 改为虚拟路径,避免键被截断
实测发现 `#` 在查询串里是 fragment 分隔符:裸传 `/moments/#2026-11-02` 会被服务端
截断成页面级键 `/moments/`(生产 Artalk 实测,响应里 key 变成 "/moments/"),
后果是所有瞬间共用同一个评论流、pv 也串在一起。
- page_key 改为虚拟路径 `/moments/<slug>/`(生产实测键原样保留,零转义风险;
将来真做单条瞬间页时键天然对齐)
- spec 与 runs.jsonl 口径同步(七项 verify 在新指纹下重跑全绿)
验证: 构建 51 页 exit 0;产物含 /moments/2026-11-02/ 键;content-lint 0/0/0;
spec_verify 七项 exit=0;check 收敛
Spec: 2026-11-02_blog-5h-content-social (T3 修正)
Co-authored-by: GLM-5.3
|
2026-11-02 21:05:51 +08:00 |
|
 wait4xandGLM-5.3
|
550f6d15b4
|
chore(spec): 5h 任务全勾与运行证据入库
- tasks.md 七任务全勾;spec.md 功能框与成功标准全勾
- §5.1 全项目检查补升级条件(触及 BaseLayout/全局样式或 Artalk 接管层才升级)
- runs.jsonl 记录七项 verify 全部 exit=0(含本包新增的 E2E 46 项口径)
- content/.link-cache.json:链接卡片缓存随新文章构建刷新(入仓保证构建确定性)
Spec: 2026-11-02_blog-5h-content-social
Co-authored-by: GLM-5.3
|
2026-11-02 21:01:47 +08:00 |
|
 wait4xandGLM-5.3
|
d4fe273812
|
fix(visual): 修视觉终审的折行/豆腐块与灰阶纪律违规
视觉终审(glm-5.3-flash:max)判 BLOCK,逐条修完并复测。
P1 阻断:
- 瞬间页日期折成两行(`2026-` / `04-29`):日期列复用 var(--space-5)=40px,
而 10 字符 mono 日期需 ≈75px 且缺 nowrap。抽 --tl-rail(5.4rem) 统一驱动
轨道宽度与两处偏移,加 nowrap;实测日期单行(高度 20px)且圆点与卡片对齐
P2 交付可见破形:
- 关于页「关于我」行首 emoji 在无彩色 emoji 字体的环境渲染成黑方块:
正文行首 emoji 全部去掉(改纯文字段落),并给 --font-serif/--font-sans
链尾补 Apple/Segoe/Noto emoji 回退——用户内容里的 emoji(瞬间、书评)
同样不再落豆腐块
移动端导航两字折行(开/源、文/章):
- ≤450px 的 overflow-x 内滚从未生效:flex 子项默认可压缩,中文词被压到就地
折行。给 nav ul > li 加 flex:none + .nav-link nowrap;实测 360/390/430
三档全部单行(Range.getClientRects 计数逐项验证)
灰阶纪律:
- 项目墙原来按 GitHub linguist 给每个仓染语言色点,开源页铺 15 个仓 = 15 种
彩色,破「外壳灰阶、彩色只作正文强调」红线 → 统一改灰阶点,语言靠文字承载
- 语言占比并列(Python/TypeScript 各 36%)只有第一名着色,读起来像谁领先 →
判定改为「百分比等于最大值者一并着色」
版式与文案细节:
- prose 标题到正文比 tracks 多一档(16+16=32 vs 16)→ .sec-title + .prose-body
margin-top: 0
- 开源页 bio 破折号贴链接(`blog—— Astro`)→ 破折号前补空格
- 页脚 built from<hash> 缺空格(Astro 吃掉换行处空白)→ 显式 {' '}
- 新增一条真实瞬间(含青色楷体富文本)替代只有占位串的样本,让评论区与标签行
的间距可在真实数据下验收
验证: 构建 51 页 exit 0;content-lint 51 页 0/0/0;E2E **46/46 PASS**;
390px 四页 scrollWidth == innerWidth(无横向滚动);
导航 360/390/430 全部单行;日期单行;config-check 全过
Spec: 2026-11-02_blog-5h-content-social (视觉修复)
Co-authored-by: GLM-5.3
|
2026-11-02 20:56:00 +08:00 |
|
 wait4xandGLM-5.3
|
0b0307b12f
|
docs(admin): 补档案卡与计数徽标说明(5h T7 文档收尾)
- 管理台「开源页」节:说明开篇已改原生 GitHub 档案卡(零第三方图片、
语言占比灰阶、取数失败只隐藏该项),并把 intro_from: github-readme
标为「仍可用但不推荐」——点名 7 类外链图与 align 居中失效正是用户
报告的"没居中/图片不显示"根因
- 新增「浏览与评论计数」节:眼睛/气泡含义、一页只计一次(其余为只读镜像,
不会出现两个不同数字)、开评论不算浏览、接口挂掉显示「–」不给假零、
换页重计属定义而非双计
验证: pnpm astro build exit 0
Spec: 2026-11-02_blog-5h-content-social (T7 收尾)
Co-authored-by: GLM-5.3
|
2026-11-02 20:37:01 +08:00 |
|
 wait4xandGLM-5.3
|
3e377adc7f
|
feat(opensource): 开源页改原生档案卡,个人叙述迁往关于页(5h T5/T6)
用户原话:开源页开篇是从 GitHub README 直接移植的,「部分内容没有居中,有些图片
也没有正常显示,可以自行进行美化,无需完全一致……有些可以直接移植到关于页面」。
病根:README 是 GitHub 专用 markdown——`<div align="center">` 靠 HTML 属性居中
(本站按普通块渲染,故"没居中"),且依赖 7 类外链图(readme-typing-svg /
shields.io / github-readme-stats / streak-stats / activity-graph / snake /
komarev),慢网或被墙时全空白(故"图片不显示")。
T5 开源页重构:
- 新增 geek/GithubProfile.astro:头像 / 名字@handle / 定位叙述 / 社交图标 /
统计四格(followers、公开仓、总星标)/ 语言占比灰阶条(仅第一名 accent,
其余 tokens 灰阶)——**零外链图、零 iframe、零第三方徽章**
- 语言聚合复用 loadProjects 的结果;followers 与公开仓数走 GitHub REST
- 任一取数失败只隐藏该项(catch + warn),绝不炸构建
- opensource.astro / en:档案卡承接原 README 位置 → 热力图 → 项目墙;
README 渲染降级为兼容通道(intro_from=off 时不执行),yaml 注释写明
7 类外链图与 align 失效原因并标「不推荐」
- **修既有隐患**:GitHub API 请求原先不带 token,匿名 60 次/小时在密集构建下
被打满 → 项目墙退化成兜底 JSON(今天一度只剩 1 条)。现对 api.github.com
自动附 Bearer(token 读宿主 0600 文件,不入仓),墙恢复 16 条、总星标 0→66、
语言占比变真值
T6 关于页承接:
- about.yaml blocks 扩为 prose / tracks(兴趣版图)/ prose(关于我)/
linklist(找到我:本站·邮件·GitHub·自建 gitea·RSS)/ prose(本站如何构建),
双语齐备;AboutPage 零改动(blocks 早已驱动)
- 原则落地:关于页讲人,开源页讲开源,两边不再重复
验证: 构建 51 页 exit 0;content-lint 51 页 0/0/0;config-check 全过;
E2E **46/46 PASS**(37 原有 + 本包新增 9 项:置顶顺序与徽标、文章页计数、
模板彩色与折叠、瞬间评论区与只读计数、关于页块驱动);
dist/opensource 七类第三方外链零命中、第三方 img 数 0;数据实值:
语言占比 Python/TypeScript 各 36%、Shell/Rust/JS 各 9%
Spec: 2026-11-02_blog-5h-content-social (T5/T6)
Co-authored-by: GLM-5.3
|
2026-11-02 20:35:56 +08:00 |
|
 wait4xandGLM-5.3
|
63c9c8ad4a
|
feat(counts): 浏览/评论徽标接入文章与瞬间页,修同载双计(5h T4)
用户要「加一个访客数量、评论数量,采用类似于开源页面从 GitHub 移植过来的那个
眼睛图标」——落地为 ViewMeta 本地 SVG 徽标,无第三方图片依赖。
接入(op-artalk 车道):
- 文章详情页 reading/tech 两分支各挂一枚 mode="page"(两分支互斥,同页仅一处计数)
- ArtalkComments 顶部旧的纯文本 pv 行与自成一套的 bumpPv 脚本整段删除,改为
readonly chip:评论区只读展示,不再各计一次
- 瞬间页顶部整页 pv 行同样改 chip;每条瞬间卡片底部为 readonly 徽标
组件修复(本人,op-artalk 实测揪出):
- **同载双计**:脚本既注册 astro:page-load 又立即调用 run(),首屏两者都会触发
→ 每元素 POST 两次、浏览量翻倍(实测 15→17→19 每载 +2)。加每元素一次性
守卫后 1/2/3 每载 +1;软导航新元素仍照常计数
- **同页两枚数字差 1**:readonly 实例独立 GET 到的 pv 可能比计过数的少 1;
改为同键存在 page 实例时 readonly 让位,由 page 实例回填同一份结果
- page 实例请求失败时释放兄弟自读,避免评论区永远停在「–」
验证: 构建 exit 0;E2E 37/37;Playwright 拦截对账——
每载 POST=1、同页两枚徽标文本一致(101/101)、刷新后累计 2、
接口全挂时两枚均显示占位「–」不报错
Spec: 2026-11-02_blog-5h-content-social (T4)
Co-authored-by: GLM-5.3
|
2026-11-02 20:29:44 +08:00 |
|
 wait4xandGLM-5.3
|
8e74bead62
|
feat(moments): 瞬间富文本与逐条评论(5h T2/T3)
瞬间文字从纯文本直出升级到与文章同级表达力,每条动态获得独立评论流。
T2 富文本:
- text 在 frontmatter 预渲染成 momentId → html 的 Map(renderRich 是 async,
模板内不能 await),模板只此一处 set:html 且喂的是净化产物
- 走与全站文案同一条管线:markdown → 内容净化(标签/属性/协议三层白名单)
→ class 白名单 35 项,故 <span class="c-blue font-kai"> 生效、
<script> 整棵子树被丢弃(实测)
- 纯文本老数据零回归:无 markdown 的 text 得到单个 <p>,与旧直出视觉等价
- 卡片内富文本首尾 margin 归零、段间半档、列表缩进 1.35em,15px/ink-2 基调不变
T3 逐条评论:
- 新增 MomentComments.astro:<details> 折叠,**展开才拉 Artalk 并 init**
(未展开连 Artalk.js 都不下载,时间线一屏十几条不白付成本)
- page_key = /moments/#<slug>,中英双语共用同一评论流(与文章页同策略)
- pvAdd: false 且复用 ViewMeta readonly 计数:读者开评论不会虚增浏览数
- 5s 兜底失败提示 + 重试;软导航回页对已展开的框补挂
- Playwright 实测同页两个容器各自 init 成功(各渲染 31 个 atk-* 节点,无异常),
故无需降级;若日后内存吃紧可对上一实例调 destroy() 一行切换
验证: 构建 exit 0;E2E 37/37(快照口径);临时瞬间实测 markdown 粗体、
彩色+楷体类保留、行内码、<script> 净化丢弃、details 与 /moments/# 键、
ViewMeta 只读挂载全部命中(验收数据已还原)
Spec: 2026-11-02_blog-5h-content-social (T2/T3)
Co-authored-by: GLM-5.3
|
2026-11-02 20:20:31 +08:00 |
|
 wait4xandGLM-5.3
|
5bf0c327bf
|
feat(content): 写作模板示例文章与文档(5h T7 主体)
用户要「在文章中加一篇关于文章书写的模板示例」,故交付一篇**可复制**的模板
文章而非干条文:正文每节都在真跑一种能力,读者看到的效果就是源码的效果。
- content/posts/writing-template.md(zh)与 posts-en 同名 en 版(locked:true
手写直译,不交给 TMT 重译):标题层级纪律、彩色强调(一页三处限额)、
字族(楷/汇文明朝各一处 + 六族清单)、引用/列表/代码窗条/表格/图片放大/
链接卡片/details 折叠/分隔线
- pinned: true —— 这篇文章同时是置顶功能的活样本(归档首条实测)
- 后台 moments.text 由 text widget 改 markdown widget + 排版类提示:瞬间从此
与文章同级表达力(字体/颜色/多段),提示里写明外壳灰阶纪律
- docs/写作指南.md 新增三节:写作模板(cp 起步 + 三条纪律)、置顶文章
(语义边界:只改顺序不改 pubDate/URL/RSS)、瞬间怎么写(富文本 + 逐条评论
+ 只读计数 + text/image 至少一项)
验证: pnpm astro build 51 页 exit 0;content-lint 51 页 0 断链 0 缺图;
产物断言 c-blue/font-kai/font-huiwen/details/table 全部生效;
dist/archives 首条 = writing-template(置顶排序生效)
Spec: 2026-11-02_blog-5h-content-social (T7)
Co-authored-by: GLM-5.3
|
2026-11-02 20:08:21 +08:00 |
|
 wait4xandGLM-5.3
|
6538311387
|
feat(content): 置顶契约与计数徽标组件(5h T1 契约部分)
置顶(T1):
- src/lib/post-order.ts 新增 sortPosts:置顶优先 → pubDate 倒序 → id 兜底,
把首页双轨/归档/书架四处排序口径收敛到一处
- postsSchema 增 pinned;PostList 三处渲染路径加灰阶 pin 小徽标;后台置顶开关
- 语义边界:只影响列表顺序,不改 pubDate/URL/RSS 时间语义
计数徽标(T4 契约组件):
- src/components/geek/ViewMeta.astro:眼睛 = 浏览数、气泡 = 评论数,
本地 SVG + tokens 着色,不引第三方图片
- 数据只用 Artalk 匿名端点:GET comments?limit=1 一次拿到 count 与 page.pv;
page 模式先 POST pages/pv 计一次浏览,readonly 模式零写入
- SSR 占位「–」:无 JS/接口失败不显示 0 误导读者
验证: pnpm astro build 48 页 exit 0;config-check 208 字段/65 hint 全过;
sortPosts 四调用点替换后构建通过
Spec: 2026-11-02_blog-5h-content-social (T1 契约)
Co-authored-by: GLM-5.3
|
2026-11-02 20:02:08 +08:00 |
|
wait4x
|
cdd9c61641
|
Update 页面文案 “home”
|
2026-11-02 11:47:24 +00:00 |
|
wait4x
|
e1fc8bd64c
|
Update 页面文案 “opensource”
|
2026-11-02 11:45:26 +00:00 |
|
wait4x
|
cc12e016ab
|
Update 页面文案 “opensource”
|
2026-11-02 11:42:51 +00:00 |
|
 wait4xandGLM-5.3
|
ed473e996a
|
fix(admin): 主题设置集合结构修复 + 集合结构构建校验
用户实测后台报错:「主题设置 集合: The file option content/site/theme.yaml is
invalid. It must be the path to a JSON file」——根因是 site_theme 把 `file:`
直接写在集合层级,而 Decap/Sveltia 的文件集合必须是
`files: [{ name, label, file, format, fields }]` 结构;缺 files 包装时 Sveltia
按单文件变体解析并期待 JSON 路径,故报该错。
- site_theme 改为标准 files 集合(format: yaml 显式声明)
- site_pages 三单例补显式 format: yaml(扩展名推断可用但显式更稳)
- config-check.py 增加结构断言:每个集合必须 folder 或 files 二选一、files
项必须齐 file/label/fields、file 必须指向真实文件——这类"后台整体打不开"
的结构错从此在构建期拦截
验证: config-check 五文件全 OK(207 字段/64 hint)+ 结构断言通过;
pnpm astro build exit 0
Spec: none (后台配置结构修复,构建校验加固)
Co-authored-by: GLM-5.3
|
2026-11-02 19:35:28 +08:00 |
|
wait4x
|
c772236d1a
|
Merge branch 'spec/2026-11-02_blog-5g-pages'
Phase 5g 交付:块式页面构建器(关于页九类区块驱动)+ 样式即数据(theme.yaml + 对比度闸门)+ 首页抽 HomePage 消双份与三字段 + 开源页收尾(README 四级回落/兜底 8 仓/可见性告警)+ 后台文档与 hint(config.yml 重复键结构缺陷修复)+ 字体子集化(汇文 -40%)+ 全站三层排版(富文本/页面级覆盖/艺术字体类)。
Spec: 2026-11-02_blog-5g-pages
|
2026-11-02 19:20:17 +08:00 |
|
 wait4xandGLM-5.3
|
a89c443c25
|
chore(spec): 归档 blog-5g——七任务收敛
Spec: 2026-11-02_blog-5g-pages
Co-authored-by: GLM-5.3
|
2026-11-02 19:20:17 +08:00 |
|
 wait4xandGLM-5.3
|
23b79a2473
|
chore(spec): blog-5g 全任务勾选(T4 措辞修正)
Spec: 2026-11-02_blog-5g-pages
Co-authored-by: GLM-5.3
|
2026-11-02 19:18:03 +08:00 |
|
 wait4xandGLM-5.3
|
8274180f81
|
docs(admin): 后台文档与 hint 补齐 + 修复 config.yml 重复键结构缺陷(5g T6)
- docs/管理台.md 扩写 25→156 行(原文要点全保留,131 增 0 删):四集合
总表、块编辑九类(字段+示例 yaml+预览限制)、页面排版覆盖(含整页换字体
的体积成本提醒)、theme 17 旋钮分组约束、首页三字段、开源页六字段 +
include 未命中排查 + README 回落矩阵四级(把 T5 的"相对链接不重写/
徽章不阻断"两条限制落到用户文档)
- docs/写作指南.md:首页可配项补三行、新增「页面块」字段速查节(含 ≤24
块/≤4000 字/未知块跳过/空则回落 intro 的边界)、字体子集化段
(694KB→420KB −40% + subset-fonts.py 命令)、加字流程第④步挂子集化
- 后台 hint 49→64:九类块型说明、tagline/blurb、font 下拉体积提醒、scale
取值范围
- **修 config.yml 结构缺陷(重要)**:typography 对象被插进双语字段的
name: 与 widget: object 之间,导致重复键 widget/fields(后者覆盖前者)→
后台 tagline/blurb 退化成字符串写入、排版选择器字段被劫持。已挪到双语
字段之后,恢复 object+zh/en 结构(重复键检测:修前 4 处 → 修后 0)
- 新增 scripts/build-perf/config-check.py:用自定义 StrictLoader 在解析阶段
对重复键报错(Python 默认 safe_load 静默覆盖是本次漏检根因)+ hint 覆盖
率体检;build.sh 守卫挂载([ -f ] 先行,与既有闸门同级)
验证: 构建 48 页 exit 0;E2E 37/37;content-lint 49 页 0/0/0;对比度闸门
4 项 PASS;config-check 五文件全 OK + 206 字段/64 hint
Spec: 2026-11-02_blog-5g-pages (T6)
Co-authored-by: GLM-5.3
|
2026-11-02 19:16:43 +08:00 |
|