You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* feat(tui-harness): add tui_action tool, fix sendKeys bug, add annotations
- Add tui_action composite tool combining send keys + wait for pattern +
read screen in a single MCP round-trip
- Fix sendKeys silent discard bug where both keys and specialKey were
sent sequentially with the first result overwritten
- Surface settling monitor return value via new SendResult type so
agents know if the screen fully settled or hit the hard ceiling
- Add title and annotations (openWorldHint, readOnlyHint) to all tools
Constraint: sendKeys/sendSpecialKey return type changed from ScreenState to SendResult
Rejected: Add settled to ScreenState | mixes screen data with process metadata
Confidence: high
Scope-risk: moderate
Directive: tui_action intentionally reads screen twice (once from sendKeys, once for formatting options) — the buffer read is cheap
Not-tested: empty string keys parameter passes validation but writes nothing to PTY
* fix(tui-harness): fix SVG screenshot character positioning
SVG screenshots had misaligned characters ("janky letters all over the
place") due to two issues:
1. No xml:space="preserve" on <text> elements — SVG defaults to
collapsing whitespace, so spaces in terminal text were eaten
2. No textLength on <tspan> elements — character positioning depended
entirely on the viewer's font metrics matching our charWidth=0.6em
assumption, which varies across renderers
Add xml:space="preserve" to prevent whitespace collapse and textLength
with lengthAdjust="spacing" to force each span to occupy the exact
calculated grid width regardless of font rendering differences.
Constraint: Must work across browser, GitHub markdown, and macOS Preview SVG renderers
Rejected: Render each character individually | extremely verbose SVG output
Rejected: Use ch CSS units | not supported in SVG
Confidence: high
Scope-risk: narrow
0 commit comments