v5.5.0 — 页面背景修复 + 复制管线加固 + MBDoc API
🎨 重点修复:页面背景粘到公众号后台不再消失
根因终于找到了:微信粘贴处理器会"解包" 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