Block a user
🟢 [L2] 词边界检测允许数字和下划线,ERROR123 被错误识别
已修复,提交 19a3b87。
改动: crates/core/src/parser/level.rs
- 新增
is_ident_char(b)辅助函数,将is_ascii_alphabetic()边界检查扩展为 `is_ascii_alphanumeric()
🟢 [L2] 词边界检测允许数字和下划线,ERROR123 被错误识别
🟢 [L1] Tab 在窄终端(<4列)扩展超出宽度
已修复 — commit 5cb56da
修改文件: crates/core/src/io/wrap.rs — wrap_line_chars()
- 提取 TAB_WIDTH 常量(4),替代硬编码
- Tab stop 正确计算: TAB_WIDTH - (col % TAB_WIDTH)
- Tab 展开超过…
🟡 [M16] TUI 渲染无 MAX_WRAP_INPUT_LEN 保护,巨大单行可冻结 UI
修复方案
根因分析
compute_line_entry 和 compute_visual_height 在渲染路径中直接调用 wrap_line_chars,未检查输入长度。当单行日志超过 10MB 时,逐字符遍历和 Vec 构建会冻结主线程。
此外…
🟡 [M16] TUI 渲染无 MAX_WRAP_INPUT_LEN 保护,巨大单行可冻结 UI
🟡 [M15] Ready 无 VisualHeightIndex 时走 Loading 滚动路径
🟡 [M15] Ready 无 VisualHeightIndex 时走 Loading 滚动路径
修复方案
根因: Ready 状态下 VHI 被异步 invalidate 后(Tab toggle / resize / file append / Loading→Ready),v_offset 仍保留视觉行偏移值,但所有函数开始将其当作逻辑行偏移处理,导致视口跳跃…
🟡 [M14] ensure_viewport_cache 使用过时的 v_offset 局部变量
🟡 [M14] ensure_viewport_cache 使用过时的 v_offset 局部变量
已修复,提交: 70f930e
根因: ensure_viewport_cache 在 params_changed 块之前捕获 v_offset 局部变量,而该块会重新计算 self.v_offset(cursor 居中 + clamp)。loading 分支仍使用旧值导致视口错位。
*…
🟡 [M13] 未检查 KeyEventKind,Press/Repeat/Release 全当命令处理
修复方案: 在 handle_key 入口处统一过滤 KeyEventKind,新增 is_repeatable_key 方法。Release 全部忽略,Repeat 仅白名单键(滚动/导航)通过,Press 全部放行。Commit: 463c531,9个回归测试全部通过。
🟡 [M13] 未检查 KeyEventKind,Press/Repeat/Release 全当命令处理
🟡 [M11] LogLevel::from_str 不 trim 空白