DevLog:2026年1月15日

1、昨天的遗留问题包括:通过command+N在AI对话和备忘录界面新建对话、新建备忘录,和通过拖拽上传图片/文档,再次测试已支持通过拖拽上传图片/文档,但控制台里依然返回了“图片文件不存在”的调试信息,Cursor优化了错误处理,将“图片文件不存在”的提示改为仅在调试模式下打印,并添加说明,再次构建,功能依然正常,调试信息依然是“图片文件不存在”,先不管了,后面会统一去掉所有的调试信息

2、然后是在AI对话界面用command+N新建对话,在笔记界面用command+N新建笔记这两个功能,目前还不是很稳定,比如在AI对话界面,光标停留在AI对话列表页、详情页、输入框等位置时,有时可以用快捷键新建对话,有时不能,而在笔记界面,只有点开一条笔记的编辑模式后,才能通过command+N新建笔记,我的需求是,只要打开了AI对话界面,不管是未选中任何对话,还是打开了一条对话,或者光标停留在输入框,都可以通过command+N新建对话,只要打开了笔记界面,不管是未选中任何笔记,还是打开了一条笔记,或者切换到了编辑模式,都可以通过command+N新建笔记

3、Cursor为Shortcuts添加了autofocus:true和canRequestFocus:true,据称能确保快捷键始终可用,再次构建测试,依然未能实现需求,决定回退一点,在AI对话界面,只有打开对话并且在输入框聚焦时,才能通过command+N新建对话,并且在设置-快捷键的“新建对话”后面增加“(在输入框聚焦时)”说明文字;在笔记界面,只有打开笔记且在编辑模式时,才能通过command+N新建笔记,并且在设置-快捷键的“新建笔记”后面增加“(在编辑模式时)”说明文字

4、再次构建测试,在修正两个文件中括号不匹配的问题之后,可以正常构建,快捷键功能也可正常使用

5、前两天在询问千问时,它有提到可以通过macOS的textutil实现对word文档的解析,Cursor也认为该方案可行,textutil支持.doc和.docx格式,可将word文档转换为纯文本,支持UTF-8编码输出,并且是macOS系统自带的功能,无需额外依赖,可以使用MethodChannel实现(当前的PDF解析实现方式),优点在于性能、稳定性好、实现简单,但仅限于macOS,无法跨平台,无法提取文档中的图片,无法处理某些复杂的word对象,这些在我看来都可以接受

6、要求Cursor直接使用textutil来实现AI对话过程中对word文档的解析,实现方式与现有的PDF解析一致,同时添加文件大小限制,单个word文档不能超过10MB,Cursor创建了新的文件WordTextExtractor.swift并更新了项目文件,新增功能包括文件大小限制、错误处理、与PDF解析一致的实现方式

7、构建测试,发现已经支持上传并解读word文档,通过附件按钮上传、拖拽上传均可,但目前还不支持将图片、文档粘贴到对话框并解读,询问Cursor能否增加对粘贴图片、文档并解读的支持,效果要和通过附件按钮上传、拖拽到对话窗口的效果一致,在修改过程中,Cursor扩展了Swift端剪贴板处理,更新了Dart端粘贴处理,据称实现的效果包括支持粘贴图片、支持粘贴文档、与拖拽和附件上传效果一致,并且自动去重

8、继续构建测试,已经支持粘贴图片和文档,需要更新一下AI对话界面输入框的提示文字,改为“输入消息…(支持拖拽或粘贴文本/图片/文档)”,这种比较小且非常明确的需求,可以先在代码中搜索找到对应的位置,选中所在行并Add to Chat,修改起来会更快

9、在通过命令行进行构建测试的过程中,多次出现对依赖版本的检查,其中12个包有更新版本可用,1个包已被官方弃用,询问ChatGPT后得知这不是错误,不影响编译或运行,且并不是所有的包都建议升级,升级后也可能会导致新的编译问题,其中的flutter_lints、lints、package_info_plus、pointycastle版本号变化较大,后面可以考虑升级,flutter_markdown官方已经不维护了,建议改用flutter_markdown_plus,等后面更熟悉Flutter了再尝试更新

