 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
|
58baad5a7b
|
feat(content): 瞬间/书架标题下的话语改为后台可编辑(5j T3)
用户原话:「瞬间、书架大标题下的话语我从哪里去改?包括其字号颜色还有字体」——
此前这两行是硬编码(瞬间来自 i18n 字典、书架是组件里的字面量),后台完全改不了。
- 新增 sitePages 单例(content/site/pages.yaml)+ pageNote() 访问器:note 走富文本
行内管线,空则回落内置默认(原硬编码两句逐字搬入 PAGE_NOTE_DEFAULTS)
- 样式只开放三档并全部夹取:size 11–16px、color 仅 ink-1..ink-4、font 仅排版类白名单
—— 后台可填任意值,不能让它破版或染色
- **关键坑**:字体类不能只挂 class——global.css 的 .font-kai/.font-sans 全挂在富文本
容器作用域(.prose-*/.rich/.mom-text/.prose-body),裸 .page-note.font-kai 拿不到
规则(实测第一次无效,仍是 Noto Sans)。改为复用 fontVarFor() 产出 inline
font-family,class 仅作语义
- 书架与瞬间各自独立配置;默认值取「改造前外观」(均 font-sans)
验证: 构建 exit 0;content-lint 52 页 0/0/0;E2E 56/56;
实测(只改 books 样式)书架 computed = 16px / rgb(51,52,58) / Ma Shan Zheng,
瞬间保持 13px / ink-4 / Noto Sans(两页互不影响);
op-gitea 侧另测:仅改文本、整段删 style(与基线逐字段一致)、非法值
(size:40/color:red/font 乱写)全部安全回落
Spec: 2026-11-03_blog-5j-content-refine (T3)
Co-authored-by: GLM-5.3
|
2026-11-04 20:14:59 +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
|
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 |
|
 wait4xandGLM-5.3
|
3b951d3de6
|
feat(archive): 文章折叠——首页 6 篇+归档年月折叠+书架年折叠
①首页 PostList limit=6 + 「全部文章 →」双轨入口(用户拍板 6 篇)
②/archives 年 <details>(最新年 open,summary「2026 · N 篇」+▸ 自绘
箭头)+ 年内按月分组小标题;零 JS 依赖、内容全在 DOM(SEO
无损)③/books 年折叠(色脊/书封渲染零改动)④E2E +3 断言
(首页≤6+入口/归档 open 唯一+月分组/书架年组不变量)
E2E 弦键竞态根治:折叠批的多次导航扰动 g-chords 时序——洁净起
点(先回稳定页)再测弦,测试意图不依赖前序状态,37/37 连跑稳定
车道:op-gitea(lint 43 页 0/0/0);收编复验首页 6 行+入口/归档
1 年开 12 月组/书架年折叠/en 轨全过
验证: E2E 37/37 连跑两次;content-lint 0/0/0;首页/归档/书架/
en 四页 playwright 实测
Spec: none (折叠批,车道级交付)
Co-authored-by: GLM-5.3
|
2026-11-02 10:00:45 +08:00 |
|
 wait4xandGLM-5.3
|
9702c9faf4
|
feat(books): 书封接口——schema cover 字段+书架卡封面渲染
posts schema 加 cover?: image(image() 走 Astro 优化管线,仅阅读
轨消费);BooksPage 有封面渲染 96/192 两档 Image、无封面优雅回
退现有色脊卡设计(零破坏);目录 content/posts/assets/books/ 就位;
docs/写作指南.md 补用法节(路径/frontmatter 示例/尺寸建议)。
验证: pnpm astro build;E2E 34/34;现 5 本书全部回退色脊卡渲染
(封面貌 0,待用户加图)
Spec: none (书封接口预留,用户自行加图)
Co-authored-by: GLM-5.3
|
2026-11-02 09:12:34 +08:00 |
|
 wait4xandGLM-5.3
|
147f00fe1c
|
perf(fonts): 字体按轨瘦身与非阻塞加载——Perf 62→88(Lighthouse P0)
- BaseLayout:8 个字体包 CSS 改 ?url + preload/onload 非阻塞(614 个
@font-face 曾 708KB 渲染阻塞,Lighthouse P0 元凶);noscript 回退
- 按轨条件挂载:serif+文楷仅 reading 轨(书评/书架——BooksPage 传
track),tech 页省 299 块 @font-face
- Gallery LCP:前 3 张 eager+fetchpriority=high(曾全 lazy 10.3s)
- 对比度:PostList .track 与 .post-cat 提 --ink-2(A11y P1)
- favicon.svg 补缺(BP 扣分项)
- 教训:python replace 再犯静默失配(车道改过导入顺序)——已用 edit
工具精确替换 + assert 意识持续强化
验证: 本地 dist lighthouse 首页 Perf 62→88,render-blocking 无;
FCP 2.5s/LCP 3.2s;E2E 30/30 PASS(staging)
Spec: 2026-10-25_add-blog-5c
Co-authored-by: GLM-5.3
|
2026-10-25 19:32:53 +08:00 |
|
 wait4xandGLM-5.3
|
40346c3f21
|
fix(books): 泥潭策展语与回退契约实现;自托管仓星标语义
- BooksPage 实现 schema 注释承诺的 description 回退(正文首段去记号
取 60 字)——视觉复核抓到的"文档说了代码没做"缺口
- 泥潭补人工策展语(回退之上);自托管仓星标改 self-hosted 徽标
(gitea 无 star 真值,★0 语义突兀——视觉复核次要备注)
验证: build 28 页 exit 0;dist/books 含泥潭策展语;dist/opensource
self-hosted 徽标与 ★57 并存实测
Spec: 2026-10-25_add-terminal-books-admin
Co-authored-by: GLM-5.3
|
2026-10-25 13:46:56 +08:00 |
|
 wait4xandGLM-5.3
|
90574edce7
|
feat(pages): /books 书架与 /opensource 开源页——导航第四项(T2/T5)
- BooksPage:色脊排版卡(mood 竖脊+文楷书名+作者+三行截断策展语)
× 年份分组规整网格;zh/en 双路由;阅读轨标题旁「书架 →」入口
- /opensource:全量仓墙(ProjectWall 加 limit prop,首页精选 6 不变)
+ 热力图 + 本站开源叙事段;导航第四项「开源」(i18n nav_opensource)
- 五书 frontmatter 策展字段(含泥潭=刘楚昕)
验证: build 28 页 exit 0;books/opensource zh/en 五路由产物断言过;
五书卡与作者 grep 在案;E2E 30/30 PASS
Spec: 2026-10-25_add-terminal-books-admin
Co-authored-by: GLM-5.3
|
2026-10-25 13:46:56 +08:00 |
|