Repository navigation
Releases
Zotero MetaFlow 14.1.0
Zotero MetaFlow 14.1.0
- Add a localized Use built-in abbreviations button beside the file selector.
- Materialize the complete built-in table atomically into the plugin-managed profile directory and show its real path by default.
- Refresh the managed table and restore built-in lookup on click. Preserve selected custom paths until the user explicitly restores built-in data.
- Clear custom paths back to the visible built-in path; keep built-in source profiles and source tags independent of the displayed managed file.
Validation: 763 unit tests, strict build and 23 native settings/package tests. Native checks read the exported JSON, verify more than 44,000 mappings and Nano Letters, and assert the default path stays visible.
Zotero MetaFlow 14.0.3
Zotero MetaFlow 14.0.3
- Explain that the journal abbreviation database is already built in and custom imports are optional.
- Recognize provenance audit manifests and report a localized, actionable error instead of a generic mapping error. Audit metadata is not imported as journal abbreviations.
- Parent custom data file pickers to the settings window and show JSON/CSV together in the abbreviation filter.
Validation: 763 unit tests passed; 23 native settings/package tests passed; strict production build passed. The regression checks the picker parent window and recognizes the structure of the reported provenance file.
Zotero MetaFlow 14.0.2
Zotero MetaFlow 14.0.2
- Synchronize custom abbreviation and title-file paths from authoritative preferences on initialization and external changes.
- Notify native bindings when choosing or clearing a file; keep validation-before-save and preserve paths on cancel/error.
- Enable automatic/custom abbreviation lookup when a valid custom file is selected from a built-in-only source mode.
Validation: 762 unit tests passed; strict build and targeted ESLint passed; 23 native settings and production-XPI tests passed.
Zotero MetaFlow 14.0.1
Zotero MetaFlow 14.0.1
- Remove duplicate TL;DR Fluent keys and use reflected boolean properties for native controls.
- Keep journal abbreviation provenance in the repository while excluding it from runtime packaging.
- Pin strict TypeScript compiler options and run type checking before bundling.
- Separate report/progress, batch dispatch, shortcut actions, field schema, canvas and title editing modules; move surname data to JSON.
- Enforce a 360-line ceiling across every TypeScript source and test, and unique Fluent keys across each locale.
- Coalesce window initialization with readyPromise and roll back closed/disposed bindings.
- Flush native string bundles on locale unload.
Validation: 762 unit tests, strict production build, and 23 native settings-panel / production-XPI tests passed, including the new level-one overview computed-style assertions at both window widths. Native verification evidence is recorded in the task output directory. Zotero 11/12 were not tested.
Zotero MetaFlow 14.0.0
Zotero MetaFlow 14.0.0
发布版本: 14.0.0
发行类型: 正式版 / Major release
兼容范围: Zotero 10.0–12.*
运行目标: Firefox 140 / Gecko 153
更新内容
- 移除 CNKI 网络集成:删除中文题名 CNKI 检索和 CNKI 中文影响因子代理回退。英文文献的 DOI、Crossref、Zotero Translator、Semantic Scholar 与 EasyScholar 主流程不变;选择补充期刊指标时仍可使用本地南农核心表和南农高质量来源。
- 收紧在线结果写入边界:额外字段中的自由文本 DOI 可用于标识符发现;清理 DOI 周边引用标点,但保留 DOI 自身成对括号;Crossref 与 Semantic Scholar 支持 JSON 对象响应及文本响应。
- 稳健补全作者和 ISSN:空作者、占位作者、错误作者及本地改动采用一致判定;保留人工修改和原作者角色;ISSN 查询保留 DOI 证据核验及刊名精确回退。
- 拆分元数据应用层:将条目类型、作者和字段写入从在线服务协调器中拆出,保持原有事务保存边界与字段有效性检查。
- 修正本地规范化边界:仅对 Zotero 明确标记为双字段的姓名执行对应格式规则;页码连接符支持期刊、会议和章节;期刊名多空格保留;CSL 原始作者拼音字段映射纠正。
- 清理原生菜单与任务通知:菜单事件去重仅覆盖单次事件分发,关闭顺序先处理子菜单;完成通知隐藏已结束的进度轨道,并在回退生成完成弹窗前收起旧的运行弹窗。
安全与数据保留
- 本地“检查并修复”仍保持离线;外部服务仅由用户触发的在线更新链路调用。
- 空白模式不覆盖已有字段;异步期间修改过的字段、作者和标识符会被保留。
- 在线源失败或返回无效数据时不清空本地字段。CNKI 相关历史说明保留为历史证据,不再代表当前服务集。
验证
生产构建与 TypeScript 检查通过;单元测试 109 个文件、760 项通过;ESLint 与 AutoCorrect 检查通过。Zotero 10 隔离环境全量原生 E2E 227/227 通过,包括原生菜单连续激活、完成通知复用、元数据补全、事务回滚及生产 XPI 安装。本次未测试 Zotero 11/12。
Zotero MetaFlow 13.7.0
Zotero MetaFlow 13.7.0
发布版本: 13.7.0
发布状态: 正式发行版(Official Release)
兼容基准: Zotero 10.0 ~ 12.* (strict_min_version: 10.0, strict_max_version: 12.*)
目标运行时: Firefox 140 / Gecko 153 现代 ESM 与 Web Components 架构
核心版本更新摘要
Zotero MetaFlow 13.7.0 是一个专注于在线元数据安全补全(Gap-Filling)、全快照新鲜度持久化守卫(Full-Snapshot Freshness Guard)以及现代 Gecko 153+ 原生弹窗状态机自愈的里程碑版本:
1. 智能元数据补全与冲突防护解耦(Gap-Filling Enhancement)
- 空白缺失字段安全填充:彻底解决在「仅补全缺失字段(blank 模式,不覆盖现有字段)」下,当文献已有非核心字段(如日期表达格式、作者中英文排列)与远端检索结果存在差异时导致的误拦截。只要显式 DOI 校验一致且标题匹配,插件将自动保护本地已有数据不被覆盖,同时将所有缺失空白字段(期刊名、卷号、期号、页码、摘要、ISSN 等)安全无损地合并写入;
- 出版商格式容错兼容:兼容出版商 XML/HTML 上下标标签(
<sup>、<sub>)前的不规则空白换行与缩进(如 ACS Nano Letters 等期刊),消除因多余空白换行导致的同一文献标题冲突误判; - 多源元数据互补衔接:在元数据发现阶段新增对
Extra字段自由文本中 DOI 的正则提取;当 Crossref / Unpaywall 主源缺少摘要、卷期页码或 ISSN 时,自动衔接 Semantic Scholar 进行第二梯队无损补齐; - 独立 ISSN 证据核验:针对缺少准确刊名的条目,核验 Crossref / OpenAlex 返回的 DOI 对应关系,拒绝虚假或不匹配的 DOI 证据,保留按准确刊名查询的回退机制。
2. 审查与去重全快照新鲜度校验(Full-Snapshot Freshness Guard)
- 完整快照比对边界(
assertReviewFresh):在用户进入审查决策交互及持久化事务等待期间,不仅比对核心元数据字段,更完整校验条目的 Extra 附加信息、Tags 标签集、Collections 集合归属及 Relations 关联关系; - 防脏写与并发保护:若用户在等待异步查询或人工决策期间于主界面修改了该条目的标签或归属,插件会敏锐感知并拦截过时决定的隐式覆盖,彻底保障用户数据的权威性。
3. Gecko 153+ / Zotero 10 原生弹窗状态机自愈
- 消除跨套件异步焦点竞态:针对 Windows 原生 Zotero 10 环境中连续执行多套件操作或后台
Zotero.Notifier重绘导致 XULnsXULPopupManager静默收起或吞没popupshown事件的偶发问题,重构测试弹窗控制器; - 状态巡检与幂等重试:实现基于 150ms 周期状态机检测与焦点主动唤醒机制,并在菜单命令执行后严密等待
popup.state === "closed",彻底消除跨套件操作交错。
4. 全量质量验收与工程规范
- 单元测试:110 个测试文件、759 项测试 100% 全部通过;
- 原生 E2E 测试:真实 Zotero 10 环境下 228 项端到端集成测试全部通过(0 失败);
- 静态分析与代码规范:TypeScript 严格类型检查(
tsc --noEmit)、ESLint Flat Config 以及 AutoCorrect 文本排版检查 0 错误、0 警告。
Zotero MetaFlow 13.6.0
Zotero MetaFlow 13.6.0
发布版本: 13.6.0
发布状态: 本地就绪候选版本(Local Release Candidate)
兼容基准: Zotero 10.0 ~ 12.* (strict_min_version: 10.0, strict_max_version: 12.*)
目标运行时: Firefox 140 / Gecko 153 现代 ESM 与 Web Components 架构
核心版本更新摘要
Zotero MetaFlow 13.6.0 是一个承载全方位现代化架构演进、凭据隐私安全与端到端稳定性升级的里程碑版本:
1. 架构模块化解耦与 360 行守卫
- Runner 调度分层:将主调度器拆解为清晰的单向继承链
RunnerState(状态/统计/进度) →RuleExecution(规则判定/上下文/回滚) →BatchPersistence(事务保存/变基/恢复) →LintRunner,各层无方法遮蔽; - 期刊面板解耦:将指标卡片拆解为核心卡片、快捷动作 (
quick-actions.ts)、分享控制器 (share-button.ts) 与条目上下文 (section-context.ts),所有模块严格遵守 360 行物理上限; - 附件资产治理与 TLDR 迁移:正文主手稿与补充材料识别策略(
attachment-role-policy.ts)与 TLDR 独立生命周期(tldr-migration.ts)彻底从主逻辑中剥离。
2. 凭据隐私安全传输与日志脱敏
- 引入匿名特权请求通道(
src/utils/credential-request.ts与http-transport.ts),杜绝 EasyScholar、Crossref 等带有 API Token /secretKey的请求泄露至 Gecko 原生调试日志; - 在请求超时、网络中断或 4xx/5xx 错误时自动掩码敏感 Query,提供安全重试与 15s 熔断保护。
3. 数据写入边界与只读防护
- 全生命周期守卫
item.isEditable()、item.deleted与item.inTrash; - 在异步网络等待返回后及进入保存事务前二次复验写入资格,严防用户在等待期间移入回收站导致的脏数据写入;
- 独立管理附件、专用笔记与文献条目的事务边界,避免回滚传播污染。
4. 设置面板现代化与首组展开铁律
- 全面板 11 个
<html:details>卡片严格遵循有且仅有第 1 张卡片默认展开(open="open"); - 界面 100% 由 Fluent(
data-l10n-id)驱动,零硬编码中文; - 4 个 Fluent 语言包共 867 个顶层键实现中英文 100% 镜像对称。
5. 原生端到端回归测试 100% 通过
- 单元测试:109 个套件、747 项测试全部通过;
- 原生 E2E 测试:真实 Zotero 10 环境下 224 项集成测试全部通过(0 失败);
- 原生条目切换与指标面板绑定引入
await win.ZoteroPane.itemSelected()原生事件同步,彻底消除历史遗留的异步选定时序竞争。
Zotero MetaFlow 13.5.4
Zotero MetaFlow 13.5.4
核心变更 (Highlights)
- [P0 只读/回收站安全加固]
TL;DR自动迁移与手动保存全链路回收站 (!item.deleted) 及只读守卫:- 在
item-info-row.ts的onItemChange、onSetData以及tldr.ts的saveTLDRToItem、saveTLDRToNote、backfillItemTLDR中全面补充!item.deleted && item.isEditable()双重安全检查,彻底杜绝点击浏览个人库回收站 (item.deleted === true) 或群组只读库条目时自动创建子笔记或触发非法写库。
- 在
- [P1 生命周期零泄漏] 定时器句柄集中托管与
addon.data.alive守卫:- 将
item-info-row.ts中0 / 50 / 200ms延迟执行的setTimeout(placeTLDRBeforeExtra)统一纳入activeTimers集合管理,在unregisterInfoRows()卸载时通过clearPendingTimers()彻底清理;同时在placeTLDRBeforeExtra与refreshTLDRInfoRow入口增加addon?.data?.alive === false守卫,防止插件关闭后残留定时器重新挂载MutationObserver。
- 将
- [P1 附件重命名防冲突] 多主文档 (
main_pdf) 独立递增序号与子附件只读/回收站过滤:- 在
correct-attachment-roles.ts获取子附件时逐一校验!att.deleted && att.isEditable(); - 新增
mainIndex计数器,当同一父条目下存在多个正文主文档 (main_pdf) 时,第 2 个起自动生成_Main__2.pdf(标题对应[正文 2]),彻底消除同名文件覆盖与重命名冲突。
- 在
- [P2 双核边界体验优化] 侧边栏「期刊洞察」面板导航守卫:
- 在
journal-pane/index.ts的completeFromNavigation与hooks.ts的onRefreshJournal中补充!item.deleted && item.isEditable()、插件存活状态、metadata.updateJournalInfo偏好开关及有效easyscholar.secretKey校验,避免在未配置密钥或关闭自动更新时点击侧边栏触发无效在线请求与写库。
- 在
Zotero MetaFlow 13.5.3
Zotero MetaFlow 13.5.3
核心变更 (Highlights)
- 短标题论文网页后缀清洗与对齐修复 (
titlesAgree):- 修复了少于 5 个词的短标题论文(如
"Ferroelectricity in ReS2 - Chen - 2024 - Advanced Materials - Wiley Online Library")因在清洗网页后缀前提前触发词数阈值短路而导致标题对齐失败的问题。现在优先对清洗后的标题执行精确等价匹配。
- 修复了少于 5 个词的短标题论文(如
- 多源元数据互补合并 (
inspectMetadata摘要跨源补全):- 当主通道
CrossrefService或 Zotero Translator 成功返回 DOI 元数据但缺失摘要 (abstractNote) 时,自动向Semantic Scholar发起补充查询并调用mergeMetadata无损合并缺失字段,同时严格保持主数据源权威字段不被覆盖。
- 当主通道
- 创作者占位符识别扩充与非作者角色保护 (
isPlaceholderCreator&applyReviewedMetadata):- 扩充
isPlaceholderCreator识别范围,覆盖null、undefined、N/A、none、et al.、[Anonymous]等抓取异常占位符; - 在
applyReviewedMetadata更新作者列表时,自动保留本地已有的非作者角色(如editor、translator),与ToolUpdateMetadata保持完全一致。
- 扩充
- DOM
MutationObserver防重入锁与子笔记迁移并发锁 (item-info-row.ts):- 为
placeTLDRBeforeExtra增加isPlacingTLDR同步重入防护与 DOM 脏检查,避免#info-table节点移动或属性更新触发MutationObserver微任务死循环; - 为
onItemChange中的历史Extra撷论自动迁移逻辑增加按条目 ID 隔离的并发锁 (migratingItemIDs),防止快速切换条目时重复创建子笔记。
- 为
- Zotero 10 ~ 12 多窗口无头环境容错 (
AbortController&DOMParser):- 将
core-workflow.ts、runner.ts、metadata.ts、http.ts、arxiv-service.ts、cnki-title-service.ts中对Zotero.getMainWindow().AbortController/DOMParser的强依赖升级为安全回退至现代 Gecko 153+ 全局AbortController/DOMParser,确保在主窗口最小化/关闭、独立阅读器窗口运行时的绝对稳健。
- 将
Zotero MetaFlow 13.5.2
Zotero MetaFlow 13.5.2
发布日期: 2026-11-03
发布版本: 13.5.2
更新类型: 数据隔离与防串扰加固(彻底隔离单篇学术「撷论 (TL;DR)」与用户自主「简记 (Remark)」)
🚀 核心改进与防串扰解耦
1. 彻底解耦「撷论 (TL;DR)」与「简记 (Remark)」
- 根除字段与格式串扰:
- 严格限制 Extra 字段中「撷论」的标准前缀仅为
TLDR:/撷论:,彻底弃用并禁止写入remark:前缀; - 默认 Extra 写入格式权威切换为
tldr(即TLDR:),绝不与 Ethereal Style 或用户自定义的remark:(简记)发生重名碰撞;
- 严格限制 Extra 字段中「撷论」的标准前缀仅为
- 防覆盖与防误删隔离:
cleanseTLDRFromExtra严格限制只匹配和清理TLDR:/撷论:行,绝不触碰或删除 Extra 字段中用户的remark:/简记:文本;saveTLDRToExtra在写入或替换历史论点时,只替换旧有的TLDR:行,绝不覆盖或抹去用户的remark:/简记:行;
- 提取与视图展示隔离:
extractTLDRFromExtra彻底移除对remark:和简记:的后备提取,条目仅存在用户简记时绝不会被误识别为具备学术 TL;DR;extractTLDRFromNote彻底移除对包含简记或remark关键词用户笔记的侵入式提取,保护用户私人阅读随笔与章节笔记不受干扰;- 条目信息面板(
placeTLDRBeforeExtra)中,当 Extra 仅包含用户私人remark:时,原生「其他 (Extra)」字段行将保持正常展示与编辑,绝不因误判为 TL;DR 而被隐藏。
📦 构建与发布产物验证
- 版本号:
13.5.2 - 插件标识:
metaflow@groele - 发布产物:
zotero-metaflow.xpi - 文件体积:
3,514,106字节 - SHA-256:
d1c29a65e0d986797b4da8fd8e48b29b9fd450f0bb6c68a41c7511f857a4f882