 wait4xandGLM-5.3
|
0c54a43bb5
|
chore(spec): 创建 add-blog-launch 任务包(Phase 4 六任务)
Spec: 2026-10-25_add-blog-launch
Co-authored-by: GLM-5.3
|
2026-10-25 09:41:55 +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
|
4aa79fca06
|
feat(i18n): UI 字典串接与三页薄化——/en/ 全站落成
- op-gitea 车道:ui.ts 扩 26 键(占位 {n}/{title}/{exif} 约定),五组件
locale prop 串接,zh 零回归(48 键/18 页实测)
- orchestrator 收尾:gallery/moments/about 三页 body 提取为
components/pages/*Page(zh/en 薄页双路由),/en/ 全家福 21 页
- 提取工程三坑入库:HTML 注释不可进 frontmatter 模块区;搬移脚本会吃
开栏 ---;单级页面搬二级目录后 import 全线差一层
验证: astro build 21 页 exit 0;/en/ 七类路由产物断言过;en 页
ICP 备案保留;zh 侧文案抽查不变
Spec: 2026-10-25_add-blog-i18n
Co-authored-by: GLM-5.3
|
2026-10-25 09:26:14 +08:00 |
|
 wait4xandGLM-5.3
|
c74815b516
|
feat(i18n): /en/ 双语骨架——路由/切换/hreflang/回退/AI 标注
- astro i18n(zh 默认无前缀,en /en/)+ locale.ts 路径工具
- Header 语言切换(同路径跨前缀跳转,预构建毫秒级)
- /en/index + /en/archives/{slug}(postsEn 优先,缺译回退 zh 正文
+ AiTranslatedBadge 虚线标注 TMT);en RSS(标题回退同策略)
- BaseLayout hreflang 双向 + x-default 指向 zh 源
- posts-en 集合(postsSchema.extend locked 润色锁)
- 坑:ts 端点文件误带 --- 开头会以 undefined:2:7 报 Unexpected token
验证: astro build 18 页 exit 0;/en/ 六文章路由+首页+rss 产物断言过;
zh 侧零回归(11 页不变);hreflang 抽查 dist/index.html
Spec: 2026-10-25_add-blog-i18n
Co-authored-by: GLM-5.3
|
2026-10-25 09:20:16 +08:00 |
|
 wait4xandGLM-5.3
|
cf42081614
|
chore(spec): 创建 add-blog-i18n 任务包(Phase 3 八任务三车道)
Spec: 2026-10-25_add-blog-i18n
Co-authored-by: GLM-5.3
|
2026-10-25 09:14:47 +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
|
094f0f0d5b
|
chore(spec): 归档 add-blog-skeleton——Phase 1 十任务收敛交付
- T1-T10 全勾选,spec_verify --all 十项 exit=0 入 runs.jsonl
- 交付:Astro 7.3.8 全站骨架(tokens/字体分片 399 片/三集合/五页型/
极客层 P0/pagefind+rss+sitemap/Artalk 懒挂/staging 管线)
- 无头浏览器实测:项目墙双源拉取真实仓(gitea 转公开后自托管卡置顶)
Spec: 2026-10-24_add-blog-skeleton
Co-authored-by: GLM-5.3
|
2026-10-25 00:16:22 +08:00 |
|
 wait4xandGLM-5.3
|
4694428614
|
feat(search): 站内搜索/RSS/sitemap/Artalk 懒挂载
- astro-pagefind:构建期索引;SearchDialog 首开懒加载 + 200ms 防抖,
入口=Header 钮 + 键盘 /(P0 键位集补全)
- @astrojs/rss:posts 全量(draft 排除),双语分流留 Phase 3
- @astrojs/sitemap:sitemap-index 产出
- ArtalkComments:IntersectionObserver 进入视口才拉 Artalk.js,
pageKey=/archives/{slug}/(中英共键,评论不分裂)
验证: pnpm astro build exit 0;dist/pagefind 目录 + rss.xml +
sitemap-index.xml 三件断言过
Spec: 2026-10-24_add-blog-skeleton
Co-authored-by: GLM-5.3
|
2026-10-25 00:13:29 +08:00 |
|
 wait4xandGLM-5.3
|
945a9ee610
|
feat(pages): 五页型落地——首页/文章双模板/图库 masonry/瞬间/关于
- 首页:名片+身份陈述空槽+按年分组分轨列表(情绪色/mono标签)+影像格+项目墙
- 文章 /archives/{slug}(与 Halo 旧 URL 1:1):reading→衬线纸墨 / tech→
TOC 侧栏(≥1120 sticky)+2px 进度条+Artalk 容器占位
- 图库:grid masonry(构建期 aspect-ratio 零 JS)+原生 dialog lightbox
(←→/Esc+EXIF 底栏)+分组筛选
- 瞬间时间线 / 关于(三轨版图+构建说明)
- sharp ^0.35.5 入依赖(Astro 7 不内置,astro:assets 缩略图管线前提)
- 裸 blockquote 默认吃 A 墨线样式(markdown 原生输出无类名的缝隙)
- 车道 30min 超时,产物完整,主会话补 sharp+断言脚本递归修正后收编
验证: pnpm astro build exit 0(7 页);五路由产物断言过;
scripts/check-responsive.sh 11/11 ok(1120/820/760/560 全档)
Spec: 2026-10-24_add-blog-skeleton
Co-authored-by: GLM-5.3
|
2026-10-25 00:11:34 +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 |
|
wait4x
|
ce41c800ba
|
chore(spec): 创建 add-blog-skeleton 任务包(Phase 1 十任务)
Spec: 2026-10-24_add-blog-skeleton
|
2026-10-24 23:00:20 +08:00 |
|
 wait4xandGLM-5.3
|
0f7c2dfe5b
|
chore(spec): 归档 add-blog-infra——Phase 0 七任务收敛交付
- T1-T7 全部勾选,spec_verify --all 七项 exit=0 入 runs.jsonl
- check 门禁收敛;交付:备份三件套/gitea 28.2.0/Artalk 2.10.0/
git.wait4x.online + /artalk 公网接入/发布链地基与回滚预案
- 生产 Halo 全程未动(healthy + 200 复查通过)
- 含 spec pre-commit/pre-push 门禁钩子入库
Spec: 2026-10-24_add-blog-infra
Co-authored-by: GLM-5.3
|
2026-10-24 22:35:24 +08:00 |
|
 wait4xandGLM-5.3
|
f16b9487d3
|
feat(deploy): 发布链地基三件套——webhook 骨架/构建占位/回滚干跑
- webhook-receive.sh:HMAC 骨架 + 仅 main 分支触发(干跑验证两条 ref 路径)
- build.sh:锁发布链形态与路径约定,astro 命令留 Phase 1 TODO
- rollback-dryrun.sh:回滚四前置条件验证 + 人为操作手册(秒级回 18090)
- staging 落用户区 ~/docker_apps/blog/www-staging(宿主 sudo 不可用,nginx 以 root 读用户目录无碍)
验证: webhook 干跑 main accepted / non-main ignored;rollback-dryrun
四要素 ok(halo vhost/容器/响应/staging)
Co-authored-by: GLM-5.3
|
2026-10-24 22:10:59 +08:00 |
|
 wait4xandGLM-5.3
|
ddcda54f90
|
feat(gitea): 部署 gitea 28.2.0 并入库接入草稿
- 容器 gitea/gitea:28.2.0 仅绑 127.0.0.1:13020,管理员 wait4x 经 CLI 创建,
私有空仓 wait4x/blog 就位(Phase 1 博客源码仓)
- app.ini 种子入库(INSTALL_LOCK 预置,密钥首启生成,快照严禁回覆盖运行时)
- REQUIRE_SIGNIN_VIEW 会 403 匿名 version 端点,与验收冲突已撤,坑记 README
- 凭据不进 git:初始密码并入住主 init-credentials.txt(0600),README 留指引
验证: curl -sf http://127.0.0.1:13020/api/v1/version → {"version":"28.2.0"};
docker inspect gitea = running;wait4x/blog private+empty 经 API 查证
Co-authored-by: GLM-5.3
|
2026-10-24 22:09:06 +08:00 |
|
 wait4xandGLM-5.3
|
aea11469e3
|
feat(artalk): 部署 Artalk 2.10.0 评论服务并入库接入草稿
- 容器 artalk/artalk-go:2.10.0 仅绑 127.0.0.1:13030,sqlite 落实例卷
- 子路径 /artalk 经 proxy_pass 尾斜杠剥前缀(官方无 base path 模式),
nginx 草稿为 location 片段,合并主域 vhost 后需实测 sidebar 内页跳转
- 凭据不进 git:初始密码移实例目录 INITIAL-CREDENTIALS.txt(0600),
仓库 README 仅留指引(本仓库将公开)
验证: curl -sf http://127.0.0.1:13030/api/v2/conf 返回 2.10.0 JSON;
docker inspect artalk = running;管理员 wait4xx 经 sqlite 查证落库
Co-authored-by: GLM-5.3
|
2026-10-24 22:00:57 +08:00 |
|
 wait4xandGLM-5.3
|
d8f5ecfbf5
|
chore(spec): T1/T2 证据落库——备份三件套验证通过,翻译引擎缺口记录
- T1: pg_dump(halo_db) 237K 可恢复 + halo2 目录归档 404M/3577 项,verify_backup.sh 实跑通过
- T2: new-api 网关鉴权/模型端点可用;通用 chat 模型缺渠道(GLM 禁用、
OpenRouter 仅特殊别名),需用户控制台启用,不阻塞 Phase 0
验证: bash .spec/specs/2026-10-24_add-blog-infra/evidence/verify_backup.sh
(输出 backup verified: dump readable, tar entries=3577)
Co-authored-by: GLM-5.3
|
2026-10-24 21:58:07 +08:00 |
|
wait4x
|
72025b7a43
|
chore(spec): 创建 add-blog-infra 任务包(Phase 0 地基七任务)
- T1 备份 / T2 翻译引擎 / T3 gitea / T4 Artalk / T5 域名接入 / T6 发布链 / T7 验收
- 每任务 boundary+verify;nginx 集成仅 orchestrator,worker 交草稿
- 集成分支 spec/2026-10-24_add-blog-infra
|
2026-10-24 21:50:44 +08:00 |
|