Fix cannot search item name in terminal overlay 修复终端浮窗内无法搜索物品名称的问题 - #4688
Conversation
代码审查摘要 — PR #4688操作: opened (webhook 自动审查) 🔍 问题背景与修复方案修复前: 🔴 关键
|
| 声称 | 状态 | 对应文件 |
|---|---|---|
| 修复终端浮窗内无法搜索物品名称 | ✅ | TerminalRemoteOverlay(新增 syncFullContents/syncFullPage/applyClientFilter/isPlainTextSearch/trimContentCache,~150 行) |
| 客户端按本地化名称二次过滤 | ✅ | applyClientFilter 与 StorageScreen.applySearchFilter 一致 |
| 服务端只处理 @/# 前缀 | ✅ | StorageServerStub.terminalReorder + createOrder(注释说明) |
🧪 测试建议
| 被测目标 | 推荐测试场景 | 优先级 |
|---|---|---|
syncFullContents/syncFullPage |
大存储(>256 槽)分页正确性、中途失败降级、搜索词变更竞态 | 🔴 |
applyClientFilter |
CJK 名称、idPath 匹配、@/# 前缀不进入、strip/大小写边界 | 🟡 |
transferMaterialExact 回滚 |
材料不足、view 为 null、存储部分已取回滚 | 🟢 |
结论: COMMENT — 修复方向与实现正确(补齐了 StorageScreen 有而浮窗缺失的客户端过滤链路),核心状态机设计周到。但有两处值得修复后再合并:失败分支不清空缓存导致降级态可能长期空白(🔴1)、大存储全量同步无节流(🔴2)。另建议将无关的 view != null 移除改动拆分或补注释(
由 Hermes Agent 审查
|
💾 Self-improvement review: Patched SKILL.md in skill 'github-webhook-pr-review' (1 replacement). |
|
分析全部完成。综合各疑点,这是 PR #4688 修复方向正确:overlay(悬停浮窗)走的是 RPC 远程排序(服务端无客户端语言环境,普通文本搜索无法按本地化名过滤),此前 overlay 只展示服务端原始排序导致中文名搜索失效;GUI 早有客户端二次过滤。修复方案是在客户端拉全量内容缓存后二次过滤。这与此前 #4682/#4680 存储界面重构引入的 RPC 架构一致。 关键发现( 代码审查摘要 — PR #4688操作: 🔴 关键问题
|
|
💾 Self-improvement review: Patched SKILL.md in skill 'anvilcraft-storage-system-review' (1 replacement). |
代码审查摘要 — PR #4688操作: synchronize 概览修复终端浮窗内普通文本搜索无法过滤物品的问题。根因: 审查依据(交叉验证)
🔴 关键问题
|
| 声称 | 状态 | 对应文件 |
|---|---|---|
| 修复浮窗无法按物品名称搜索 | ✅ | TerminalRemoteOverlay (全量同步+客户端过滤), StorageServerStub (注释同步) |
| 客户端二次过滤与 StorageScreen 一致 | ✅ | applyClientFilter vs StorageScreen.applySearchFilter |
| 服务端 sync 页大小对齐 | ✅ | FULL_SYNC_PAGE=256 vs MAX_SYNC_SLOTS=256 |
结论: COMMENT(倾向 APPROVE) — 修复方向正确、机制完整、边界处理周到;关键问题仅为可延迟到后续优化的刷新时序(非数据损坏/崩溃类),建议合并前补一个可见页同步的兜底调用,若确认无实际触发路径可忽略。
🧪 测试建议
| 被测目标 | 推荐测试场景 | 优先级 |
|---|---|---|
TerminalRemoteOverlay.refresh() 普通文本分支 |
搜索词逐字输入时浮窗内容跟随过滤、无闪烁/重复请求;切回 @/#/空搜索立即恢复 |
🔴 |
全量分页 syncFullPage |
>256 槽位存储触发多页;中途切走/切换搜索词不残留 stale 内容;页预算暂停后下周期续拉完整 | 🔴 |
trimContentCache |
排序变化时保留交集、移除已消失槽位;内容缓存与 baseOrder 对齐 | 🟡 |
| 失败退避 | sync 失败后降级为未过滤展示,退避结束自动恢复过滤 | 🟡 |
applyClientFilter |
中文/大小写/含空格搜索词;id path 与 hover name 混合命中 | 🟡 |
由 Hermes Agent 审查
|
💾 Self-improvement review: Patched references/pr4688-overlay-search-sync.md in skill 'anvilcraft-storage-system-review' (1 replacement). · Patched SKILL.md in skill 'anvilcraft-storage-system-review' (1 replacement). |
代码审查摘要 — PR #4688操作: synchronize(第 3 版提交,相对基础分支 2 文件 / +217 −29) 问题背景终端浮窗( 设计亮点
|
| 声称 | 状态 | 对应文件 |
|---|---|---|
| 修复终端浮窗无法按物品名搜索 | ✅ | TerminalRemoteOverlay (客户端过滤+全量同步), StorageServerStub (注释) |
结论: APPROVE — 设计合理、边界覆盖完整(失败退避、重排 replan、悬停切换、页预算暂停),无阻塞性问题。建议修复项均低风险,可在后续迭代处理。注意:3 个 commit 都是 "fix: fix bugs",建议 squash 合并。
由 Hermes Agent 审查
|
💾 Self-improvement review: Patched references/pr4688-overlay-search-sync.md in skill 'anvilcraft-storage-system-review' (1 replacement). · Patched SKILL.md in skill 'anvilcraft-storage-system-review' (1 replacement). |
|
PR #4688 状态为 closed。根据审查约束第 1 条(closed/labeled 操作 → 停止,不发布评论),本次不执行 diff 下载与审查,也不输出任何评论内容。 无需进一步操作。 |
代码审查摘要 — PR #4688操作: ready_for_review 📋 概述PR 修复终端浮窗(TerminalRemoteOverlay)悬停时搜索物品名称无效的问题。根因与修复路径清晰:StorageScreen 的普通文本搜索走"服务端返回全量排序 + 客户端 3 个 commit 均为本 PR 分支内迭代( 🔍 正确性核查服务端
客户端分页全量同步 + 二次过滤(TerminalRemoteOverlay.java) — 多页批处理状态机,逐路径推演:
|
| 声称 | 状态 | 对应实现 |
|---|---|---|
| 修复终端浮窗内无法按名称搜索物品 | ✅ | TerminalRemoteOverlay:syncFullContents/syncFullPage/applyClientFilter + StorageServerStub 注释说明客户端过滤职责 |
🧪 测试建议
| 被测目标 | 推荐测试场景 | 优先级 |
|---|---|---|
syncFullContents/syncFullPage |
槽位数 > 256(跨多页)、页预算暂停后下一周期续拉、排序/搜索词在批处理中变化触发 replan | 🔴 |
applyClientFilter |
中文/英文显示名匹配、@/# 前缀搜索不进入客户端过滤、id path 匹配 | 🔴 |
applyServerOrder 退避降级 |
sync 失败后按服务端排序展示、退避结束自动恢复过滤 | 🟡 |
sync 空槽/越界 |
missing 列表为空、槽位越界(服务端跳过) | 🟢 |
trimContentCache |
排序变化后缓存交集保留、移除已不在 baseOrder 的槽 | 🟢 |
transferMaterialExact |
材料不足回滚时存储部分放回(验证判空移除无回归) | 🟢 |
结论: APPROVE — 核心修复(客户端本地化名称二次过滤)逻辑正确且与既有 StorageScreen 路径对齐;唯一行为变更(view 判空移除)经代码路径审计确认安全,注释说明了不变式。提交历史中的 "fix: fix bugs" 命名建议清理(非阻塞)。
由 Hermes Agent 审查
|
💾 Self-improvement review: Patched SKILL.md in skill 'github-webhook-pr-review' (1 replacement). |
No description provided.