### 发生了什么?/ What happened? 1.连接redis,打开该数据库,点击刷新按钮会崩溃; 2.永远只能看到db0; ### 如何复现?/ How can we reproduce it? 按我说的步骤复现率百分百; ### 版本与系统 / Version and system windows11 /Navop 0.20.3以及之前版本 ### 截图、日志或其他信息 / Screenshots, logs, or anything else _No response_
Activity
fix(redis): 刷新已加载库闪退(#424)
feigeCode commentedon Oct 19, 2026
两个症状分别说明:
1. 点击刷新按钮闪退 —— 已定位并修复(dev 分支
2aad25a7d)。根因:树行内的加载中/错误图标是条件插入的元素,刷新时它们的出现/消失改变了相邻文本元素的位置编号,导致布局缓存对不上号,渲染层拿到未测量的文本布局直接崩溃。修复后这些文本容器使用稳定标识,不再漂移。已加回归测试覆盖「打开数据库 → 点刷新」完整路径。
2. 永远只能看到 db0 —— 这是当前设计:连接节点下只挂当前选中的库,切换库的入口是连接行右侧的 db0 下拉按钮(点开可列出 db0-db15 及各自键数)。不是 bug。
如果你的环境是 Redis Cluster,集群确实只有 db0,无法切换其他库。
闪退修复会随下个版本发布。如果切库按钮不好找,欢迎再反馈,我们会考虑改进入口的可见性。
feigeCode commentedon Oct 28, 2026
闪退问题已在 dev 修复(提交
2aad25a7d),首次随 v0.20.4(2026-10-20)发布,v0.22.0 也包含;本单可以关闭。根因:树行右侧的加载中 spinner / 错误图标是按条件插入的无 id 子元素,它们的出现与否会改变后续兄弟元素的位置序号;gpui-fast 的布局 key 由「路径 + 位置序号」派生,序号一漂移,计数/徽章文本元素的 key 就帧间变化,测量保留缓存对不上号,prepaint 拿到未测量布局直接 panic(release panic=abort → 整进程退出)。所以是"点刷新必崩",而不是数据问题。
修复:给行内动态文本容器(类型徽章 / 名称 / 键计数)加稳定 id,不随兄弟元素的条件插入漂移。这与 #410 的行级 node_id 修复同族:那次修行 id,这次修行内元素 id。
验证:新增
refreshing_a_loaded_database_does_not_crash,走「打开数据库 → 点刷新」完整路径。另:连接下只看得到 db0 是当前设计——切库入口在连接行右侧的 db0 下拉按钮,点开可列 db0-db15;Redis Cluster 本身只有 db0,无法切库。如果这个入口不好找,可以另开一单提可见性改进。