MooTool

Handy tool set for developers

View on GitHub

MooTool Next macOS Native

next-macos-native 是独立的 macOS 产品线,使用 SwiftUI、AppKit 和系统框架实现。它沿用 next Electron 版的 26 个工具入口、分组导航和编辑工作区,并采用系统侧边栏、统一工具栏、原生菜单、深浅色和独立工具窗口。

当前版本为 0.8.0(首个公开预发布版):文本对比改为与 Electron 对应的双编辑器工作区,支持字符与行高亮、统一补丁、忽略空白、差异导航、同步滚动、交换、复制和历史恢复;窄窗口采用两行工具栏。详见 文本对比工作区与边界。0.7.0 的文本 / 文件格式化工作区继续保留;设置支持从 Electron 合并工作台与 SQLite/磁盘迁移;界面语言(简中 / 英语 / 日语)覆盖侧栏、工作台与多数工具主操作;可选菜单栏托盘提供取色/截图等快捷入口。验收记录见 verification-0.8.0.md;从 Electron/Java 合并数据见 数据迁移说明;其余工具见 功能对齐清单

GitHub 预发布版 0.8.0 提供 Universal DMG(ad-hoc 签名,未经 Apple 公证)。安装包不会覆盖 MooTool.appMooTool Next Electron.app

功能和布局以 next Electron 版为基准:开发前对照对应页面与测试,保留功能入口、面板顺序及操作语义,再使用原生控件适配 macOS。这项约束已记录在 AGENTS.md

界面

JSON 工作区

深色首页 · 窄窗口布局

HTTP 工作区 · JSON 路径选择

JSON 深色检查器 · 查找替换 · 转换结果

随手记分栏 · 深色随手记 · 文档正文检索

随手记快速替换 · Markdown 表格预览 · 随手记窄窗口查找

图片分栏 · 深色图片预览 · 窄窗口图片

格式化文本 · 文件双栏与深色外观 · 窄窗口文件布局

文本对比双栏 · 深色统一差异 · 窄窗口布局

环境

开发与运行

cd next-macos-native
swift build
./scripts/run.sh

run.sh 创建带独立标识和资源的调试 .app 并打开它。也可在 Xcode 中打开 Package.swift,运行 MooToolNextNativeswift run MooToolNextNative 可用于快速开发,但正式使用应运行打包后的应用。

常用操作:

独立构建与安装

./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

产物:

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 即可。应用名与其他产品不同,安装不覆盖 MooTool.appMooTool Next Electron.app。构建脚本不会修改 Applications,也不会自动安装或卸载其他版本。

默认使用本地 ad hoc 签名,适合本机构建使用。公开分发时设置 NATIVE_SIGN_IDENTITY 使用 Developer ID 签名,并在发布流程中另行完成 Apple notarization;本脚本不上传签名密钥、不自动公证或发布 Release。

产品边界

项目 原生版值
产品 ID next-macos-native
App 名称 MooTool Next Native.app
Bundle ID / 偏好设置域 com.rememberber.mootool.next.macos-native
可执行文件 MooToolNextNative
数据目录 ~/Library/Application Support/com.rememberber.mootool.next.macos-native/
版本来源 VERSION
Tag next-macos-native-v{version}

源码、资源副本、构建、文档、版本和数据均位于本产品边界内。JSON 解析依赖、随手记文本算法、格式化解析器及辅助程序随本产品打包,使用系统 JavaScriptCore,用户运行时无需 Node.js。没有跨产品的源码导入、符号链接、共享数据库、自动迁移、公共偏好设置域或更新通道,也不依赖旧 macos/ 原型。各版本可以独立演进和重复实现。

工作区保存输入、输出、文档、虚拟文件夹、请求内容、最近记录和收藏,写入为原子替换,目录/文件权限分别为 0700 / 0600。文档库层级保存在本产品的 workspace.json 中,导入是复制内容,后续编辑不会改写原始文件;导出时创建独立文本文件。图片单独保存在本目录的 attachments/ 中,正常保存只写入附件记录;兼容读取 0.1.0–0.5.0 工作区。

这是本地工作区文件,不是加密密码库。解析损坏文件时暂停自动保存,保留原文件;备份只接受本产品及受支持的 schema,恢复前保存当前工作区与图片副本。工作区 JSON 上限 64 MB,携带图片的便携备份上限 192 MB;附件登记总量上限 64 MB。外观偏好与工作区备份分开保存,文档库搜索/排序/展开/视图状态包含在工作区备份内。

系统 Hosts 读取、环境查看不会修改机器配置。Hosts 提供检查和导出;环境变量草稿仅传给原生版代码运行子进程。网络请求和代码执行只由操作按钮触发。截图和屏幕取色走系统 UI;涉及系统权限时由 macOS 管理。

检查

./scripts/check-core.sh           # CLT 可运行:与 XCTest 相同的测试用例
swift test                       # 安装并配置完整 Xcode 后可用
./scripts/smoke.sh                # 需要登录桌面;86 个界面/主题渲染及实际编辑、重启恢复
./scripts/smoke.sh --window-capture # 完整窗口截图,包含系统工具栏和材质层
./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 使用 CoreTests.swift 的同一组用例,解决 Command Line Tools 不包含 XCTest 的限制。没有接受 Xcode 许可时无需为了运行这些检查更改系统配置。

59 组核心测试覆盖输入输出和边界,包括文本对比的 Electron 样例、统一补丁、字符范围、忽略空白、长行回退及旧草稿;格式化五种类型、独立辅助程序、UTF-8 文件/大小限制、历史恢复;原有图片附件、快速替换、JSON、HTTP 和文档库测试。完整窗口模式额外捕获 JSON 结果弹窗的深浅色截图。截图和报告位于 dist/acceptance/;验收使用临时数据目录及 .acceptance 偏好域,不访问真实工作区。包含全部工具的双主题、文本对比和格式化的窄窗口布局。验收还操作实际 NSTextView 与原生按钮,检查差异高亮、导航、统一只读补丁、格式化撤销、快速切换、文档与图片附件、独立工作区和新进程恢复。

本机环境、实际验证范围与安装包 SHA-256 见 0.8.0 验收记录。历史记录:0.7.0 · 0.6.0 · 0.5.0 · 0.4.0

这些检查不等价于所有菜单、拖放及系统对话框的端到端测试。CI 独立构建原生版并上传产物,不使用仓库全局 Latest,也不影响其他产品发布。

目录说明:Sources/MooToolNextCore 为可测试逻辑;Sources/MooToolNextApp 为原生界面与系统集成;Tests 为核心测试;scripts 为构建、运行和验收入口。