桌面应用开发工具【免费下载链接】MooToolHandy tool set for developers项目地址https://gitcode.com/gh_mirrors/mo/MooTool点击查看免费下载本文基于仓库中的 next-compose/README.md 展开系统讲解 MooTool 的 Compose Multiplatform Desktop 独立产品线next-compose从工具链锁定、本地构建运行到三平台打包分发与产品隔离的完整工程实践。读完后你可以掌握如何按锁定的 JDK 21 / Gradle 8.14.3 / Kotlin 2.2.21 / Compose 1.12.0 组合搭建可复现的构建环境如何执行已核实的 Gradle 任务生成带自有 JVM runtime 的 macOS app-image以及该产品如何通过独立命名空间bundle ID、数据目录、单实例锁与其他 MooTool 产品线共存。一、产品定位与 0.1.0 开发切片范围MooTool Next Compose 是面向 macOS、Windows、Linux 的Compose Multiplatform Desktop 独立产品线布局、操作习惯和功能以当前 Electron 版为主要参考Java 版补充算法与桌面能力在此基础上改善层级、密度、键盘操作、窗口适配和可访问性。当前状态为0.1.0 开发切片README 明确声明已有独立 Gradle Wrapper 工程本机可构建、测试并生成带自有 runtime 的 macOS app-image。已实现内容包括桌面壳、26 个入口、modern 明暗主题、基础设置以及 JSON、随手记文档库、24 项快速替换、预览/附件、列编辑、Vault Git 检查点、外部冲突、文本对比、格式化、配置转换、Protobuf、编码解码、加解密/随机、二维码、UA 分析、正则、Cron、时间转换、计算器、P5 网络/系统工具HTTP、Host、网络、环境变量、翻译、系统信息、代码运行、设置中的备份/恢复 zip、更新通道检查/下载/SHA-512/打开安装包。README 同时给出边界声明这不是完整 P2/F04/F01也不是三平台发行验收。“26 个入口”在源码中可以直接印证。ToolRegistry.kt 用ToolDefinition描述每个工具的稳定 ID、分组、i18n 标题 key、搜索关键词、glyph 图标、开发状态与历史/收藏能力从ToolId.Mootool首页开始逐一注册 QuickNote、TextDiff、Json、Http、Crypto、QrCode、TimeConvert 等条目与 架构文档 中“工具注册包含稳定 ID、分组、三语标题 key、关键词、图标、工厂、历史/收藏能力、开发状态”的约定一一对应。二、阅读入口文档体系与 AGENTS 约束README 建议在本产品中先读 AGENTS.md再依次阅读配套文档。打开整个 MooTool 仓库协作时应把启动提示词发送给 AI 助手并明确仅开发next-compose/不要假设嵌套目录中的.cursor/rules在所有工作区打开方式下都会自动启用。文档解决的问题编码开发主指南目标、范围、优先级、开发阶段和第一轮任务源码基线与参考地图Electron/Java 的实际版本、源码位置、已核实差异UI 与交互规格窗口布局、视觉 Token、页面结构、现代化规范逐工具功能规格首页、25 个工具、设置及通用能力的功能与验收要求Compose 技术架构Kotlin/JVM、编辑器、线程、状态、多窗口和算法选型数据、平台与发布独立安装、数据、Vault、系统能力、更新和发行验收与进度记录可执行检查、逐项状态、视觉与平台验收Cursor 任务提示词可复制的启动、续接、逐工具开发和审查指令产品.gitignore已局部放行开发文档与.cursor/rules/next-compose.mdc避免被仓库根的通用忽略规则排除无需改动其他产品配置。AGENTS.md 中的开发约束值得与 README 对照阅读这是独立 Compose Multiplatform Desktop 产品允许本产品内重复实现或复制有授权的代码保留来源与许可证但不建立指向其他产品的源码、资源、数据库或运行时依赖不导入根 Java 工程的 Swing Form复杂代码编辑经EditorHost使用本产品自己声明的 Swing 编辑组件计算、IO、网络、进程、Git、索引不能阻塞 UI/EDT状态属于工具会话窗口只是宿主重组、切页和窗口转移不得清空文档、撤销栈或在途任务功能必须真实执行按钮不能以固定提示或空实现假装成功不得将“编译成功”描述为三平台验收通过。三、锁定的工具链README 给出的工具链组合是在 Intel macOS x86_64 本机验证过的并明确注明“不能代替官方 arm64 矩阵”组件版本仓库内证据产品版本0.1.0gradle.properties的appVersiongradle.properties 中appVersion0.1.0JDK21Zulu 21.0.12.1build.gradle.kts 中jvmToolchain(21)与JvmTarget.JVM_21GradleWrapper 8.14.3gradle-wrapper.properties 中gradle-8.14.3-bin.zipKotlin2.2.21libs.versions.toml 中kotlin 2.2.21Compose Multiplatform1.12.0libs.versions.toml 中composeMultiplatform 1.12.0依赖集中管理在gradle/libs.versions.toml与 架构文档 “依赖全部写入版本目录不使用动态、未锁 SNAPSHOT 或机器私有绝对路径” 的约束一致。从该文件可以看到各能力域锁定的精确版本OkHttp 4.12.0HTTP/翻译、PDFBox 3.0.4、Bouncy Castle 1.80加解密、ZXing 3.5.4二维码、OSHI 6.8.2系统信息、commonmark 0.24.0Markdown 预览、SnakeYAML 2.3、protobuf 4.29.3、JavaParser 3.26.4Java 格式化、uap-java 1.6.1UA 分析、cron-utils 9.2.1、java-diff-utils 4.15、RSyntaxTextArea 3.6.0编辑器等。工程结构上settings.gradle.kts 声明根工程mootool-next-compose只包含:composeApp一个模块仓库统一走google()与mavenCentral()源码按commonMain / commonTest / desktopMain / desktopTest组织桌面 UI 全部位于desktopMain与架构文档“commonMain不导入 java.io、Swing、JDBC、JNA”“不为未来移动端建立无实际用途的 expect/actual 壳”的决策一致。版本映射macOS jpackage 拒绝 0.x一个容易踩坑的细节被单独记录为 ADR-001macOS jpackage 版本映射macOSjpackage拒绝0.x作为--app-version错误为“第一个数字不能为零或负数”。决定是UI、product.json、文档和 Git tag 继续使用gradle.properties的appVersion0.1.0仅 ComposenativeDistributions.packageVersion在0.x.y时映射为1.x.y本轮0.1.0→1.1.0只影响安装包元数据不改变应用内显示版本。这段映射逻辑在 build.gradle.kts 中实现val appVersion: String providers.gradleProperty(appVersion).get() // macOS jpackage rejects versions whose first integer is 0 (JDK 21). Keep the // product SemVer in gradle.properties and map only the native package field. val nativePackageVersion: String if (appVersion.startsWith(0.)) { 1${appVersion.removePrefix(0)} } else { appVersion }同一文件还固化了发行身份常量并由verifyNativePackageMetadata任务守护不构建安装包即可校验产品名MooTool Next Compose、Linux 包名mootool-next-compose、macOS bundle IDcom.rememberber.mootool.next.compose、最低 macOS 版本 12.0、WindowsupgradeUuid目标格式锁定为 Dmg / Msi / Deb / Rpm。运行时版本则通过BuildConfig注入见 ProductIdentity.ktVERSION 0.1.0、SCHEMA_VERSION 1与appVersion保持同一事实来源。四、开发与运行需要 JDK 21。README 强调不要把本产品数据写到其他 MooTool 目录给出的标准流程是cd next-compose export JAVA_HOME$(/usr/libexec/java_home -v 21) ./scripts/check-toolchain.sh ./scripts/check-core.sh MOOTOOL_COMPOSE_DATA_DIR$PWD/local.properties.d/dev-profile ./scripts/run.sh这些脚本在仓库中均真实存在行为可以逐行核实check-toolchain.sh在未显式设置JAVA_HOME时尝试用/usr/libexec/java_home -v 21自动定位然后依次执行java -version、./gradlew --version与./gradlew :composeApp:printTooling用于确认“当前 JVM Gradle 锁定依赖”组合check-core.sh执行./gradlew :composeApp:printTooling :composeApp:desktopTest即“版本自检 桌面测试”一步完成run.sh默认把MOOTOOL_COMPOSE_DATA_DIR设为$ROOT/local.properties.d/dev-profile并mkdir -p创建再执行./gradlew :composeApp:run。printTooling任务本身定义在 build.gradle.kts输出appVersion、nativePackageVersion、Kotlin/Compose 版本、java.home、OS 名称与架构、protoc 版本等关键指纹便于把“本机实际跑的是什么”落为可复查的文字记录。数据目录的隔离在源码层面由 AppPaths.kt 落实resolve()优先读取环境变量MOOTOOL_COMPOSE_DATA_DIR将其规范化为绝对路径并要求目录可写未设置时按平台落到独立命名空间——macOS 使用~/Library/Application Support/com.rememberber.mootool.next.composeWindows 使用%APPDATA%\MooToolNextComposeLinux 遵循 XDG 变量并落到mootool-next-compose目录。目录布局包含config/settings.json、instance.lock单实例锁、data/mootool-compose.sqlite数据库、product.json产品标记、vaults/json与vaults/quick-note两个 Vault、drafts、backups、cache/与logs/。这正是 README 中“自有构建、版本、安装标识、数据目录、凭据、单实例锁、备份及更新通道”原则的具体实现。已核实的 Gradle 任务README 列出以下已在本机核实的任务./gradlew --version ./gradlew :composeApp:printTooling ./gradlew :composeApp:desktopTest ./gradlew :composeApp:run ./gradlew :composeApp:createDistributablecreateDistributable的本机输出为composeApp/build/compose/binaries/main/app/MooTool Next Compose.appbundle ID 为com.rememberber.mootool.next.compose应用名为MooTool Next Compose.app不会写成MooTool.appWindows MSI / Linux DEB 需在对应 OS 执行packageDistributionForCurrentOS。两点工程细节与源码对应分发目标按构建机 OS/arch 选择 native 依赖macos-x64、macos-arm64、windows-x64、linux-x64见 build.gradle.kts 的desktopNative分支因此跨 OS 打包必须在对应系统执行build.gradle.kts 将desktopTest配置为maxParallelForks 1并加-Xmx2g注释说明原因Compose Desktop UI 测试共享 AWT串行 fork 可减少 macOS 全量测试时的 JVM abortexit 134。此外jpackage所需的 JVM 模块java.sql、java.xml、jdk.crypto.ec、jdk.unsupported、jdk.accessibility等在nativeDistributions.modules(...)中显式声明按 架构文档 第 10 节的提醒安装包必须执行runDistributable或直接启动镜像验证因为完整 JDK 下run通过不能证明 jlink 后无缺少模块不要只运行 JVM 单测而跳过 Swing/Compose/安装包行为。五、产品独立原则README 用五条原则划定产品边界这五条在仓库中都能找到落地证据产品 IDnext-compose完整名称MooTool Next Compose。对应 ProductIdentity.kt 的PRODUCT_ID、DISPLAY_NAME常量。自带 JVM runtimeCompose Desktop 使用自身打包的 JVM 运行时不依赖安装 MooTool Java它和 MooTool Java 产品是两个概念。允许复制不共享允许复制有权使用的代码、图标、样本和算法在本目录维护独立副本不要求跨产品抽公共库。例如 SVG 矢量化直接内嵌 ImageTracer.javaUnlicense而不是依赖其他产品目录。独立发行与数据自有构建、版本、安装标识、数据目录、凭据、单实例锁、备份及更新通道不同版本产品线可同时安装、运行和卸载。系统资源不隔离系统 hosts、系统环境变量以及用户主动指定的同一文件是系统/用户资源此类显式操作的影响不能靠产品 ID 隔离界面必须清楚区分。AGENTS.md 进一步要求所有应用身份、路径、锁、凭据、升级和卸载操作都使用next-compose自有命名空间不静默导入、修改或删除其他产品数据用户主动导入使用只读源、预览、备份与事务。六、0.1.0 已实现的功能切片与差异记录README 用一段高密度文字描述了每个工具的实现要点并与仓库根目录的 Electron/Java 实现逐条对齐。每项差异都有独立的 DIFF 文档位于 next-compose/docs/diff/记录原行为、新行为、理由、证据和受影响范围。以下是完整继承的切片清单通用操作⌘/CtrlK搜索工具⌘/Ctrl,打开设置。文本与开发者工具JSON格式化、压缩、查找替换、导入导出、历史和左侧 Vault。文本对比行/字符差异、三种高亮、忽略空白、统一补丁与上/下跳转。格式化Nginx/Java/XML/HTML、缩进选择、文件另存与语法错误定位与 Electron Prettier 差异见 DIFF-005。配置转换Properties ↔ YAML、校验/格式化与导入导出冲突与 YAML 1.1 见 DIFF-006。Protobuf使用捆绑 protoc 4.29.3 动态编译用户粘贴的.proto支持 JSON↔Binary、Wire 与 Hex/Base64JSON 映射见 DIFF-007。protoc 的分发方式在 build.gradle.kts 可见通过protocHelpers配置解析五个平台分类器osx-x86_64、osx-aarch_64、linux-x86_64、linux-aarch_64、windows-x86_64的exe产物经syncProtocHelpers任务重命名后复制到 classpathhelpers/目录用户临时粘贴.proto无需自行安装 protoc。编码解码Unicode、URLUTF-8/GB2312、UTF-8 Hex 与 ASCII 码点列表。加解密/随机AES/DES/SM4、RSA/SM2、摘要、Base64/Base32 与安全随机密钥字节规则见 DIFF-008。二维码使用 ZXing 生成/识别 PNG支持纠错、Logo、保存与剪贴板历史不存 PNG见 DIFF-009。UA 分析使用uap-java规则并归一 Chrome/Safari/Firefox 名称引擎推断见 DIFF-002。正则使用 Java Pattern经独立 worker 超时终止并带 21 条常用模式与收藏引擎差异见 DIFF-003。CronQuartz 6/7 字段、IANA 时区与未来 10 次运行与 Electron 差异见 DIFF-004。日常与系统工具调色板HEX/RGB、7 主题与 10 标准色、五种运算、屏幕取色与文件夹收藏Robot 冻结截图见 DIFF-010。留言板预设、主题、自动字号与沉浸展示屏幕常亮见 DIFF-011。PDF拆分/合并、页码范围与奇偶/自定义规则使用 PDFBox 3.0.4 复制页面见 DIFF-012。图片助手图片库、压缩/水印、区域截图与 SVG 矢量化ImageTracer 见 DIFF-013。系统信息使用 OSHI 采集本机 CPU/内存/磁盘/网卡序列号默认遮蔽见 DIFF-014。网络/IPIPv4↔Long、ping/网段与端口扫描、DNS、WHOIS 与本机地址命令按 argv 启动且可停止进程编码见 DIFF-015。环境变量支持用户/系统持久文件、当前进程与 JVM 只读查看改前 diff/备份且不写~/.MooTool见 DIFF-016。Host支持本产品方案列表、查找替换、查看系统 hosts以及应用前 diff/备份/并发指纹校验见 DIFF-017。HTTP 请求使用 OkHttp 4.12.0支持集合、cURL 解析、冻结 GET/表单语义、超时/取消与 10 MiB 上限重复 Header 见 DIFF-018。翻译支持 Google/Bing、自动/手动、单词本与历史OkHttp 与 JSON 存储见 DIFF-019。代码运行支持 Java/Groovy/Python/Nodeargv 进程、流式输出、超时/停止与设置中的运行时路径见 DIFF-020。时间转换支持显式秒/毫秒、IANA 时区、历史和大屏时钟单位语义见 DIFF-001。计算器支持四则表达式、2/10/16 进制、GCD/LCM 与排列组合不用 eval。随手记与设置随手记支持本产品文档库、保存、24 项快速替换、查找替换、Markdown 预览与本地附件、逻辑行列编辑、Vault Git 本地检查点以及外部修改冲突监视见 DIFF-021、DIFF-023、DIFF-024、DIFF-025、DIFF-026。设置「数据」支持导出/预览/恢复带清单的 zip 备份见 DIFF-022。设置「关于」支持检查本产品更新、展示说明、下载并校验 SHA-512 后打开安装包见 DIFF-027。这些 Engine/Service 在源码中均有对应实现位于 composeApp/src/desktopMain/kotlin/com/rememberber/mootool/next/compose/domain/例如HttpEngine.kt、GitEngine.kt、ProtobufEngine.kt、UpdateEngine.kt等与 README 描述的“功能必须真实执行”标准相互印证。七、架构要点状态、线程与进程隔离架构文档 是理解上述功能如何实现的关键几个核心决策如下单一 JVM desktop targetmacOS、Windows、Linux 共用一个 Kotlin/JVM 目标再由各自平台能力适配不建立macosArm64Kotlin/Native 目标后假定可直接运行同一套 Desktop UI。正式支持矩阵取 Compose、Skiko、JDK、数据库/native helper 的交集。状态分层AppState进程级、ToolSession切页/转移窗口不销毁、EditorBuffer独立于 Composable 的文档级 buffer、WindowState、ViewState 与 PersistedSnapshot按节流策略保存不保存 Job/JComponent用StateFlow暴露不可变状态remember只用于视图细节不能作为唯一业务存储。任务与错误模型任务状态统一为 Idle / Running(taskId, stage, progress?) / Succeeded / Failed(error) / Cancelled输入每次编辑增 revision结果只在 taskId 与输入 revision 符合当前会话时提交错误包含稳定 code、本地化 message key 与可重试标记。线程纪律Compose/AWT/Swing 视图操作限定 UI/EDT文件、SQLite、网络、Git 在 IO 执行域解析、diff、压缩、PDF 在有界计算执行域仅withTimeout不能停止不响应中断的 JVM regex/第三方库此类操作用可终止的本产品 worker JVM 进程。编辑器首选 RSyntaxTextArea SwingPanel 组合见 ADR-002列编辑按逻辑行实现并固定测试应用内弹层打开时通过ModalOverlayState暂时卸下 SwingPanel 以免遮挡编辑器见 DIFF-058。多窗口SessionManager 持有会话、WindowManager 只管理宿主转移状态为Docked → Transferring → Detached → Transferring → Docked失败回滚到旧宿主关闭独立工具窗口默认收回主窗口。不可信计算ProcessService输入为可执行文件路径、argv 列表、工作目录、限定环境、时间/输出限制不能拼用户字符串执行 shellcURL 导入是解析文本不是运行该命令需要结束整个进程树时使用 Unix process group/后代追踪或 Windows Job Object不能只取消 UI Job。八、适用前提与边界本文描述的状态对应0.1.0 开发切片文档基线日期 2026-09-08工程落地记录 2026-09-09不是完整 P2/F04/F01也不是三平台发行验收Windows MSI / Linux DEB 需在对应 OS 执行packageDistributionForCurrentOS才能产出。工具链验证环境为 Intel macOS x86_64不能代替官方 arm64 矩阵Intel Mac 是否属于 Compose 1.12.0 的已支持平台需要以官方支持矩阵为准见 ADR-003。后续变更从本产品需求出发不要求永久追随 Electron/Java 实现各工具与 Electron 版的行为差异以next-compose/docs/diff/目录下的 DIFF 文档为准逐条查证。赞分享桌面应用开发工具【免费下载链接】MooToolHandy tool set for developers项目地址https://gitcode.com/gh_mirrors/mo/MooTool点击查看免费下载相关推荐Compose Multiplatform 桌面应用模板教程Compose Multiplatform 桌面应用模板教程 1. 项目的目录结构及介绍 compose multiplatform desktop templ终极指南使用Coil与Compose Multiplatform构建现代化macOS桌面应用终极指南使用Coil与Compose Multiplatform构建现代化macOS桌面应用 Coil是一个专为Android和Compose Multipl移动开发图像处理缓存抽象compose-multiplatform翻译工具实时翻译应用compose multiplatform翻译工具实时翻译应用 痛点与机遇 在全球化日益深入的今天跨语言沟通已成为企业和个人用户的刚需。传统的翻译应用往往存前端跨平台UI组件移动开发桌面应用创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考