Skip to content

Releases

Zotero MindFlow 14.0.5

Choose a tag to compare

@groele groele released this 05 Nov 11:00

Zotero MindFlow 14.0.5

架构治理与模块拆分版本。兼容声明 Zotero 10.0 – 12.*(开发基准 Zotero 10;11/12 为前瞻声明,未做实机验证)。

本版改动

  • 规范红线清零:替换 Zotero 废弃的单数集合选择接口与布尔属性字符串写法;菜单文案改为 Fluent 本地化;bootstrap 补齐本地化包刷新与卸载清理。
  • tsconfig 黄金标准:启用 strict / noImplicitAny / isolatedModules / verbatimModuleSyntax / ES2023 / noEmit,并把严格类型错误收敛到 0。
  • 11 项架构守卫:接入 npm test 与构建链,覆盖 §5.9 360 行冻结基线、基线有效性、§5.3 废弃接口、§4.1 偏好键覆盖、§4.2 16/24px 网格、§5.2 导出名与常量漂移、§3 Fluent 对称与命名、§6 版本一致、§9.1 双更新源一致。
  • 冻结超限模块 16 → 10:按职责分层拆分 App 之外的领域模块与设置页控制器,新增模块全部 ≤360 行;test-host.mjs 1992 行拆为共享夹具 + 7 个分片;设置页网格改为显式逻辑属性声明(视觉等价)。
  • 发布闭环:11 个版本字段一致,两个更新源逐字节相同,update_hash 为 sha512: 全量哈希且指向本 Release 资产。

验证

层 结果
静态分析 双端 tsc --noEmit exit 0;架构守卫 11/11
自动化单测 npm test EXIT=0:宿主 116/116、前端 54 + 40 + 7 + 23、Python 包校验与标签自检
可复现构建 7 步构建全过,无 warning;firefox140 契约层验证
发布包 68 条目,载荷与工作区逐字节一致,无开发文件混入
更新源 两个 update.json 的 SHA-512 与线上 XPI 一致

已知边界

  • 真实 Zotero 宿主安装、亮暗主题与窄窗 computed style、Zotero 11/12 实机与多窗口回归未执行;静态断言和单元测试不替代原生验收。
  • 仍有 10 个历史超 360 行模块处于冻结禁增长状态(以 React 组件为主),后续逐轮拆分。
  • 运行时 JS 与 TS 契约层仍是双轨维护,靠守卫拦截导出名与常量漂移,尚未改为生成链。

安装

下载下方 zotero-mindflow-14.0.5.xpi,在 Zotero 中通过「工具 → 附加组件 → 从文件安装」加载。自动更新由仓库内的更新源提供。

Zotero MindFlow 14.0.1

Choose a tag to compare

@groele groele released this 05 Nov 05:17

Zotero MindFlow v14.0.1 发布说明

发布日期:2026-11-05
目标版本:v14.0.1 (Patch Release)
兼容范围:Zotero 10.0 至 12.* (strict_min_version: 10.0, strict_max_version: 12.*)
Add-on ID:mindflow@groele.org


🌟 变更与加固概述

Zotero MindFlow v14.0.1 紧跟 v14.0.0 架构重构,针对全链路数据处理逻辑、多窗口上下文隔离、TypeScript 类型契约一致性与构建安全守卫进行了深度检查与彻底加固。


🚀 核心改进与修复

1. 多窗口状态隔离与上下文安全选区 (Multi-Window Isolation)

  • 修复在多主窗口或独立阅读器窗口下侧边栏刷新回退至全局 Zotero.getMainWindow() 导致选区串读的问题;
  • 新增 resolveContextSelection(win, doc) 窗口上下文选区解析器,严格根据当前触发窗口优先获取 win.ZoteroPane?.getSelectedItems() 或阅读器当前条目 Zotero.Items.get(win.ZoteroReader.itemID);
  • 侧边栏刷新防抖定时器(scheduleItemPaneRefresh / cancelItemPaneRefresh)全面隔离至当前窗口局部作用域(win.setTimeout / win.clearTimeout),杜绝跨窗口竞态取消。

2. 宿主与 TypeScript 源码 100% 对齐与严格类型契约

  • 补齐 src/host/storage.ts 对并发已处理标识追踪(processedId、clearProcessed)及历史 Zotero.Prefs 清理的严格类型契约声明;
  • 补齐 src/host/bridge.ts 对目标窗口所有权校验(openTargetIdentity、openActionMessage)的强类型约束;
  • npm run typecheck:host(tsc --noEmit -p tsconfig.json)静态类型检查 0 错误通过。

3. 数据处理逻辑链路深度审计与只读安全加固

  • 全面审计 8 条核心数据处理链路:
    1. 工作区存储 CAS 乐观并发与 .tmp 原子落盘校验;
    2. Zotero 条目与 .mindflow 附件唯一关联与双向映射;
    3. 大纲笔记导出(exportAttachmentToNote)全生命周期权限核验(父条目存在、isEditable()、!deleted 及事务回滚);
    4. IPC postMessage 双向消息源与白名单通道;
    5. AI 智能研读模型接入与免密管道;
    6. WebDAV HTTPS 云端增量容灾同步;
    7. 离线交互 HTML、SVG、PNG、Markdown、OPML 多模态导出转换;
    8. 右侧文献侧栏原生 Web Component 响应式渲染。

4. 构建流水线持久化单文件守卫 (<= 360 行)

  • 在 scripts/build-source.mjs 中新增持久化核心模块行数硬门禁,确保 storage.js、workspace-lifecycle.js、note-sync.js、item-pane-visibility.js 单文件均严格不超过 360 行;
  • 构建期强校验 manifest.json 与各配置文件版本号绝对同步。

🧪 验证结果 / Validation

  • TypeScript 静态检查:宿主 tsc 0 错误,UI tsc 0 错误;
  • 宿主行为回归测试:test-host.mjs 116 / 116 项测试全部通过;
  • 发布包策略测试:test-release-package.py 10 / 10 项通过;
  • 标签策略自检:release-tags.py --self-test 通过;
  • 前端测试套件:source 模块 124 项测试通过;
  • 安装包不可变性:遵循发布包不可变协议,生成独立可重现 v14.0.1 构件。

📦 安装包 / Installer

  • 文件名:zotero-mindflow-14.0.1.xpi
  • 文件大小:566,937 字节 (566.9 KB)
  • SHA-256:86e8f51a10a7c85b47a4eb1cb793905aa9aad22f2205da41767de829a76024b5
  • SHA-512:068f410c1453eed8a02541354733b46b381508132ce436495ddb69f59e20f0a425f78b6136a6353d9e7362ba9611fdcc14fb5a95bfe3c714fdfe4bedfa302ce7

下载 XPI 安装包 (Download XPI)

Zotero MindFlow 14.0.0

Choose a tag to compare

@groele groele released this 05 Nov 04:27

Zotero MindFlow v14.0.0 发布说明

发布日期:2026-11-05
目标版本:v14.0.0 (Major Release)
兼容范围:Zotero 10.0 至 12.* (strict_min_version: 10.0, strict_max_version: 12.*)
Add-on ID:mindflow@groele.org


🌟 重大架构演进概述

Zotero MindFlow v14.0.0 是一次里程碑式的现代架构大版本重构。彻底告别了过往「bootstrap.js + chrome.manifest 覆盖式注册 + 宿主单体脚本 (index.js) + source/ 独立 Vite 前端」的双层割裂架构,全面迁移至面向 Zotero 10 ~ 12 现代架构(Gecko 153+ 标准)的 esbuild + TypeScript 统一工程流水线。


🚀 核心变更与特性

1. 前后端共享类型契约层 (src/common/types/)

  • 抽象统一领域模型:节点树(MindMapNode)、关系线(RelationshipLink)、导图文档(MindMapDocument)、收集箱(InboxItem);
  • 收敛宿主与导图画布间的 20+ 项 IPC 消息契约与 Payload 强类型约束;
  • 彻底解决前后端 IPC 通信字段断层与隐式 bug 隐患。

2. 宿主巨石领域解耦与 TypeScript 模块化 (src/host/)

将原宿主逻辑彻底解耦为 7 个强类型领域模块:

  • constants.ts:全局常量、数据结构合法性与安全边界校验;
  • storage.ts:CAS 乐观锁并发控制、.tmp 原子写入、.bak 备份自愈与回读字节校验;
  • workspaceLifecycle.ts:窗口关闭状态快照捕获与 AsyncShutdown 阻断器排空队列;
  • noteSync.ts:纯本地大纲笔记生成与只读/回收站安全拦截守卫;
  • itemPane.ts:Zotero 10 <info-box> Web Component 自定义 Section 交互与只读态展示;
  • itemPaneVisibility.ts:侧边栏原生折叠状态同步与事件管理;
  • bridge.ts:Iframe 宿主所有权解析与双向消息安全路由。

3. 统一构建流水线 (scripts/build-source.mjs)

  • 单一脚本统筹全局类型检查(tsc --noEmit)、React 画布构建(Vite + React 19 + TailwindCSS 4)、版本查询串缓存破坏与 11 个运行脚本语法校验;
  • 统一 npm 命令体系:npm run build、npm run build:bundle、npm run typecheck、npm test。

4. 质量守卫与测试验证

  • 宿主集成测试:116 / 116 项全部通过;
  • 前端集成测试:70 项逻辑/预设/完整性测试全部通过;
  • 打包与发布自检:100% 验证通过。

Zotero MindFlow 13.2.1

Choose a tag to compare

@groele groele released this 04 Nov 08:18

Zotero MindFlow 13.2.1

发布日期 / Release date: 2026-11-04 · Patch release

修复与完善

  • 修复带关系线的正常导图无法保存:统一编辑器、工作区存储和附件归档的数据校验契约。
  • 修复关闭/退出等待遗漏真实写入队列、关闭保存失败不能重试的问题;等待期间追加的保存和归档任务也纳入处理。
  • 加固大纲导出:异步读取后重新核验只读、回收站、父条目和插件生命周期;停用时关闭插件工作台并清理监听器。
  • 点击 MindFlow 侧栏入口时展开目标卡片,初始化保留原生折叠偏好;保存提示区分“待保存”和“本地已保存、归档中”。
  • 移除部分重复实现,增加独立的关闭协调与侧栏可见性模块;设置模板静态文案通过 Fluent 加载。

Fixes and improvements

  • Fix saving maps with relationship edges by sharing the editor's document contract across workspace storage, outlines and attachments.
  • Drain the actual persistence queues on close/quit, include work appended while draining, and allow failed close snapshots to retry.
  • Recheck outline-export permissions, Trash state, parent identity and lifecycle after asynchronous reads; clean up owned workspaces and listeners on disable.
  • Expand the target section on explicit sidenav navigation while retaining native collapse preferences; distinguish pending edits from local saves awaiting archive.
  • Remove duplicate persistence implementations, isolate close coordination and section visibility, and load static preference text through Fluent.

验证 / Validation

  • TypeScript check, production build and runtime syntax checks passed.
  • 116/116 simulated host tests and 10/10 package-policy tests passed; all five frontend test programs and tag-policy self-tests passed.
  • Zotero 10.0.7 in an isolated profile: 51/51 native checks and 3/3 process-restart checks passed.
  • Reproducible XPI payload verification; both update feeds use SHA-512.

兼容声明为 Zotero 10.0–12.*。本轮实际宿主验证为 Zotero 10.0.7;未安装用户主 profile,Zotero 11/12、跨平台、完整亮暗主题及真实外部服务验收仍待完成。模块拆分仍在逐步推进。

Declared compatibility: Zotero 10.0–12.*. Native validation covers Zotero 10.0.7. Main-profile installation, Zotero 11/12, cross-platform, complete light/dark acceptance and live external-service validation remain unverified. Architecture decomposition remains incremental.

安装包 / Installer

  • File: zotero-mindflow-13.2.1.xpi
  • Size: 566,603 bytes
  • SHA-256: 34b533799ebc1552a2432c72882b335bfd4671be22a17bfb48577c873c0d6648
  • SHA-512: 6495eb25b41bc8543916f6f2795f87eef402431f698de6e79677f6e341b5829df73bc03126f060b9fb896260e8ed0441fb1926e4afb14b3a4fde529e1365c0b5

Download XPI

Zotero MindFlow 13.2.0

Choose a tag to compare

@groele groele released this 04 Nov 06:43

Zotero MindFlow 13.2.0 发布说明

  • 版本:13.2.0
  • 类型:Minor Release(宿主架构模块化解耦、P0 数据安全只读加固、设置面板 4.2 节规范对齐与 100% Fluent 本地化、更新源 SHA-512 升级)
  • 发布日期:2026-11-04
  • Add-on ID:mindflow@groele.org
  • 兼容宿主:Zotero 10.0 至 12.*(strict_min_version: 10.0,strict_max_version: 12.*)
  • 安装包文件:zotero-mindflow-13.2.0.xpi
  • 文件大小:570,878 字节
  • SHA-256 校验值:4ccd22c08e13d3bfe1585383a12aa7438c99107803c8710a24b6e380e445d354
  • SHA-512 校验值:11338eaa35e6391637dbbee5036e52230f65688119727c341cef8414f1fbe2a146121bc1909da11e0780ba1f819928a3a2fa1d21400a111fa4fa31cf904f8c7d

🛠️ 核心变更与改进明细

1. [宿主单文件巨石架构解耦] 4,816 行单文件全面模块化

  • 领域职责解耦拆分:将原 chrome/content/scripts/index.js 单文件拆分为 5 个结构清晰的子模块至 chrome/content/scripts/modules/:
    • constants.js:偏好键、存储文件名、默认配置与状态常量定义;
    • storage.js:本地磁盘工作区存储事务、原子落盘、备份与读回校验逻辑;
    • item-pane.js:ItemPane 侧边栏与条目卡片渲染、只读状态拦截与动作分发;
    • note-sync.js:导图附件与子笔记双向同步,含大纲导出与只读防护;
    • bridge.js:与前端页面(Webview/Iframe)的双向 postMessage 桥接路由与数据分发。
  • 向后兼容门面(Facade):在 index.js 中内置轻量动态加载器 loadHostModule()(兼容 Gecko 宿主 Services.scriptloader.loadSubScript 与 Node.js vm 沙箱测试环境),对外暴露 Zotero.MindFlow.Modules,保留完全向后兼容的门面 API,确保第三方调用与历史行为零破坏。

2. [P0 数据安全加固] 导出大纲笔记与条目卡片只读深度守卫

  • 导出大纲笔记(exportAttachmentToNote)只读守卫:
    • 在获取 parentItem = Zotero.Items.get(parentID) 后,前置严格执行只读校验:
      if (!parentItem || parentItem.deleted || (typeof parentItem.isEditable === 'function' && !parentItem.isEditable()));
    • 若条目无效、处于只读群组库(Group Library)或已被移入回收站(Trash),立即拒绝脏写入并抛出可追溯异常,遵循“失败不静默”原则保护用户文献库。
  • 条目面板 ItemPane 卡片只读联动:
    • 侧边栏渲染导图卡片时核对条目编辑权限;
    • 若条目只读,将「导出大纲笔记」按钮置为禁用状态(button.disabled = true; button.setAttribute('aria-disabled', 'true');),并在按钮悬浮提示与 aria-label 中明确标注文献只读不可导出。

