code-yeongyu / code-yeongyu/senpi
herdr 0.9.0: short regular-mode frames cannot calibrate private cursor queries
- Dominant language
- TypeScript
- Stars
- 429
- Forks
- 98
- Avg merge
- 5h 3m
- Merged PRs (30d)
- 526
Description
## Summary
A fresh short regular-mode question block in herdr 0.9.0 remains intentionally unclickable because its frame anchor cannot be calibrated. Viewport-filled frames do accept the same outer-client SGR click and resolve the question.
## Reproduction
Start an isolated named herdr session at 120x40, run senpi with the ask-user fixture, and submit `/askq wait=false n=1`. The pane writes private `ESC[?6n`; no private cursor reply reaches its stdin. The visible option received outer-client bytes `ESC[<0;27;25M` then `ESC[<0;27;25m`, but no answer occurred. Keyboard input remained usable and agent state was blocked.
## Working path
After filling the pane with transcript history, outer-client bytes `ESC[<0;27;34M` then `ESC[<0;27;34m` answered PostgreSQL, produced the answer chip, and changed agent state from blocked to working or idle. Alt+up, alt+down, digits and /answer skip pass through.
## Expected
Private pane-relative cursor calibration should permit safe clicks in fresh short frames too. Preserve fail-closed dispatch; do not substitute bare CPR, which collides with modified function-key input.
## Evidence
Real named-session PTY captures include before/after grids, PNGs, protocol receipts and server/process teardown. Private-query receipt: `{"event":"private-query","bytes":"\u001b[?6n"}`; zero matching private-input receipts. Both the short-frame limitation and viewport success are documented in the TUI guide.
Refs #1645
Contributor guide
Research direction
Start by reproducing the issue in an isolated named herdr session at 120x40 with senpi's ask-user fixture and `/askq wait=false n=1`, capturing the private cursor query and input receipts. Trace private pane-relative cursor calibration for short frames while preserving fail-closed dispatch and avoiding bare CPR; done means safe clicks answer the question in fresh short frames without breaking keyboard input or the existing viewport-filled behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- cli
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100