Skip to content

v5.5.0 — 页面背景修复 + 复制管线加固 + MBDoc API

Choose a tag to compare

@AAAAAnson AAAAAnson released this 12 Jun 13:22

🎨 重点修复:页面背景粘到公众号后台不再消失

根因终于找到了:微信粘贴处理器会"解包" HTML5 语义标签(<article> <main> <header> <footer> 等)——子内容保留,但标签连同它的 style 属性一起被丢弃。把页面渐变/底色写在 <article style> 上的推文,粘贴后整页变白。

  • ✅ Sanitizer 把语义包裹标签统一改名为 <section>(微信完整保留),背景随之存活
  • ✅ 校验器新增 semantic-wrapper-tag 警告,复制前就提示
  • ✅ 新增全文档管线回归测试,以真实推文结构断言背景存活

🛠 复制管线全面加固

完整 HTML 文档支持:AI 直接产出的带 <!DOCTYPE> / <head> / <body bgcolor> 的完整文档,现在能正确走完复制管线——

  • <!DOCTYPE> 不再让 premailer 抛异常跳过 CSS 内联
  • <title>/<meta>/<link> 不再泄漏进正文
  • <body> 的 style/bgcolor 自动搬到根 <section> 上,针对 body 的 CSS 规则同步重定向
  • 嵌套 @media 整块剥除(旧版会让移动端 display:none 泄漏成全局规则,所有端隐藏内容)
  • a, a:hover {...} 这类混合选择器只删伪类部分,普通选择器保留
  • 单引号 style 内含双引号(font-family:"PingFang SC")不再被截断

校验与图片

  • 正文里出现 "mask" 等英文单词不再误触发禁用 CSS 拦截
  • 图片 data-URI 内联锚定到 <img> 标签,教程正文/<video>/<iframe> 不再被误改写;失败 URL 负缓存免重试

前端剪贴板

  • 长文分段复制不再静默丢失裸文本节点
  • swiss 主题不再误剥作者写的黑色/深灰背景(深色 hero、代码块幸存)
  • 纯文本兜底按块级边界换行,不再全文挤成一行

📦 新增:MBDoc 后端 API

  • MBDoc CRUD + 发布端点(/api/v1/mbdocs),前端 store 接后端并保留本地缓存层
  • Article → MBDoc 转换器与一键迁移脚本
  • EditorSurface / publish_adapter 重构为 hook + service 分层
  • 后端 API 测试基础设施 + publish 集成测试;文章列表 JSON 导出/导入备份

✅ 质量

后端 250 个测试通过,前端 282 个测试通过,Vite 构建干净。

Full Changelog: v5.4.0...v5.5.0