3. [设置页面板 100% Fluent 本地化与 4.2 节对齐]

  • 零硬编码文案驱动:
    • chrome/content/preferences.xhtml 与 chrome/content/scripts/preferences.js 100% 接入 Fluent 本地化;
    • locale/zh-CN/mindflow.ftl 与 locale/en-US/mindflow.ftl 保持 184 项词条 1:1 严格对称,覆盖所有卡片分组、控件标题、帮助描述、快捷键与状态通知。
  • 4.2 节三级层级与数学对齐规范落地:
    • 卡片容器声明 padding-inline: 16px 标准网格;
    • 卡片顶部概述文字声明 margin-inline-start: 0 贴齐 16px 起始线;
    • 从属输入行(WebDAV 与快照配置项)附加 .subordinate-row,设置 margin-inline-start: 24px,严密对齐 40px 黄金对齐基准线。
  • 主从开关依赖全生命周期守卫:
    • 封装 updateDependencies(doc),在 ① 面板初始化 (init)、② 用户交互 (change)、③ 外部配置变更 (refreshControls)、④ 恢复默认设置 (reset) 四个时机全覆盖联动更新从属控件的 disabled / aria-disabled 属性与 .is-disabled 容器样式。
  • 首组展开铁律:
    • 全面板有且仅有第 1 张核心卡片(文献与工作台)设置 open="open" 默认展开,其余折叠卡片默认收起。

4. [更新源升级与全链路版本一致性]

  • 更新源 SHA-512 安全升级:
    • 更新源 update.json 与 zotero/update.json 中的 update_hash 升级为 sha512: 强哈希校验,构建工具 release_package.py 原生支持双哈希校验与自动同步。
  • 全链路版本严格同步:
    • manifest.json、zotero/manifest.json、package.json、source/package.json、source/package-lock.json、docs/brand/product.json、chrome/content/index.html 缓存参数及设置界面徽标全部严密对齐至 13.2.0。

Zotero MindFlow 13.1.1

Choose a tag to compare

@groele groele released this 04 Nov 01:32

Zotero MindFlow 13.1.1 发布说明

  • 版本:13.1.1
  • 类型:Patch Release(加固大纲笔记只读防护、优化多窗口上下文、对齐 4.2 设置规范网格与完整本地化)
  • 发布日期:2026-11-04
  • Add-on ID:mindflow@groele.org
  • 兼容宿主:Zotero 10.0 至 12.*(strict_min_version: 10.0,strict_max_version: 12.*)
  • 安装包文件:zotero-mindflow-13.1.1.xpi
  • 文件大小:546,498 字节
  • SHA-256 校验值:a943bfa9086b6bd3288c31f9d142e9895559e0571c4959d570520f90b452d053

🛠️ 核心修复与优化明细

1. [P0 数据安全加固] 导出大纲笔记(exportAttachmentToNote)只读与删除防护

  • 只读拦截安全守卫:在 exportAttachmentToNote 方法起始处,优先前置执行安全拦截:
    • 检查 !parentItem || parentItem.deleted,若条目无效或已被放入回收站,立即拒绝;
    • 严格校验 parentItem.isEditable() 以及文献库可编辑状态 library?.editable === false || library?.filesEditable === false;
    • 若处于只读群组库或回收站中,优先触发 displayCannotEditLibraryMessage() 并抛出友好异常拒绝写入,彻底根除只读条目产生脏写入的风险。
  • 侧边栏 UI 交互联动:在侧边栏导图卡片渲染中,若当前文献不可写,将「导出大纲」操作按钮置为禁用状态(exportBtn.disabled = true),并呈现清晰的只读提示文案。

2. [P2 多窗口局限优化] 消除 Zotero.getMainWindow() 串读隐患

  • 宿主窗口上下文感知:重构 scheduleItemPaneRefresh、cancelItemPaneRefresh、onInit、onItemChange、onRender 与 onAsyncRender,从生命周期钩子中直接提取当前面板所在的宿主窗口句柄 doc?.defaultView || document?.defaultView || Zotero.getMainWindow?.(),并将窗口引用缓存在 state.window 中。
  • 杜绝多窗口串读:在条目选择为空回退解析时,优先使用当前活动窗口的 win?.ZoteroPane?.getSelectedItems?.()?.[0],防止在多主窗口或拆分独立阅读器窗口(Detached Reader Tabs/Windows)下串读首个主窗口状态。

3. [P2 设置页规范对齐与 100% 本地化]

  • 对齐 4.2 设置界面 40px 黄金基准线:修正 preferences.css 中的三级从属说明文字 .mindflow-form-desc 声明,增加 margin-inline-start: 24px,确保文字起点在容器 16px 内边距基础上严格对齐至 40px 黄金竖线。
  • 100% Fluent 本地化与双语回退体系:
    • preferences.xhtml 引入 <linkset><html:link rel="localization" href="mindflow.ftl" /></linkset>,并为所有标题、状态提示、操作按钮、快捷键项和版本发布区域补充 data-l10n-id;
    • preferences.js 引入双语辅助函数 T(zh, en),重构 FIELDS、操作通知与状态提示文案,并为动态生成的各控制项与描述附加 data-l10n-id;
    • locale/zh-CN/mindflow.ftl 与 locale/en-US/mindflow.ftl 对称补齐全部 60+ 项 mindflow-pref-* 词条,实现无缺失键的完整中英文本地化。

