lvmeng
a257b03b9d
refactor(sampling): 移除注释代码
2026-05-14 14:37:07 +08:00
lvmeng
89fff7c2b0
refactor(ui): 重构采样模式界面和数据处理逻辑
...
- 将 RadioButton 替换为 CheckedTextView 并调整布局结构
- 添加安全索引访问避免数组越界异常
- 优化数据库查询方法增加回调版本
- 更新崩溃处理器重启目标页面
- 添加单按钮对话框支持
- 优化采样模式页面数据加载和刷新逻辑
- 调整重量计算和数据处理流程
- 修复页面跳转和数据传递问题
2026-05-14 14:24:25 +08:00
lvmeng
6392b76ac2
fix(cooking): 解决搜索框内容清除和称重逻辑问题
...
- 在 CookingModeActivity 中添加 clearSearchText 方法用于清除搜索框内容
- 在 FoodListFragment 中添加协程调度器导入并实现空搜索时自动清除功能
- 在 SubmitFoodActivity 中新增初始重量和初始化状态变量
- 修改称重清零逻辑,清零后重置初始重量为 0
- 实现净重计算逻辑,使用秤读数减去初始重量得到实际净重
- 更新重量显示逻辑,使用净重数值进行单位转换和显示
2026-05-14 09:54:56 +08:00
lvmeng and Claude Sonnet 4.6
8398bd4fd3
fix(global): App 启动时恢复本地保存的环境地址
...
- SpTool 新增 baseUrl 属性,统一管理环境地址的持久化读写
- EnvSwitchDialog 改用 SpTool.baseUrl 保存,移除直接调用 SpTool.put
- BaseApp.onCreate 启动时读取 SpTool.baseUrl 并赋值给 GlobalData.appBaseUrl
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-13 18:13:09 +08:00
lvmeng and Claude Sonnet 4.6
535da33aab
refactor(fragment): 改用回调方式查询菜品列表,修复刷新卡死问题
...
- FoodListFragment 改用 searchFoodListWithCallback 替代 SharedFlow collect,
彻底解决下拉/上拉因数据相同导致不触发的问题
- NetViewModel 新增 searchFoodListWithCallback 回调版本
- CookingModeActivity loadFragment 改为 show/hide 方式,切换餐次不重建 Fragment
- 修复数据为空时未调用 finishRefresh 导致加载动画卡死的问题
- 新增 fragment-ktx 依赖,支持 by viewModels()
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-13 17:54:59 +08:00
lvmeng and Claude Sonnet 4.6
120f5432de
refactor(fragment): FoodListFragment 独立持有 NetViewModel
...
每个 FoodListFragment 通过 by viewModels() 持有独立的 NetViewModel 实例,
searchFoodState 各自隔离,不再共享 Activity 的 netViewModel。
- 删除 pendingDinnerType 字段及餐次过滤逻辑
- initObserver 改为收 Fragment 自身的 netViewModel.searchFoodState
- getDishList 直接调 netViewModel.searchFoodList,不再经由 Activity 中转
- CookingModeActivity 删除 getFoodList() 透传方法
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-13 17:24:31 +08:00
lvmeng and Claude Sonnet 4.6
61d11c6a78
fix/feat: 修复数据不稳定弹窗重复弹出 & 新增切换环境功能
...
fix: FoodRecognizeActivity 数据不稳定时弹窗会重复弹出
- 持有 unstableDialog 引用,通过 isShowing 防止重复弹出
feat: 新增切换环境功能(测试/UAT/生产)
- GlobalData 新增 KEY_BASE_URL,修正 UAT 端口为 8083
- SettingActivity 开发模式下显示「切换环境」入口
- 新增 EnvSwitchDialog 及其布局文件
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-13 17:18:30 +08:00
lvmeng and Claude Sonnet 4.6
301f470274
fix(fragment): 修复切换餐次时数据串台问题
...
三个餐次 Fragment 共享同一个 searchFoodState,导致早餐的本地数据会被错误合并到午餐/晚餐列表中。
修复方案:
- 新增 pendingDinnerType 字段记录本次请求对应的餐次
- 响应回来时比对餐次,忽略非本 Fragment 发起的请求结果
- 确保每个 Fragment 只处理自己发起的请求数据
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-13 17:16:34 +08:00
lvmeng and Claude Sonnet 4.6
67d64848de
feat(activity): 搜索菜品直接刷新列表,切换餐次自动清空搜索框
...
- jumpSearch 改为调用 FoodListFragment.getDishList(foodName),不再跳转 FoodSearchActivity
- 切换餐次时清空输入框,用 isClearingByTabSwitch 标志避免重复请求
- 手动清空输入框时自动触发查全部数据
- FoodListFragment.getDishList 新增 foodName 参数,支持按名称过滤
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-13 16:22:46 +08:00
lvmeng
ce7d2da6d8
feat(activity): 优化食材识别重量逻辑,修复主辅材重复保存问题
...
- PrepareFoodActivity:改为以首次秤读数为基准计算净重,注释清零按钮和测试按钮,修复 foodSelectCallback 中 isClicked 赋值对象错误导致选中状态异常的 bug,修复 getGoodsList 重复调用时主辅材累加的问题,向 FoodRecognizeActivity 传递 initialWeight
- FoodRecognizeActivity:启用秤重量监听,改为净重显示;用滑动窗口(最近10帧)替换延迟更新逻辑,关闭页面时从窗口中提取连续稳定值作为 useWeight,数据不稳定时弹窗提示而非直接关闭
- DbViewModel:saveCookFoodAndGoods 首次插入后回填 entity.id,防止重复进入时主辅材重复插入
- InitActivity:注释启动时自动清零秤的逻辑
- SubmitFoodActivity:将魔法数字 0.5 提取为常量 WEIGHT_THRESHOLD
2026-05-13 16:01:28 +08:00
lvmeng
65958bf637
feat(food): 优化食材识别功能并增加调料选择支持
...
- 将页面大小从30调整为100以提高加载效率
- 移除食材名称显示中的原始数据判断逻辑
- 在FoodRecognizeActivity中添加goodsId映射处理
- 修改GoodsItem实体类将goodsId和materId设为可变属性
- 新增oldGoodsId字段用于保存原始商品ID
- 创建新的调料搜索适配器和布局文件
- 更新调料选择对话框中的数据处理逻辑
2026-05-13 11:13:18 +08:00
lvmeng
7e72ce413b
feat(food): 实现食材识别和净材类型功能
...
- 在FoodAdapter中添加选中状态背景和文字颜色变化
- 修改FoodMaterialAdapter显示食材名称时包含净材类型
- 在FoodModule中解析食材名称中的净材类型信息
- 移除食材识别页面的净材类型选择弹窗流程
- 优化食材识别结果处理逻辑和数据映射
- 添加未识别到食材时的提示对话框
- 实现向量采集页面的搜索功能和实时监听
- 优化网络请求的文件上传媒体类型设置
- 调整食材列表项的布局约束和样式配置
2026-05-12 18:15:40 +08:00
lvmeng and Claude Sonnet 4.6
5745791041
feat(activity): 弹窗食材/调料查询使用独立 StateFlow,新增调料列表双布局切换功能
...
- NetViewModel 新增 foodSearchGoodsListState 和 queryFoodSearchGoodsList,与 goodsListState 隔离
- FoodSearchDialog、SeasoningSelectDialog 改用弹窗专用 State,避免影响 FoodRecognizeActivity 列表
- SeasoningWeightAdapter 支持 Grid(4列)/List(2列)双布局模式
- SubmitFoodActivity 添加调料列表布局切换按钮
- FoodModule 变量重命名并添加未初始化保护
- 注释掉 mock 食材数据,调整相关布局边距与文字截断
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-12 15:17:54 +08:00
lvmeng
d412e03c6e
perf(activity): 优化秤数据 StateFlow 重发时的无效遍历,添加 ts 去重跳过未变化帧;ScaleWebSocketServer 改为 trailing 节流并增加数据变化去重
2026-05-12 14:07:22 +08:00
lvmeng and Claude Sonnet 4.6
b6389be898
feat(db): 支持早中晚三餐同一菜品独立保存及调料预填充优化
...
- 修复 getCookFoodById/deleteCookFood/markSubmittedAndDelete 查询条件缺少 dinnerType,
导致同一 foodId 跨餐次保存时误判已存在、主记录和主辅材数据丢失的问题;
查询键由三元组(canteenId+foodId+cookMode)升级为四元组(+dinnerType)
- SamplingModeActivity 构建 FoodRecord 时补充 dinnerType,确保删除操作能精确定位餐次
- SubmitFoodActivity 制作中模式下从数据库加载 goodsList 时预填充调料到 adapter,
isCooking=false 时同样预填充前一页面带入的调料数据
- dm_cook_food 表新增 submitState 字段(DB v13),区分手动删除与接口提交删除
- 提交成功后改用 markSubmittedAndDelete 替代 deleteCookFoodAndGoods,正确置 submitState=1
- InitActivity onDestroy 不再停止秤服务,避免进程存活期间秤数据中断
- GoodsItem.isItemClicked 统一改为 isClicked,PrepareFoodActivity 食材选中逻辑同步更新
- AndroidManifest InitActivity 增加 singleTask 及 configChanges 配置
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-11 18:10:59 +08:00
lvmeng
919e43afba
feat(dialog): 添加调料选择对话框的本地模拟数据功能
...
- 实现 loadMockData 函数用于加载本地模拟调料数据
- 在空布局上添加点击事件监听器,点击时加载模拟数据
- 将原有的 TODO 注释代码转换为正式的模拟数据加载功能
- 优化空布局的初始化逻辑并添加安全调用处理
2026-05-11 15:23:23 +08:00
lvmeng
0b9b3e8988
fix(activity): 修复调料 foodId 为空导致重新打开看不到调料数据
2026-05-11 14:39:12 +08:00
lvmeng
803ae75e40
fix(activity): 修复识图新增食材主辅材类型未显示
...
foodSelectCallback 新增 GoodsItem 时未将 isOriginalData 置为
false,导致 updateMaterialTypes 跳过计算,列表无法显示主辅材
2026-05-11 13:31:24 +08:00
lvmeng
ec4c3f1232
refactor: 提取净材种类弹窗为工具类并统一各页面选择逻辑
...
- 新增 RawMaterialsDialogUtils,包含 showRawMaterialsDialog、
buildSingleChoiceChipGroup、buildMockGoodsList 三个顶层函数
- FoodAdapter/list_item_food 新增净材种类选中结果展示
- VectorCollectionFragment、FoodRecognizeActivity、FoodSearchDialog
的食材点击均改为弹出净材种类单选弹窗后再确认选中
- FoodSearchDialog 空布局补充点击加载测试数据
- setting_border 新增圆角
2026-05-11 12:07:06 +08:00
lvmeng
63911fe432
feat(network): queryGoodsList 入参 goodsNames 改为带净材种类的对象列表
2026-05-11 11:15:27 +08:00
lvmeng
8f15c0efb7
refactor(network): 菜品详情接口改用 DTO 与 Room 实体解耦
2026-05-11 11:10:45 +08:00
lvmeng
879af8426f
feat(fragment): 食材采集页改用 ChipGroup 选择净材并新增列表空布局
2026-05-11 10:20:54 +08:00
lvmeng
dc947df6e3
fix(network): 修复 uploadFoodVectorData 接口 PartMap 类型导致的 Retrofit 解析异常
2026-05-11 10:20:47 +08:00
lvmeng
ef13aa8307
feat(fragment): 新增净材种类选择功能及相关数据结构支持
...
- 新增 rawMaterialsType 字段至 GoodsItem、CookFoodGoodsEntity、SeasoningEntity,DB 升级至 v12
- VectorCollectionFragment 重构食材搜索,点击食材弹出净材种类单选弹窗
- CommonDialog 新增 addContentView 和可拦截确认按钮(setPositiveButtonInterceptable)能力
- Food3Adapter 和 list_item_food3.xml 支持显示已选净材种类副标签
2026-05-09 18:10:07 +08:00
lvmeng
a9663a21f0
style(ui): 调整食物识别页面布局间距和移除测试代码
...
- 调整 activity_food_recognize.xml 中多个组件的 margin 间距
- 移除 FoodRecognizeActivity.kt 中的测试数据相关注释代码
- 为 list_item_food2.xml 添加可点击背景效果
- 清理 PrepareFoodActivity.kt 中的无用导入和调整常量值
- 优化 PrepareFoodActivity.kt 中的条件判断换行格式
2026-05-09 14:45:18 +08:00
lvmeng
d060305417
fix(food): 修复Food类的equals和hashCode方法
...
- 在equals方法中添加version字段比较
- 在hashCode方法中添加version字段哈希计算
- 确保对象比较的一致性
2026-05-09 13:53:00 +08:00
lvmeng
bb319ee4ee
feat(network): 新增菜品向量采集数据上传接口及调用链路
...
- ApiService/RemoteRepository/NetViewModel 新增 uploadFoodVectorData 三层实现,新增 uploadFoodVectorDataBatch 供分批循环调用直接 await 结果
- VectorCollectionFragment 启用 upload() 链路:调用 uploadFoodVectorDataBatch 分批上传,去掉 runBlocking/runOnUiThread,统一在协程主线程更新 UI
- ImageUploader 修正包路径并将 onProgress 改为 suspend lambda
- Food 实体新增 version 字段,同步 ObjectBox model
- SeasoningSelectDialog 切换为真实接口,FoodSearchDialog 注释模拟数据
- 调整删除按钮 drawable 为圆形并对列表 ItemView 增加 tint
2026-05-09 13:51:15 +08:00
lvmeng
bb1ecbde43
feat: 新增 goodsCode 字段并同步迁移 DB v11,修复 IPv6 WebSocket 地址格式,重构 VectorCollectionFragment 相机回调为协程
2026-05-09 10:51:43 +08:00
lvmeng
7a03ab8108
refactor(activity): 统一 cook/submit 中调料数据处理逻辑,先清除 materialType==3 再从 adapter 覆盖写入
2026-05-09 10:51:04 +08:00
lvmeng
3b1dc0a03f
refactor(activity): 统一各入口传 FoodRecord 跳转 PrepareFoodActivity,重构菜品详情加载逻辑
2026-05-08 18:38:14 +08:00
lvmeng
f4d383dfe1
feat(adapter): FoodMaterialAdapter 无重量时 ic_dish_clear 染灰色并将点击转发为 item 选中
2026-05-08 16:12:03 +08:00
lvmeng and Claude Sonnet 4.6
a14072af00
chore: 补充 SCALE_ORDER_1 配置、Weigher2 unInit 修复及调料列表模拟数据
...
- ScaleDeviceConfig:新增 SCALE_ORDER_1 单秤地址列表
- Weigher2:unInit() 补充调用 Weigher.unInit(),确保串口资源正确释放
- SeasoningSelectDialog:getGoodsList 临时改为模拟数据,待联调时切回真实接口
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-08 15:49:35 +08:00
lvmeng and Claude Sonnet 4.6
436de88d73
fix(scale): 修复子设备重启后主设备看不到连接数据的问题,新增清除数据广播功能
...
- ScaleWebSocketClient:引入版本号机制防止 UDP 触发的新连接与指数退避重连任务并发建立两条连接;onFailure/onClosed 改用 remove(key, value) 原子操作,避免旧连接超时回调误删新连接引用
- ScaleWebSocketServer:新增 latestData 为空时延迟 3 秒补推机制,解决子设备刚重启时 WeightUtil 尚无读数导致主设备看不到数据的问题;新增 onClearData 回调处理清除数据事件;stop() 时同步关闭 scheduler
- ScaleEvent:新增 TYPE_CLEAR_DATA 事件类型
- ScaleServiceManager:新增 onClearData 属性和 sendClearData() 方法
- SlaveActivity:监听 onClearData 事件,收到后清空本机数据并重置 SP 状态;启动时预填空占位格子
- SettingActivity/DbViewModel/DbRepository:clearAllTestData 重命名为 clearAllData,清除完成后通知子设备并跳转 HomeActivity
- scale包架构分析.md:同步更新文档
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-08 15:48:59 +08:00
lvmeng and Claude Sonnet 4.6
a0137d6979
feat(db): 新增测试数据清除功能,物理清空全部 4 张表并重置 SP 状态
...
- 各 DAO 新增 deleteAll() 物理清空方法
- DbRepository 新增 clearAllTestData(),按顺序删除食材→菜品→调料→槽位
- DbViewModel 暴露 clearAllTestData(onDone) 供 UI 层调用
- SettingActivity 新增「测试数据清除」入口(隐藏,右上角图标触发显示)
- 清除完成后重置 SpTool.cookMode=-1 和 SpTool.canteenId="0"
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-08 11:58:32 +08:00
lvmeng
c46264a4cf
feat(activity): 新增 canteenId 持久化存储,HomeActivity 切换食堂时同步写入 SpTool 并恢复选中状态
2026-05-08 11:50:22 +08:00
lvmeng
979b93c53d
feat(activity): 统一键盘收起逻辑,新增 RecyclerView 侧滑收起键盘支持
2026-05-08 11:10:13 +08:00
lvmeng
9880f2a5a8
feat(activity): 新增识别添加菜品时自动计算 materialType 逻辑
2026-05-08 10:26:13 +08:00
lvmeng
19b5d721a7
style(layout): 优化布局文件结构和属性配置
...
- 统一调整了 activity_setting.xml 中各个 LinearLayout 的属性顺序
- 为 fragment_seasoning_config.xml 和 fragment_vector_collection.xml
添加了工具忽略属性
- 重新排列了 list_item_scale22_row.xml 和 list_item_scale_row.xml
的命名空间和属性顺序
- 在 list_type_scale1.xml 中调整了组件的布局属性顺序
- 为设置页面添加了数据库查看和秤数据监控功能的可见性控制
- 修复了布局文件中的硬编码文本警告问题
2026-05-08 08:44:42 +08:00
lvmeng
0648f458a7
refactor(fragment): DbInspectFragment 改用嵌套 RecyclerView 展示字段,优化已删除记录视觉样式
2026-05-07 18:13:17 +08:00
lvmeng and Claude Sonnet 4.6
c17402c3c2
feat(fragment): 新增 DbInspectFragment 本地数据库调试查看功能
...
- 新增 DbInspectFragment,支持按表切换(菜品/食材/调料/槽位)查看全量数据
- 分页加载(每页 50 条)+ isDel 过滤开关,避免大数据量时内存占用过高
- 切换 Tab 立即清空旧数据防止闪现,loadMoreDbInspect 加并发保护
- 槽位表字段少无 isDel,切换到该 Tab 时自动隐藏 isDel 相关控件
- 菜品/食材/调料表字段改为每行 3 列紧凑布局,槽位表保持逐行显示
- SettingActivity 新增"数据库查看"入口,复用 SingleFragmentActivity 承载
- 4 个 DAO 新增分页查询及计数方法,DbRepository/DbViewModel 同步扩展
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-07 13:44:03 +08:00
lvmeng and Claude Sonnet 4.6
a64a00e099
refactor(seasoning): 调料数据改用 dm_seasoning 存储并统一逻辑删除
...
- SeasoningSelectDialog/SeasoningSearchAdapter 改用 GoodsItem 替代 SeasoningEntity
- SeasoningConfigFragment 选中调料时同步 upsert 完整信息到 dm_seasoning
- SubmitFoodActivity cook/submit 按 goodsId 查 dm_seasoning 补全调料字段
- SeasoningEntity 删除 @Ignore 的 pageType/isClicked 字段
- GoodsItem.toSeasoningEntity() 补全 materialType/relateionType 等字段映射
- DAO 物理删除改为逻辑删除(isDel=1),getSeasoningByGoodsId 参数改为 String
- AppDatabase version 9→10,删除 dm_cook_food.foodId 唯一索引以支持逻辑删除
- SamplingModeActivity 从 DeviceConfigFragment 返回时刷新本地列表
- ScaleWebSocketClient 修复 scheduler 关闭后重连抛出 RejectedExecutionException
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-07 10:47:32 +08:00
lvmeng
6595c4bde0
feat(dialog): FoodSearchDialog 新增空页面效果及 Window.Callback 手势冲突修复
...
- FoodSearchDialog:adapter 启用 isStateViewEnable,新增 loadEmptyView() 通过 adapter.stateView 展示空视图,替换原 toast 提示;覆写 show() 通过 Window.Callback.dispatchTouchEvent 动态控制 behavior.isDraggable,解决列表滑动与 BottomSheet 拖拽的手势冲突;注释旧 addOnScrollListener 方案保留备查
- SeasoningSelectDialog:同步补齐空页面效果,修复网络错误时也触发 loadEmptyView,优化 Handler 为 View.postDelayed
- FoodRecognizeActivity:修复识别结果回填后列表未显示的问题
- 新增 scale包架构分析.md 文档
2026-05-06 17:35:29 +08:00
lvmeng
2de5ec39b5
refactor(activity): 重构食材识别流程,改由接口查询识别结果,queryGoodsList 改为具名参数
2026-05-06 16:41:35 +08:00
lvmeng and Claude Sonnet 4.6
e5fc0c265d
refactor(entity): 新增 GoodsItem 统一物品数据模型,合并查询接口并迁移 UI 状态字段
...
- 新增 GoodsItem 纯数据类(DTO),整合接口字段与原 CookFoodGoodsEntity @Ignore UI 状态字段
- ApiService/RemoteRepository/NetViewModel 合并 queryGoodsList 与 querySeasoningList 为统一接口
- GoodsInfoSearchAdapter/FoodSearchAdapter/DishPartAdapter 实体类改为 GoodsItem
- FoodSearchDialog/FoodRecognizeDialog/FoodRecognizeActivity/VectorCollectionFragment 改用 GoodsItem
- PrepareFoodActivity.list 改为 GoodsItem,loadDishDetail 加 toGoodsItem() 转换,采集模式传 SubmitFoodActivity 前转回 CookFoodGoodsEntity
- CookFoodGoodsEntity 删除所有 @Ignore 字段,新增 toGoodsItem() 转换方法
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 15:00:32 +08:00
lvmeng
05063ee9de
refactor(ui): 更新布局样式和清理无用代码
...
- 将活动主秤页面背景从颜色改为 drawable 背景
- 调整主秤页面标题的内边距、文字颜色和去除外边距
- 修改返回按钮尺寸并调整内边距为水平方向
- 更新设置页面三个组件的背景 drawable 样式
- 删除 ApiService 中大量注释掉的无用 API 接口代码
- 移除 CommonDialog 中不必要的导入和完整包名引用
- 清理 DataBean 中多个无用的数据类定义
- 新增白色带灰色边框圆角背景 drawable 资源
2026-05-06 11:13:42 +08:00
lvmeng and Claude Sonnet 4.6
af737b910c
fix(scale): 修复 UdpBroadcastSender 启动时 IP 为空导致广播失效
...
- UdpBroadcastSender 改为接收 ipProvider 函数替代静态 localIp 参数,每次广播时动态获取 IP
- IP 为空时跳过本次广播并等待下一周期重试,避免设备启动时网络未就绪导致广播携带空 IP
- ScaleServiceManager 更新调用方式,传入 lambda 动态获取 IP
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 10:01:26 +08:00
lvmeng and Claude Sonnet 4.6
12c6b5cf94
fix(adapter): 修复 ScaleRowAdapter 点击事件偶发失效,改用同步更新替代 submitList
...
- 新增 updateItem / updateName / removeByAddress 同步更新方法,使用 set/add/removeAt 直接触发 notifyItemChanged
- 新增 onItemClick lambda 属性,点击时通过 bindingAdapterPosition 取最新数据
- SlaveActivity 中所有 submitList 调用替换为对应同步方法,消除 AsyncListDiffer 异步窗口期导致的点击丢失
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-06 10:01:19 +08:00
lvmeng
e990652981
fix(scale): 修复子设备断线后重连慢及连接状态竞态问题
...
- onDeviceDisconnected 时同步清除 UDP 缓存,使子设备 5s 内即可重连,不再等待指数退避
- ScaleWebSocketServer 用 connectionCount 计数器替代 connections.isNullOrEmpty(),消除 onClose 竞态导致子设备 UI 状态不更新的问题
2026-05-06 09:03:40 +08:00
lvmeng
9cfc481cf3
fix(activity): 修复采样页越界崩溃、重复路由及搜索返回清空输入框问题
2026-04-30 15:42:44 +08:00
lvmeng and Claude Sonnet 4.6
5e46c21469
fix(ui): 修复空态视图贴顶及刷新动画无法关闭问题
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-30 11:40:05 +08:00