mynote mobile
- E:\uninote\mynote-mobile
- codex://threads/01a0e1c3-2909-74b0-918b-a569f17c2f0d
flutter
- codex://threads/01a0e0d3-4c80-7b10-84e3-ec3c8e50014a
- codex://threads/01a0e17b-a100-7371-b81c-e58df73685e9
- codex://threads/01a0deb3-6b89-75d0-bb79-d62ed461ae17
flutter clean
flutter pub get
重新构建 Windows
flutter --version
flutter doctor
adb version
sdkmanager --sdk_root=D:\Android\Sdk "system-images;android-35;default;x86_64"
avdmanager create avd -n t1 -k "system-images;android-35;default;x86_64"
-
flutter build apk --release
build\app\outputs\flutter-apk\
flutter_api35
flutter build apk --release ; adb -s emulator-5554 install -r build\app\outputs\flutter-apk\app-release.apk
flutter build apk --release ; adb -s 4ZU0225916013604 install -r build\app\outputs\flutter-apk\app-release.apk
# xiaomi
flutter build apk --release ; adb -s 9e76c53d install -r build\app\outputs\flutter-apk\app-release.apk
flutter debug
- codex://threads/01a0e6f2-4954-7430-a77f-519da2a61866
flutter build apk --release 在 Gradle 启动阶段失败,报错为 Unable to establish loopback connection
- codex://threads/01a0f119-c0b7-7d52-8474-1b9dad9f1570
- Completion Workflow
如何在模拟器测试刚才创建的 app-release.apk
codex://threads/01a0e0d3-4c80-7b10-84e3-ec3c8e50014a
flutter emulators
flutter emulators --launch flutter_api35
flutter emulators --launch t1
adb devices
adb install -r "build\app\outputs\flutter-apk\app-release.apk"
# 卡死、重启
https://chat.deepseek.com/a/chat/s/c19dc65f-9d4f-4cd7-b42b-d5d49cc110de
flutter clean
flutter pub get
flutter build apk --release
PS E:\uninote\mynote-mobile> cp "build\app\outputs\flutter-apk\app-release.apk" x:\fe\tmp
日志 log
日志用bash解决乱码问题:
- adb logcat -v time |grep mynote.tree
前后导航支持
- codex://threads/01a0e6fa-90b0-78e2-bd8e-f1229c6544ef
- UI 规范
- 再次打开时恢复上次滚动的位置
- 编辑 & 预览 & 大纲
崩溃后无法build cpu 频率限制
- codex://threads/01a0e672-5e9b-7061-9215-b805d413b819
- 关闭了隐藏的 CPU 睿频并限制到 99%
- ~/.gradle 文件夹内部有损坏
- X:\all2\bat\cpu-limit.bat
迁移日志
- 集中在 2026-9-27 - 2026-9-28,查看 codex sessions
- X:\fe\tmp2
文件筛选与差异 && 文件树差异 迁移
- 不需要迁移 git head 比较
- codex://threads/01a0e7c4-1da6-70e3-aff3-69c1cf9b2e0f
将打开文件筛选的那个按钮也放一个到大纲按钮左边。
- codex://threads/01a0fccf-dd6b-78d2-9ed4-81cfb6f7c5e2
- 筛选后要重新计算差异
预览页面的差异高亮:参考 pc 版本当前行高亮算法计算对应的预览页部分
- codex://threads/01a0f13d-6289-7ac0-b110-f57744844184
性能优化
mobile 优化尝试
2b0d4a5..34a711d 尝试失败,先放放,1s时间还是可以接受
-
git status 优化 供参考,有问题
-
相当于是要优化每次 git status 的计算量,缓存当前文件大小以及修改时间。是否和 mynote HEAD 对应的内容相等
-
这样就可以优化为,首先 status 显示有差异的文件肯定是要全部进行比较的,然后根据用户指定的时间拿到的版本,如果是最后一个更改的版本,则不需要读取和比较。
启动优化
- codex://threads/01a0ef8d-cef0-7062-a3e4-aece02f64f41
- 避免网络请求、全文件扫描
misc todo --
- 再按一次返回主界面,以及提示。
- 桌面端可以启动本地服务作为服务器然后手机就可以同步到电脑上。
- 差异视图大纲不能定位。 1
- codex://threads/01a0ef76-c6ab-7553-9f32-ad55fc02eec2
横屏全屏
- codex://threads/01a0ef7c-ba96-7591-ab1c-86005ce9c0d0
- codex://threads/01a0f2ef-0677-7781-94ea-31ee5571ad6e
- 全屏模式下,大纲弹窗和文件选择弹窗的高度占满屏幕的高度。
- 收藏夹、搜索框同样处理
自动同步
- codex://threads/01a0ef80-7c2c-7f53-9b43-8780256afc59
- 同步时只锁定不能编辑,增删文件,其他操作要放开
收藏与同步
- 5.5 收藏夹
- codex://threads/01a0ef9b-b585-7ad0-bf9f-31d6d4ba62d9
- 除了失效收藏整理都迁移了
切换大纲收藏
-
预览界面,每个大纲后面加一个五角星的收藏按钮,可以直接切换大纲收藏。
-
下拉菜单,收藏下面再加一个大纲收藏切换菜单项
-
大纲收藏:用户收藏、取消收藏先保留在本机,不要同步调用接口,现在断网后反应很慢;其他需要同步的数据也是如此处理
- codex://threads/01a0f04f-4f9d-7e13-83f6-40fd5e879581
收藏卡顿优化
分析有哪些操作会等待网络请求造成卡顿?
文件树差异视图支持双指缩放
- 缩放值共享:调整一个,其他跟着调整。
- codex://threads/01a0ef9c-c495-7613-b6a1-6a4de1d4cdc9
- “当前差异”页面、“文件树差异”页面都支持
标签优化
-
codex://threads/01a0f153-6690-7c51-894d-c58772b78549
-
codex://threads/01a0f19d-aa9c-7572-83c2-3f031fc474b1
-
标签列表加入一个固定按钮,点击后固定、取消固定此标签。
- 固定的标签在列表置顶
-
现有的每个标签单独展示的方案改为只展示一个标签项。这个标签的宽度固定大概能展示到 8 个字符即可,单击这个标签则展示标签列表。
- 点击标签的×按钮,则关闭当前标签,显式下一个标签(从标签列表中选一个非固定的)
-
固定的标签依次展示到这个标签的右侧。然后提供一个解除固定的按钮。
-
标签的按钮尽可能少占据空间:保证固定标签能尽可能多的展示。
- 固定标签只取文件名的第一个字符
- 固定按钮平时都隐藏,只有当点击按钮时才在标签的下方显示一个浮动的固定按钮,点击页面任何一个地方隐藏此按钮。
- 按钮内外间距也缩小
- 普通标签页长按快捷固定当前页;固定标签页长按快捷取消固定
变更:
- 点击不再显示固定按钮,直接固定、取消固定即可。长按还是按照之前的显示tooltip。
- 切换标签后,通过Toast显示一下文件名、路径。
最终:标签上的单击事件不需要等待双击事件的判定,直接响应,要不然显得很卡顿,你有更好的建议没?
- 普通标签页长按改为切换标签,固定标签保持不动。 ==
界面布局优化
- codex://threads/01a0f261-2af2-7742-b8de-61d6653b542f
- codex://threads/01a0f216-2934-7b31-9436-ebc32192f3e1
- 这里三个按钮改为图标的形式,不要文字(放toast中)。保存按钮的“保存”文字一样处理。
- 最左侧的“编辑并显示差异”,去掉这个按钮。仅保留“编辑”。 改为在下拉菜单当中增加一个选项。当选中编辑时,这个选项可用。默认不选择,就不显示差异。
- 按钮的内边距统一为 0.5em
垂直紧凑,手动调整 + cc:0036782...4d8c5ee
移植pc同步中心,将这些也放进去
- codex://threads/01a0f140-2541-7bb1-9b50-d4f29de0e108
- 顶部“刷新远端列表”按钮应该放在远端笔记库旁边,左侧弹出层和同步中心都应该要加上。
- 左侧弹出层的按钮和仓库名合并成一个,不需要按钮了,直接点击仓库名就展开弹出层。
- 顶部按钮,按钮间距也缩小。
line diff 测试数据解析:
- codex://threads/01a0f7f6-c49a-7373-a352-ef373bf4df67
- save 另存历史版本
- test\data\line-diffs.txt
- 这个文件包含长文本测试数据,每一条用例用<=======================>分隔
- 每一条用例分三段,每一段用这个<----------------------->分隔。
- 其中前两段是用于做差异比较的文本,第3段是差异比较的预期输出结果。
- 将这个测试用例加入到现有的测试用例中,并调整现有的算法以匹配这个预期结果。
- 每行以<====//开头的是注释
expected diff 生成,再手动调整
$ git diff --no-index 5.txt 6.txt
# or
$ diff 5.txt 6.txt
差异视图可以将前面的加减号省略了,因为已经有颜色表示了。
codex://threads/01a0f9d3-9038-75e0-81ed-cfeba8031acf
状态记录与恢复:
- codex://threads/01a0fcb4-931e-7d71-a67b-af3e071decaa
- 编辑按钮的显示编辑差异的这个选项改成一个按钮。切换是否两种状态。
- 这个状态还是同文章绑定,并且需要记录状态,重启后恢复。参考 PC 版本。
- 预览界面也可以切换这个选项
- 上次打开的仓库也需要重启后恢复
预览、差异视图也要语法高亮
- 简单版本:只需要 h1 - h6 高亮,颜色同编辑界面
- codex://threads/01a1063c-2b3a-7b40-a855-448a51e9c23f
迁移pc版语法高亮
- codex://threads/01a10514-754f-7172-a420-0aec9e2909cc
- 用的这个:https://pub.dev/packages/re_highlight,没有更新了,安装包也增大了 8m 左右(66-74)。
布局优化调整
- 左边这个。。。按钮,当有遮挡下方时,改变渐变透明背景色,以提示用户下方可以拖动