Zotero MindFlow 13.1.0

Choose a tag to compare

@groele groele released this 02 Nov 13:09

Zotero MindFlow 13.1.0 发布说明

  • 发布版本:13.1.0
  • 发布类型:Minor Release(工程生命周期标准化、设置页 4.2 统一网格层级对齐、文献条目面板与归档只读防护 Read-only Guard、测试套件深度扩展)
  • 发布日期:2026-11-02
  • Add-on ID:mindflow@groele.org
  • 宿主兼容性:Zotero 10.0 至 12.*(strict_min_version: 10.0,strict_max_version: 12.*)
  • 安装包文件:zotero-mindflow-13.1.0.xpi
  • 文件大小:538,467 字节
  • SHA-256 校验和:d5ee8295467823bab3ae383643a1aa1439bee9a07fa561d825f7b6a6cadbac8a

🌟 核心现代化改造细节

1. 工程生命周期标准化(Root package.json & Unified Lifecycle)

  • 确立统一根级 package.json(v13.1.0),收敛 test、build、typecheck、test:host、test:frontend、test:package 与 test:tags 脚本命令;
  • 对齐全系自动化测试流程,实现宿主与前端统一流水线。

2. 设置界面 4.2 三级层级与边缘距离标准规范深度对齐(Section 4.2 Grid Alignment)

  • 16px 绝对基准线:设置面板主容器内边距规范化为 padding: 12px 16px 28px;,卡片内边距声明 padding: 12px 16px; 与 padding: 8px 16px 16px;;
  • 40px 黄金对齐基准线:次级描述文字、从属复选框与单选组通过 margin-inline-start: 24px 严格与上方主选项文字标签保持 40px 纵向垂直对齐;
  • 排版字号基准:主标题 18px、分组标题 14px(600 字重)、说明文字 13px(次级前景灰),表单输入框与下拉选择框自然继承 14px 系统字体,杜绝布局溢出与字体缩放伪对齐;
  • 版本与发行卡片:发布说明、构建日期、XPI 下载和仓库链接分行清楚展示,从真实权威元数据中动态取值。

3. 条目面板与归档写入只读防护机制(Section 5.4 Read-only Guard)

  • 条目信息面板防护:在 chrome/content/scripts/index.js 的 onAsyncRender 中深度集成 item.isEditable() 原生安全检查。当用户浏览只读群组文献(Group Library)或回收站(Trash)条目时:
    • 自动渲染只读状态徽标(mf-status-readonly);
    • 主创建按钮与模板选择控件平滑降级为只读禁用状态(disabled: true),并展示本地化悬浮防护提示;
  • 导图归档写入保护:在 saveMindMapToItem / _saveMindMapToItem 中针对目标文献及群组库执行 isItemEditable 与 library.editable 双重熔断拦截,严禁对只读文献触发脏写入或非法创建附件;
  • 条目序列化自愈:在 serializeZoteroItem 中注入 isEditable 安全标识,使前端工作台画布与大纲即时感知只读状态。

4. 自动化测试套件深度扩展(101 Host Tests & 224+ Total Passed)

  • 扩充 scripts/test-host.mjs 测试矩阵:
    • serializeZoteroItem 只读与已删除状态标志位验证;
    • saveMindMapToItem 只读条目与只读群组附件写入拦截验证;
    • item-pane onRender 只读徽章与控件禁用 DOM 渲染验证;
  • 全库通过 101 项宿主沙箱测试、8 项发布包验证测试、标签语法自检、54 项前端数据链测试、39 项核心逻辑测试、7 项科研预设测试与 23 项数据完整性测试,全量 224+ 项测试 100% 通过。

Zotero MindFlow 13.0.10

Choose a tag to compare

@groele groele released this 31 Oct 04:44

Zotero MindFlow 13.0.10 发布说明

  • 发布版本:13.0.10
  • 发布类型:Patch Release(DOI 级联检索穿透修复、PDF 异步打开响应链路、独立窗口宿主消息代理、触控手势漫游缩放、Mermaid 格式导出、全键盘层级折叠与导航小地图平移)
  • 发布日期:2026-10-31
  • Add-on ID:mindflow@groele.org
  • 宿主兼容性:Zotero 10.0 至 12.*(strict_min_version: 10.0,strict_max_version: 12.*)
  • 安装包文件:zotero-mindflow-13.0.10.xpi
  • 文件大小:537,783 字节
  • SHA-256 校验和:70f7e32b5f4ba3a4d3968625437346d26cd428bb72c3972a741f494fb62ae226

🌟 核心检验、问题诊断与优化细节

1. DOI 级联检索多字段独立穿透判定(Independent Multi-Field DOI Cascade Query Resolution)

  • 问题诊断:在 searchItemByDoi 中,原逻辑 (item.getField('DOI') || item.getField('extra')) 存在短路遮蔽漏洞:当本地文献条目 DOI 字段已存在旧的或不匹配数据时,即便其 Extra 字段中准确包含该条目规范 DOI,检索过滤也会直接跳过该条目;
  • 优化实现:在宿主 chrome/content/scripts/index.js 与前端 source/src/services/zotero/zoteroBridge.ts 中解耦为独立字段校验(itemDoi === doi || extraDoi === doi || (extraVal && extraVal.toLowerCase().includes(doi))),并在原生搜索条件命中及内存条目遍历中全面支持穿透匹配。

