Skip to content

iPaper 1.13.0 — 阅读高亮、批注与单篇笔记

Choose a tag to compare

@ifzzh ifzzh released this 21 Sep 17:22
· 27 commits to main since this release

iPaper 1.13.0 在现有阅读器内加入持久高亮、批注、单篇 Markdown 笔记、保存已有 AI 回答与 Markdown 导出。本轮不新增任何真实模型 / MinerU / OCR / 翻译调用:保存回答只复制已持久化内容。

能力

  • 高亮与批注:在原文 PDF、已有 BabelDOC 译文与结构正文中选中文字,保存高亮或简短批注;四种淡色(淡紫/灰蓝/雾粉/暖黄),批注可修改、删除并可明确撤销。高亮是持久记录,不是当前 DOM 的临时效果。
  • 批注侧栏:右侧「问答 / 批注 / 笔记」页签:按阅读顺序列出摘录、自己的批注、文档类型与页码/块来源,可筛选(原文/版式译文、结构内容、仅批注)与搜索;点击定位来源并显示详情,来源失效时给出说明而不是跳到别的内容。
  • 单篇主笔记:每人每篇一份 Markdown 笔记,编辑/预览、1.2 秒防抖自动保存与状态(保存中/已保存/保存失败),可把摘录明确插入并保留可回访来源。笔记依附论文,不随主题或关键词迁移。
  • 保存已有 AI 回答:助手消息「存入本篇笔记」只复制已持久化内容与当时的来源标签,不重新问模型;流式或未成功保存的回合不可存;重复点击幂等。
  • Markdown 导出:标题、作者、arXiv/DOI、导出时间、笔记正文、摘录与批注、来源记录;不含密钥、令牌或服务器绝对路径;?annotations=0 只导出正文。

来源定位与版本

  • PDF(原文与版式译文各自独立)保存页号与归一化行矩形(按页面旋转反算到未旋转坐标系),多行逐行记录;缩放、旋转、适合宽度、窗口变化与虚拟页面重渲染后位置仍正确,不覆盖段间空白或相邻栏。
  • 结构内容保存块、字段(text/caption/cell:r:c)、文字范围与译文修订;重新解析或重译后先按存下的摘录校验当前文本,不匹配则不画高亮并提示来源变化。
  • 扫描件/无可靠文字层按页级记录降级保存,不自动 OCR、不伪造文字高亮;源文件被替换或结果失效时保留摘录并明确 stale/canNavigate=false。

数据与边界

新增 reading_annotations、reading_notes、reading_note_entries、reading_note_conflicts(纯增量、旧版本可读写);所有读写 owner 隔离并在写入前校验论文/文档/结果归属,沿用认证、CSRF 与限流。上限:摘录 8,000 字符、批注 2,000 字符、笔记 256 KiB、每篇有效批注 2,000 条、列表分页 ≤200。并发编辑以修订校验处理:冲突时把来稿存为可恢复草稿并让用户明确选择保留哪一份;摘录/回答插入同事务读取-追加-写回,不吞掉并发内容。论文文件、哈希与译文不被修改。

验证

  • 后端 tests/test_paper_notes.py(7 项):批注生命周期与撤销、owner 隔离与 CSRF、锚点/尺寸/颜色/类型校验与页级降级、主笔记冲突草稿与显式解决、摘录插入修订校验与去重、回答保存归属校验与幂等(含 user 角色/不存在/未持久化)、导出内容与私有路径剥离、来源失效降级。
  • 浏览器 frontend/unified-tests/notes.spec.ts(独立配置 + 合成结构化夹具,3 项):选中 → 高亮/批注 → 侧栏 → 刷新后仍在且页面绘制高亮 → 点击回访;笔记自动保存 → 刷新恢复 → 导出一致;owner 隔离与非法锚点拒绝;把种子回答存入笔记且重复点击不产生副本。
  • 门禁:Docker 非集成 558 passed + 84 subtests;前端类型检查、20 项单元测试、构建;统一 16 与 topics 2、daily 1、keywords 3、metadata 2、reading-tools 3、structured 1、understanding 1、额度 3、笔记 3;4×pip-audit 0;Trivy 源码 0;三镜像 0 HIGH/CRITICAL;dev/main CI success。

组件

仓库 版本 Registry 摘要
ifzzh520/ipaper 1.13.0 sha256:43bec3edc8bf3c2dd0b2e683d686c3baa37343927fcb97156dddea1c1f61802b
ifzzh520/ipaper-translation-worker 1.2.0 sha256:a5fa3b4316802c15e99a7387baa49604166fb6092a1aca34b8c5e34de3d52003
ifzzh520/ipaper-document-worker 1.2.0 sha256:2c501ad68bdfc2e282518a813c46e548f598b1af85acc1069058741a45587298

源码提交 4b30451。

限制与回退

  • 不含全库笔记工作区、双链、知识图谱、跨论文检索、自动生成笔记与带批注 PDF 导出。
  • 结构内容高亮以存下的范围与摘录校验为准;无法匹配时只显示块级来源与说明。
  • 回退基线 Web 1.12.1 + Workers 1.2.0;新增表可空且旧版本忽略,回退只切镜像,不用旧数据库覆盖新增记录。