 wait4xandGLM-5.3
|
f5232b7c03
|
feat(content): 链接卡片模式——独立成段裸链接转 OG 预览卡
- rehype-link-cards.ts 构建期插件:段落仅含一个链接才转卡(内联链接
保持普通样式);fetch OG/twitter 元信息(UA 伪装、4s 超时、只读前
200KB)+ favicon 兜底;任何失败回落普通链接,构建绝不因外部站点挂
- content/.link-cache.json 入仓缓存(30 天刷新,构建确定性与零重复
请求);单篇上限 10 卡、并发 4,超出回落
- LinkCardStyles.astro 灰阶卡片样式:hairline+圆角、favicon 16px、
标题一行/描述两行截断、域名 mono、OG 图右侧 88px(无图不占位)、
hover 1px 微浮(reduced-motion 豁免)、纯 CSS 零 JS
- 安全:抓取内容全 escaping、图片地址仅 http(s)
- @astrojs/markdown-remark 依赖(Astro 7 换默认 markdown 处理器后
自定义插件必须经此包生效)
- 样张 content/posts/link-cards-test.md(tags 含 hidden,活样例不列出)
修复说明:264148f 提交时误带入 archives 页面对 LinkCardStyles 的
import(两车道共改同一文件),本笔补全组件与插件,恢复构建仓可用。
教训:跨车道共改文件,staged 前必须看 diff 归属。
车道:op-artalk;收编复验:本地构建 45 页 + 卡片渲染(后续专项复验)
验证: pnpm astro build 45 页 exit 0;link-cards 样张页渲染正常
Spec: none (链接卡片,车道级交付)
Co-authored-by: GLM-5.3
|
2026-11-02 12:46:26 +08:00 |
|
 wait4xandGLM-5.3
|
264148f0a6
|
feat(cms): 内容管理闭环——站点单例三件套+文章视频字段
- A 站点文案单例:content/site/{home,about,opensource}.yaml +
src/lib/site-content.ts 访问层(字段级回落默认,默认值=原文案逐字
一致,零回归);接线主页 tagline(en 首页新增该块)、关于页 intro、
开源页叙述三段 + PINNED 参数化(projects.ts: loadProjects(pinned)
/orderPinned,PINNED_DEFAULT 仅缺省兜底)
- loader 语义修正(返工如实入档):Astro 7 的 file() 把 YAML 顶层对象
按 Object.entries 拆成多条目(id=key、data=value),单例字段必炸
schema;改 glob 精确到单文件 = 真单例语义,data 即文件根对象,
Sveltia 可编辑根字段零嵌套(比包 main: 层的方案后台体验更好)
- B 文章媒体:posts +video/+poster;Sveltia file 字段
(media_folder=public/media、public_folder=/media、hint ≤50MB);
正文后渲染 video controls preload=metadata playsinline,无则不渲染;
图片链路核对本已一致(./assets 走 Astro 管线);链接 markdown 原生
- docs/写作指南.md 补「后台上传」节(三类媒体 + 三单例操作 + 体积纪律)
Sveltia 集合:posts / moments / photos / site_pages(三单例)
车道:op-gitea(实测 tagline 改 yaml 产物联动、置空回落默认、pinned
改名排序变、视频临时件渲染全对、构建绿 + lint 45 页 0/0/0);收编
复验:构建 44 页 + E2E 37/37 + 三 yaml 扁平键就位
验证: pnpm astro build 44 页 exit 0;E2E 37/37 PASS;content-lint
0/0/0;播放器/单例/置顶 playwright 实测全过
Spec: none (内容管理闭环,车道级交付)
Co-authored-by: GLM-5.3
|
2026-11-02 12:42:10 +08:00 |
|
 wait4xandGLM-5.3
|
a761cf8129
|
feat(papers): 论文内置阅读——arXiv iframe 零再分发合规方案
Agensh(arXiv 2609.26781)在线研读页:/papers/agensh/ 双轨薄壳
_PaperView 共享视图+六词条;信息条含标题/作者/abs 链接/授权声明
(arXiv nonexclusive-distrib 1.0,非本站托管)/下载钮。
合规红线:许可证禁第三方再分发→仓内零 PDF 副本,iframe 直嵌
arxiv(实测无 X-Frame-Options);微信 webview 前置 UA 检测加
is-wechat 类、iframe 不挂 src 零无用请求、兜底卡指引右上角浏览
器打开;非微信 data-src 懒挂载+9s 弱兜底+noscript 兜底。正文
入口卡双轨已渲染。
车道:op-gitea(专项四断言+E2E 34/34);收编复验六断言全过
(iframe/授权/微信降级/en/入口卡/零 PDF)
验证: E2E 34/34;微信 UA 模拟 is-wechat=true src 空 提示在;
git status 零 .pdf
Spec: none (论文阅读页,车道级交付)
Co-authored-by: GLM-5.3
|
2026-11-02 08:41:39 +08:00 |
|
 wait4xandGLM-5.3
