Skip to content

v0.7.2 — 发布链路恢复与 RLS 根因修复

Choose a tag to compare

@Levango7 Levango7 released this 30 Sep 21:24
· 796 commits to main since this release

这一版最主要的变更是让「能发布」这件事重新成立。 本仓库 CI 自 2026-09-08 起连红约 200 次,Build、E2E、Publish image (GHCR) 三条腿因此从未真正执行过;v0.7.2 是这段之后首次 12/12 全绿的版本。

根因(三张表没有建表迁移)

  • ai_conversations / ai_messages / push_tokens 三个 Prisma 模型在任何迁移里没有 CREATE TABLE,导致 db/rls-activate.sql 的 DO 块原子性失败——引擎级 RLS 实际只生效 1/96。补迁移 20260929000000 与 5 处缺失的 @map。
  • rls-activate.sql 补 24 条 DROP POLICY IF EXISTS 使其幂等:此前不幂等,第二次重启容器即起不来。

新增 5 条质量门禁

  • schema ↔ 迁移单向漂移检查(psql 权威模式)+ schema-drift job
  • RLS 覆盖守卫改为真解析:分别断言 ENABLE ROW LEVEL SECURITY / FORCE / POLICY 三态,并剥离 SQL 注释
  • 权限五档门禁覆盖、i18n 引用键存在性、分页信封消费口径静态守卫(实测 56 个分页端点 / 22 个字面量调用点)

安全

  • next 16.3.3 → 16.3.6:修复 next/og ImageResponse 的 critical RCE(受影响范围 >=16.2.0 <16.3.6)。本仓库 next/og 零使用,不构成可达面,但它阻断了 Security Audit 关卡。
  • undici 5 条 high:经 pnpm overrides 收敛,并给它加上 <8 上界——只写下界会让 provider-utils 解析到 8.10.0(跨大版本且仍在受影响区间)。
  • 顺带查出:根目录 pnpm-workspace.yaml 的 overrides 是死配置(CI/Docker 都在 web/ 下安装),既存那条 sharp 覆盖从未进过锁文件。

产品与权限

  • 国内通道缺省价 ¥59 → ¥29.9,对齐仓库里状态为 ACCEPTED 的 pricing-redesign-v2 决策。
  • 公开分享链接的密码与过期改为服务端强制,并新增 verify 路由。
  • viewer 只读在 24 个 handler 落地,配合五档权限门禁。
  • Stripe priceOverride 改白名单;AI 用量按产品决定改为提示不阻断。
  • 日历同步对账接入 cron(entrypoint-cron.sh 每周日 05:00)。

制品(2026-10-01 匿名 manifest HEAD 实测)

docker pull ghcr.io/levango7/corps:0.7.2

:0.7.2、:0.7、:main 均 HTTP 200;0.7.2 digest sha256:3870c7d754d0e…。发版提交 e41996d1 的 tag push run 36776247723 与 branch push run 36776240056 各 12/12 绿。

验证边界:鉴权类批量改动(viewer 只读、分享强制)在本机只做静态与解析层核验——Next 16 不允许多 dev server 并存,3000 端口那台是开发者自己正在跑的实例。端到端证据来自 CI 的 Test / Test (hardened RLS mode) / E2E (production build) 三腿转绿,而非本地跑过。

完整 41 条条目见仓库根 CHANGELOG.md 的 [0.7.2] - 2026-10-01。