MooTool

Handy tool set for developers

View on GitHub

Cursor 编码开发主指南

1. 目标和交付口径

做一个可长期维护、可独立分发的 MooTool Next FX:使用 OpenJDK + JavaFX,在 macOS、Windows、Linux 上提供与冻结 Electron 1.1.4 尽量一致的布局、样式、功能和操作流程,并改善现代桌面 UI 体验。

用户优先级:日常工作流完整 → 数据与安装互不影响 → 布局/操作一致 → 视觉与键盘体验现代化 → 有证据的性能优化。不能只画出一个相似首页就结束,也不能为了“原生”删除随手记列编辑、JSON 检查器或多窗口。

当前已有独立 Maven 工程和 macOS x64 app-image(P0 待验收:桌面 IME/窗口转移证据未齐)。产品独立意味着允许技术、功能和版本各自演进;冻结对齐基线用于这一轮开发,不构成永久同步义务。

2. 范围

最终范围是 功能规格 的 F00–F25 和 A01–A03:首页、25 工具,11 类设置,导航/搜索/历史/收藏、窗口分离、文件库、Git、托盘、备份、更新与三语言。

必须保持:工具 ID、分组顺序、页面主面板关系、主要按钮顺序和方向、参数/默认值、输入输出语义、离线工具离线可用、有效结果与输入在切页/出错后保留。

可改善:对比度、间距、字体、焦点、命中区域、空/错/忙状态、窄窗口折叠、系统窗口装饰、性能和隐私默认值。将主动变化记为 FX-Dxxx,写清源行为、新行为、原因、影响和验证。不能把源实现漏洞或错误当作必须复制的正确结果。

不默认扩展:移动端、云账户、云同步后端、OCR、在线留言社区、跨产品共享模块、自动替换其他产品。已有服务配置和 Git 属于既定功能,不能用“不做云”删掉它们。

3. 确定的工程方向

技术具体约束见 架构。依赖选择是本产品决策,不从其他产品复制整张依赖表。

4. 开发阶段和门槛

阶段是验收门槛,不是预估日程。先完成一个能持续扩展的真实纵向流程,再横向补齐工具。高风险技术在 P0 实验,完整业务在所属阶段交付。

阶段 实施范围 必须交付与通过条件
P0 可行性与工程 Maven/启动/最小打包、身份路径、编辑器、窗口装饰/转移、关键算法样本 app-image 在无系统 Java 环境启动;中文/列编辑/undo/分离实验;protoc 动态 schema、Crypto 互通、JS/Java regex 差异样本;ADR 与基线证据
P1 应用壳与设计系统 26 入口、6 分组、首页、主题、搜索、设置框架、组件目录、导航状态 F00、A01 中基础设置;1440×920/1080×720 深浅主题;没有重叠/焦点丢失;未实现工具清楚标明开发中
P2 第一条完整工作流 JSON 核心 + 编辑器公共能力、历史、简单 Vault、会话/独立窗口、数据框架 输入→格式化/查询→保存→历史→分离/收回→重启恢复;F04 核心通过,但 JSON/Git 整体仍待 P6
P3 本地文本与数值 F02/F03/F06/F12/F13/F15/F16/F18/F21/F22 的本地部分 对比/格式化/配置/UA/编码/正则/Cron/时间/计算/颜色真实算法;通用收藏;三语言、错误与取消样本;屏幕取色待 P5
P4 二进制与媒体 F07/F14/F17/F23/F24 Protobuf、Crypto、QR、图片库/水印/压缩/真 SVG、PDF;保存真实产物、交叉消费和取消;截图待 P5
P5 网络与平台 F08/F09/F10/F11/F19/F20/F25;截图/取色/托盘/系统主题/防休眠 受控集成服务 + 各平台实测;HTTP 集合/翻译单词本;权限失败可解释;系统操作范围明确
P6 复杂工作区 F01/F05;补齐 F04、Git/附件/编辑器高级能力、全设置与风格 随手记24操作/列编辑/附件、四运行环境、Git冲突;六风格和导航模式;多文档/多窗口/保存并发验证
P7 产品发行 数据恢复/迁移、全部能力回归、性能、三平台包、更新与共存 所有功能要求有结论;目标平台真机/VM 证据;清单产品隔离;安装/升级/卸载互不影响;发布说明与许可清单