|
bbb52b9e24
|
docs(post): 删除《单人博客的多智能体工程》(用户拍板)
与三篇工具详解定位重叠,用户选择保留详解三部曲。删除为单点
操作:无 en 版、无 translation-state 条目、无他文内链引用;构
建 42 页、lint 43 页 0 违例复验通过。
验证: pnpm astro build 42 页;content-lint 0 断链 0 缺图 0 配对
警告;dist 无残留页
Spec: none (内容删除,用户决策)
Co-authored-by: GLM-5.3
|
2026-11-02 08:39:02 +08:00 |
|
 wait4xandGLM-5.3
|
8571acdc8b
|
feat(post): 工具三部曲——spec-harness/pi-mesh 全家桶/Agensh 论文笔记
用户直派车道交付:①Spec Harness 详解(任务包解剖+流水线图,
boundary/verify 实例+12 命令+门禁)②pi-mesh 四件套(stack 图+
合奏循环图+上手安装)③Agensh 论文笔记(三支柱/协作环/规模收
益图,DeLM 血统+issue#13→pi-board 诞生线)。七张自绘 SVG、双
语(en 手写直译 locked:true,禁 TMT 覆盖)。与既有 spec-
workflow-and-mesh(实战复盘向)互补并存。
车道:worker-one(build/lint/外链 curl/视觉两轮 7/7 全绿);收
编复验 E2E 34/34+lint 43 页 0/0/0
验证: pnpm astro build 39 文;E2E 34/34;content-lint 0/0/0
Spec: none (内容三篇,直派车道收编)
Co-authored-by: GLM-5.3
|
2026-11-01 13:35:27 +08:00 |
|
 wait4xandGLM-5.3
|
d8997c3c72
|
feat(gallery): 灯箱 v2 收编——caption 字段全链+21 条视觉轨拟稿
schema caption?:string(人为描述,注释区别 alt 无障碍语义)+
Sveltia textarea 字段+21 条 json 全量上稿(视觉轨看图代拟策展
语气,用户可后台逐条改);GalleryPage 灯箱重构与缩放交互已随
44626f8/54769bc 入库,本笔补数据面。
车道:op-artalk(专项 8/8+E2E 34/34);视觉复核三问 PASS
(舞台纯净/meta 分层/caption 策展语气),唯一需修点=放大态
caption 遮挡→v2.1 ③ zoom 自动隐层已立项在治
验证: E2E 34/34;caption 渲染实测「落日把海与城一齐烫成金
箔…」;content-lint 0/0/0;schema 过构建
Spec: none (灯箱 v2 数据面收编,交互面已在库)
Co-authored-by: GLM-5.3
|
2026-11-01 12:51:20 +08:00 |
|
 wait4xandGLM-5.3
|
541710b50a
|
feat(post): 单人博客的多智能体工程——spec 与 mesh 实战复盘
四节+结语:19 连发压力日引入 / spec 任务包(blog-5f 实引 verify
原文与已证伪路径)/ mesh 交通规则(契约式下达-预约拦刀实录-守卫
铁律)/ 纪律从事故长出来(验收先探实值-口径错配-五段式运维-视觉
双轨-解封后 SEO 100)。全部数字与命令对档核验。
车道:worker-one(1906 字/schema 过/lint 0 违例);收编补引文精度
(T1 verify 对齐原文四条件)
验证: pnpm astro build 36 页;E2E 34/34;content-lint 0/0/0
Spec: none (内容文章,车道级交付)
Co-authored-by: GLM-5.3
|
2026-11-01 11:58:42 +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
|
3bd8369eda
|
feat(books): 五书策展字段与泥潭作者;顺带入 T1 终端页文件
- schema 加 description/bookAuthor 可选;五书补字段(一句话策展评语
+ 原书作者;泥潭=刘楚昕 用户提供)
- 任务包入 T5 /opensource 独立页(用户追加需求,方案 A 复用扩展)
- 因 add -A 顺带包含 op-artalk 车道已自验 12/12 的 src/pages/terminal.astro
(T1 交付物,验收随后)
验证: grep bookAuthor content/posts/*.md 五篇命中;schema 可选字段
对既有构建零破坏
Spec: 2026-10-25_add-terminal-books-admin
Co-authored-by: GLM-5.3
|
2026-10-25 13:46:56 +08:00 |
|
wait4x
|
5efbbb2f18
|
Delete 图库照片 “暮色山影-t3” +1
|
2026-10-25 05:29:00 +00:00 |
|
wait4x
|
6f711819e2
|
Create 图库照片 “暮色山影-t3”
|
2026-10-25 05:24:03 +00:00 |
|
wait4x
|
cc4a71b968
|
Upload “content/photos/t3-test-photo.jpg”
|
2026-10-25 05:17:16 +00:00 |
|
wait4x
|
9db1ce11e5
|
Update 图库照片 “1766156983093”
|
2026-10-25 05:04:03 +00:00 |
|
wait4x
|
86c9e105f2
|
Update 图库照片 “1766156983093”
|
2026-10-25 04:54:24 +00:00 |
|
wait4x
|
3479e53789
|
Update 图库照片 “1766156983093”
|
2026-10-25 04:51:28 +00:00 |
|
wait4x
|
37ecb2e97b
|
Update 图库照片 “1766156983093”
|
2026-10-25 04:41:12 +00:00 |
|
 wait4xandGLM-5.3
|
76b6b6b022
|
fix(polish): 视觉终审两阻塞+两建议——胶囊真挂载与图注字面量化
- 灯箱:.lb-act class+图标真实挂载(T1 的 python replace 对 i18n 化后
文案静默失配成死代码——replace 无 assert 的教训);清 560px 媒体
查询内整段重复规则
- 样张图注:斜体行内裸 <video>/<audio> 字面量化(markdown 渲染成
真元素:黑盒+吞文字);指南加图注警示
- Artalk 建议项:输入框边界加深一档(--line 白底近不可见);暗色
发送按钮换深字(白字压浅底 2.4:1 低于 AA)
验证: build 23 页;样张页 video 元素 2→1(幽灵元素消失);
node tests/e2e.mjs 30/30 PASS;复验图 18/19 待视觉确认
Spec: 2026-10-25_add-media-and-polish
Co-authored-by: GLM-5.3
|
2026-10-25 12:20:42 +08:00 |
|
 wait4xandGLM-5.3
|
80ab3ee3f3
|
feat(atalk): 评论区美化——CSS 加载缺陷修复与 tokens 主题接管(T2)
- 缺陷修复(op-gitea 车道发现):Artalk JS 不自动注入样式,评论区自
上线起一直跑 UA 默认样式——mount() 补挂 dist/Artalk.css,onload 后
init(失败降级不阻塞评论可用)
- 主题接管:18 个 --at-color-* 变量全套映射站点 tokens(var() 引用,
明暗随 [data-theme] 自动翻转);init 锁 darkMode:false 防双暗叠加
- 气质层:8px 圆角/squircle 头像/时间戳与 UA 转 JetBrains Mono/
正文链接 underline 纪律/弹层选择器 body 前缀提特异性
验证: build 23 页 exit 0;--at-color-main:var(--accent) 入产物;
生产页注入同款 CSS 探针矩阵全中(亮 #3454d1/暗 #8ea2ff);
双态截图 /tmp/e2e-shots/at-polish-{light,dark}.png 待视觉终审
Spec: 2026-10-25_add-media-and-polish
Co-authored-by: GLM-5.3
|
2026-10-25 12:08:10 +08:00 |
|
 wait4xandGLM-5.3
|
7a2880b65d
|
fix(polish): 上线四缺陷修复——明暗委托/灯箱常开/评论站点名/书评宋体
- 明暗切换:document 级委托(软导航换 DOM 后元素级监听全丢);
E2E 再抓一坑:SVGElement 非 HTMLElement 实例,守卫用 Element 基类
- 图库:#lb 无条件 display:flex 覆盖 UA 隐藏 → 灯箱"永远打开"盖全页;
改 #lb:not([open]) 显式 none;时间戳标题清空;灯箱打磨(切换钮
实底阴影/n/21 计数器/空标题隐藏/原图链接暗底亮蓝)
- 评论:site 'wait4x'→'wait4x.online' 对齐 Artalk 服务端(404 根因)
- 书评字体:文楷→思源宋(@fontsource 预分片);文楷降级金句 --font-kai
- 数据:21 张照片组修正 street→landscape(迁移器收到内部组 id 的坑)
- 新增 tests/e2e.mjs:Playwright 30 项全功能 E2E
验证: node tests/e2e.mjs 30/30 PASS(含软导航后明暗切换回归项)
Spec: 2026-10-25_fix-site-polish
Co-authored-by: GLM-5.3
|
2026-10-25 10:46:03 +08:00 |
|
 wait4xandGLM-5.3
|
e185a292c8
|
feat(i18n): T6 真实翻译入仓与 Phase 3 收敛归档
- op-artalk 车道:6/6 篇 TMT 翻译入 posts-en(frontmatter 字节级透传),
幂等复跑 0 API;修复 TMT 1800+ 字符包静默截断(limit 1600 + ratio
检测 + 二分降级,mock 三场景)
- 标题首字母抛光;T8 staging 21 页 + rollback 绿 + halo 无恙
- spec_verify --all 八项同指纹 exit=0;check 一次收敛;归档
验证: 21 页 build exit 0;/en/ 文章页真实英文内容渲染
(Under the Veil… 抽检);幂等 dry-run 6 skip 0 API
Spec: 2026-10-25_add-blog-i18n
Co-authored-by: GLM-5.3
|
2026-10-25 09:40:59 +08:00 |
|
 wait4xandGLM-5.3
|
382e56431f
|
fix(photos): 入库压缩保留 EXIF 并补未来上传的压缩缺口
- 迁移器与新增 photos_ingest.py 压缩时显式 exif= 传参(PIL 重存默认
剥离——此前 21 张已全部丢 EXIF,图库参数条构建期数据源被抽空)
- exif=None 会使 PIL JPEG 保存 len(None) 崩,改条件传参
- photos_ingest.py:幂等入库处理器(长边 2400/q86,>1.5M 才动),
堵住 gitea/本地上传原图直入仓的缺口(196M 事故成因)
- 重跑迁移:19/21 带 EXIF(2 张原图本无),体积 9.7M
验证: pnpm astro build 11 页 exit 0;EXIF 保留计数 19/21
Spec: none (Phase 2 归档后的独立小修:EXIF 修复 + ingest 补缺)
Co-authored-by: GLM-5.3
|
2026-10-25 09:01:07 +08:00 |
|
 wait4xandGLM-5.3
|
aea21c8694
|
feat(migrate): Halo 全量内容迁移(压缩版)——6文/21图/1瞬间 URL 1:1
- 正文源=线上渲染页(Halo 快照层 patch 残迹:泥潭/赎罪仅 2 字符),
pandoc html→gfm + tags API 显示名换算后分类:5 书评(五档情绪色)+1 技术
- 图库 21 张:长边 2400/q86 压缩入仓(原图 196M→9.5M——公开仓历史膨胀
与 nginx 100M 推送上限双杀;原图在 Phase 0 备份 tar 中永久留档)
- 瞬间 1 条;URL 1:1(6 slug 全等,零 301)
- 本提交由 7 个本地提交重写而成(清除已进历史的 196M blob,未推送过);
因 reset --soft 暂存竞态,一并包含 spec 归档文件
(.spec/specs/archive/2026-10-24_migrate-blog-content/)
验证: check_urls.py 6==6;astro build 11 页 exit 0(8.67s);
EXIF 管线跑通;staging 更新;halo healthy+200 全程未动
Co-authored-by: GLM-5.3
|
2026-10-25 00:39:08 +08:00 |
|
 wait4xandGLM-5.3
|
80ff67e8fa
|
feat(content): 三集合 schema 与 EXIF 构建期补全(T4 车道收编)
- src/content.config.ts(Astro 7 唯一合法路径,旧 config.ts 会抛
LegacyContentConfigError——车道实测发现,经批复的边界修正)
- posts(category→track 派生单源)/moments(text-image 互斥 refine)/
photos(json sidecar + jpg,exif 构建期 exifr 补全、frontmatter 可覆盖)
- 样例:书评+技术文各 1、瞬间 3、照片 3(横竖方三比例,EXIF 三路径覆盖)
- 附带 scripts/check-responsive.sh(T9 预置,随 T6 产物生效)
- 车道 30min 超时于过度验证循环,产物完好,主会话收编续跑
验证: pnpm astro build exit 0(1.63s,含三集合加载)
Spec: 2026-10-24_add-blog-skeleton
Co-authored-by: GLM-5.3
|
2026-10-24 23:36:59 +08:00 |
|