DevLog:2025年8月16日

1、今天抽空优化应用功能和界面,首先是和导航栏的问题:我在首页选择了模型之后开始对话,但好像无论我选不选,都会跟模型列表里的第一个模型对话,而且我选择模型之后首页也看不到我选了哪个模型;另外左侧导航栏和图标和文字好像都没有对齐,我需要让图标和文字都左对齐
2、针对导航栏图标和文字不对齐的文字,Cursor进行了多次修改,包括将List改为VStack、给按钮添加背景颜色、点击区域等等,修改过程了再次出现了“ContentView文件结构被破坏,让我重新创建这个文件”的提示,可能是因为调整了中间的某行代码,但没有找到对应的闭合大括号导致的,这个问题近期遇到了多次,当然在修改过程中也没有全部重写ContentView,只是重写了其中的一部分
3、导航栏的问题还在修改中,由于首页和其它页面使用了不同的布局结构,导致样式难以统一,Cursor表示最好的解决方案是将所有的页面统一使用NavigationSplitView,这样可以确保样式完全一致,并且首页也可以有导航栏收起按钮,但不知道这样是否会导致首页变成三栏,先改一下试试看
4、果然在这次修改后首页也变成了三栏,但第二栏真的没有什么用,既然多次修改都暂时不能达成需求,且首页更多的是品牌展示的作用,决定先去掉首页模块,重点把其它界面的功能补齐,体验做好
5、首先就是优化AI对话输入框,将输入框加大、加高,并且使用圆角,以及对导航栏五个按钮的点击区域进行优化,让整行都可以点击,Cursor在修改时多次加高了导航栏按钮的高度和输入框的高度,依然没有解决问题,特别是输入框,只有我输入的内容足够多时才会变高,平时仍然是窄窄的一小条
6、通过将TextField替换为TextEditor,解决了输入框只有一窄条的问题,但底部的附件和发送按钮和底部边缘之间没有任何间距,甚至发送按钮都被遮挡了,反复调整多个边距数据终于达成需求,按钮不被遮挡,输入框的高度足以显示多行内容,且有圆角
7、然后调整了AI对话界面我的头像的位置,改成与消息气泡的顶部对齐,之前有些太靠下了
8、接下来优化AI对话的内容的滚动问题,让打开对话时自动滚动到最近的消息,同时给选中的对话增加一个选中状态的视觉反馈,Cursor通过增加双重滚动机制解决了前者,然后增加了浅蓝色半透明的选中状态,决定让Cursor将这一选中状态设计也应用到知识库、备忘录、设置列表中,视觉效果更统一一下,但设置列表由于采用了NavigationLink,本身就有内置的选中状态样式,再叠加了自定义的选中状态之后导致样式重叠,但NavigationLink内置的选中状态样式的确难看,于是让Cursor将NavigationLink替换为自定义Button组件,并且套用了自定义的选中状态样式
9、多次测试发现并没有统一消息的滚动机制,有时还会滚动到一半,先让Cursor改成了打开对话时跳到最近一次对话内容,然后增加对代码块的渲染,去掉长按消息后的弹窗,改成在消息底部增加收藏、复制、删除三个按钮,并具备对应功能,Cursor说针对代码块设计了明显的边框和背景,但在Xcode模拟器中测试时好像没有生效,再次让Cursor修改,并让代码块解析器能够识别更多类型的代码内容,然后又修复了几次代码识别识别逻辑(包含智能边界检测、全面的文字过滤、精确的代码识别等等),因为有些普通的回答内容也被包含在了代码块里,修改之后基本达成要求
10、预感现在AIChatView可能需要拆分了,因为目前包含了太多功能,于是询问Cursor是否有必要拆分该文件,Cursor认为目前的AIChatView文件过大、功能混杂,且有代码重复风险,并给出了拆分建议,先拆分代码模块,再拆分UI组件,最后优化主视图,决定让Cursor按照渐进式方案拆分
11、边拆分边测试,发现代码片段看不到代码块了,Cursor表示时在修复编译错误时失去了代码渲染功能,于是重新启用了代码块渲染,并且修改了项目文件,添加了新创建的文件,之后多次针对代码不能被正常渲染的问题修改CodeBlockParser文件,比如文字被判断成代码,代码中的注释被判断成文字,Swift代码被识别成Python代码等,多次修改之后Python代码和Swift代码的显示效果都能正常被包含在代码块中,且没有出现误判,Cursor添加的调试信息还是很管用的
12、现在AI对话页面的消息滚动效果没有统一(打开对话时有的对话会滚动到最近一条,有的对话会滚动到中间,有的对话会滚动到底部),询问Cursor目前是不是还有对浏览位置的保存机制(比如再次打开时会跳转到上次浏览的位置)导致滚动效果不统一,Cursor表示目前没有对浏览位置的保存机制,滚动效果不统一的原因可能是因为SwiftUI的渲染机制、动画延迟、消息数量差异等,然后再次修改AIChatView的滚动逻辑,结果是:统一滚动到最新消息、响应消息变化、避免滚动位置不一致、平滑的滚动动画,实际测试仍有部分对话没能直接滚动到底部
13、发现一个新问题,包含搜索结果的回答内容,底部不显示消息来源了,让Cursor检查问题出在哪里,检查发现AIMessage模型中有searchlinks字段,但MessageView缺少了搜索链接显示逻辑,修正之后,再统一了参考链接的显示宽度(是参考链接部分没有继承AI回答内容的宽度限制导致的宽度不一致)
14、AI消息相关的功能现在逐渐增多,接下来想让Cursor把MessageView从AIChatView中拆分出来,Cursor也认为应当拆分,以提升后续的代码可维护性,创建了新的MessageView文件,但又突然创建了脚本,想用脚本修改项目文件,被我叫停了
15、发现Cursor在拆分文件时经常出现类似的问题,在创建新文件后都需要将新文件添加到项目文件里,但有时Cursor会后退一步,不管新建的文件,而是选择在原有文件中恢复原本已拆分出去的功能,或者创建脚本,用脚本去修改项目文件(Cursor会先对项目文件做备份),当然可以叫停,让Cursor直接去修改项目文件
16、今天Cursor的Dashboard统计功能竟然正常了,可以看到从付费到现在的代码修改量,到目前为止已经编辑了50211行代码

发表回复