公开 TODO 见中文主页和 English roadmap。本文补充每项的实现思路与完成条件,方便开始一项工作时直接找到切入点。它描述未来工作,当前产品行为仍以 SPEC 为准。
- 选择一个具体场景,先写清用户输入、目标目录、输出及失败时的行为,再更新 SPEC。
- 命名、模板、配置迁移和创建规则放在
CorePackage;设置放在App/FileMint;原生创建面板放在SharedUI;Finder 接口保留在FinderSyncExtension。 - 完成实现后按 HARNESS 选择验证;分析和规划不默认跑测试。涉及 Finder 的部分按 Finder 验收清单 实机检查。
- 只有实现和验证都完成,才勾选中英文 README 对应项目;在发布说明里写明可用版本。未发布成果不写成当前下载版本已经支持。
- 官网通过 VitePress include 复用中英文 README 的
roadmap区域。修改清单时保持区域标记、主题分组和- [ ]/- [x]格式;官网状态无需单独维护。 - 更新清单或官网后运行
SITE_BASE=/FileMint/ pnpm run site:build,检查中文和英文首页。README 变更已纳入 Pages 工作流触发范围,推送到主分支后才会触发线上部署。
本轮已完成图片粘贴为文件、同格式多模板和真实文档模板,纳入 0.5.8;验证范围分别记录在三个任务中。公开 TODO 已移除这些完成项,后续扩展仍按下述边界推进。
模板拷贝与预览、文件名规则及创建后打开保留在后续分阶段任务中;其中 T1 的实施状态统一由本轮同格式多模板任务维护。
做什么: 同时保存会议记录、项目说明等多个 Markdown 模板,每个模板拥有独立名称、内容和默认文件名。
怎么做: 从 CorePackage/Sources/FileMintCore/FileTemplate.swift 和 App/FileMint/ContentView.swift 开始,明确“格式”和“模板”的关系。模板用稳定 ID 区分,后缀可以相同;格式选择时要有明确的默认模板。迁移旧配置时保留模板内容、启用状态和顺序,Finder 标签要能区分同格式模板。
怎样算完成: 两份 .md 模板能分别保存、编辑和创建;选择格式不会随机切换模板;升级旧配置后原有模板和菜单顺序不丢失。
做什么: 拷贝一份模板再修改,保存和创建前看清最终文件名及初始内容。
怎么做: 拷贝时生成新的模板 ID;预览复用实际创建使用的命名和内容渲染规则。区分未修改的模板预览与用户已经编辑的草稿,切换模板时妥善处理已有输入。
怎样算完成: 修改副本不影响原模板;预览与实际文件一致;取消编辑不改变已保存模板;用户已输入的内容不会被无提示替换。
做什么: 通过日期、项目名称等字段生成常用文件名,创建前展示结果。
怎么做: 基于现有命名与变量渲染逻辑扩展,明确变量语法、缺省值、完整文件名的覆盖规则及同名策略。当前内容日期变量使用 UTC;若增加本地日期,需显式定义,保留旧模板输出语义。文件名和内容替换都应保持单次展开。
怎样算完成: 中文、空格、复合后缀、未知变量、跨日期边界及同名情况有明确结果;变量无法生成越出目标目录的路径;预览与最终命名一致。
做什么: 在本地备份、迁移或分享一组模板,导入前确认内容和冲突处理。
怎么做: 定义带版本号的模板交换格式,支持选择导出范围。导入先校验再展示新增、跳过或另存为的结果;不把机器上的文件夹授权、更新状态和私有路径混入模板包。二进制模板加入后,一并考虑资源打包与大小限制。
怎样算完成: 导出后重新导入能恢复模板内容与设置;未知版本、损坏文件和冲突不会破坏现有模板;取消导入不产生改动。
做什么: 把用户自己的 Word、Excel 等有效文档保存为模板,再生成独立副本。
怎么做: 为模板增加明确的数据类型,与现有 UTF-8 文本渲染分开。用户通过文件选择器导入后,保存受管理的本地模板副本;首次实现限定支持的普通文件类型。文稿包、特殊元数据和目录模板明确单独处理。创建过程中不执行文档内的脚本或宏。
怎样算完成: 副本可被对应应用正常打开,内容和格式保留;原模板保持不变;同名文件不会被静默覆盖;缺失或损坏的模板有可操作的错误提示。
做什么: 用户主动执行后,把剪贴板文本放进预填的创建面板。
怎么做: 复用 SharedUI/CustomFileSavePanelController.swift 的文本编辑与创建路径。先定义已经存在草稿时如何处理,避免覆盖未完成内容。只在点击动作时读取剪贴板,打开面板本身不写文件。
怎样算完成: 多行、Unicode、空格和字面模板符号按原文保存;非文本内容有提示;取消不创建文件;全过程不增加剪贴板监听。
做什么: 将用户拷贝的截图或图片保存到指定目录。
怎么做: 先定义图像数据与文件引用的选择规则,明确支持的剪贴板类型。可从 PNG 开始,使用原生图像能力进行真实编码;保留像素尺寸和透明度。复用目录授权、同名保护及后台写入机制。
怎样算完成: 生成图片可正常打开,尺寸正确,透明区域保留;不支持的内容和编码失败不留下损坏文件;大图处理不阻塞 Finder 或界面。
做什么: 创建后可继续在默认应用或用户选择的编辑器里工作。
怎么做: 在现有“创建后显示”偏好上定义完整策略,保留旧用户设置。只在写入成功后交给系统打开;脚本和可执行类型明确按编辑方式处理,不能意外执行。把“创建失败”和“文件已保存但无法打开”分开提示。
怎样算完成: 两条创建路径都遵循用户选择;打开失败不重复创建;未安装的编辑器可重新选择;偏好在重启和升级后保持。
格式转换、系统压缩、尺寸调整、图标生成、图片拼接和本机 OCR 正在按 图片资源工具任务逐步实现。使用系统能力, 不引入 WebP 或第三方库。该任务的实现和验收状态独立记录,尚不属于已发布版本。
做什么: 从用户保存的结构一次创建资料、制作、交付等目录和起始文件。
怎么做: 在单文件模板与模板资源管理的基础上定义目录结构,创建前预览。明确同名、部分失败和取消的处理,首版限定符号链接、应用包和云端占位文件是否支持。输出路径必须留在目标目录内。
怎样算完成: 整套结构与预览一致;冲突不会改动已有文件;失败或取消只清理本次可确认安全清理的内容;大目录有进度或可理解的等待状态。
拷贝文件(夹)名称、拷贝文件(夹)路径、两步移动、彻底删除和隔空投送已作为独立的“文件(夹)工具”模块在 0.5.6 发布。模块默认关闭,主开关与每项开关可分别控制;每项还可选择显示在一级菜单或子菜单。菜单只针对已授权范围内的完整当前选择显示。彻底删除默认二次确认,隔空投送使用系统原生界面。详细操作、安全边界和安装方式见发布说明与安装指引。
后续如增加 Shell 转义、相对路径格式或其他工具动作,会在这里重新以独立的未完成项目记录,而不会把已实现的名称/路径拷贝继续标为 TODO。
做什么: 从文件所在位置直接进入用户常用的终端或编辑器。
怎么做: 用户显式选择应用,按应用支持的公开方式传递目录。验证沙盒与授权要求,保留 Finder 捕获的目标目录;不要把文件名或路径直接拼入 Shell 命令。先支持能实际验证的少量工具。
怎样算完成: 应用确实打开指定目录;空格、引号和 Unicode 路径安全正确;缺失应用能重新选择;不擅自改变系统默认打开方式。
做什么: 从快捷指令、Raycast 或 Alfred 打开带有名称、内容或位置的创建面板。
怎么做: 为外部调用设计稳定的草稿接口,按实际需要选择 App Intents 或受控 URL 路由。复用目标校验和单面板行为;初始范围保留用户点击“创建”的步骤。现有一次性快速创建凭据不能被外部裸链接绕过。
怎样算完成: 至少一个真实调用入口经过验证,并有可使用示例;畸形参数、未授权目录和重复请求不会静默写文件;存在草稿时不会丢失输入。
做什么: 为场景模板分组、固定常用模板,模板变多后仍容易找到。
怎么做: 复用现有排序与格式搜索基础,把搜索扩展到场景模板名称。主应用提供完整管理和搜索,Finder 保持紧凑;常用项由用户固定,不按使用次数自动重排。明确与旧启用状态和顺序的关系。
怎样算完成: 分组和常用项在重启后保持;搜索可找到同后缀的不同模板;删除或禁用模板后没有失效入口;菜单不会因模板增加而执行扫描或网络请求。
做什么: 帮用户从安装完成走到真正创建第一个文件。
怎么做: 基于已有扩展状态和目录授权界面设计短流程,允许跳过并稍后继续。每一步给出具体下一步;成功状态依据实际创建结果。保留不使用 Finder 扩展也能通过主应用创建的路径。
怎样算完成: 首次用户可以完成一次文件创建;拒绝授权、未启用扩展和中途退出可恢复;已配置用户不会反复被引导打断。
做什么: 菜单缺失、目录不可写或创建失败时,让用户知道该如何处理。
怎么做: 区分已知的扩展状态、保存的目录授权、目标可用性及实际写入错误。延续完全磁盘访问不可自动检测的准确说明。建立桌面、普通目录、外置卷和各云盘的验证记录;如提供诊断导出,先展示内容并避开路径及文件正文。
怎样算完成: 常见失败场景有明确建议且保留草稿;帮助不把“已有书签”当作保证可写;兼容性说明注明实际测试环境和结果;未验证的环境不被描述为已支持。