更新日志

查看每个已发布的 Imposia 包版本的变化。

本页汇总 Imposia 的每个已发布版本。@imposia/core、@imposia/viewer、@imposia/client 和 @imposia/react 使用相同的版本号;完整记录见仓库中的 CHANGELOG.md。

0.6.0 — 2026年9月27日

  • 修复分页边界重复的边框和间距、脚注与页面浮动重叠、出版 CSS 优先级、列表续排、页面名称及避免分页的处理。定位产生的视觉溢出不再导致多余页面。
  • 新增 183 个独立编写的分页场景和 2 个连续更新检查;不支持的输入仍保留明确诊断。
  • 更新 gzip 实测值/预算:Core 分页 63.2/63.5 KiB、Publication 67.5/68 KiB、Viewer 11.8/13 KiB、Client 71.8/72 KiB、React 73.6/74 KiB。
  • 修复首次提交前 iframe 闪烁和更新时用户 visibility 设置丢失,并改善文档标签对比度。

业务文档按编写时的样子分页,长文档保持快速,打印结果与预览更一致。本版本有四项不兼容变更,请阅读迁移说明。

  • 不兼容变更:打印时保留背景,打印时提升的字体族会重命名,React 状态联合类型新增 "aborted",并移除了 PDF.js 查看器 mountViewer。
  • 支持全部 16 个 @page 页边距框及其字体、颜色、对齐、边框和内边距样式,上下页边距框按内容分配宽度,支持 @page :nth() 以及 A3、A5、B4、B5、Legal、Ledger 纸张。
  • PublicationOptions.pageNumbering: "entry" 为 Publication 的每个条目单独编页,批量发票中的每张发票都显示 “Page 1 of N”。
  • 超过一页的表格行按单元格拆分,跨列的 grid 项目也按行分页。
  • 只有在整体保留布局会丢失内容时才报告 UNSUPPORTED_LAYOUT;用 display: flex 排成一行的卡片不再告警。
  • 保留声明的 dir="rtl",从右到左的文档会提示页面顺序仍为从左到右。
  • 分页时间随文档长度线性增长,直到 10,000 页;宿主可以调高输入、节点、页数和时间上限。
  • 按计划移除了 0.5.0 的实验性回退开关。

0.5.0 — 2026年8月20日

Core 改用浏览器原生解析器,一批分页性能优化减少了长文档的布局测量工作。

  • 用浏览器原生解析(DOMParser、模板片段解析、原生序列化)替换 parse5;格式错误的标记可能与以前解析得不同,parse5 和 entities 已离开 Core 包。
  • 修补了生产漏洞审计标记的内置 postcss 与间接依赖 nanoid。
  • 将相邻节点串按块放置,仅在溢出时二分,去掉了每个节点一次的强制同步重排和行内溢出检查。
  • 跨页文本拆分改由 line box 矩形推导,不再对每个字素调用一次测量;在项目的长段落基准上,getClientRects 调用英文文本减少 98.1%,CJK 文本减少 95.9%。
  • 同一世代内相同 URL 的资源共享一次解析器调用、解码校验和 Blob URL,不改变按出现次数计算的字节统计和扩展否决语义。
  • 压缩了浏览器包并重新设定包体积预算。每条新的快速路径都在本版本附带一个临时内部回退,这也是 Core 包在本版本变大的原因。
  • 修复了宿主在负载下更新文档时可能出现的 Viewer 错误:提交落入 canonical frame 之后、宿主交付新的 PageDocument 之前的短暂窗口,Viewer 的环境同步现在会等待其结束,而不再把该瞬态报告为页面 marker 损坏。显式调用仍会校验,真正的损坏仍会报告。

0.4.1 — 2026年7月27日

在调用方视口约束下多页打印变得可靠,Viewer 面板跟随响应式控制栏。

  • 防止调用方编写的 html 和 body 视口约束把隔离的原生打印快照裁成单页,同时保留源文档的打印级联。
  • 将 Viewer 目录、搜索、缩略图和 Inspector 面板放到实际响应式控制栏下方,包括换行后的 320 px 布局。
  • 围绕入门、概念、出版指南、包 API 参考和浏览器原生另存为 PDF 重组了本地化文档。

