Skip to content

修复 tui v3 输入框被菜单状态卡住#649

Open
YangChen-pro wants to merge 1 commit into
lsdefine:mainfrom
YangChen-pro:fix/tui-v3-input-freeze
Open

修复 tui v3 输入框被菜单状态卡住#649
YangChen-pro wants to merge 1 commit into
lsdefine:mainfrom
YangChen-pro:fix/tui-v3-input-freeze

Conversation

@YangChen-pro

Copy link
Copy Markdown
Contributor

变更说明

  • 打开新菜单前先清理遗留菜单状态,避免旧模态状态泄漏。
  • 菜单过滤初始化失败时自动关闭菜单并重绘,避免输入通道被阻塞。
  • 增加菜单状态健康检查,在按键入口发现坏状态时自动关闭菜单,让当前字符回到普通输入框。

验证

  • python3 -m py_compile frontends/tui_v3.py
  • inline smoke:覆盖长运行状态输入、排队输入、坏菜单态自愈和正常 filterable 菜单行为。

Copilot AI review requested due to automatic review settings June 28, 2026 12:05

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

该 PR 针对 TUI v3 中“输入框被菜单模态状态卡住”的问题,增加了菜单状态清理、初始化失败兜底与按键入口健康检查,确保菜单坏状态不会继续拦截输入,从而恢复正常输入体验。

Changes:

  • 在打开新菜单前主动清理可能遗留的旧菜单模态状态,避免状态泄漏。
  • 菜单过滤初始化失败时自动关闭菜单并重绘,避免输入通道被阻塞。
  • 在按键入口增加菜单状态健康检查,发现坏状态时自动关闭菜单,让当前字符回到普通输入框。

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread frontends/tui_v3.py
Comment on lines +2845 to +2851
try:
self._menu_apply_filter() # 设 _menu_options + _menu_map(初始 query 为空 → 全量)
except Exception:
# Defensive fallback: malformed menu data must not block typing.
self._close_menu()
self._render_live()
return
Comment thread frontends/tui_v3.py
Comment on lines 5575 to 5579
for ch in text:
if self._menu_active and not self._menu_state_ok():
self._close_menu()
self._render_live()
o = ord(ch)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants