Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

RIS leaves focus reporting on and an open synchronized update open, so `wait_stable` can never succeed

Open Beginner friendly
#623 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
82/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
rust
Domain
cli, testing

Research direction

Start in emu/seq.rs at the RIS arm around line 1680 and compare its reset behavior with soft_reset() around line 954. Update the RIS reset to clear the reported modes and any half-collected frame. Run the reproduction from the issue; done means wait_stable succeeds, focus_in sends nothing, and DECRQM reports both modes reset.

Written by the indexing model from the issue text.

Description

bug good first issue

What happens. After ESC c, focus reporting (mode 1004) is still on, and an unfinished DEC 2026 synchronized update is still open:

// 20x4
printf '\033[?1004h\033[?2026hhalf\033cREADY'
  • focus_events() is true after the RIS, so focus_in() sends ^[[I, which the tty echoes onto the screen.
  • wait_stable times out with "the application is inside an unfinished DEC 2026 synchronized update (Begin with no End)".
  • DECRQM answers Set for both 1004 and 2026.

Cause. The RIS arm in emu/seq.rs:1680 resets the cursor style, charsets, mouse tracking, IRM, tabs, links and any kitty upload. It does not reset focus_events or sync_update. soft_reset() (:954) does clear focus_events.

Why it matters. RIS is the "start over" sequence. A program that resets after a crash or a mode switch leaves every later stability wait doomed.

Fix. In the RIS arm, set focus_events = false and sync_update = false. Drop any half-collected frame as well.

Done when the repro's wait_stable succeeds, focus_in sends nothing, and DECRQM reports both modes reset.

Dominant language
Rust
Stars
28
Forks
24
Avg merge
11h 23m
Merged PRs (30d)
42

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from vyncint/termlens

All issues in vyncint/termlens

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.