10、刷新一下README.MD和设置-关于ChatWith界面的“近期更新”内容,版本号不变,接下来打包(flutter build macos –release -v)、测试几天,然后下一个版本重点优化笔记板块的功能和界面

11、记录一下在终端中用指令打包的方法,首先cd+空格,打开项目文件夹,直接拖到终端窗口里,就会自动补全路径,然后回车,然后再输入flutter build macos –release -v,接下来等着它完成就行,正常的话会有BUILD SUCCEED、Building macOS application…(completed in 44.6s),并用绿色对号和加粗的文字提示路径Built build/macOS/Build/Products/Release/chatwith.app,去项目文件夹下这个路径里找就行了,然后把这个.app文件拖到访达的“应用程序”文件夹里,就可以正常使用了

12、再补充一些基础知识,flutter build macos –release -v只能用于打包使用Flutter开发的macOS应用,使用Xcode原生、Electron/Tauri、.NET/Qt/C++开发的应用有各自的打包指令,但如果要正常分发甚至想上架的话,还都需要经过代码签名、公证等步骤,macOS应用如果不公开分发,有.app文件就够了,只是会面临Gatekeeper的拦截

13、了解一下如果把当前这个使用Flutter开发的macOS应用部署到iOS设备上,可能会涉及哪些调整,根据ChatGPT的回复,这会涉及项目结构与构建目标、UI/交互、生命周期与状态管理差异、文件系统与文档上传能力改造、权限与能力声明、依赖/插件、原生集成与性能、发布与合规等方面,在将目前项目的pubspec.yaml复制给ChatGPT后,它指出目前的大多数依赖本身是支持iOS的,如果要将macOS版本迁移到iOS,可能主要会卡在数据库实现、文件选择/文件访问、iOS权限与plist配置以及少量插件的iOS兼容性细节上

14、从现在的情况来看我好像没有必要再单独去修改使用flutter重构的ChatWith移动版了,因为功能上的需求都是一样的,重复开发也只是徒增工作量,后面可以等ChatWith for Mac功能稳定了,直接让Cursor搞一个功能一致的iOS版

15、在测试的这段时间,也筹划一下其他的应用,目前已有的几个半成品项目中,只有DoitWith的功能与其他几个不同,目前是一款使用Swift开发的待办应用,已经具备了常用的添加/修改/删除待办、完成待办、待办分组、重复提醒、数量统计等功能,但不知道下一步该往哪个方向走,将目前已有的功能清单、核心的代码文件和主界面截图发给ChatGPT后,ChatGPT指出目前我已经把一个标准的To-Do App该有的东西几乎都做完了,现在不是“功能不够”,而是“任务本身是死的”,只是起到了“记录我要做什么”的作用,但市面上几乎所有成熟的To-Do App的竞争点已经是“系统如何帮我更容易把事情做完”,所以我才会遇到“我不知道加什么功能,但又不想和别人一样”的典型问题

16、而且ChatGPT还指出了目前应用的几个问题,比如每条待办都是孤立的,没有前后关系/状态演进/行动提示,目前的分组是静态分组,所有的事都会被同等对待,完成一个任务也没有反馈感,ChatGPT不建议再横向加功能(比如子任务、优先级、项目/文件夹、日历视图),而是给出了三个进化路线:让待办变成过程,而不是清单(增加“下一步”功能);让DoitWith变成节奏型待办(每天只能标记3个重点任务,超过就要替换);为macOS/iOS原生体验而生(利用Spotlight、菜单栏快速完成、Live Activity/Widget驱动行动、支持快捷指令等macOS/iOS原生能力)

17、这三个建议中的“最小可执行版本”是给任务加一个字段:nextAction或statusNote,UI上显示在标题下,用户完成的是“这一步”,不是整个任务,这样就会让列表变“活”

18、还得再思考思考具体往哪个方向演进,或许也可以结合我的日常工作来调整,做成一款通用性没有苹果的“提醒事项App”那么强的待办App,比如设置项目、稿件、视觉等标签?增加由哪个员工来写,和哪个客户对接等字段?