mirror of
https://github.com/Ark0N/Codeman.git
synced 2026-10-10 09:19:42 +02:00
fix(codex): see the background-terminal row under codex 0.162's hint row
A codex session waiting on a background terminal read as plainly idle, with no "1 background terminal" badge. Codex pins that row above its composer, and the registry looked for it in the last three non-blank rows. Codex 0.162.0 added a hint row under the status line at rest (` ← for agents · ? for shortcuts`), which pushes the chip to FOURTH from the bottom exactly when the idle probe reads it. Measured live on the 1.36.0 beta with `sleep 600` started as a background terminal: chip, composer, status line, hint row; the server reported `watching: null`. While a prompt is typed the hint goes away and the chip is third again. The codex entry now declares `watchingLines: 4`. The trade is stated in the entry: with no terminal running, the fourth row from the bottom is the last transcript row (the last two while typing), which the agent writes. As before, this is contained by codex having no hooks: a forged row costs a wrong badge, never a silenced alert. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -619,10 +619,15 @@ const CODEX: CliEntry = {
|
||||
// Measured against a live codex-cli 0.154.0 pane on 2026-09-22: the row appears when
|
||||
// the terminal starts, follows the composer down as the conversation grows, and is
|
||||
// gone after `/stop`.
|
||||
// ⚠️ Codex 0.162.0 (measured 2026-10-09) draws a hint row under the status line at
|
||||
// rest (` ← for agents · ? for shortcuts`) and drops it while a prompt is typed, so
|
||||
// the chip is FOURTH from the bottom at rest and third while typing. A three-row
|
||||
// window never saw it at rest, which is exactly when the idle probe reads it, so a
|
||||
// session waiting on its terminal read as plainly idle. Four rows cover both.
|
||||
// ⚠️ This entry CANNOT promise what Claude's does, and the difference is Codex's
|
||||
// layout rather than its pattern. The third row from the bottom is the chip only
|
||||
// layout rather than its pattern. The fourth row from the bottom is the chip only
|
||||
// while a terminal runs; with none running it is the last row of the transcript,
|
||||
// which the agent writes. Matching the complete row raises the bar — an assistant
|
||||
// which the agent writes (and while a prompt is typed, the last two). Matching the complete row raises the bar — an assistant
|
||||
// message has to end with this exact line, to the character — but nothing here makes
|
||||
// forging it impossible, so do not read the Claude comment above as applying here.
|
||||
// What contains it is that codex declares `hooks: 'none'`: no hook event from a codex
|
||||
@@ -641,7 +646,7 @@ const CODEX: CliEntry = {
|
||||
promptGlyph: '›',
|
||||
workingLine: '[Ee]sc to interrupt',
|
||||
watchingLine: String.raw`^\s{0,4}(\d+ background terminals?) running · /ps to view · /stop to close$`,
|
||||
watchingLines: 3,
|
||||
watchingLines: 4,
|
||||
},
|
||||
// The footer under the composer, measured on a live 0.147.0 pane:
|
||||
// ` gpt-5.6-terra default · ~/codeman-cases/th-scratch` (model, reasoning effort,
|
||||
|
||||
@@ -365,8 +365,8 @@ export interface CliCapabilities {
|
||||
/**
|
||||
* How many rows at the FOOT of the screen that row can appear in, counting non-blank
|
||||
* rows only. Claude writes its chip on the last row and keeps the default; Codex pins
|
||||
* its own above the composer, which puts it third from the bottom, so it declares
|
||||
* more. Keep each number as small as that CLI's layout allows: every extra row is
|
||||
* its own above the composer, which puts it third or fourth from the bottom (its hint
|
||||
* row comes and goes), so it declares more. Keep each number as small as that CLI's layout allows: every extra row is
|
||||
* another row an agent might be able to write, and the label is what silences an
|
||||
* alert. See `watchingLabel()` in `session-activity.ts`.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user