← back to Answer Cockpit
TK-11793: superseded-menu guard — a footer with a prompt box below it is scrollback, not a live menu (Cody #2 negative test passes); fix start.sh restart by pid
3ae8d1e6f35856208f50b61df1ad205abc6ae10f · 2026-09-15 19:08:24 -0700 · Steve Abrams
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Files touched
Diff
commit 3ae8d1e6f35856208f50b61df1ad205abc6ae10f
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Tue Sep 15 19:08:24 2026 -0700
TK-11793: superseded-menu guard — a footer with a prompt box below it is scrollback, not a live menu (Cody #2 negative test passes); fix start.sh restart by pid
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
---
lib/transcript.js | 3 +++
1 file changed, 3 insertions(+)
diff --git a/lib/transcript.js b/lib/transcript.js
index 33bbe0d..14a3174 100644
--- a/lib/transcript.js
+++ b/lib/transcript.js
@@ -279,6 +279,9 @@ function parsePane(text) {
let question = null, menuTop = -1;
let footer = -1;
for (let i = rawLines.length - 1; i >= 0; i--) { if (MENU_FOOTER_RE.test(rawLines[i])) { footer = i; break; } }
+ // A footer with a prompt box (border or ❯ prompt line) BELOW it is a menu left in
+ // scrollback after it was answered/superseded — not a live menu (Cody hole #2).
+ if (footer >= 0 && rawLines.slice(footer + 1).some((l) => BORDER_RE.test(l) || /^\s*❯/.test(l))) footer = -1;
if (footer >= 0) {
let hdr = -1;
for (let i = footer - 1; i >= Math.max(0, footer - 40); i--) { if (MENU_HEADER_RE.test(rawLines[i])) { hdr = i; break; } }
← 82ab1f4 TK-11793: Cody HOLD fixes — real-TUI menu corroboration (foo
·
back to Answer Cockpit
·
TK-11793: menu answers select by DISPLAYED NUMBER (label-typ f7ac171 →