Skip to content

fix(completion): keep WSL command menus stable and accept editor queries - #504

Merged
Kuddev merged 1 commit into
mainfrom
fix/wsl-completion-input-20261007
Oct 6, 2026
Merged

Kuddev merged 1 commit into
mainfrom
fix/wsl-completion-input-20261007

Conversation

@Kuddev

@Kuddev Kuddev commented Oct 6, 2026

Copy link
Copy Markdown
Owner

Result / 用户结果

修复 WSL 中命令补齐菜单消失,以及 Tab / Enter 在编辑器查询期间延迟或不生效的问题。真实 Debian Bash 环境中复现,再验证修复;不把终端历史中的原生补全询问当作唯一根因。

Design / 设计边界

  • POSIX 私有编辑器查询发送约定的 VT 字节,避免 ConPTY 将物理 F24 翻译丢失;PowerShell 保留现有原生修饰键组合。
  • 待处理补齐任务保存输入身份。目录缓存更新但输入、环境、目录、光标和编辑器代际未变时,保留可用菜单;真正的输入/上下文变化仍立即清空旧候选。
  • 按候选值保留选中项,不依赖可能因刷新而错位的索引;已有命令候选可接受时,不再等附加目录来源完成。
  • 不改变配置格式或普通键盘编码,不新增依赖、轮询线程、同步目录扫描或自动命令执行。
  • 因果记录:architecture/notes/nebula_app/gpui_shell/terminal/view/2026-10-07-completion-query-ownership.md。

Evidence / 验证依据

  • 修复前:真实 WSL 编辑器已就绪,但 Win32 输入模式下私有查询没有回执。
  • 仅修正查询后:原有 7 个原生场景通过;新增 c 前缀场景仍复现菜单消失,记录为输入 c、光标锚点未变、候选数归零且重算任务仍存在。
  • 完整修复后:7 项编辑器状态测试通过;9 个真实 WSL 场景通过,包括列表/混合模式 c 前缀菜单持续绘制 1.5 秒后 Enter 仅补入 cd、三种模式即时 Tab、行中 Unicode 编辑及 Escape。
  • 原生验收运行在独立桌面,使用配套 ConPTY,未切换桌面、注入全局键盘事件或操作用户原有终端输入。
  • 以上运行验证来自 2.1.2 候选分支;本 PR 的五个改动源文件与已测候选逐文件一致。当前 main 上的完整 CI 仍需通过后才合并。
  • 当前 main 架构检查和平台条件预算检查通过,预算没有提高。
  • 热路径:查询上下文仅在真正重算时分配,缓存命中的绘制不增加该分配;仅保留当前任务身份,不额外启动扫描或增加后台线程。未宣称新的通用耗时/内存基准。

Required Review / 必须确认

  • 遵循贡献、架构与工程约束。
  • 保持单一候选规则和任务生命周期归属。
  • 架构与平台预算检查通过,未放宽门禁。
  • 回归覆盖可用结果、取消、过期结果、原生输入与上下文变化。
  • 无新增 UI 文案、依赖或持久化迁移。

@github-actions github-actions Bot added the size/M 101–500 行 label Oct 6, 2026

@Kuddev Kuddev left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

已逐项审阅本 PR 的输入字节、异步刷新和候选接受逻辑:

  • POSIX 查询不再经过原生 F24 转译,PowerShell 编码路径未改;不是取消原生输入验证。
  • 保留菜单只限同一环境、目录、输入、光标、模式、语法和编辑器代际;新输入及过期任务仍失效。
  • 刷新按候选值保留选择,不以旧索引选择新命令;仅编辑输入,不自动执行命令。
  • 没有新增依赖、后台轮询、同步目录扫描或广告内容。
  • 真实 Debian WSL 已完成 9 个原生场景,含此前稳定失败的 c 前缀菜单;7 项编辑器状态测试通过。

当前完整 Linux CI 首次仅一项既有会话符号链接探针失败,相关生产和测试文件与 main 相同,已单独重跑失败任务。保留原断言与全部选中测试,等必需检查通过后再正常合并。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/M 101–500 行

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant