From 225ae32e7affa679ead636021c49d640ac919f6c Mon Sep 17 00:00:00 2001 From: teknium1 Date: Tue, 17 Feb 2026 23:04:48 -0800 Subject: [PATCH] Enhance CLI layout with floating completion menu - Updated the layout in HermesCLI to include a floating completion menu, improving user experience by providing real-time suggestions as users type. - Refactored the layout structure to utilize FloatContainer, ensuring the input area remains accessible while displaying the completion menu dynamically. --- cli.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/cli.py b/cli.py index 986ff8ab..939a450f 100755 --- a/cli.py +++ b/cli.py @@ -32,8 +32,9 @@ 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 +from prompt_toolkit.layout import Layout, HSplit, Window, FormattedTextControl, Float, FloatContainer from prompt_toolkit.layout.dimension import Dimension +from prompt_toolkit.layout.menus import CompletionsMenu from prompt_toolkit.widgets import TextArea from prompt_toolkit.key_binding import KeyBindings from prompt_toolkit.completion import Completer, Completion @@ -1654,13 +1655,22 @@ class HermesCLI: height=get_hint_height, ) - # Layout with dynamic spacer and input at bottom + # Layout with dynamic spacer, input at bottom, and floating completion menu layout = Layout( - HSplit([ - Window(height=0), # Expands to push everything to bottom - spacer, - input_area, - ]) + 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), + ) + ], + ) ) # Style for the application