修复方案
根因
app.rs:726 使用 let _ = self.color_config.save() 静默丢弃保存错误,用户按 Enter 退出设置后以为已保存,但磁盘写入可能失败。
修复内容
**1. 设置保存错误处理 (Oracle…
已修复: dfc016c
根因: cycle_color 向后循环使用 saturating_sub(1).min(colors.len()-1),到索引 0 时被钳位为 0,无法 wrap 到最后一个颜色。
修复: 替换为 `if p == 0 { colors.len() - 1 } else…
已修复,提交 19a3b87。
改动: crates/core/src/parser/level.rs
- 新增
is_ident_char(b)辅助函数,将is_ascii_alphabetic()边界检查扩展为 `is_ascii_alphanumeric()
已修复 — commit 5cb56da
修改文件: crates/core/src/io/wrap.rs — wrap_line_chars()
- 提取 TAB_WIDTH 常量(4),替代硬编码
- Tab stop 正确计算: TAB_WIDTH - (col % TAB_WIDTH)
- Tab 展开超过…
修复方案
根因分析
compute_line_entry 和 compute_visual_height 在渲染路径中直接调用 wrap_line_chars,未检查输入长度。当单行日志超过 10MB 时,逐字符遍历和 Vec 构建会冻结主线程。
此外…
修复方案
根因: Ready 状态下 VHI 被异步 invalidate 后(Tab toggle / resize / file append / Loading→Ready),v_offset 仍保留视觉行偏移值,但所有函数开始将其当作逻辑行偏移处理,导致视口跳跃…
已修复,提交: 70f930e
根因: ensure_viewport_cache 在 params_changed 块之前捕获 v_offset 局部变量,而该块会重新计算 self.v_offset(cursor 居中 + clamp)。loading 分支仍使用旧值导致视口错位。
*…
修复方案: 在 handle_key 入口处统一过滤 KeyEventKind,新增 is_repeatable_key 方法。Release 全部忽略,Repeat 仅白名单键(滚动/导航)通过,Press 全部放行。Commit: 463c531,9个回归测试全部通过。