Leave the skills screen on escape Escape did not return from `/skills`. Ctrl+C did, which is why the screen was a trap rather than obviously broken: one way out worked. The two keys took different paths. Ctrl+C is one byte with no ambiguity and the screen handled it where it arrived. A bare escape might be the start of a sequence, so the interface holds it for a window and releases it through `onEscape` when nothing follows -- and `onEscape` knew only about the chat, so a lone escape asked the session to interrupt a reply that was not running and left the screen up. `onEscape` now leaves the screen, and the screen's own handler defers to it, so both the byte recognised in its chunk and the byte released by the timer take one path out. The test that missed this sent another key immediately after the escape, which resolves it inside the same chunk and never starts the timer. The new one sends a lone escape and waits out the window, which is what a terminal does. It fails without the fix.
Leave the skills screen on escape
Deploy story
What this commit did to the running system — joined from the forge receipt chain, the part a commit page elsewhere cannot show.
Not deployed through the forge lane
No push, promotion, build, or deploy receipt references this commit (receipts are scanned over a bounded recent window). Changes shipped by full node replacement carry their proof in the release gate receipt instead.
Changed files
-
modified
packages/openagents-cli/src/coder-ui.ts -
modified
packages/openagents-cli/test/coder-ui.test.ts
Diff
2 files changed, +42 -2
packages/openagents-cli/src/coder-ui.ts modified +13 -2
@@ -685,6 +685,17 @@ export function runCoderUi(session: CoderSession, options: CoderUiOptions): Prom
| 685 | 685 |
|
| 686 | 686 |
|
| 687 | 687 |
|
| 688 |
|
|
| 689 |
|
|
| 690 |
|
|
| 691 |
|
|
| 692 |
|
|
| 693 |
|
|
| 694 |
|
|
| 695 |
|
|
| 696 |
|
|
| 697 |
|
|
| 698 |
|
|
| 688 | 699 |
|
| 689 | 700 |
|
| 690 | 701 |
|
@@ -732,8 +743,8 @@ export function runCoderUi(session: CoderSession, options: CoderUiOptions): Prom
| 732 | 743 |
|
| 733 | 744 |
|
| 734 | 745 |
|
| 735 |
|
|
| 736 |
|
|
| 746 |
|
|
| 747 |
|
|
| 737 | 748 |
|
| 738 | 749 |
|
| 739 | 750 |
|
packages/openagents-cli/test/coder-ui.test.ts modified +29
@@ -523,6 +523,35 @@ describe("the /skills screen", () => {
| 523 | 523 |
|
| 524 | 524 |
|
| 525 | 525 |
|
| 526 |
|
|
| 527 |
|
|
| 528 |
|
|
| 529 |
|
|
| 530 |
|
|
| 531 |
|
|
| 532 |
|
|
| 533 |
|
|
| 534 |
|
|
| 535 |
|
|
| 536 |
|
|
| 537 |
|
|
| 538 |
|
|
| 539 |
|
|
| 540 |
|
|
| 541 |
|
|
| 542 |
|
|
| 543 |
|
|
| 544 |
|
|
| 545 |
|
|
| 546 |
|
|
| 547 |
|
|
| 548 |
|
|
| 549 |
|
|
| 550 |
|
|
| 551 |
|
|
| 552 |
|
|
| 553 |
|
|
| 554 |
|
|
| 526 | 555 |
|
| 527 | 556 |
|
| 528 | 557 |
|