查看 0.4.1 发布说明。

0.4.0 — 2026年7月24日

协作式分页让长 HTML 和 CSR 更新保持响应,同时不改变已接受的页面结构。

  • 加入 8 ms 默认让出预算、可注入的调度器,以及通过 PageDocumentOptions.compose 传 Infinity 的退出方式。
  • 加入带已完成页数和收敛轮次的临时进度。
  • 改为在挂载 staging 内容和样式之后再等待字体与图片稳定。
  • 让调度器等待可中止,并在暂存胜出世代之前串行处理被取代的世代。
  • 在原生打印快照中保留源 html 与 body 上下文、body 作用域选择器和计算后的自定义属性。
  • 为已提交的页面根节点添加 layout containment,同时保持 style containment 关闭,让计数器可以跨页工作。

查看 0.4.0 发布说明。

0.3.0 — 2026年7月24日

打印不再依赖 iframe 尺寸,受限表格组合获得显式扩展钩子。

  • 将原生打印移至顶层文档中临时且隔离的快照,避免 Chromium 的空白页问题。
  • 为 Core 和 Publication 扩展加入同步 finalizePage 钩子。
  • 加入可选的 createTableColgroupExtension() 预设,用于稳定拆分表格的列宽。
  • 拆分表格、安全 Grid 和过高普通区块分片时改用当前页的剩余空间。

查看 0.3.0 发布说明。

0.2.0 — 2026年7月24日

宿主应用可以完全自行组合 Viewer 控件。

  • 加入 controls: false,供自带导航、视图模式和缩放界面的宿主使用。
  • 加入即时 Viewer 状态订阅、React 状态回调,以及命令式导航与缩放控制。
  • 将 Viewer 变量和展示样式限定在各自的 Viewer 根节点,导入样式表不再改变宿主页面。

查看 0.2.0 发布说明。

0.1.3 — 2026年7月23日

HTML 与 CSR 分页完整性成为首要产品契约。

  • 加入跨浏览器连续性验证,证明源标记在已提交页面中只出现一次并保持源顺序。
  • 加入公开的 CSR 连续性示例:快速更新源内容的同时保留 canonical iframe。
  • 将可重排 EPUB 定位为受支持的语义投影,而非主打渲染路径。

查看 0.1.3 发布说明。

0.1.2 — 2026年7月23日

收紧了发布检查与演示服务器的安全设置。

  • 在验证和代码扫描检查之外加入 CodeRabbit 自动审查。
  • 移除未使用的演示服务器请求延迟行为,解决相关 CodeQL 发现。
  • 确认结构选择器只会到达具有保守回退行为的 Element.matches()。

查看 0.1.2 发布说明。

0.1.1 — 2026年7月23日

演示、文档和发布路径为公开包更新做好准备。

  • 加入竖向优先的 A4 控件、方向切换,以及 A3、A4、B1 预设。
  • 扩充多语言 API 与出版文档。
  • 加入受保护的 GitHub Actions 发布路径:npm trusted publishing、标签、GitHub Release、tarball 和校验和。

查看 0.1.1 发布说明。

0.1.0 — 2026年7月19日

首个纯浏览器版本建立了完整的公开包家族。

  • 加入在一个持久 canonical iframe 中的确定性浏览器分页。
  • 加入 Viewer 展示、浏览器 Client 入口和主要 React 适配器。
  • 加入 Publication 组合、阅读导航、搜索、缩略图和多种展示模式。
  • 加入基于已提交源内容的原生打印和可重排 EPUB 3.3 导出。
  • 加入类型化诊断、受限扩展、资源解析,以及受限的表格、Flex、Grid、多栏和 CJK 分片。

在 npm 查看 @imposia/core 0.1.0。

On this page