2. PDF 宿主阅读器异步调用与结果响应链路(Asynchronous Host PDF Open & Acknowledged Dispatch)

  • 问题诊断:原宿主 MINDFLOW_OPEN_PDF 特权消息未回传 requestId,缺少操作完成闭环;前端 openItemPdfInZotero 在消息派发后立即无条件返回 true,导致外部无法获知 PDF 是否真正成功打开或条目是否缺少附件;
  • 优化实现:在宿主 index.js 的 openItemPdf 完成后通过 MINDFLOW_OPEN_PDF_RESULT 回传状态与 requestId;前端建立带有 3 秒安全超时保护的 Promise 回调通道,精准返回 PDF 打开结果。

3. 独立窗口与弹出层宿主消息代理统一化(Unified Standalone Window & Popup Message Delegation)

  • 问题诊断:前端 locateItemInZotero、openItemPdfInZotero、openExternalUrl、saveMindMapToZoteroAttachment 及 zoteroWorkspaceStorage 原先硬编码仅向 window.parent 派发消息。当用户在独立窗口(windowMode: 'window')或弹出工作台运行时,宿主窗口句柄位于 window.opener,导致特权消息完全丢失;
  • 优化实现:统一封装 getHostWindow() 智能判定工具(window.parent !== window ? window.parent : window.opener),使独立窗口工作台与内置标签页工作台获得完全等价的宿主联动通信能力。

4. 触控屏与触控板原生手势漫游与双指捏合平滑缩放(Native Touch Gestures & Pinch-to-Zoom)

  • 优化实现:
    • 主画布触控:在 Canvas.tsx 中注册原生 touchstart / touchmove / touchend 监听器,实现单指平滑拖拽漫游视野与双指捏合(Pinch)平滑缩放(以双指中点为缩放锚点,严格约束在 0.05x 至 3.0x 范围);
    • 离线导图 HTML 导出:在 exporter.ts 的 exportToInteractiveHTML 脚本中嵌入双指触控距离计算(Math.hypot),支持将导出的思维导图直接在 iPad、Surface、平板或移动端触控屏上进行双指缩放与拖动交互。

5. Mermaid 思维导图通用语法导出(Mermaid Mindmap Export Interoperability)

  • 优化实现:
    • 新增 generateMermaidMindmap 与 exportToMermaid(.mmd 导出),采用 Mermaid 官方标准 mindmap 语法;
    • 自动清洗与转义双引号、反斜杠与换行符,严格维护 2 空格树层级缩进;
    • 工具栏导出菜单新增“Mermaid 语法 (.mmd) · 知识库通用”选项,导出的内容可无缝直接粘贴至 Obsidian、Logseq、Typora、Notion 以及 GitHub Markdown 中渲染。

6. 全键盘层级折叠与编辑快捷键体系完善(Keyboard-Driven Hierarchy & Editing Shortcuts)

  • 优化实现:
    • 即时折叠/展开:选定节点时按下 / 键即可一键切换当前分支的折叠/展开(与右键菜单提示严格对齐);
    • 多层级分支快速控制:支持 Alt+1(仅显示 1 级主干)、Alt+2(展开至 2 级分支)、Alt+3(展开至 3 级分支)以及 Alt+0 / Alt+9(展开全部层级);
    • 顶栏层级折叠菜单扩展:层级折叠菜单扩展增加“展开至 3 级分支”,并直观标注 Alt+1 / Alt+2 / Alt+3 / Alt+0 快捷键徽章;
    • 常用文本重命名:支持通用的 F2 快捷键进入节点编辑;
    • 全局搜索替换:支持 Ctrl+H / Cmd+H 直接从画布唤起即时搜索与替换面板;
    • 快速取消选中:按 Esc 键在未激活弹窗时可直接清除当前选中的节点;
    • 快捷键面板同步:全键盘指南弹窗(? 键)完整收录以上快捷键。

7. 导航小地图连续按住拖拽同步平移(Minimap Continuous Pointer Drag-to-Pan)

  • 优化实现:在 Minimap.tsx 中利用 Pointer Events 与 setPointerCapture,用户不仅可以点击小地图跳转,还可按住鼠标左键或触控点在小地图上拖动,视口区域随之实时平滑连续平移,大幅提升在超大型复杂知识导图中的漫游定位效率。

8. 关联学术文献母篇快速触达卡片(Associated Literature Hub & Quick Jump)

  • 优化实现:
    • 顶栏下拉文献卡片:顶栏“Zotero 学术文献联动”下拉菜单中新增专属文献条目卡片,显示母篇文献标题并提供一键“文库定位”和“打开 PDF”;
    • 空白画布右键菜单:在关联文献的导图空白处右键呼出菜单时,支持一键定位母篇文献与打开全文 PDF;
    • 左侧工作台文档列表直达:文档抽屉中的 Zotero 标识改为交互式按钮,点击即可直接跳转并定位该导图对应的本地文献条目。

