Put the status line under the composer, not in it

653c6b8777fc · AtlantisPleb · · parent 8d711b2bd787

Put the status line under the composer, not in it

It was between the two rules, which is the composer's own region: the box a
reader types into had a second line in it that they cannot type on. Moving it
below the closing rule makes it a caption on the box, and a caption sits outside
the thing it describes.

    ────────────────────────────────
      › typing
    ────────────────────────────────
      ○ ready      openagents.com · main · Ollama qwen3.8:27b
      enter to send · esc to clear                1 reply this run

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

Diff

1 file changed, +6 -3

packages/openagents-cli/src/coder-ui.ts modified +6 -3

@@ -535,8 +535,8 @@ export function runCoderUi(session: CoderSession, options: CoderUiOptions): Prom

535 535
536 536
      // Bottom chrome, in the order a reader scans it: where the typing goes,
537 537
      // what the session is doing, then what the keys do. The composer sits
538
      // between a blank row and a rule so it reads as its own region rather
539
      // than as the last line of the transcript.
538
      // between two rules so it reads as its own region rather than as the last
539
      // line of the transcript, and the status line sits under that region.
540 540
      const rule = `${DIM}${"─".repeat(Math.max(0, width))}${RESET}`;
541 541
      const inner = Math.max(10, width - 4);
542 542

@@ -583,8 +583,11 @@ export function runCoderUi(session: CoderSession, options: CoderUiOptions): Prom

583 583
          ? `…${typed.slice(typed.length - composerRoom + 1).join("")}`
584 584
          : composer;
585 585
      rows.push(`  › ${visible}`);
586
      rows.push(`  ${justify(activity, where, inner)}`);
587 586
      rows.push(rule);
587
      // Under the composer's own region, not inside it. Between the rules is
588
      // where typing goes; what the session is doing is a caption on the box,
589
      // and a caption sits outside the thing it describes.
590
      rows.push(`  ${justify(activity, where, inner)}`);
588 591
589 592
      // Every key named here does something in the state it is named in, and
590 593
      // they are listed in the order a reader needs them, because a narrow row

This page updates live while a promote is in flight · changelog