P0 只证明技术可行,不将实验按钮计入正式功能。P2 之后每一阶段持续使用完整壳和统一设计系统,不能把每个工具写成独立外观的小程序。P7 的范围不得用于拖延 P0 最小打包验证。

5. 第一轮可直接执行的任务

  1. 记录当前 git status,阅读参考源码与 UI 默认值;冻结 commit、相关工作树差异、样本和截图设置。仅操作本产品。
  2. 在本目录创建独立 pom.xml、Wrapper、LauncherMooToolFxApplicationProductIdentityAppPaths、基础包和资源。开发版使用 .dev 身份/目录,避免后续正式版数据污染。
  3. 建立 26 项静态工具注册表、稳定 ID、懒加载工厂;展示基础主窗口和一个真实 JSON 格式化操作,其余明确未实现。
  4. 建立 Token、浅/深主题和组件样本页,先检查导航、编辑器、按钮、表格、树、弹窗、焦点与错误样式。
  5. 创建 EditorHost 实验,完成中文输入、emoji/Tab/软换行、矩形编辑和撤销、多 MiB 文件、转移 Stage;失败就记录并测试架构中的备选路线,不带着未知问题铺开 25 个工具。
  6. 创建一个临时数据目录与 SQLite 往返、一次窗口状态恢复;通过测试注入,不修改真实用户数据。
  7. 生成本机 app-image 并启动,确认 JavaFX 原生库、编码/数据库驱动、工作进程启动器都被打包。开始其他平台构建探针,未测试的平台仍标待验证。
  8. docs/adr/001-runtime-build.md002-editor.md003-windowing.md004-algorithm-compatibility.md,更新 验收 的 P0 行和真实证据。

2026-09-09:第一轮 8 项工程任务已落地(见 docs/evidence/2026-09-09-p0/)。P1 壳、P2 JSON Vault、P3 F13 编码解码与 F15 正则已有实现。下一轮不要重建工程;从 P3 下一个本地工具或 1440/1080 截图继续。遇到本机无法提供的外部服务/系统权限,记录阻塞点并继续独立可做部分,不伪造成功。

6. 每个工具的实施模板

先读页面 TSX、算法 TS、服务/契约、对应测试和必要的 Java 算法,生成动作清单:入口、按钮/Tab、输入、选项、默认、输出、异常、快捷键、持久化、平台要求。每个动作关联 Fxx 子项和至少一个有效场景。

实现顺序:纯模型/算法与兼容 fixture → application service → repository/平台适配 → JavaFX ViewModel/View → 快捷键/空错忙状态 → 字体/主题/窗口 → 行为与视觉验收 → 更新矩阵。不要先堆出全部页面再补服务。

每个 PR/开发批次说明具体触发和新行为、源码参照、验证命令及结果、主动差异、已知限制。缺陷修复按失败原因补有价值的测试,不为改一条 CSS 写镜像测试。

7. 完成的定义

“已实现”至少要求真实输入产生真实结果;“已验收”还要求功能细项、平台范围、持久化、错误恢复、键盘/中文输入、视觉和共存测试有证据。未测试不等于通过;Electron 的 complete 也不等于 FX 的 complete

不允许:引入另一产品作为运行时;用一张网页作为整个 JavaFX 主壳;把截图内嵌成 UI;用 TextArea 冒充完整代码编辑器;把位图嵌入 SVG 冒充矢量化;通过更新覆盖其他产品;以“允许独立演进”为由无记录地删除目标功能。