9. 属性栏文献定位加载指示与智能浏览器回退(Property Sidebar Interactive State & Smart Fallback)

  • 优化实现:在 PropertySidebar.tsx 中引入 isLocatingItem 状态与旋转指示动效(<Loader2 className="animate-spin" />);当本地查无此篇时,实时提供状态反馈并智能唤起系统默认浏览器访问对应 DOI 官方解析网址(https://doi.org/...)。

🧪 验证与测试证据

  • TypeScript 类型检查与生产构建 (node scripts/build-local.mjs):PASS,0 错误,前端 bundle 与 CSS 资源编译正常。
  • 全量前端单元测试 (npm test --prefix source):123/123 项全数通过(包含 54 项数据链路测试、39 项操作逻辑测试、7 项研究预设测试与 23 项数据完整性测试)。
  • Zotero 宿主行为回归测试 (node --test scripts/test-host.mjs):98/98 项全数通过(覆盖特权消息路由、DOI 检索、窗口鉴权与阅读器调用)。
  • 发布包与标签校验自检 (scripts/test-release-package.py & scripts/release-tags.py --self-test):全数通过。
  • 可复现 XPI 打包与校验 (python scripts/package-xpi.py --update-feeds):PASS,生成 zotero-mindflow-13.0.10.xpi(537,783 字节),SHA-256 与 update.json、zotero/update.json、docs/package-verification.json 及 SHA256SUMS.txt 100% 吻合。

Zotero MindFlow 13.0.9

Choose a tag to compare

@groele groele released this 31 Oct 02:28

Zotero MindFlow 13.0.9 发布说明

  • 发布版本:13.0.9
  • 发布类型:Patch Release(独立窗口特权消息响应、集合自动切换聚焦、节点文献优先级与附件父条目解析)
  • 发布日期:2026-10-31
  • Add-on ID:mindflow@groele.org
  • 宿主兼容性:Zotero 10.0 至 12.*(strict_min_version: 10.0,strict_max_version: 12.*)
  • 安装包文件:zotero-mindflow-13.0.9.xpi
  • 文件大小:535,303 字节
  • SHA-256 校验和:8160d944d2f4064ba6327146b12a9de4fec2c7aa4c3415237b4c7e980f0cb03f

🌟 核心检验、问题诊断与优化细节

1. 独立窗口特权消息响应打通(Standalone Workspace Window Privileged Message Routing)

  • 问题诊断:MindFlow 允许在独立 OS 窗口(openStandaloneWorkspaceWindow)运行导图工作台。在 chrome/content/scripts/index.js 的 handleHostMessage 中,原实现只用 doc.querySelectorAll('.mindflow-workspace-iframe') 校验来源 frame,而独立窗口不在主窗口 DOM 树中,导致独立窗口发送的 MINDFLOW_LOCATE_ITEM、MINDFLOW_OPEN_PDF、MINDFLOW_LAUNCH_URL、MINDFLOW_NOTIFY 等特权消息被鉴权过滤、完全静默丢失;
  • 优化实现:将来源鉴权拓展为 const isOwner = Boolean(ownerFrame) || this.ownsWorkspaceWindow(source); if (!isOwner) return;,使独立窗口与内置标签页具备完全一致、受信任的宿主联动响应能力。

2. 文献跨集合自动切换展开与窗口聚焦(Item Selection Collection Navigation & Window Focus)

  • 问题诊断:原 MINDFLOW_LOCATE_ITEM 及 zoteroBridge.ts:locateItemInZotero 仅执行 pane.selectItem(item.id),当用户在左侧分类树选在其他非父级集合时,Zotero 不会自动切换到该文献所在集合,导致中间文献列表呈现空白或不显示该条目,且在独立窗口操作后主窗口未能自动置顶聚焦;
  • 优化实现:更新为 pane.selectItem(item.id, true),强制 Zotero 自动展开并选中条目所属集合,并补充 mainWin?.focus?.(),确保在任何视图下定位文献都能即时显式呈现。

3. 内存兜底 DOI 搜索附件父条目递归解析(In-Memory DOI Fallback Attachment Parent Resolution)

  • 问题诊断:在通过内存索引兜底搜索 DOI(Zotero.Items.getAll(libID))时,若文献条目的 PDF 附件元数据或 Extra 中也包含该 DOI,原逻辑直接返回了该 attachment 附件条目,导致后续题录信息提取、元数据展示或定位异常;
  • 优化实现:在宿主 index.js 与前端 zoteroBridge.ts 中同步加入 item.isRegularItem() 与 item.parentItemID 判定,若命中附件条目则自动递归解析并返回其父级文献题录条目。

4. 属性栏文献定位优先级倒置修复(Property Sidebar Target Priority Inversion Resolution)

  • 问题诊断:在 PropertySidebar.tsx 中,原逻辑优先使用整张导图的绑定文献 currentDoc.metadata?.zoteroItemKey,之后才检查选中节点的 DOI。当整张导图挂靠在文献 A 下、但某个分支节点明确标注了文献 B 的 DOI 时,点击右侧属性栏的“文库定位”或“打开 PDF”会错误跳到文献 A;
  • 优化实现:修正为节点优先策略(优先判定 selectedNode.link 或 nodeDoi),仅在节点本身没有文献信息时才回退至导图根文档绑定文献。

5. 右键菜单文献定位协议解析对齐(Context Menu Target URI Resolution Priority)

  • 问题诊断:在 ContextMenu.tsx 中,如果节点同时存在外部超链接和提取出的 DOI,原逻辑可能直接将泛化外部链接透传,导致错失本地 Zotero 条目直达能力;
  • 优化实现:强化优先级判定,优先以已解析的文献 DOI / Zotero URI 唤起原生文库定位与 PDF 阅读,确保科研工作流直达。

6. 外链协议安全白名单与环境嗅探增强(URL Protocol Security & Environment Sniffing)

  • 宿主 MINDFLOW_LAUNCH_URL 消息处理增加 /^(https?|zotero):\/\//i 协议白名单过滤,防止恶意调用;
  • 优化前端 zoteroBridge.ts:isZoteroEnvironment(),兼容 isZoteroWorkspace() 标志,防止在独立窗口模式下误降级为纯浏览器环境。

🧪 验证与测试证据

  • TypeScript 类型检查与生产构建 (npm run build --prefix source):PASS,0 错误。
  • 全量前端单元测试 (npm test --prefix source):117/117 项全数通过(新增内存附件父条目解析、options 参数透传等测试)。
  • Zotero 宿主行为回归测试 (node --test scripts/test-host.mjs):96/96 项全数通过(新增独立窗口特权消息响应与鉴权测试)。
  • 发布包与标签校验自检:全数通过。

Zotero MindFlow 13.0.8

Choose a tag to compare

@groele groele released this 31 Oct 02:08

Zotero MindFlow 13.0.8 发布说明

  • 发布版本:13.0.8
  • 发布类型:Patch Release(历史首选项冗余脱卸、Extra 字段双向解析、备份架构校验与外链稳健性)
  • 发布日期:2026-10-31
  • Add-on ID:mindflow@groele.org
  • 宿主兼容性:Zotero 10.0 至 12.*(strict_min_version: 10.0,strict_max_version: 12.*)
  • 安装包文件:zotero-mindflow-13.0.8.xpi
  • 文件大小:535,098 字节
  • SHA-256 校验和:c5a69617c19b79010d4ff82a4ccfd8855906a95c2d53c2586e3fd317926ee359

🌟 核心优化与脱卸历史包袱细节

1. 宿主首选项历史数据脱卸与轻量化迁移(Legacy Preference Cleanup on Durable Write)

  • 早期 MindFlow 将导图 JSON、历史快照与灵感收集箱完整存入 Zotero 的 prefs.js,重构为本地工作区文件后保留了向后读取兼容;
  • 本次升级在工作区文件(commitDocument、setMany、mutateInbox、mutateSnapshots)落盘并校验一致后,自动安全脱卸旧版 Zotero.Prefs 冗余大字符串键,解决 prefs.js 历史膨胀包袱,显著降低内存与配置负担;
  • 同时在 settingsService.ts:readSettings() 冷启动时将从旧偏好迁移的全局设置平滑持久化到根配置,消除每次重复映射的性能开销。

2. 文献 Extra 字段 DOI 提取双向统一(Extra Field DOI Extraction Parity)

  • 全面完善前端 zoteroBridge.ts:extractZoteroItemData 与宿主 index.js 的文献数据提取逻辑,在原生 DOI 字段为空时自动回退提取 extra 字段中的 DOI 信息;
  • 彻底解决经由 BibTeX、arXiv、预印本工具导入时 DOI 存放在 extra 字段导致的导图节点跳转断链问题。

3. 工作区备份恢复架构版本约束(Backup Schema Version Robustness)

  • 在 validateWorkspaceData 中强化架构版本 schemaVersion 校验(上限约束为当前最大支持版本 v2,防未来不兼容数据降级解析);
  • 精简 importFullWorkspaceBackup 逻辑链路,规避重复序列化开销,确保跨版本全量导入的安全可靠。

4. 设置项防御性枚举清洗与 WebDAV 结构容错(Settings Sanitization Defense)

  • 在 sanitizeSettings 中加入 defaultThemeId 范围防御校验,对异常或失效主题自动回退至经典主题 classic-blue,防止渲染样式异常;
  • 强化 webdav 子对象的有效性校验与前后空白过滤,确保网络同步配置稳定健壮。

5. 外部链接协议扩展与右键/属性栏笔记参数透传

  • safeExternalUrl 新增对 www. 前缀裸网址的智能识别与 https:// 自动补全,避免常用科研网址被误判过滤;
  • 节点右键菜单 [ContextMenu.tsx] 与侧边栏 [PropertySidebar.tsx] 在触发文库定位与 PDF 阅读时,完整透传节点备注(Note),与节点卡片外链按钮保持 100% 行为对齐。

🧪 验证与测试证据

  • TypeScript 类型检查与生产构建 (npm run build --prefix source):PASS,0 错误。
  • 全量前端单元测试 (npm test --prefix source):116/116 项全数通过(新增 extra DOI 提取、www. 协议补全、主题防损与备份架构校验测试)。
  • Zotero 宿主行为回归测试 (node --test scripts/test-host.mjs):95/95 项全数通过(包含落盘后旧版首选项自动清理验证)。
  • 发布包与标签校验自检:全数通过。