mp3 player
- codex://threads/01a10726-1525-7301-bb5f-2cf0b6ff3765
- MP3 播放器
- 迁移这个 web MP3 播放器项目的功能。
- 项目地址:E:\projects\mp3player
- 入口文件:mp3player.htm
- 线上访问:http://mp3.uninote.com.cn/mp3player.htm?dir=2

- 菜单加一个入口,进入独立页面
- 支持蓝牙耳机播放控制
- 当开启"单击正文控制播放"时,双击/长按就不要选择文本;改为双指、多指长按可以选择文本。
- 回退可以跨越当前 MP3,比如回退 5 秒,但当前处在第 2 秒,则回退到上一个 mp3 的倒数第 3 秒;类似的也可以前进到下个 mp3。
支持的手势:
| 手势 | 开启“单击正文控制播放” | 关闭时 |
|---|---|---|
| 单指单击正文 | 播放/暂停;有选区时先清除选区 | 不控制播放 |
| 单指双击正文上半区 | 后退指定秒数,不选字 | 仍执行后退 |
| 单指双击正文下半区 | 前进指定秒数,不选字 | 仍执行前进 |
| 单指长按正文 | 不选字、不控制播放 | 原生文本选择 |
| 双指或多指长按 | 选择首个手指位置的词,显示复制菜单 | 未额外定义多指操作 |
| 上下滑动正文 | 滚动阅读,不控制播放 | 相同 |
| 拖动选区手柄 | 调整文本选区 | 相同 |
| 点击或拖动进度条 | 定位当前 MP3 的播放位置 | 相同 |
新增手势:左滑 上一首;右滑 下一首 -- 正文横滑切曲方案
快速甩动 https://chat.deepseek.com/a/chat/s/bb194887-d14b-4c3b-8f92-8cb5febf2821
建议采用“**正文横滑,松手切曲**”:
- **方向按你的设定**:左滑上一首,右滑下一首。
- **只在正文区域生效**:单指且没有文本选区时识别;多指、选区手柄和进度条不触发切曲。
- **先判断方向**:水平位移明显大于垂直位移(建议至少 1.5 倍)才识别,避免上下阅读时误切曲。
- **留出触发距离**:建议正文宽度的 20%,最小 60、最大 100 dp;不足距离松手就取消。第一版先不加“快速甩动”规则。
- **给轻量反馈**:达到阈值时显示小箭头和“上一首/下一首”,轻振一次;松手后切曲,不让整段正文跟着移动。
- **一次滑动只切一首**:加载期间不再接收切曲,切换后保持原来的播放或暂停状态。
到列表边界时,列表循环模式首尾相接;其他模式提示“已经是第一首/最后一首”,避免重新加载当前曲目。
录音
- codex://threads/01a107cf-92f3-7303-86ce-164d699f4423
- 录音支持,添加一个录音按钮(相机左边),点击后录入用户的语音,就像微信的语音聊天一样,录音以附件的形式存储,同样支持云同步。
- 显示完整语音条,要包括倍速设置、可拖进度,倍速设置全局设定,重启恢复
- 可以暂停,点击暂停就暂停录音。
进度、多音频播放、共享播放
- codex://threads/01a11134-ad5f-7fb1-9c57-9db9292c3164
- 切换播放进度接续
根因是分段 M4A 缺少跳转索引,导致时长错误、无法续播。现在生成带索引的临时播放副本,原附件不变。模拟器验证 A→B→A 后,A 从之前的 1.706 秒续播。
语音识别、豆包语音转文字
- codex://threads/01a107e2-bc3b-79d0-b44c-567d2cb25622
- 在操作菜单加一个语音转文字的批量转换功能,点击后将当前文件的所有语音批量调用语音转文字功能。
- 批量转换期间禁止编辑,加一个进度提示界面
- 命名规则换成日期、时间、时分秒。如果文件已经存在,则后面再加-2/3...
- 格式:20260909-170901
- appid:6154746676
- Access Token:l6bpYPpHBtFEwfwfkXhQkZ5YhTc4eTN_
- 重复插入 codex://threads/01a110b4-9a3b-7300-a55d-6db27975ae7e
实时语音转录
- https://console.volcengine.com/speech/service/10038?AppID=6154746676&opt=create
- 4.5¥/h https://www.doubao.com/chat/38445519378625282
拍照插入图片优化
- codex://threads/01a10a21-e5ca-7d62-b1ca-40e9ecaa37ab
- 编辑器拍照插入图片 相机 camera
- 照片的命名规则是什么?是用的哈希值吗?
- 命名规则换成日期、时间、时分秒。如果文件已经存在,则后面再加-2/3...
- 格式:20260909-170901
- 文件名在插入时就确定下来,这样就不用等待后台图片转换完成也不用锁定笔记,可以继续编辑。
- 取消图片转换完成后的提示。改为在插入界面提示文案追加: 未完成格式转换的将在后台转换
======================= 上面的是已完成的
less todo
悬浮菜单,拖动识别手势
- 添加一个悬浮菜单,平时折叠起来,点击后垂直展开,可以拖动。
迁移pc功能:错别字修改
misc todo
写死的修改:
final _endpoint = TextEditingController(text: 'https://192.168.0.223:8787');
final _email = TextEditingController(text: '28488238@qq.com');
final _password = TextEditingController(text: 'qwer0987qw');
搜索优化
规范差异:两种。
详细差异视图 差异高亮选项 统一代码注释,变量命名,文档等各个环节。
优化
关闭全部文件 新建按钮放下方菜单,“移动或重命名”前
自查代码
。一、根据最近的修改,看看有没有什么可以进行的关联修改。二、根据最新的规范检查。三,先把检查范围限定在首页的编辑、预览、差异三种视图核心功能。 先给方案,记录到新文档中
msic
- 招聘爬虫。
- 各种demo全集。
- 各种自动化测试。
- MP 3player移植。
- 编辑预览的缩放比例没有重启后恢复。
- 自查代码根据文档。
- 编辑页开启只读模式则点击不会弹出软键盘,双击才进入编辑模式。
- 微信聊天机器人总结聊天记录。
misc
标签列表展开后的关闭按钮需要点击两次才能关闭一个标签。
点击查看大图支持双指缩放
移动端。设置中心。图片设置语音识别设置放一起。 退出登录也放设置里面。
预览,fenced code 文件路径含有空格时展示不全:X:\project\Visual Studio Projects\FindHelper\FindHelper\SelForm.cs

同步效率优化,参考 pc 版本
tmptest
录音插入后播放:6秒长的语音,进度条只有1秒

现在左侧文件树的刷新,有时候会自动刷,有时候又不会。这个机制是怎样的?描述一下。更新到文档中
- codex://threads/01a111bc-5124-7191-85bf-a97d88676994
