Skip to content

feat(core): ED3 清回滚与 RIS 复位 (#29) - #236

Merged
JavaZeroo merged 2 commits into
mainfrom
feat/ed3-ris
Oct 30, 2026
Merged

JavaZeroo merged 2 commits into
mainfrom
feat/ed3-ris

Conversation

@JavaZeroo

Copy link
Copy Markdown
Owner

内容

实现 #29 计划中的两项终端复位能力:

序列 语义
CSI 3 J(ED3) 只清空回滚缓冲,可见屏幕不变
ESC c(RIS) 完整复位:清屏、光标归位、属性与模式(DECCKM/DECTCEM)回默认、回到主缓冲

实现要点:

  • Screen 新增 reset() / erase_scrollback() / scrollback_lines();
  • RIS 的解析器级模式位在 Parser 内复位(模式位属于 Parser 而非 Screen);
  • RIS 在 strict 与 recovery 两条路径都生效(产品使用 recovery)。

测试

edit_csi_test 新增:

  1. 高 2 行屏幕写入 a/b/c 产生回滚后 CSI 3J → 回滚清空、可见行仍为 b/c;
  2. 设置红色粗体 + ?25l + ?1h 后 ESC c → 光标归位、模式回默认、屏幕清空、之后写入的字符属性为默认。

顺带修了该测试的一个真实缺陷:原 main 没有 try/catch,断言失败会变成进程崩溃(0xC0000409),现在会打印失败原因并返回 1;正是它掩盖了「RIS 未在 recovery 路径生效」这个真问题。

本地:edit csi contracts passed;experiments.core.test_recovery 35 tests OK(CSI 3J 不再计入 ignored_sequences,对应期望已更新为 2)。

边界

Refs #29

Screen gains reset/erase_scrollback/scrollback_lines and the parser handles ESC c; the new ED3/RIS assertions still crash on the RIS case.
Screen gains reset, erase_scrollback and a scrollback accessor; RIS runs on both parser paths and the edit_csi_test main now reports failures instead of aborting.
@JavaZeroo
JavaZeroo merged commit b865e7d into main Oct 30, 2026
9 of 10 checks passed
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.

1 participant