1、今天继续完善应用细节,先从拆分待办事项列表为单独文件开始,将待办事项分组拆分为单独的文件,并且参考备忘录界面的布局,使用HSplitView,可调节宽度,最小宽度200,理想宽度300,最大宽度400,这样NoteWith的三大模块布局就一致了,并且更便于后续维护
2、Curso陆续创建了TodoGroupListView(分组列表视图)、TodoItemListView(待办事项列表视图),之后重构TodoListView以使用HSplitView,删除其中重复的组件定义,这样TodoListView就成了主视图,并使用HSplitView组合两个子视图
3、多次调整细节后,三个列表的样式基本一致了,同样的列表宽度(最小、理想、最大、默认宽度)、同样的标题位置、同样的分割线、同样的右侧界面顶栏高度、同样的新建按钮,这样在细节上更加统一了
4、今天Cursor的响应速度变得好慢,频繁出现We‘re having trouble connecting to the model provider.的提示,需要反复点击Try again,等待几分钟之后虽然理解了我的意图,执行起来也非常慢,但再重启一次之后好像速度快了很多,看来可能是我两天时间没有使用,但又一直没关导致的
5、Views/Common目录下的ErrorWrapper文件不知道是干啥用的,让Cursor确认了下,这是一个未使用的错误包装器类型,可能是上次对项目架构进行重构时创建的文件,但现在没有使用,于是让Cursor删掉了ErrorWrapper,同时也删掉了重构指南文档REFACTORING_GUIDE.md
6、还得让Cursor记住在创建新文件之后要将其添加到项目中,只创建文件、不添加到项目就开始构建测试的问题,已经出现过多次了,于是在Cursor的设置中添加这条Rule,看样子以后遇到类似的频繁出现的问题,还是要明确提出,才有机会被识别成Memory,就会更容易添加
标签: HSplitView
DevLog:2025年8月29日
1、首先让Cursor把深度思考内容的底色换成浅灰色,目前的颜色在AI对话界面中略显突兀,因为提问和回答内容都改成了白色
2、需要继续优化AI回答内容的Markdown渲染效果,渲染后的内容能否不以空格替代语法占的位置?比如加粗的文字前后都有两个空格,Cursor表示在Markdown样式应用的过程中,代码使用了NSColor.clear来隐藏语法标记,但这只是让语法标记变透明,并未真正移除它们占用的空间,需要用字符串替换来真正移除语法标记
3、但测试发现使用字符串替换的效果不好,回答内容被截断,且原本使用了同一个Markdown语法的内容,部分文字有渲染效果,部分没有,尝试用属性应用而不是字符串替换,一顿操作之后,又回到了之前的效果,渲染后的内容还是以空格替代了语法标记占的位置,又是一个悬而未决的问题
4、如果改用SwiftUI的Text来渲染AI对话内容,会失去文本选择功能、失去右键菜单、文本搜索等高级文本交互功能,Markdown渲染也会有限制,还是继续保持目前的NSTextView吧
5、发现在AI对话列表中点击右键修改标题时会弹出弹窗,可以在弹窗里输入新标题,但弹窗上方一直有一个空的icon,之前也修改过多次,但删不掉,于是要求改成点击右键修改标题,直接在对话标题位置修改、回车确认,修改过程中发现AIChatSessionListView和AIChatView在功能上有一些重叠,Cursor分析后发现AIChatSessionListView没有被使用,AIChatView中包含了了会话列表和聊天功能,于是决定把会话列表相关功能从AIChatView中迁移到AIChatSessionListView里,这样更便于后续对聊天功能和列表功能进行分别管理,然后修正了导航栏消失、部分界面变成四栏布局等问题
6、接下来需要统一一下AI对话列表和AI对话之间、备忘录列表和备忘录详情之间的分割线样式、底色样式,选中样式,以及拖动调整比例的功能,在实现这一需求的过程中,将ContentView中有关AI对话列表功能完全移动到了AIChatSessionListView中,这下ContentView就只专注于导航和界面切换了,减少了跨组件的状态传递,符合单一职责原则
7、然后统一了两个列表的默认宽度(最小200、理想300、默认300、最大400)和样式(首次打开和切换时不选中任何一条内容、每个条目都不需要用圆角,翻译一下,正确的说法应该是移除自动选中和圆角设计)
8、发现在Views/Notes/Components文件夹下有两个文件,SearchBarView和EmptyStateView,但不知道这两个文件现在还有没有用,这是之前使用UserDefaults来存储数据时,Cursor拆分的组件,现在NotesListView里已经有了重复的组件,SearchBarView用于在备忘录中搜索内容,EmptyStateView是空状态显示组件,Cursor建议删掉这两个文件,我觉得目前这俩文件好像也没啥用了,甚至这两个文件都没有被项目文件引用,删完之后项目结构更加整洁了
9、AI对话和备忘录列表修改告一段落之后,我又开始看待办事项分组列表,询问Cursor后发现这个列表不是单独的文件,是TodoListView文件的中的一个组件,并且备忘录界面使用了HSplitView,可调节宽度,待办事项界面使用了HStack,固定布局,虽然备忘录分组管理的功能完整,但界面布局和AI对话、备忘录列表不一致,还是决定以后要改成一致的