DevLog:2025年8月19日

1、今天还是修正BUG的一天,先处理昨天的遗留问题:1.AI回答内容里的“.”都显示成了“。”,网址和代码都受此影响;2.思考内容虽然支持流式输出,但始终只能看到两行,看不到全部思考内容;3.提出问题后,只有主动滑动一下才能看到底部的“AI正在思考中”的提示
2、开启了一个新对话,先修正英文句号都被替换成中文句号的问题,Cursor添加了一些调试信息来帮助定位问题,在开启新对话并测试的过程中发现这个问题竟然已经被解决了,我一直在看之前存在错误的对话内容,竟然没有变成正常的渲染结果?先保留调试信息,便于以后再测试其它
3、接下来修正第二个问题,在和支持深度思考的模型对话时,思考内容虽然支持流式输出,但始终只能看到两行,看不到全部思考内容,在修正这个问题之后,我添加了火山方舟的bot,填写了完整的Base URL(https://ark.cn-beijing.volces.com/api/v3/bots/),但对话时收到404错误信息,看来是之前的URL处理逻辑存在问题,Cursor修改了判断逻辑,如果是完整路径就直接使用,如果只有部分路径就自动添加前缀,如果包含api、bots、v3、v2,就直接使用,不添加额外路径,如果是基础路径就自动补全,再多次测试后发现火山方舟的bot路径依然需要应用自动补全后面的/chat/completions,这下常用的模型路径基本都OK了
4、接下来是昨天遗留的第三个问题:提出问题后,只有主动滑动一下才能看到底部的“AI正在思考中”的提示,Cursor改进滚动目标判断、优化滚动时机、增强加载状态处理、改进滚动锚点之后,在发送消息后界面即可自动滚动到底部,显示“AI正在思考中”的提示,搞定
5、继续,这次设置一下打开新对话时的默认模型,直接用模型列表里的第一个模型,“选择AI模型”界面,去掉右上方的“管理模型”按钮,在未打开任何AI对话时,界面右上角不显示“选择模型”
6、接下来修改一下AI对话列表和备忘录列表,两个列表中的条目点击区域都需要加大,整个横条都可以点击;两个列表都需要增加右键菜单,AI对话列表的右键菜单包含置顶/取消置顶(底色有所区别,带pin.fill图标)、修改(弹出对话框修改标题)、删除,备忘录列表的右键菜单包含置顶/取消置顶(置顶后底色有所区别,带pin.fill图标)、删除,Cursor在修改过程中先实现了AI列表页的邮件菜单,但备忘录列表页不支持,提示Cursor对比两个列表的右键菜单实现方式,并去掉了多余的NoteRowView定义,到这里右键菜单和点击区域都搞定了
7、发现刚刚删除的AI对话内容没有出现在设置-回收站里,让Cursor修复回收站相关功能,需求是:目前设置中已有回收站管理入口,但我删除的内容没有出现在回收站里,需要修复一下回收站功能,将回收站分为备忘录回收站和AI对话回收站两部分,可分别管理被删除的备忘录和AI对话,可清空回收站、永久删除、还原到对应的列表中
8、修改过程中虽然Cursor添加了多处调试信息,但测试时我点击设置-回收站,都没有出现调试信息,后来发现其实有两处回收站管理入口,一处是设置-回收站,一处是设置-快速操作-管理回收站,上一步Cursor添加的回收站管理功能都对应第二个入口,但我需要的是第一个入口,于是让Cursor进行了修改,Cursor同时去掉了原有的RecycleBinManagementView(简单界面且功能不完整)
9、Cursor在修改过程中机械地将RecycleBinView嵌入到了SettingsView里,就像把一个弹窗直接放进了界面里一样,不仅丑而且还有单独的标题和关闭按钮,于是让Cursor对回收站界面稍作优化,这次移除了冗余的标题栏,优化了标签页设计,改进了空状态提示,并且优化了列表项设计,风格与应用整体保持统一
10、其它功能规划:1.给AI模型添加界面增加一个测试按钮,添加新模型时先试一下能不能正常响应 2.可以选择AI对话内容中的部分文字并进行复制等操作 3.设置界面已经有数据管理功能,就不需要“设置概览”这个界面了 4.在设置中增加导入/导出功能,支持将外部内容导入到备忘录,支持将备忘录导出成txt或md,当然这些都是小改动,后面还想把Todo功能加进来,让应用功能更丰富一些
11、之前iOS版的DoitWith已经具备了一些核心功能,我询问Cursor能否将这一应用的功能整合进来,并且复用已有的文件和代码,Cursor回复可以,需要提供核心视图文件、数据名、关键功能和其它特殊需求,但由于DoitWith使用的是UserDefaults而非Core Data,Curs建议迁移到Core Data,与备忘录和AI对话使用统一的数据层,并给出了“基础功能整合(创建Todo数据类型、实现基本的GRUD操作、添加导航入口)-功能完善(添加优先级、分类、截止日期、实现搜索和筛选、添加回收站支持)-高级功能(AI助手集成、提醒功能、数据导入导出)”的分阶段实施步骤
12、虽然Cursor觉得可以这样操作,但我还是决定重新创建Todo功能,后续再详细规划需求,分布执行,这样应用就变成了NoteWith-Note/Chat/Doit, all in One

DevLog:2025年8月6日

1、目前在对话界面提交问题后应用还是会卡死,也没有“AI正在思考中”的状态提示,先让Cursor继续拆分ChatView,检查有无功能重复,如果与现有的单独文件有重复就保留单独文件,并且拆分ChatView中的部分功能为单独文件
2、Cursor拆分出了MessagefViews、ChatInputViews、ModelSelectorView、MessageDetailView四个文件,总计约200行,移除了所有重复的组件定义,提取的组件可以在其它地方复用,更易维护,ChatView现在是一个结构良好的主视图文件,进一步的拆分可能会增加不必要的复杂性
3、接下来继续测试功能,好像在和支持深度思考的模型对话时应用会卡死,且不输出回答内容,和不支持深度思考的模型对话时就能正常输出,但我现在不需要展示思考过程,直接给我展示AI的回答内容就行;另外,AI对话界面不能随着流式输出向下滚动;收藏时没有收藏成功的提示;收藏后的内容没有出现在收藏列表里,让Cursor检查下这几个问题
4、在让Cursor解决上述问题的同时,进一步优化MarkdownRenderer,以实现对表格的正确渲染,昨天测试了一个问题发现AI的回答中有表格,没能正确渲染,还是显示了大量的Markdown语法
5、发现在收藏列表页,点击收藏条目时不会打开,无法查看详情,而是会直接复制收藏的条目,看来可能在拆分文件后有部分功能失效了,继续修复
6、Cursor单个对话的Context Usage,难道是每天有限额,第二天自动重置?
7、再优化一些细节:去掉收藏列表长按菜单中的“查看详情”,直接点击就可以查看详情了, 不需要额外的按钮;现在AI回答内容和收藏内容都不能选取文字并复制,需要添加这个功能;还有对话列表向上滑动时底部会出现大片空白,我需要像收藏列表那样向上滑动时到最后一条就停止,不要出现大片空白;收藏夹列表右上角也添加设置图标,点击可打开设置界面
7、多次修改对话列表页底部的大片空白问题,在让Cursor添加调试信息后,发现可能存在重复计数的情况,将DEBUG信息截图发给Cursor并修复后解决了问题,并且还找回了之前不知道什么原因被删除的历史对话,没想到竟有意外收获
8、之后去掉了Cursor为了便于调试给对话列表和收藏列表添加的底色,并且在设置里添加了数据统计功能,可以查看对话数量和收藏数量,然后再优化三个细节:AI对话界面右上角显示的模型名称字体有点小,可以和左上角的“返回”字号保持一致;另外每次打开新对话时都使用默认模型,不用在设置中对模型进行选择了
9、接下来解决查看收藏相关的问题,比如:每次打开应用后,第一次打开一条我想要看的收藏时,弹窗是空白的,再打开另一条就可以正常看到内容;收藏列表貌似不是按收藏时间倒序;新收藏的内容不会立刻出现在收藏列表里;在对话中点击已收藏的内容并“取消收藏”时,不会取消收藏,多次修改后收藏和取消收藏功能均已正常
10、还有一个问题:目前的ChatWith用StoryBoard作为启动页面,NoteWith和DoitWith则是用SplashView作为启动页,这两种形式有啥区别?Cursor表示使用前者的场景有:简单的品牌展示、快速启动需求、不需要复杂动画、团队习惯Interface Builder;使用后者的场景有:需要启动动画、需要初始化逻辑(网络检查、数据加载等)、需要用户交互、需要动态内容、偏好代码管理,于是果断选择切换成SplashView,并且要求了ChatWith用40号加粗白色、副标题用title3、颜色用.white.opacity(0.8),和NoteWith、DoitWith保持一致
11、测试发现虽然可以正常启动,但我不清楚目前用的是SplashView.swift还是LaunchScreen.storyboard,Cursor检查时发现之前的LaunchScreen.storyboard还是没有删干净,除了文件本身外,还涉及了Info.plist、project.pbxproj中这个文件的引用,虽然这些地方都被Cursor修改了,但应用出现了不全屏显示的问题,清理Build Folder、重置模拟器之后,应用依然不能全屏显示,可能还是受到了早期代码的影响?
12、这次Cursor甚至创建了一个单独的全屏管理器FullScreenManager.swift,在多个生命周期点设置全屏,并在ChatWithApp、ContentView、SplashView、Info.plist中采用了多层全屏配置
UIScreen.main.bounds显示的是(0.0, 0.0, 320.0, 480.0),貌似是iPhone4的尺寸,后来还采用了硬编码的iPhone 16尺寸,依然没有解决问题,但我觉得应该没有这么复杂
13、之后把DoitWith的SplashView文件发给Cursor,对比了下有没有影响是否全屏的东西,也让Cursor重点检查下创建比较早的文件,看看有没有影响是否全屏的东西,毕竟这款应用刚由Trae创建时也存在不能全屏的问题,但还是没有解决问题
14、先让Cursor清理了多余的强制全屏的文件和代码,包括刚刚创建的FullScreenManager,之后在Cursor中开启新对话,决定让claude-4-sonnet来检查下为何应用不能全屏,并且要求只解决不能全屏显示的问题,不要修改其它功能,但这个模型在国内无法正常使用,即使架了梯子也不行
15、继续用Auto模式在新对话中检查不能全屏的问题,按照建议修改了下也没能全屏,然后在Trae中切换到Claude-4-Sonnet模型,继续检查不能全屏的问题,虽然没有直接解决问题,但它帮我发现了目前项目文件夹里有两个SplashView.swift,于是询问Cursor哪个是多余的,Cursor建议删除根目录中的SplashView.swift,保留Views文件夹中的同名文件,并修改项目配置,确保正确引用,但即使删除了根目录中的文件,并修改了引用,应用依然不能全屏

DevLog:2025年7月30日

1、继续对NoteWith进行优化,先对比DoitWith的启动页代码,调整了NoteWith启动页的标题和副标题字体大小,之后让Cursor调换AI对话和备忘录TAB的顺序
2、之后主要调整设置界面,首先把底部的设置改成“我的”,左上角的“设置”也改成“我的”,然后把AI模型相关的设置改成弹窗,目标是:点击“我的”可显示模型设置(点击AI模型设置后打开弹窗,在弹窗中设置API密钥、API地址、模型名称)、数据管理(包含回收站,需要删除回收站的图标)、数据统计(包含AI会话数量、备忘录数量),Cursor在修改完成后没有主动构建,跟Cursor强调了下以后完成每次修改后都构建一下试试
3、发现Cursor在修改底部的导航文字(“设置”改成“我的”)之后,原本的齿轮图标就不合适了,需要替换成比较合适的图标,另外需要在“我的”页面增加深色模式切换功能,可在 跟随系统、浅色、深色 三个选项间切换
4、在模拟器中测试发现,“我的”页面的AI模型、回收站,以及外观设置的三个按钮只有在点击文字和箭头时才会触发对应操作,需要改成点击整行时都能触发对应操作,继续让Cursor修改,Cursor表示是对按钮点击区域进行了优化,移除了Button和buttonStyle(PlainButtonStyle()),改用HStack + contentShape(Rectangle()) + onTapGesture
5、然后优化AI对话中的收藏操作,目前消息右侧的收藏按钮有点小,且位于消息的中间位置,消息比较长时不便于点击收藏,需要调整到消息的顶部位置,并且适当增大收藏按钮,在点击收藏按钮后需要提示收藏成功,在Cursor修改完成后,再对提示文字“已收藏”进行优化,改成了浮在对话界面中间停留一秒后自动消失,Cursor不仅完成了需求,还增加了阴影、动画效果、平滑动画,效果不错,今天到此结束,明天再测试和优化其它功能

DevLog:2025年7月29日

1、今天的目标是把DoitWith的分组功能加回来,目标是:
1.点击右上角的“+”可以选择创建新Todo、创建新分组
2.创建新Todo时可以选择分组
3.点击左上角“Edit”后,每条Todo右侧的删除按钮左边增加一个编辑按钮,点击弹出编辑界面,类似添加Todo界面,可以选择这条Todo的分组、设置截止日期和重复频率
4.设置中增加分组管理功能,可以删除分组,确认后即删除
2、决定让Cursor分步操作,先实现上面和1和2,Cursor增加了分组颜色设置等细节优化,但存在这些问题:新创建的分组不会出现在Todo列表里,我的需求是 即使目前已有的分组下都没有Todo,也要呈现在Todo列表里;另外新创建的Todo也没有出现在Todo列表里,检查一下是怎么回事;还有,创建完分组或Todo后,ActionSelectionView能否自动消失?目前还需要手动点一下取消才会消失
3、让Cursor修正这些问题之后,继续优化,发现点击左上角“Edit”时,只有General分组下的Todo支持拖动排序,其它分组下的Todo同样需要支持拖动排序,另外设置页面的TODO统计,数字也不对,是不是只统计了General分组下的Todo?然后去掉设置中的Reset to Default Data按钮和功能,我不需要
4、Cursor快速修复了上述问题,发现给Cursor的需求要尽量具体到某个按钮的某个功能,还有就是在付费之后Cursor的效率有明显的提升
5、继续修复一些小问题:点击左上角“Edit”后,我需要暂时隐藏掉Todo条目最左侧的圆圈,可能会让人误解这是多选按钮;另外现在每条Todo在点击完成后都无法撤销,我需要在再次点击时撤销完成状态
6、Cursor快速修复了上述问题,继续测试后发现还有问题,从回收站中恢复的Todo条目,不会回到原本所属的分组,而是到了General分组里,继续让Cursor修复问题,Cursor甚至还给出了“如果原来的分组被删除了,恢复的Todo会添加到General分组作为降级处理”的额外方案
7、从2-6的需求全部完成,接下来继续增加编辑Todo、管理分组的功能,先增加编辑Todo的功能,需求是:点击左上角“Edit”后,每条Todo右侧的删除按钮左边增加一个编辑按钮,点击弹出编辑界面(类似添加Todo的界面)可以在编辑界面修改这条Todo的标题、描述,设置截止日期和重复频率
8、Cursor在修改后仍然存在一些问题,一是编辑、删除、拖动排序三个按钮离的有点近,可以稍微拉大一点间距,防止误触,二是点击编辑按钮弹出了“删除”的弹窗,没有进入编辑界面,关于间距的修复,由于编辑、删除按钮和拖动按钮不属于同一个组件,无法调整边距,在尝试两次后撤销了间距调整操作,第二个问题已经修复完成,但存在首次打开Todo编辑界面立即消失,需要再次打开才能编辑Todo的问题,继续让Cursor修复,多次修改未果,点击编辑按钮会弹出删除的弹窗
9、决定换一种交互形式,去掉每条Todo右侧的编辑和删除按钮,改成长按每条Todo弹出菜单,菜单里包含编辑Todo、删除两个功能,点击编辑Todo进入编辑界面,点击删除弹出弹窗,确认后即删除(Cursor认为这样更加简洁,且符合iOS的设计规范)
10、实现这一需求后,发现首次长按Todo条目、编辑Todo时会弹出一个空白页面,再次编辑Todo时才会弹出完整的编辑界面,继续让Cursor检查并修正该问题,多次修改后解决
11、我发现即使不点击左上角的Edit按钮,也能通过长按和拖动来调整Todo的顺序,可以让Cursor去掉左上角的按钮,以及点击按钮后界面的变化相关代码,但要保留拖动调整Todo顺序的功能,Cursor边修改边检查/修复问题,涉及了TodoView.swift、TodoRowView.swift、GroupTodoRowView三个文件
12、接下来继续优化应用,主要针对分组管理:一是在Todo界面搜索栏下方添加几个按钮,按钮上显示分组的名字,点击可以直达该分组所在位置,创建新分组时自动在添加新按钮(Cursor说这叫“分组导航按钮”);二是需要在设置中增加管理分组功能,可以在这里删除分组,删除后该分组内的Todo自动移动到General分组,先增加第一个功能,增加分组导航栏
13、接下来让Cursor实现管理分组功能,Cursor创建了一个新的GroupManagementView视图来管理分组,可以在设置-管理分组中统一查看分组颜色标识、分组名称、分组内的Todo数量,也能点击删除,删除时会有确认对话框,并告知删除后的Todo会移动到General分组里
14、下一步优化搜索功能,目前的搜索框不是很好用,搜不到部分Todo条目,Cursor对搜索功能进行了优化,输入关键词即可在全部Todo内搜索,快速定位到搜索结果,但是有一个问题:在搜索到不在General分组内的Todo时,会同时显示搜索结果和“No Results”的提示,继续让Cursor优化,解决了这个小问题
15、之后让Cursor修改创建分组和Todo界面的英文,改成中文,Cursor还自动同步检查了编辑Todo界面,之后再让Cursor把设置界面的一些英文改成中文,模拟器测试OK,然后让Cursor结合当前应用的功能刷新了一下README
16、检查一下目前的文件中有没有深色模式相关的代码,Cursor检查后发现的确存在深色模式相关代码,但设置界面中没有对应的选项,于是开始修复,涉及了主应用入口、设置、SplashView、RecycleBinView等文件,并且发现存在两个设置文件SettingsView和SettingView,检查后删掉了SettingsView,测试深色模式可正常启用
17、DoitWith先到这里,回到NoteWith,在Xcode模拟器中运行时出现三处被弃用的语法警告,先让Cursor处理一下,之后对NoteWith的功能进行测试
18、首先是备忘录相关功能,点击创建备忘录按钮或右上角加号后,添加内容并保存,并没有出现在备忘录列表里,需要检查一下原因,多次修改后仍然无果,决定先让Cursor把数据存储方式从Core Data改回UserDefaults,这样可以简化数据管理,避免Core Data的复杂性
19、Cursor删除了8个涉及Core Data的文件,并清理其它文件中对Core Data的引用,创建了一个新的简化项目文件,移除所有Core Data相关的引用(已经自动备份了当前的项目文件),之后果然能够正常保存备忘录了,Cursor还是厉害,Core Data等以后比较熟悉了再切换吧,现在先用着UserDefaults
20、目前格式设置按钮在备忘录详情页标题下方,但选中文字时弹出的剪切、复制等按钮就会把格式设置按钮挡住,继续让Cursor修改:需要把格式设置按钮全都挪到备忘录详情页底部、字数统计栏上方,并且增加删除线、设置文字颜色按钮;删掉右侧的“清空内容”按钮;目前工具栏中的“A”图标对应的是什么功能?点击之后会卡死
21、Cursor在修改之后,格式设置功能还是有问题,决定让Cursor修改这些:备忘录详情的格式设置还是有问题,选中文字后,可以设置格式,但再次点击格式按钮后不会取消格式;另外在备忘录列表页,在某条备忘录的空白位置点击就会被标记星号,我的需求是只有点击到星号时才会被标记星号;还有,移除备忘录详情页标题旁边的分享和删除按钮,我暂时不需要;在设置中添加一个回收站功能,管理我删除的备忘录,可以在回收站中恢复已删除的备忘录,这些需求均被Cursor快速完成
22、继续测试并让Cursor优化AI对话页,测试发现在AI对话页面点击创建AI对话按钮和右上角的加号之后,都只会创建新对话,但不直接打开新对话,点击对话列表中的条目也无法打开;另外在设置中填上API密钥、API地址、模型名称后点击右上角保存,不会提示已保存,也不会返回到其它界面,让Cursor一并检查、修复完成,创建新对话后对以弹窗形式打开对话,且对话内容互相独立,设置模型信息之后点击保存会提示已保存,至此NoteWith的基本功能已经OK
23、然后让Cursor删掉了设置页的版本号、项目主页等不重要的信息,以后再继续测试、优化,包括AI对话和备忘录TAB调换顺序,增加深色模式,优化设置界面的交互逻辑(把AI模型相关的设置改成弹窗),“设置”改成“我的”等等

DevLog:2025年7月28日

1、上周经历了Trae、Lingma和Cursor的多轮修改之后,DoitWith原本已经具备的删除Todo和回收站功能暂时消失了,但RecycleBinView文件还在,决定让Cursor试一下恢复这个功能
2、但在模拟器中测试目前的DoitWith时,发现无法创建Todo,创建时Debug信息会提示:
UIKeyboardLayoutStar implements focusItemsInRect: – caching for linear focus movement is limited as long as this view is on screen.
Error: this application, or a library it uses, has passed an invalid numeric value (NaN, or not-a-number) to CoreGraphics API and this value is being ignored. Please fix this problem.
If you want to see the backtrace, please set CG_NUMERICS_SHOW_BACKTRACE environmental variable.
且应用会卡死,直接把这些错误信息给到Cursor,Cursor在修改TodoData.swfit、TodayView.swift、AddTodoView.swift之后,虽然可以构建成功,但又卡在了启动界面,不进入TodayView界面
3、在排查问题的过程中,Cursor在多个文件里添加了调试信息,以便于定位问题,后续可以把这些DEBUG信息给到Cursor,更有针对性的解决问题
4、多次修改之后仍然会卡在启动界面,决定暂时让Cursor简化当前的应用:“不需要Today界面了,进入应用后直接显示Todo界面,底部也不需要在Today和Todo之间切换,先看下都有哪些文件和代码可以简化”,Cursor征求我的同意后删除了TodayView.swift、MainTabView.swift,并对多个文件进行简化,在我的要求下保留了SplashView启动界面和RecycleBinView回收站,Cursor还顺便在设置中添加了回收站功能,简化之后的应用经Xcode模拟器测试,可以正常启动,且可以正常创建Todo
5、但是相比之前我的需求,缺少了长按菜单(删除Todo、修改截止日期、修改分组等)、Todo页面视图也过于简单,甚至看不到Todo条目的截止时间,但是相比之前多了左上角的“Edit”按钮,点击后可以对Todo条目进行拖动排序,后续调整和增加功能时,还是要遵循“小步快跑”的原则,不要一次调整或增加太多功能,这样出现问题后也比较容易排查
6、询问Cursor当前的文件中是否有长按Todo弹出的菜单相关代码、给Todo条目分组的代码,前者已经没有了,后者还存在,但功能未启用,决定先让Cursor完善一下Todo条目的显示:目前Todo列表中仅显示Todo标题,还需要显示描述(Description)、截止日期(Due Date)、重复频率(Repeat)信息,并且适当拉高Todo条目的显示高度,以容纳这些信息,Cursor很快修改完成,并且优化了显示效果
7、重复频率目前有Daily、Weekly、Monthly,分别对应日、周、月,需要增加一个Yearly,即每年重复提醒一次,继续让Cursor添加此功能,很快添加完成
8、感觉现在每一条Todo显示的高度有些太高了,需要稍微减小一些条目高度,可以适当缩短每个Todo的三行内容之间、每两条Todo之间的垂直间距,Cursor给出了修改前后的对比:
调整前:条目间垂直间距:8pt、内容间垂直间距:6pt、图标顶部间距:2pt
调整后:条目间垂直间距:5pt、内容间垂直间距:3pt、图标顶部间距:1pt
9、接下来修正一个问题:点击右上角“+”时,每条Todo的右侧会出现删除按钮,需要调整成点击左上角的”Edit”时,每条Todo的右侧会出现拖动调整顺序按钮(已有,且功能正常)和删除按钮,点击删除按钮可删除本条Todo,点击右上角“+”时,每条Todo的右侧不要再出现删除按钮
10、在修正这些问题之后,继续让Cursor修正删除Todo时卡死、删除的Todo不显示在回收站里,回收站里的Todo点“恢复”之后,不会显示在 Todo界面等问题,顺便解决数据结构冗余的问题(同时存在Todo和TodoItem两个结构体),Cursor在代码中添加了很多调试信息,方便定位问题,结合调试信息和Xcode代码窗口的错误提示,Cursor修正了这一问题,今天就到这儿了

DevLog:2025年7月25日

1、Trae今天早上竟然修正了昨天的无限循环的错误问题,可以构建,并在Trae的模拟器中打开应用了,但经测试发现,Today页面的头部缺失,只显示了截止日期为当天的Todo,而且也缺失右上方的添加和设置按钮,继续让Trae修正
2、不知道为啥用Trae修改应用时,既会修改我要求的地方,又会自己改一些我没有要求的地方,比如DoitWith中条目的样式、底部Tab的底色、底部两个Tab的名字(之前是英文Today和Todo,现在被改成了今天、待办),难道是我中途切换了模型导致的?
3、这两天Trae还出现了一个问题,就是会判定某个文件存在重复(但实际上并没有重复文件),然后删掉这个文件,再创建一个新的文件,但命名变成了全小写,比如maintabview.swift,之后再表示之前判断错了,并没有重复文件,这是在折腾啥?
3、AI IDE貌似存在一个通用的问题:初期能够很快实现简单的需求,随着后续功能增加,出问题的概率就会越来越大,近期从UserDefaults切换至Core Data时必出问题
4、下载了一个新的AI IDE,阿里的通义灵码,反正DoitWith也已经被Trae中的多个模型(Doubao-Seed-1.6、Kimi-K2、Claude Sonnet 4、Qwen-3-Coder)修改的面目全非了,准备试试,内置了Qwen-3-Coder、Qwen-3-Thinking、Qwen-2.5-max,可以使用Auto模式,也可以手动切换
5、先询问了Lingma对当前DoitWith的体验和优化和功能增强的建议,决定先让Lingma为当前应用增加Trae没能完成的重复任务功能:
我需要增加这个功能:支持为每个Todo设置“重复”,在创建Todo/修改Todo截止时间时,可以设置/修改重复频率,可选“每天、每周、每月、每三个月、每年”五种重复频率
6、Lingma添加了这个功能,涉及TodoData、TodoView、TodayView三个文件,并且要求它检查了,不存在语法错误,但是Lingma表示它无法直接构建项目,建议我在X中进行构建,甚至智能问答模式下不会主动修改文件,只会给出“应该改成什么样”的建议,要求它修改文件之后才直接对这三个文件做了修改
7、在处理一些警告时,再次出现了只给建议和示例,不直接修改文件的问题,再次要求后,在Xcode中构建仍然提示同样的问题,试试看将“智能问答”模式切换为“文件编辑”模式,但是使用过程中Lingma变得非常卡,点击“停止”后甚至卡住不动了,不完全退出后重新打开项目,历史记录显示已完成修改,Lingma IDE技术人员建议我用智能体模式,可以给出建议并修改文件,但是智能体模式同样无法直接构建项目
8、再次切换回Cursor,希望能够解决Trae和Lingma一直没能解决的频繁出现的编译错误,但提示免费额度已经用完了,充了一个月的Pro,支付宝付款144.11,之后Cursor开始修复问题并进行构建测试,很快就修复完成,构建成功,过程中提示解决了MainTabView的问题、数据结构不一致的问题、缺失的属性和方法问题、枚举类型问题、类型不匹配问题、组件引用问题、语法错误,问题着实有点多,可能都是之前频繁切换IDE和模型的后遗症,现在已经可以构建成功,然后又遇到了之前一直没能解决的卡在启动界面的问题
9、在“移除Today界面长按Todo弹出菜单,只可以点击Todo条目前的圆形按钮以完成Todo”之后,终于解决了应用卡在启动界面的问题,看来可能是Today界面的功能太过复杂导致启动时被卡住
10、今天的最后一步操作是:把界面右下角的设置按钮移动到Todo界面右上角,并且在设置中增加Todo条目统计功能,分为“待完成Todo”和“已完成Todo”两条显示,每次换用不用的IDE或模型,都会导致需求之外的改动,以后尽量只用一个Cursor,少用Trae和Lingma

DevLog:2025年7月22日

1、继续修改DoitWith,尝试让Trae完成编辑截止日期的功能:
完善添加和编辑截止日期的功能,在创建Todo时默认以当天为截止日期,也可自行选择截止日期,精确到天,长按每一条Todo可编辑截止日期,同样精确到天
2、Trae在修改过程中会反复验证语法是否正确,这一步应该可以提升在Xcode中构建成功的概率,减少因语法错误导致构建失败,Trae已经按上述要求添加了设置和编辑截止日期的功能,Xcode模拟器测试也已成功
3、接下来完善分组相关功能,比如点Todo界面右上角加号可以添加分组(目前已支持),在添加Todo时可以选择分组,默认放到用户创建的第一个分组里,长按每条Todo可编辑所属分组
4、Trae完成了上述需求,但应用存在一个问题,目前在创建Todo时,如果没有分组,应用中会提示请先创建分组,但点击无法创建分组,需要修改成这样:应用内预置“工作”和“生活”两个分组,在创建Todo时默认位于“工作”分组,且可以点击切换到其它分组(包含用户自行创建的分组)
5、同时给Trae提了另一个要求:以后除非我另做要求,都统一用iPhone 16模拟器来构建,但不在模拟器中进行测试,我自己会去Xcode中测试,但Trae貌似没有理会这个要求,也可能理解成了这是仅对上一条需求提的要求
6、发现Trae在构建成功后不会进行下一步,好像会卡在构建这步,即使底部的“终端”中已提示BUILD SUCCEEDED,当然可以选择“跳过”,没有任何影响
7、接下来完善TodayView,需在该界面显示截止日期为当天的Todo,可勾选完成,不需要其它长按菜单,如果没有符合要求的Todo,则该界面显示“今天没有待办事项 享受轻松的一天吧!”多次修改后未能完成,后来回想起之前Cursor在修改Today界面时,在 MainTabView.swift中,Today标签页显示的不是TodayView.swift组件,而是一个静态的“Today”文本,让Trae修改之后已经基本满足需求
8、下一步,让Trae添加Todo的删除和恢复机制,删除后进入回收站,可在设置界面进入回收站并恢复已删除的Todo,结合应用当前的功能写一个README文件
9、在Xcode中测试应用时再次出现了卡在启动界面,不进入Today界面的情况,但在Trae中进行测试时就正常,按指导清理了Xcode和模拟器缓存,但无效,之后暂时先在Trae的模拟器中进行测试
10、用Trae修正了在Today界面和Todo界面创建Todo和分组时,两个界面的数据同步问题,在其中任何一个界面创建Todo和分组时,都会同步显示在另一个界面
11、到现在已经把我在OpenRouter平台充的钱用完了,基本都是这两天在Trae中使用Claude Sonnet 4消耗的,这消耗的也太快了,当然Claude Sonnet 4的API价格比较贵也是原因之一,OpenRouter上的Claude Sonnet 4的价格是百万输入3美元,百万输出15美元,作为对比,DeepSeek-R1 0528的价格是百万输入和输出均为0.272美元
12、切换Trae的模型为Kimi-K2,先让它给应用增加回收站功能,可以集中查看已经删除的Todo条目,并且在右侧设置恢复按钮,可以恢复到这条Todo被删除时所在的分组中,Kimi-K2的表现好像还可以
13、决定让Kimi-K2来检查一下当前应用是否会在启动时卡在启动页,不进入Today界面,在对代码进行多次优化,比如优化数据加载逻辑,改进数据更新机制等等之后,在Xcode模拟器里测试应用仍然会卡在启动界面,但在Trae中测试时就可以正常使用,很奇怪
14、让Trae结合应用现有的功能,创建了一个README.md文件,放在应用文件的根目录里,今天到此结束

DevLog:2025年7月21日

1、继续让Cursor修正DoitWith卡在启动页的问题,结合昨天和今天修改的内容,猜测可能是因为Today页面存在问题导致卡在启动页,决定先让Cursor进一步简化应用功能试下,先去掉Today界面及相关代码
2、果然在去掉Today界面及相关代码后可以正常进入应用,并直接显示Todo页内容,之后让Cursor逐步将Today界面及功能加回来,比如先恢复Today界面,但不需要什么功能,只为测试应用能否正常打开,经测试应用确实可以正常打开,看来问题出在TodayView的具体实现上
3、逐步恢复Today界面和功能,先给这页添加标题“Today”和右上角的“设置”按钮,位置与Todo页的标题和设置按钮位置一致,顺便把启动页的副标题改成“Manage all you need to do.”
4、使用Xcode模拟器测试发现上述需求已达成,接下来继续恢复功能:
在Todo列表中点击右上角“+”,添加新Todo时,无法选择截止日期,只能添加标题,需要有可选择日期的窗口,默认选择今天,也可以手动选择之后的日期
5、Curso在实现上述需求的过程中又重复出现Ambiguous use of ‘toolbar(content:)’的问题,感觉又陷入了新的循环,决定让Cursor先去掉所有的选择日期、修改日期相关功能
6、发现Cursor在Pro试用到期之后,更多的是给到修改建议,而非之前的主动修改,在修改一个文件时,也会一部分一部分的修改,不会一次修改完整个文件,可能的确是在使用上有些限制了
7、让Trae对当前的项目进行了检查,Trae修正了目前存在的编译错误,目前已经可以正常打开,Trae还给出了如下建议,第一条是因为Cursor还没能完全去掉编辑截止日期相关的功能吗?
1.功能完善 :完成编辑截止日期功能的具体实现
2.UI优化 :考虑使用更现代的SwiftUI设计模式
3.数据模型 :考虑迁移到Core Data以获得更好的数据管理

DevLog:2025年7月20日

1、发现目前这个精简版的DoitWith存在几个问题,需要让Cursor来优化
1.设置中仍然有“Note数量”,需要删掉这一行
2.设置的数量统计改成这两个维度:进行中的Todo数量、已完成的Todo数量
3.设置中的外观选择,切换到深色时应用界面颜色没有变成深色,需要修正下
4.在Todo中添加新Todo时,目前无法选择截止日期,只能添加标题,需要出现选择日期的窗口,默认选择今天,也可以手动选择之后的日期
5.长按一条Todo,点击弹出菜单中的“修改截止日期”,需要出现选择日期的窗口,默认选择今天,也可以手动选择之后的日期
6.Today页面为空时显示的“今天没有待办事项 享受轻松的一天吧!”和绿色的对勾图标一起往下挪一些
7.需要增加启动页面,背景颜色为墨绿色,标题为应用名,副标题为“Manage all you need to do.”
2、吸取教训,每次只让Cursor改正几个问题,不一次性提出太多需求,改正几个问题之后立刻构建、在Xcode中用模拟器测试,先让Cursor修正“设置”页面的问题
3、Cursor在修正完成之后,反复卡在白屏或启动页面,无法进入应用

DevLog:2025年7月19日

1、Cursor的Pro试用到期,但之前DoitWith卡在启动页的问题仍未解决,转战Trae,先让Trae熟悉一下这个由Cursor创建的项目,然后让Trae检查卡在启动页面的原因,在检查并修正它发现的一些问题之后,结论仍然是存在重复的文件,它需要删除这些手动生成的Core Data文件,先拒绝了,耗时半小时,并未解决问题,且出现了两次“模型思考次数已达上限,输入“继续”后获得更多结果”
2、对Trae有些失望,Trae更新了2.0版本,继续让它操作之后仍然在不断尝试和重复之前进行过的的一些修改,不仅没有解决问题,甚至还导致使用Xcode查看项目文件时,Xcode频繁崩溃,参照Cursor给到的方法多次修正后仍然会闪退
3、决定让Cursor简化整个项目,将备忘录相关功能移除,数据存储方案也不再使用较为复杂的Core Data,这样也就不再需要富文本编辑器等功能,应用功能和文件结构都大幅简化,变成一个纯Todo类应用,可能一开始给的需求就太复杂了,简单一些会更少出错,之后再随着使用和对代码的熟悉程度的提升,丰富应用的功能
4、Cursor移除了NoteView及相关文件,删除了所有Core Data相关的实体、属性、初始化、模型文件,删除了Persistence.swift等持久化相关文件,MainTabView只保留Today和Todo两个Tab,之后对TodoView及其相关子视图进行修改,并提供UserDefaults(适合简单数据)和文件存储(适合结构化数据)两种本地存储方式,此处选择用UserDefaults
5、修改完成之后手动删除了一些重复文件,Xcode提示构建成功,且启动了模拟器,但不会自动打开App,也没有任何的错误提示,之后手动重建了项目,解决之前文件结构上的问题,但之后又多次让Cursor修正因之前使用Core Data,后来改用UserDefaults遗留的问题
6、偶然发现同一个问题在Cursor多次修改后仍然重复出错,不能正常构建,但在Xcode中参考Xcode的建议(建议代码、Fix)可以快速修正且完成构建,Cursor好像有时会陷入到一个循环里,反复修改,每次都保证说这次100%能够成功构建,100%可以解决问题,但就是解决不了