From a4bc6f73d77d9496c1fd9bfca9d98aeb545ad3cb Mon Sep 17 00:00:00 2001 From: teknium1 Date: Thu, 19 Feb 2026 01:11:02 -0800 Subject: [PATCH] refactor: simplify CLI layout by integrating inline completions - Updated the HermesCLI layout to replace the floating completion menu with an inline CompletionsMenu, ensuring it appears consistently below the input area. - This change enhances user experience by maintaining visibility of completions even after agent output fills the terminal, improving usability in non-full-screen modes. --- cli.py | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/cli.py b/cli.py index 8d32e2cbc..fac376620 100755 --- a/cli.py +++ b/cli.py @@ -32,7 +32,7 @@ from prompt_toolkit.history import FileHistory from prompt_toolkit.styles import Style as PTStyle from prompt_toolkit.patch_stdout import patch_stdout from prompt_toolkit.application import Application -from prompt_toolkit.layout import Layout, HSplit, Window, FormattedTextControl, Float, FloatContainer +from prompt_toolkit.layout import Layout, HSplit, Window, FormattedTextControl from prompt_toolkit.layout.dimension import Dimension from prompt_toolkit.layout.menus import CompletionsMenu from prompt_toolkit.widgets import TextArea @@ -1672,22 +1672,18 @@ class HermesCLI: height=get_hint_height, ) - # Layout with dynamic spacer, input at bottom, and floating completion menu + # Layout: spacer + input at bottom, completions rendered inline below input. + # Using inline CompletionsMenu (not a Float) so it reliably appears even + # after agent output has filled the terminal via patch_stdout. Float-based + # menus lose their rendering space in non-full-screen mode once scrollback + # pushes the app area to the very bottom of the terminal. layout = Layout( - FloatContainer( - content=HSplit([ - Window(height=0), # Expands to push everything to bottom - spacer, - input_area, - ]), - floats=[ - Float( - xcursor=True, - ycursor=True, - content=CompletionsMenu(max_height=12, scroll_offset=1), - ) - ], - ) + HSplit([ + Window(height=0), + spacer, + input_area, + CompletionsMenu(max_height=12, scroll_offset=1), + ]) ) # Style for the application