2026/10/17 2:01:30

MooTool Next Electron 1.0.1:系统菜单三语本地化与更新检查链路修复详解

MooTool Next Electron 1.0.1:系统菜单三语本地化与更新检查链路修复详解 桌面应用开发工具【免费下载链接】MooToolHandy tool set for developers项目地址https://gitcode.com/gh_mirrors/mo/MooTool点击查看免费下载MooTool Next Electron 是 MooTool 工具集在 Electron/Vite/React/TypeScript 技术栈上的重写产品线技术栈见 next/package.json。本文以官方发布说明 next/release-notes/1.0.1.md 为骨架深入剖析 1.0.1 版本的五大核心变更——系统应用菜单的中文/英文/日文三语本地化、菜单直达设置入口、更新检查反馈修复、工具提示残留修复以及工作区布局优化并结合主进程与渲染进程源码验证每条改动的真实实现路径。读完你将掌握这套菜单与设置导航的构建方式、更新检查从触发到展示结果的完整链路、以及 macOS 未签名 DMG 的“手动安装”更新模式的工作原理。版本概况独立于 Java 产品线的首个修复版本1.0.1 是 MooTool Next Electron 产品线的早期修复版本。发布说明开篇即强调两件事本版本与 MooTool Java独立安装、独立更新不会覆盖 Java 版本更新检查只读取next-electron产品清单Java 产品线继续使用v*tag 与原有更新清单不受本次发布影响。这一点在仓库根目录的 update-manifest.json 中得到印证清单顶层products下同时注册了javadisplayName 为 MooTool Java与next-electrondisplayName 为 MooTool Next Electron两个独立产品条目各有各的 releases 与 assets。主进程 next/electron/main/updateService.ts 中定义了currentUpdateProductId next-electron更新服务只解析自己产品线的发布数据这就是“互不影响”的实现基础。系统应用菜单三语本地化一份模板、三组文案1.0.1 最核心的改动是“完整支持系统应用菜单的中文、英文和日文显示”。这并非简单的文本翻译而是在 Electron 主进程中按语言动态重建整套原生菜单。文案表menuLabels菜单所有文案集中维护在主进程入口 next/electron/main/index.ts 的menuLabels常量中以AppLanguagezh-CN/en-US/ja-JP为键覆盖文件、编辑、显示、窗口、工具、搜索、设置、检查更新、关于、同步与备份、快捷键、外观、布局与习惯、运行环境、工具默认值、剪贴板操作、全屏、缩放以及托盘菜单的取色器/截图/翻译等全部条目。例如中文about: 关于 MooTool、backup: 同步与备份…、shortcuts: 快捷键…、runtime: 运行环境…、toolDefaults: 工具默认值…英文about: About MooTool、backup: Sync and Backup…、runtime: Runtimes…日文about: MooTool について、backup: 同期とバックアップ…、runtime: 実行環境…。文案类型由MenuLabels联合类型index.ts严格约束保证三语言模板结构一致不会出现漏项。动态重建rebuildApplicationMenu菜单构建入口是 rebuildApplicationMenu其核心逻辑为根据当前语言取文案表const labels menuLabels[language]组装MenuItemConstructorOptions[]模板调用Menu.setApplicationMenu(Menu.buildFromTemplate(template))index.ts应用到系统菜单。关键细节在于语言变化后菜单是“重建”而不是“翻译”。applySettingsindex.ts在设置提交后调用rebuildApplicationMenu(settings.general.language)即语言切换会触发原生菜单整体重建。这也解释了为何每个菜单项都通过settingsLink(label, category)工厂函数index.ts生成——重建时可以统一注入点击行为。菜单结构平台差异处理模板index.ts按平台区分macOSdarwin首菜单为应用菜单app.name包含“关于 MooTool”“检查更新…”、分隔线、“设置…⌘,”“同步与备份…”“快捷键…”以及role化的隐藏、隐藏其他、全部显示、退出等系统行为Windows / Linux首菜单为“文件”将设置、同步与备份、快捷键、检查更新聚合其中避免 macOS 应用菜单语义缺失导致的功能不可达。其余顶层菜单三平台一致编辑撤销/重做/剪切/复制/粘贴/全选 搜索工具、显示实际大小/放大/缩小/全屏 外观…/布局与习惯…、窗口最小化/缩放/前置全部窗口、工具搜索工具 运行环境…/工具默认值…。开发模式下还会额外注入reload与toggleDevTools条目。托盘菜单则复用 next/electron/main/trayMenu.ts 的buildTrayMenuTemplate构建与系统菜单共享同样的多语言文案体系。菜单直达入口一套设置页多个快捷路径发布说明提到的“在系统菜单中增加关于、同步与备份、快捷键、外观、布局、运行环境、工具默认值等快捷入口”本质上是将原生菜单项与渲染进程的设置窗口分类做了映射。设置分类注册表设置窗口的 12 个分类定义在 next/src/features/settings/SettingsWindow.tsxgeneral / appearance / layout / editor / network / data / vault / runtime / ai / tools / shortcuts / about每个分类绑定图标与 i18n 文案。菜单中的“外观”映射到appearance、“布局”映射到layout、“运行环境”映射到runtime、“工具默认值”映射到tools、“同步与备份”映射到data、“快捷键”映射到shortcuts。跳转链路菜单项点击后调用openSettingsPage(category)index.ts通过navigateMainWindow({ type: open-settings, category })向主窗口发送导航消息渲染端收到后定位到对应分类组件SettingsCategoryContent的 switch 分发SettingsWindow.tsx。这样用户无需逐层点击“设置 → 分类”即可直达目标配置页。检查更新修复从“无反馈”到“打开关于页并展示结果”1.0.1 明确修复了“检查更新点击后无反馈”的问题。修复后的行为是点击菜单项 → 打开“关于”设置页 → 触发一次更新检查并广播结果到页面展示。这在源码中有完整闭环。菜单项实现updateItemindex.ts的 click 处理为click: () { openSettingsPage(about) void checkForUpdatesAndBroadcast() }即先导航到about分类再触发异步检查。检查服务清单解析与产物匹配checkForUpdatesindex.ts调用updateService.check(app.getVersion())。底层 updateService.ts 的流程拉取 update-manifest.jsonAccept: application/json10 秒超时校验 schemaVersion 与产品注册状态解析next-electron产品的 releases通过 compareVersions 比较当前版本与最新发布版本支持预发布版本排序与v前缀归一化根据当前platformarchitecture调用selectUpdateAssetupdateService.ts选择最匹配的安装包匹配优先级为架构精确匹配 用户偏好包类型 清单priority 平台默认包类型偏好macOS 只接受 dmg。结果展示About 页面渲染端 AboutSettings 通过window.mootool.onUpdateCheck监听主进程广播的update:checked事件或直接调用window.mootool.checkForUpdates()将UpdateCheckResult渲染为结果卡片最新版本号、目标平台/架构如darwin/arm64、安装包文件名、错误信息以及通过markedDOMPurify渲染的 Release NotesSettingsWindow.tsx。这正好解释了为什么本次发布说明的中英文日文全文都能在“关于”页内联展示。更新下载与安装自动模式与 macOS 手动模式1.0.1 说明中特别提到“macOS 会下载并校验新版 DMG随后提示用户打开 DMG 并将应用拖入‘应用程序’”。这是 next/electron/main/updateManager.ts 中UpdateInstallMode automatic | manualcontract 定义见 next/src/shared/contracts/update.ts两种模式差异的直接体现自动模式automaticprepare()内部通过updater.setFeedURL({ provider: generic, url, channel })配置 electron-updater 的 generic 源channel 由 updateMetadataChannel 将aarch64→arm64、amd64→x64随后checkForUpdates()→downloadUpdate()→quitAndInstall(true, true)updateManager.ts全程静默手动模式manual由于 macOS 安装包未签名走自定义downloadFile回调下载并校验 DMGSHA-512 校验逻辑见 updateService.ts下载完成后通过openDownloadedFile调用系统打开 DMG由用户手动拖拽安装随后quitApp()updateManager.ts。对应的测试用例 next/electron/main/updateManager.test.ts 验证了“手动模式下不调用 quitAndInstall、改为打开下载文件”的行为。状态机idle → available → downloading → ready / error见 updateManager.ts通过onStateChange持续推送给 About 页的下载/安装按钮SettingsWindow.tsx用户即可看到“下载中 x%”“安装并重启”等实时状态。此外next/electron/main/updateCleanup.ts 会定时清理userData/pending-updates下超过 7 天的旧 DMG 与超过 1 天的残留.download片段正被下载/待安装的文件会被保护跳过避免磁盘被未签名的更新安装包占满。工具提示残留修复Tooltip 的生命周期管理1.0.1 修复了“关闭窗口或切换窗口后焦点落在设置按钮时工具提示仍然残留”的问题。这涉及 next/src/shared/components/Tooltip.tsx 中统一 Tooltip 组件的两条隐藏路径窗口失焦即隐藏组件挂载后注册window.addEventListener(blur, hideTooltip)Tooltip.tsx。无论焦点是否落在设置按钮上只要窗口失去焦点关闭、切换工具提示立即清除不会残留工具激活状态联动useToolActivity()返回toolActive当应用不再处于活跃状态时调用hideTooltip()并阻止下一次showTooltip()Tooltip.tsx同时showTooltip前置检查if (!toolActive) returnTooltip.tsx。默认展示延迟delay 400毫秒、触发器上同时绑定onMouseEnter/onMouseLeave/onFocusCapture/onBlurCapture并通过createPortal将提示渲染到document.body。整个 workbench 与各工具页如 next/src/features/workbench/ToolWindow.tsx复用了该组件因此这一处修复会同步惠及所有 Tooltip 使用点。布局与间距优化1.0.1 还包含“优化工作区与设置界面的布局和间距”属于界面打磨类改动对应 next/src/features/settings/SettingsWindow.tsx 中设置分类页的SettingsGroup/SettingRow排版结构。这通常通过调整共享样式next/src/shared/styles与工作区组件的间距类如工具窗口的 detach/dock 区域完成属于低风险 UI 迭代与菜单、更新等行为修复互补使设置页各分类的字段密度与视觉层级更规整。发布说明的工程复用一份笔记多处消费值得一提的是本发布说明不仅是给用户的更新日志还被更新服务原样消费。仓库根目录 update-manifest.json 中 1.0.1 条目的notes字段与 next/release-notes/1.0.1.md 内容逐字一致当用户点击“检查更新”发现 1.0.1 及以上版本可用时releaseNotesAfter 会聚合从当前版本之后的所有 release notes交给 About 页渲染。因此阅读这篇发布说明就等于提前看到了更新结果卡片中将展示的 Release Notes。小结与延伸阅读MooTool Next Electron 1.0.1 的实质是一次“体验链路”修复系统菜单三语本地化让原生菜单与界面语言统一菜单直达入口缩短了配置路径检查更新从“静默失败”变为“可感知、可追踪”的完整闭环工具提示的生命周期问题得到根除。这些改动的核心代码都集中在主进程 next/electron/main/index.ts菜单构建与更新调度、next/electron/main/updateService.ts 与 next/electron/main/updateManager.ts更新链路以及渲染进程 next/src/features/settings/SettingsWindow.tsx关于页与设置分类和 next/src/shared/components/Tooltip.tsx。想深入验证更新流程可阅读 next/electron/main/updateManager.test.ts自动/手动模式与 next/electron/main/updateCleanup.test.ts残留清理想了解菜单文案全量内容可直接查看 index.ts 的menuLabels想对照发布清单结构可查看 update-manifest.json 中next-electron产品的 releases 与 assets 字段platform、architecture、packageType、priority、sha512、size。赞分享桌面应用开发工具【免费下载链接】MooToolHandy tool set for developers项目地址https://gitcode.com/gh_mirrors/mo/MooTool点击查看免费下载相关推荐Thorium 浏览器实战指南这个 Chromium 分叉到底快多少AVX2 版怎么挑Thorium 浏览器实战指南这个 Chromium 分叉到底快多少AVX2 版怎么挑 想要一个比原生 Chromium 更快、装完却不用满世界找开关的浏览桌面应用开发工具Gatsby v4.14.0 版本详解GraphQL Typegen 实验特性、资源加载优化与 Image CDN 支持Gatsby v4.14.0 版本详解GraphQL Typegen 实验特性、资源加载优化与 Image CDN 支持 本文围绕 Gatsby 仓库 doc桌面应用开发工具MooTool NextComposeJSON Vault「更多」菜单对齐树选中路径DIFF-344 的上下文修复与源码剖析MooTool NextComposeJSON Vault「更多」菜单对齐树选中路径DIFF 344 的上下文修复与源码剖析 本文基于 MooTool 仓桌面应用开发工具上一篇react-webpack-MF三层 React 微前端架构下的 Webpack Module Federation 完整实战下一篇Yugong与Canal对比选择最适合的数据同步方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考