← All release notes
✨ Features (13)
080a265a (email-marketing)后台一键把 SendGrid DNS 记录写入 Cloudflare 并校验(域名认证 / 链接品牌) (#2013) — Patronum
8021aed0 (web)llms.txt 扩充内容并支持多语言——根文件繁中、5 种语言分文件、全文版 llms-full.txt (#2011) — wanghao-kld
42f7ae77 (web)角色详情页 metadata 按语言本地化、角色广场新增可抓取的全部角色分页、后端 5xx 不再当 404 (#2008) — wanghao-kld
ef4522e0 (web)根路径 / 与 /characters 双路由直出角色广场,正式地址(canonical)改为 / — wanghao-kld
8bded83c (ci)staging 部署在可信快速路径上复用 PR 候选镜像,指纹或镜像对不上即现场构建 — wanghao-kld
a5646d98 (ci)指向 develop 的 PR 构建并推送 API / Web 候选镜像,可信证据记录 digest 与 Web 构建参数指纹 — wanghao-kld
1bcfaac6 (ci)新增 Web 构建参数指纹脚本,可信证据与执行计划支持 PR 候选镜像 — wanghao-kld
21d6d491 (character)创建与更新角色时封面图 / 参考图 / 阶段头像不在 Hanakoi CDN 下自动转存到 R2,REST / Studio / MCP 共用 (#1816) — Patronum
90801a62 (web)聊天页接入失败回合续答,生成失败后在原消息上一键重试,刷新后仍可见可重试 — wanghao-kld
76913519 (character)Staging 导入按作者 ID 筛选 + 作者名兜底;首页 / 登录页 Banner 按跳转角色公开性与软删除过滤 (#1959) — wangyang-youloft
3931844e (character)角色搜索适配台湾输入习惯——注音键位乱码纠正 + 输入法组字期间 Enter 不提交 (#1956) — Patronum
b2dee85b (character)角色模糊搜索支持繁简互通与拼音(全拼 / 首字母)检索 (#1686) — Patronum
7e793fcb (api)稳定 API business 查漏补缺、移动端 7 个接口纳入稳定 API、Provider 模型资格范围编辑 (#1943) — wangyang-youloft
🐛 Bug Fixes (17)
c1e49a94 (test)pr-1794 引用守卫改为 beforeAll 只读盘一次、各用例复用内存缓存,消除全量测试高负载下的 30s 超时 (#2009) — wangyang-youloft
51b8158c (ci)pre-push 范围判定把 .gitignore 归为仓库数据、.trae 归为纯文档,纯脚本文档改动不再被拖进全量测试 (#2004) — wangyang-youloft
13ba567d (admin)后台登录页改为 Firebase 第三方登录优先并收紧 redirect,admin REST 遗留门禁统一到 RBAC 权限码 (#1929) — Patronum
bf94afef (api)MCP upload_image / upload_audio / upload_video 的 URL 模式补 SSRF 防护与流式大小上限 (#1980) — wangyang-youloft
adb4a59e (seo)/admin/gsc 上游失败时 502 返回 Google 的 HTTP 状态与原因,更正服务账号注释 (#2000) — wangyang-youloft
93757468 (email-marketing)营销邮件送达率 P0——链接品牌、退订链接不追踪与合规页脚、发送前发件域门禁 (#1994) — Patronum
122ab824 (web)sitemap 角色条目信号修正——lastmod 用真实更新时间、排除空壳角色、URL 百分号编码、发布后及时刷新 — wanghao-kld
e758d8e8 (ci)候选镜像推送失败时退回只构建验证,不再让指向 develop 的 PR 全部判红 — wanghao-kld
11bc221a (api)角色就绪自动提交 Indexing API 改推规范详情页 URL,并只推公开、非成人向、非空壳角色 — wanghao-kld
38e7a845 (web)staging 的 robots.txt 改为允许抓取让爬虫读到 noindex,API Swagger 文档页补 noindex — wanghao-kld
ff8207c4 (companion)续答与重新生成缺 Accept-Language 返回 CHAT_ACCEPT_LANGUAGE_REQUIRED,Body 多余字段处理与 Swagger 文档对齐 — wanghao-kld
cd826b62 (ci)定时任务使用独立并发组,避免取消进行中的 main 发布;定时完整门禁保留每周一次 — wanghao-kld
84bbd4be (companion)失败回合续答以回合为单位,禁止合并回合重复续答并仅允许最新一轮续答,修正计数与错误码口径 — wanghao-kld
16663336 (api)资格范围编辑接口 errorSchema 放开可选 code,修复 400 的 code: VALIDATION_ERROR 被响应序列化剥掉 — wanghao-kld
9f9b5987 (ci)修复 #1943 合并后 CI 失败(错误码棘轮、OpenAPI 对比排除 business、1851 回归对齐 #1932) (#1945) — wangyang-youloft
a747f0a1 (api)重新应用 #1923 的 AI 回调加固(被 #1926 合入时整体覆盖回滚)——request_id 索引反查、回调输出 URL SSRF 防护 — wanghao-kld
eee3084e (web)角色列表位简介统一走 replaceUserPlaceholders,SEO 网格与 JSON-LD 不再外露 _USERNAME_ (#1772) — Patronum
♻️ Refactor (1)
6143a8fb (chat-agent)删除 runTurn 生产不可达的 persona 分支,媒体门控哨兵改锚生产执行点 (#1611) — Patronum
⚡ Performance (5)
48797fb6 (test)API 测试按隔离分组运行,只测纯逻辑的文件共享模块缓存 (#1963) — Patronum
ec108a34 (ci)PR 证据只因 develop 前进而失效时,按上次绿色 develop 以来的改动选择门禁 (#1997) — Patronum
46a11c0e (ci)Web 覆盖率分片由两片改为三片、定时完整门禁改为每天执行,记录部署步骤实测与不做的优化 — wanghao-kld
981adebe (web)匿名访客公开页不再懒加载 Firebase——api.ts 取 token 与 auth-provider 会话恢复同一判定,共用 firebase-lazy 加载状态 — wanghao-kld
b374daf8 (web)首屏 JS 瘦身——contracts 声明 sideEffects:false、Firebase 删死代码并经懒加载门面按需加载、新增首屏体积预算门禁 — wanghao-kld
📚 Docs (3)
aec0a721 (workflow)完成后开 PR 直接开 Ready、开发中途占位才开 draft,消除每个 PR 都被草稿门禁判红一轮再人工转正 (#2007) — wangyang-youloft
51b0423f (ci)补充镜像只构建一次的开发文档,登记功能文档注册表 — wanghao-kld
6f5d9628 (rules)Push 前清单单测条目对齐 pre-push 只跑相关测试,全量由 PR CI 承担 — wanghao-kld
🤖 CI (2)
91bd38c0 (standards)Issue #1947 合并纪律门禁落地——PR 静默回滚 / 覆盖检测、发布 PR 祖先检查、合并时 CI 未绿告警、develop/main push 跳过重复镜像构建,并同步硬规则 19 与复盘文档 (#1951) — Patronum
4e0dda56 (infra)在 plan 体系上补齐草稿 PR 跳过、纯文档 PR 的 docs-guards 与 Web 镜像依赖层缓存 (#1547) — Patronum
📝 Other (9)
f03f50d7 Merge pull request #2005 from mira-gift-hq/ai/fix/1986-web-login-guard-search — wanghao-kld
3328905b test(api): 补 Indexing 推送改用 toCharacterIndexabilityInput 后的配对测试,覆盖 persona 嵌套回落并与 sitemap 口径对齐 — wanghao-kld
751dde63 test(ci): 候选镜像推送失败不阻塞 PR、退回只构建验证的先行用例(跑红) — wanghao-kld
ced4c964 test(ci): 镜像只构建一次的先行用例——构建参数指纹、候选镜像证据与计划、PR 推送与部署复用(跑红) — wanghao-kld
22017013 test(ci): 定时任务与 main 发布不得同属一个并发组、定时完整门禁保留每周一次的先行用例(跑红) — wanghao-kld
10269318 test(ci): 交付链路提速第一期先行用例——Web 覆盖率三片、定时完整门禁每天执行(跑红) — wanghao-kld
88103e55 test(api): 资格范围编辑接口校验错误缺 code 的回归用例(修复前红) — wanghao-kld
57f6a3be test(web): 匿名访客公开页不加载 Firebase 的验收用例先行——取 token 判定、api.ts 鉴权门控、门面加载状态、auth-provider 共用门面 — wanghao-kld
289dec48 test(web): 首屏 JS 瘦身验收用例先行——contracts 无副作用、Firebase 懒加载门面、Firebase 初始化范围、首屏体积预算 — wanghao-kld