资讯动态

MooTool Next macOS Native:用 SwiftUI 原生复刻开发工具箱的架构、构建与验收实践

发布时间:2026/10/17 1:55:04 来源:尧图企业网站定制
桌面应用开发工具【免费下载链接】MooToolHandy tool set for developers项目地址https://gitcode.com/gh_mirrors/mo/MooTool点击查看免费下载本指南以next-macos-native产品线的官方 README 为主体系统讲解 MooTool 如何以 SwiftUI / AppKit 独立实现一款与 Electron 版功能对齐的 macOS 原生工具箱包括工程结构、开发与运行、DMG 打包签名、26 个工具入口的功能布局、本地数据边界、跨产品数据迁移以及从核心测试到界面验收的完整质量体系。读完你既能掌握从源码到.app/ DMG的全流程操作也能理解文本对比、JSON 引擎、格式化与随手记等核心工作区的实现边界与验证方式。项目定位独立于 Electron 的 macOS 原生产品线next-macos-native是 MooTool 的独立 macOS 产品线使用 SwiftUI、AppKit 与系统框架实现。它沿用nextElectron 版的26 个工具入口、分组导航和编辑工作区并采用系统侧边栏、统一工具栏、原生菜单、深浅色和独立工具窗口。其核心约束记录在 AGENTS.md 中任何功能都尽量与nextElectron 版保持功能和布局一致实现前阅读对应 Electron 页面与测试以其功能入口、面板顺序、操作语义为基准再用 macOS 原生控件适配系统交互同时各产品线彼此独立原生版不导入其他产品的源码不共用数据、偏好设置、应用标识、安装名称或发布通道。当前版本为0.8.0首个公开预发布版关键能力包括文本对比改为与 Electron 对应的双编辑器工作区字符与行高亮、统一补丁、忽略空白、差异导航、同步滚动、交换、复制和历史恢复窄窗口采用两行工具栏详见 文本对比工作区与边界文本 / 文件格式化工作区0.7.0 交付继续保留设置支持从 Electron 合并工作台布局与 SQLite / 磁盘数据迁移界面语言简中 / 英语 / 日语覆盖侧栏、工作台与多数工具主操作可选菜单栏托盘提供取色、截图等快捷入口。发布安装包为Universal DMGad-hoc 签名未经 Apple 公证应用名MooTool Next Native.app与其他产品不同安装不会覆盖MooTool.app或MooTool Next Electron.app。功能与布局以nextElectron 版为基准保留功能入口、面板顺序及操作语义后再使用原生控件适配这一约束已固化在 AGENTS.md 与 功能对齐清单 中。环境要求与工程结构环境前提运行macOS 14系统自动翻译需要 macOS 15 和对应语言模型。构建Xcode 26 / Command Line Tools 26macOS SDK 26、Swift 6.2应用运行最低版本仍为 macOS 14。首次构建需联网解析固定版本的Yams 6.2.2。Python、Node.js、Java、Groovy 等仅在运行对应代码功能时需要不随安装包提供也不需要启动 Electron、Tauri、Java 版 MooTool不需要它们的源码或用户数据。SwiftPM 工程结构Package.swift 定义了三个目标与两个可执行程序// swift-tools-version: 5.9 products: [ .executable(name: MooToolNextNative, targets: [MooToolNextApp]), .executable(name: MooToolJSONWorker, targets: [MooToolJSONWorker]), .library(name: MooToolNextCore, targets: [MooToolNextCore]) ], targets: [ .target(name: MooToolNextCore, dependencies: [.product(name: Yams, package: Yams)], resources: [.process(Resources)], linkerSettings: [.linkedLibrary(sqlite3)]), .executableTarget(name: MooToolJSONWorker, dependencies: [MooToolNextCore]), .executableTarget(name: MooToolNextApp, dependencies: [MooToolNextCore], resources: [.process(Resources)]), .testTarget(name: MooToolNextCoreTests, dependencies: [MooToolNextCore]) ]目录分工见 README 目录说明Sources/MooToolNextCore可测试逻辑层封装 JSON 引擎、文本对比、格式化、文档库、迁移、加密、网络等服务Sources/MooToolNextApp原生界面与系统集成SwiftUI 场景、侧栏、工具栏、菜单栏托盘、独立工具窗口Sources/MooToolJSONWorker随应用打包的 JSON 辅助进程Tests核心测试scripts构建、运行与验收入口。版本号统一来自仓库根的 VERSION 文件当前为0.8.0构建脚本会校验其必须是major.minor.patch格式。开发与运行从源码到可调试 .app官方推荐流程在仓库根目录执行cd next-macos-native swift build ./scripts/run.sh其中 run.sh 实际调用./scripts/build-app.sh --debug构建调试.app再用open打开dist/$(uname -m)/MooTool Next Native.app——它会创建带独立标识和资源的调试应用避免与正式安装版混淆。也可在 Xcode 中直接打开Package.swift运行MooToolNextNativetargetswift run MooToolNextNative可用于快速开发但正式使用应运行打包后的应用。常用快捷键与操作快捷键 / 操作作用⌘K搜索工具方向键选择、回车打开、Esc 关闭⌘Return执行多数工具的主要操作⌘⇧F格式化工具当前文本或文件沿用 Electron 的格式化快捷键⌘F/⌘Z编辑器查找、撤销保留系统复制、粘贴、选择操作⌘,打开设置主题、编辑器字号、自动换行和备份侧边栏右键添加常用工具、打开独立窗口文档库JSON / 随手记左侧依次为搜索、正文检索 / 排序、操作按钮、文件夹树和路径支持新建文件 / 文件夹、展开折叠、重命名、移动、复制、删除可拖动项目到文件夹或空白根区域移动也可用右键菜单选择目标。更多菜单可批量导入文件或文件夹JSON 支持.json随手记支持.md/.markdown/.txt/.text/.log均为 UTF-8保留导入层级同名文件增加数字后缀一次最多 500 份、总计 32 MB、单文件 10 MB失败不会部分写入。隐藏文件、符号链接及不匹配类型不会从文件夹中导入。编辑自动保存⌘S手动保存记住文档选择、展开状态、搜索 / 排序、光标选择与滚动位置。切换文档隔离撤销记录跨重启不保存撤销历史未关联文档的内容可通过打开草稿找回。独立构建与安装从源码到 Universal DMGbuild-app.sh 是完整打包入口支持架构与产物选择./scripts/build-app.sh --dmg # 当前架构Release ./scripts/build-app.sh --arch arm64 --dmg # Apple Silicon ./scripts/build-app.sh --arch x86_64 --dmg # Intel ./scripts/build-app.sh --arch universal --dmg--debug可切换到 Debug 配置。脚本会为每个目标架构分别执行swift build -c configuration --arch arch再通过lipo -create合并出 Universal 可执行文件主应用与MooToolJSONWorker辅助进程均参与合并复制 App / Core 两个资源 bundle、AppIcon 与许可证写入带CFBundleIdentifier com.rememberber.mootool.next.macos-native、LSMinimumSystemVersion 14.0等字段的Info.plist随后签名并生成 DMG。产物dist/{arch}/MooTool Next Native.app dist/{arch}/MooTool-Next-macOS-Native-0.8.0-mac-{arch}.dmg dist/{arch}/build-info.json把MooTool Next Native.app拖入 Applications 即可。构建脚本不会修改 Applications也不会自动安装或卸载其他版本。签名方面默认使用本地ad hoc 签名适合本机构建使用公开分发时设置NATIVE_SIGN_IDENTITY使用 Developer ID 签名并在发布流程中另行完成 Apple notarization——脚本不上传签名密钥、不自动公证或发布 Release。build-info.json记录版本、架构、构建时间及各产物的 SHA-256 摘要供发布与校验使用。核心工作区能力一览原生版各工具工作区的功能、面板顺序与操作语义均对照 Electron 页面实现同时以原生控件适配 macOS 习惯各工作区标题、工具栏与错误提示在设置中选择general.language后随 zh-CN / en-US / ja-JP 三语切换。以下为主要工作区能力。文本对比0.8.0 重点左右可编辑文本自动计算差异工具栏支持比较并保存历史、清空、交换、复制统一补丁、跳转上一处 / 下一处可选择忽略空白、行 / 字符高亮和左右 / 统一视图。左右滚动同步统一补丁在下方只读显示选项与光标 / 滚动位置随原生工作区恢复。输入变化后约 160 毫秒自动比较历史保存左右原文和统一补丁恢复时重新计算高亮。详见 文本对比工作区与边界。JSON 工作区与独立解析引擎左侧文档库、中间主编辑器、右侧可折叠检查器。格式化 / 压缩直接更新正文且可撤销高级格式化支持 2 / 4 空格、排序、忽略大小写和重复键检测JSONPath 查询及 JSON → XML / JavaBean 转换在弹窗中显示结果。解析依赖为 JSONPath-Plus 10.4.0 与 fast-xml-parser 5.10.1浏览器发行文件与许可证全部放在Sources/MooToolNextCore/Resources/版本与 SHA-256 记录在parser-versions.json算法由系统JavaScriptCore在MooToolJSONWorker辅助进程中执行JSON 数据不会发送到远端用户运行时无需 Node.js。详见 JSON 工作区与解析边界。格式化工作区0.7.0文本模式支持 Nginx、Java、XML、HTML以及兼容旧原生草稿的 JSON选择 2–6 空格缩进结果直接写回可撤销编辑器文件模式打开最多 2 MB 的 UTF-8 文件在可编辑原文旁显示只读结果原文件不被改写结果导出为新文件Nginx 使用.conf后缀。Java / XML / HTML 使用本产品内嵌的 Prettier 与独立插件Nginx 使用与 Electron 对应的分词 / 缩进规则运行时不再加载 Electron 或 Node.js。详见 格式化工作区与边界。随手记工具栏沿用编辑 / 分栏 / 预览三个模式分栏默认左右各半可拖动分隔条双击恢复默认比例。文档颜色、10 种语法Text、Markdown、JSON、Java、JavaScript、TypeScript、Python、XML、YAML、SQL、系统字体 / 等宽字体 / 本机字体、8–48 号字号、1.0–2.0 倍行距和自动换行按文档保存。查找栏支持大小写、全词、正则、前后导航和替换右侧 24 项快速替换在有选区时处理选区、否则处理全文。支持图片附件插入、粘贴剪贴板图片、多图拖入与点击缩放预览。详见 随手记工作区与边界 与 图片附件与备份。HTTP 与其余工具HTTP 在参数、请求头、Cookie、正文之间切换正文支持原始文本、JSON 和 URL 编码表单URL 已有参数与编辑表格中的参数会合并重复键保持顺序…菜单可导入 / 复制 cURL、新建请求、打开本地请求集合。其余 26 个入口时间转换、Cron 构建器、加密五标签、正则、网络诊断、Host、翻译、调色板、二维码、图片 / PDF 等的能力范围与 Electron 的差异逐条记录在 功能对齐清单。产品边界与本地数据模型README 的产品边界表明确了各产品线的隔离维度项目原生版值产品 IDnext-macos-nativeApp 名称MooTool Next Native.appBundle ID / 偏好设置域com.rememberber.mootool.next.macos-native可执行文件MooToolNextNative数据目录~/Library/Application Support/com.rememberber.mootool.next.macos-native/版本来源VERSIONTagnext-macos-native-v{version}源码、资源副本、构建、文档、版本和数据均位于本产品边界内没有跨产品的源码导入、符号链接、共享数据库、自动迁移、公共偏好设置域或更新通道也不依赖旧macos/原型。本地数据模型要点工作区保存输入、输出、文档、虚拟文件夹、请求内容、最近记录和收藏写入为原子替换目录 / 文件权限分别为0700/0600文档库层级保存在本产品的workspace.json中导入是复制内容后续编辑不会改写原始文件导出时创建独立文本文件图片单独保存在数据目录的attachments/中文件名使用图片内容的 SHA-256 与规范化扩展名正常自动保存只写入附件记录兼容读取 0.1.0–0.5.0 工作区工作区 JSON 上限 64 MB携带图片的便携备份上限 192 MB附件登记总量上限 64 MB外观偏好与工作区备份分开保存文档库搜索 / 排序 / 展开 / 视图状态包含在工作区备份内。安全边界方面这是本地工作区文件而非加密密码库解析损坏文件时暂停自动保存、保留原文件备份只接受本产品及受支持的 schema恢复前保存当前工作区与图片副本。系统 Hosts 读取、环境查看不会修改机器配置网络请求和代码执行只由操作按钮触发截图和屏幕取色走系统 UI涉及系统权限时由 macOS 管理。数据迁移从 Electron / Java 合并数据原生 0.8 的设置 →数据迁移支持从 next Electron 或 Java 版合并数据到独立工作区详见 数据迁移说明。Electronmootool-next.json合并侧栏自定义分组、隐藏工具、分栏宽度layoutPaneSizes映射、显示最近使用、仅图标导航、HTTP 代理、编辑器字号 / 换行、文档库 Git 自动检查点 / Pull 间隔、菜单栏托盘general.trayEnabled、关闭主窗口行为general.closeBehavior、自动下载更新偏好general.autoDownloadUpdates原生版仍须手动安装等。磁盘文档库Electron 按settings.vault路径默认quick-notes、json-vaultJava 版按~/.MooTool/config/config.setting默认quick-notes、json-beauty扫描并合并 UTF-8 文本随手记正文中的attachments/*会登记为原生附件。SQLiteMooToolNext.db或~/.MooTool/MooTool.db的表映射表合并目标t_msg_httpHTTP 请求集合t_http_request_history全局历史HTTPt_hostHost 配置列表t_translation_word/t_translation_history翻译词库 / 历史t_func_history各工具历史记录t_func_content工具编辑区草稿正则 / JSON / 文本对比 / 时间 / 计算器 / 二维码 / 代码运行等t_quick_note/t_json_beauty随手记 / JSON 文档库正文t_next_favorite或 Javat_favorite_*颜色 / 正则 / Cron 收藏重复项策略HTTP / Host / 收藏等按业务键跳过文档正文按工具 ID 标题含扩展名等价 正文跳过。不导入safeStorage加密的代理密码等密钥字段未覆盖 Compose / Electron 遗留迁移服务级的一键全量镜像与实时双向同步。核心实现纵深以文本对比为例TextDiff.swift 是文本对比的纯 Swift 独立实现对照 Electron 的diffTools.ts几个值得注意的实现要点UTF-16 边界TextDiffEngine.compare首先校验left.utf16.count right.utf16.count 500_000再校验行数乘积leftLines.count * rightLines.count 10_000_000避免最坏情况比较占用过多资源长行回退单对需比较的行合计超过maximumCharacterPair 4_000个 UTF-16 单元时改用行级高亮统一补丁仍保留完整内容统一补丁unified(_:deltas:)生成--- old/ new头与 -oldStart,oldTotal newStart,newTotal hunk三行上下文与 Electron 对应忽略空白isJavaWhitespace/equalIgnoringWhitespace只隐藏对应高亮不删改真实补丁ignoreWhitespace分支在生成 segment 时跳过空白差异但 patch 数据保留结果模型TextDiffResult返回左右文本、增删改计数、TextDiffSegmentinsert / delete / change、统一文本与行 / 字符两个层级的TextDiffSpan供原生 NSTextView 高亮使用。工作区层面对照 Electron 的TextDiffTool.tsx与diffTools.ts工作区标题、工具栏、分栏标签、状态栏与输入超限等textDiff.error.*随general.language三语左右编辑器可调整宽度并同步滚动统一视图在下方只读显示三行上下文补丁940px 窄窗口改用两行工具栏并保留相同操作。测试与验收体系原生版提供了命令行工具可运行 → 完整 Xcode → 打包后独立副本三层递进的验证体系全部入口位于 scripts./scripts/check-core.sh # CLT 可运行与 XCTest 相同的测试用例 swift test # 安装并配置完整 Xcode 后可用 ./scripts/smoke.sh # 需要登录桌面86 个界面/主题渲染及实际编辑、重启恢复 ./scripts/smoke.sh --window-capture # 完整窗口截图包含系统工具栏和材质层 ./scripts/smoke.sh --chrome-only # 系统工具栏动作、搜索控件、分栏宽度和 12 种窗口布局 ./scripts/smoke.sh --feedback-only # 浮动提示关闭/超时、材质回退、双主题/窄窗口及重启恢复 ./scripts/smoke.sh --notes-only # 仅随手记、附件交互及新进程恢复 ./scripts/smoke.sh --window-capture --format-only # 仅格式化交互、5 种布局和重启恢复 ./scripts/smoke.sh --window-capture --diff-only # 仅文本对比交互、5 种布局和重启恢复 ./scripts/smoke.sh --window-capture --note-layouts-only # 仅随手记布局和图片分栏宽度回归 python3 scripts/verify-package.py # 构建 Universal DMG 后校验签名、资源和独立运行check-core.sh的原理值得一提Command Line Tools 不包含 XCTest因此脚本先swift build编译 Core 目标再用swiftc -parse-as-library -D STANDALONE_CHECK将 CoreTests.swift 与scripts/StandaloneTests.swift连同 Core 的.o对象文件编译为独立检查程序运行从而与swift test使用同一组用例。0.8.0 验收记录显示59 组核心测试 0 失败覆盖文本对比的 Electron 样例、统一补丁、字符范围、忽略空白、长行回退及旧草稿格式化五种类型、独立辅助程序、UTF-8 文件 / 大小限制、历史恢复以及图片附件、快速替换、JSON、HTTP 和文档库测试见 verification-0.8.0.md。smoke.sh在--smoke-test模式下启动真实应用使用MOOTOOL_NATIVE_TEST_DATA指向的临时数据目录及.acceptance偏好域不访问真实工作区操作实际 NSTextView 与原生按钮检查差异高亮、导航、统一只读补丁、格式化撤销、文档与图片附件、独立工作区和新进程恢复截图与报告位于dist/acceptance/。verify-package.py在构建 Universal DMG 后校验build-info.json哈希、Info.plist 的 Bundle ID 与版本、两个可执行文件的 arm64 / x86_64 架构、DMG 完整性并在独立副本中运行--verify-bundle校验 JSON 辅助程序、四种格式化器、文本对比、随手记快速替换、附件备份恢复与图片解码。README 同时提醒这些检查不等价于所有菜单、拖放及系统对话框的端到端测试CI 独立构建原生版并上传产物不使用仓库全局 Latest也不影响其他产品发布。浮动反馈材质与界面细节工具操作结果与错误在右下角显示可关闭的提示卡片参照 ElectronToastProvider.tsx的右下角定位、最多四条、3.2 秒默认消失与独立关闭操作。材质上macOS 26 使用 SwiftUI 原生Liquid GlassglassEffect(.regular, in:)macOS 14–25 使用系统毛玻璃regularMaterial减少透明度或提高对比度时使用实色卡片与可见边框减少动态效果时只保留淡入淡出。提示文字与状态图标保持独立前景色不写入工作区切换工具 / 文档与重开后不重放旧提示专项验收见 scripts/smoke.sh 的--feedback-only与 parity.md。明确边界与尚未对齐项功能对齐以 Electron 为基准但存在有意不交付的能力边界记录于 parity.md属于产品边界而非 0.8 缺陷Monaco 级完整编辑装饰、折叠与全部快捷操作随手记附件文件名与磁盘双向实时同步、其余语法格式化、列编辑完整 cronstrue 级自然语言、复杂L/W组合与列表混写安装包后台下载与静默安装当前仅 GitHub API 检查 打开下载页可编辑的全局快捷键与托盘热键设置页只读文本对比总输入限 50 万 UTF-16 单元、行数乘积限 1000 万单对长行超过 4000 单元改用行级高亮格式化输入限 2 MB、解析器 2.8 秒超时JSON 单次正文最多 10 MB、JSONPath 采用eval: safe第三方 / 系统解析器与system_profiler等原始输出仍可能为英文或系统语言。从源码结构看原生版仍在按 Electron 对应页面持续补齐布局与功能差异0.8.0 作为首个公开预发布版其交付结论、验收口径与本机验证范围均记录在 verification-0.8.0.md 与 release-notes/0.8.0.md 中。如果你准备在 macOS 上构建、打包或二次开发这套原生工具箱以上从环境准备、SwiftPM 结构、DMG 打包签名到三层验收的命令与参数均可直接复用。赞分享桌面应用开发工具【免费下载链接】MooToolHandy tool set for developers项目地址https://gitcode.com/gh_mirrors/mo/MooTool点击查看免费下载相关推荐MooTool Next macOS Native 0.1.0基于 SwiftUI/AppKit 的独立原生工具箱初版解析MooTool Next macOS Native 0.1.0基于 SwiftUI/AppKit 的独立原生工具箱初版解析 MooTool Next macO桌面应用开发工具MooTool macOS 原生 SwiftUI 预览版目录结构、构建命令与模块骨架设计MooTool macOS 原生 SwiftUI 预览版目录结构、构建命令与模块骨架设计 本文基于 macos/README.md 介绍 MooTool 仓库桌面应用开发工具MooTool Next Flutter 开发主指南用 Cursor 从零构建独立 Flutter 桌面工具箱的工程规范与实践MooTool Next Flutter 开发主指南用 Cursor 从零构建独立 Flutter 桌面工具箱的工程规范与实践 MooTool Next Fl桌面应用开发工具上一篇Netdata Windows监控实战指南从1台服务器到整个机房4步跑通下一篇Krita-AI-Diffusion测试报告10种显卡性能对比与推荐配置创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