DevLog:2026年1月20日

1、继续测试昨天对DoitWith的完成Todo逻辑的修改效果,目前已经实现如果一个Todo中有多个下一步,点击完成按钮会先完成下一步,如果一个Todo中没有下一步,点击完成按钮会完成整个Todo的功能,但仍有两个问题,在编辑有“下一步”的Todo后,这条Todo会被分类到General中,而不是保持在原本的分组,另外已完成的Todo就不要再显示在首页的Todo列表里了,只显示在“已完成”页面就行

2、Cursor在修改过程中调整了编辑时的分组逻辑,如果在编辑时选择了分组,且与当前分组不同,才更新分组,如果在编辑时没有选择分组,且原来有分组,那就移动到General,如果原来就是General,那就保持在General,针对第二个问题,添加了过滤条件,已完成的Todo只会显示在“已完成”页面,即CompletedTodosView

3、再次构建测试,发现点击完成一条Todo后,已完成页面仍然是空的,看不到我刚刚完成的Todo,继续修复,Cursor表示修复后会直接从CoreData查询所有已完成的Todo(包括Genral和分组中的),并且按创建日期降序排列,在已完成视图出现时自动刷新,显示最新的已完成Todo

4、再次构建测试,发现在添加Todo——点击完成Todo或完成下一步时,会有一条之前已经完成的Todo变回未完成状态,出现在Todo列表里,即已完成的Todo被重置了,反馈给Cursor修改,Cursor认为这是因为重新排序时没有排除已完成的Todo,导致已完成的Todo的order被错误地重新赋值,可能会影响已完成的Todo的状态

5、再次测试,以上问题已解决,接下来对界面布局进行一些调整:

1.搜索栏挪到顶部,“添加”按钮放在搜索栏右侧

2.待办、已完成、设置 三个按钮放在底部,点击可切换至对应界面

3.设置界面底部增加“关于DoitWith”板块,展示应用名DoitWith和副标题(Manage things with next steps)

6、修改过程中,Cursor创建了MainView(底部导航栏),使用TabView管理三个页面,并修改了TodoView(搜索栏和添加按钮)、CompletedTodosView(改为Tab页面)、SettingsView(添加关于板块),更新了ContentView(将TodoView替换为MainView,使用新的底部导航结构),由于项目使用了PBXFileSystemSynchronizedRootGroup,Xcode会自动检测并包含DoitWith文件夹中的新文件,所以刚刚创建的MainView就不需要手动更新到项目中了

7、构建测试,已实现上述界面调整需求,但在待办界面,搜索栏和顶部的“待办”、下方的快速导航栏之间的间距有些大,需要稍微改小一些,Cursor同步调整了搜索栏与导航栏之间、搜索栏与快速导航栏、快速导航栏与第一个分组之间的间距,再次构建测试,界面比之前稍微紧凑了一些,基本达成需求

8、接下来给DoitWith添加图标,使用ChatGPT创建图标包,指令是“我有一个待办类iOS应用,叫DoitWith,我需要给它加上图标,你先帮我创建一张1024*1024的底图,格式要符合iOS应用对图标文件的要求,颜色和DoitWith的启动页面颜色保持一致(red: 27/255, green: 94/255, blue: 32/255),需要稍微有一点创意,同时保持简洁”

9、ChatGPT给了我两张图,但都不是很满意,元素和色彩都稍微有点多,并且还出现了“图标套图标”的问题,虽然主体基本可用,但还有一个明显的“内层圆角块/底座”的感觉,在裁切成图标文件后就会像是套了一层,为了让图标更简洁,多次跟ChatGPT对话,去掉了内层圆角容器的感觉,并且微调了色彩,生成了图标包,放到Assets.xcassets文件夹里之后,应用图标搞定

10、ChatGPT还提示我可以在真机上测试时注意看桌面、Spotlight搜索结果、设置App列表这三个位置里的图标是否干净、清晰、锐利,如果都OK,那就可以长期使用

11、我发现目前应用在一些界面上还存在英文提示,比如搜索页未搜索到结果时的提示、Todo的日期信息(月份)、点击完成Todo时的弹窗提示等,需要改成对应的汉字,让Cursor排查下还有没有其它地方要改,但启动页、设置-关于页中的英文不要改,Cursor修改了TodoView中的提示文本、弹窗按钮文本、日期格式化、导航标题(我又让改回去了),以及General分组的名称,另外添加Todo和编辑Todo界面里的日期选择器还是英文的,反馈后Cursor给这两处增加了locale环境变量,这样DatePicker就会使用中文界面,构建测试,需求达成

12、接下来暂时不增加新功能,昨天询问了如何在真机上测试iOS App,Cursor指出这种方式只要有Xcode+Apple ID就可以,不需要通过TestFlight,也不需要上架,步骤包括用数据线把iPhone连到Mac、在Xcode中打开项目、设置签名、选择真机为运行设备、点击RUN等,并且我有已付费的开发者账号,通过这种形式进行测试时不会有7天过期的限制

13、按照ChatGPT的提示连接自己的手机进行测试,发现ChatGPT少写了一步,在选择真机为运行设备前,需要在手机的设置中打开开发者模式

14、想用同样的方法把之前使用Flutter重构的ChatWith移动版安装到手机上,但我发现目前的ChatWith移动版在模拟器中安装后,面上显示的是Flutter的图标,名字叫Chatwith Flutter,于是让Cursor修改了应用的名字(将Info.plist中的CFBundleDisplayName由Chatwith Flutter改为ChatWith),并且用ChatGPT制作了图标包(18张,包含Contents.json),替换了原来的Flutter图标

15、然后连接手机并且在手机上运行ChatWith,首次启动时竟然出现了“允许ChatWith查找本地网络中的设备?”的提示,为啥功能这么简单的应用居然会有这种权限要求呢?

16、到目前为止,已经把ChatWith for Mac(使用Flutter重构)安装到了电脑上,并且把ChatWith(使用Flutter重构)和DoitWith(使用SwiftUI原生开发)移动端安装到了电脑上,接下来在日常使用中测试一段时间,并修复使用中发现的问题

17、同步开发DoitWith for Mac,在之前的NoteWith for Mac基础上修改,之前已经有了对话、笔记、Todo三个板块,功能比较杂乱,也不太符合实际的使用需求,让Cursor简化当前应用的功能,去掉对话和笔记功能,并且将应用名称和所有的NoteWith都改成DoitWith,这个应用今后也尽量只用SwiftUI原生开发

18、Cursor陆续进行了这些操作:删除AI对话和笔记相关的文件,更新ContentView、SearchWindowView、RecycleBinView、DataManager等文件以移除AI和笔记功能,将所有文件中的NoteWith重命名为DoitWith,重命名项目文件夹和配置文件,更新项目配置文件等等,几分钟时间完成

19、构建测试,需要重新在Xcode中打开项目文件,并且让Cursor修正了CoreDataManager.swift路径配置错误、应用已删除的文件等多个问题,主要是清除已经删掉的AI对话、笔记相关功能代码,终于可以顺利构建

20、首先调整了最左侧栏、待办分组栏的宽度设置,最左侧栏固定为200,待办分组栏固定为300,并且禁止用户拖动调整宽度,然后我发现在Xcode中,当前项目好像仍在引用MarkdownUI,但涉及这个依赖的AI对话、笔记功能已经都删掉了,让Cursor从项目文件中移除对MarkdownUI的引用,重新构建、功能正常

21、明天开始,在使用并记录ChatWith for Mac、ChatWith、DoitWith的问题的同时,持续优化DoitWith for Mac,包括修改数据存储方式、增加下一步功能、调整界面、增加图标等等,之前使用SwiftUI开发的NoteWith移动版暂时搁置

发表回复