Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 11 additions & 12 deletions cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -6343,6 +6343,17 @@ def _build_tui_layout_children(

def run(self):
"""Run the interactive CLI loop with persistent input at bottom."""
# Push the entire TUI to the bottom of the terminal so the banner,
# responses, and prompt all appear pinned to the bottom — empty
# space stays above, not below. This prints enough blank lines to
# scroll the cursor to the last row before any content is rendered.
try:
_term_lines = shutil.get_terminal_size().lines
if _term_lines > 2:
print("\n" * (_term_lines - 1), end="", flush=True)
except Exception:
pass

self.show_banner()

# One-line Honcho session indicator (TTY-only, not captured by agent).
Expand Down Expand Up @@ -7569,18 +7580,6 @@ def _expand_ref(m):
self._agent_running = False
self._spinner_text = ""

# Push the input prompt toward the bottom of the
# terminal so it doesn't sit mid-screen after short
# responses. patch_stdout renders these newlines
# above the input area, creating visual separation
# and anchoring the prompt near the bottom.
try:
_pad = shutil.get_terminal_size().lines // 2
if _pad > 2:
_cprint("\n" * _pad)
except Exception:
pass

app.invalidate() # Refresh status line

# Continuous voice: auto-restart recording after agent responds.
Expand Down
Loading