Skip to content

Commit 995265f

Browse files
committed
fix: default log level
1 parent 5007a5a commit 995265f

File tree

4 files changed

+37
-17
lines changed

4 files changed

+37
-17
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ console:
77
uv run textual console -x SYSTEM -x EVENT -x DEBUG -x INFO
88

99
dev:
10-
uv run textual run --dev -c chat
10+
LOG_LEVEL=NOTSET uv run textual run --dev -c chat
1111

1212
lint:
1313
uv run ruff check --fix src

src/agent_chat_cli/components/user_input.py

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
class UserInput(Widget):
1515
BINDINGS = [
1616
Binding(Key.ENTER.value, "submit", "Submit", priority=True),
17-
Binding(Key.ESCAPE.value, "hide_menu", "Hide Menu", priority=True),
1817
]
1918

2019
def __init__(self, actions: Actions) -> None:
@@ -54,28 +53,35 @@ def on_text_area_changed(self, event: TextArea.Changed) -> None:
5453

5554
async def on_key(self, event) -> None:
5655
if event.key == Key.CTRL_J.value:
57-
event.stop()
58-
event.prevent_default()
59-
input_widget = self.query_one(TextArea)
60-
input_widget.insert("\n")
56+
self._insert_newline(event)
6157
return
6258

6359
menu = self.query_one(SlashCommandMenu)
6460

65-
if menu.is_visible and event.key in (Key.BACKSPACE.value, Key.DELETE.value):
66-
event.stop()
67-
event.prevent_default()
68-
menu.hide()
69-
self.query_one(TextArea).focus()
61+
if menu.is_visible:
62+
self._close_menu(event)
63+
64+
def _insert_newline(self, event) -> None:
65+
event.stop()
66+
event.prevent_default()
67+
input_widget = self.query_one(TextArea)
68+
input_widget.insert("\n")
69+
70+
def _close_menu(self, event) -> None:
71+
if event.key not in (Key.ESCAPE.value, Key.BACKSPACE.value, Key.DELETE.value):
72+
return
73+
74+
event.stop()
75+
event.prevent_default()
7076

71-
def action_hide_menu(self) -> None:
7277
menu = self.query_one(SlashCommandMenu)
78+
menu.hide()
7379

74-
if menu.is_visible:
75-
menu.hide()
76-
input_widget = self.query_one(TextArea)
80+
input_widget = self.query_one(TextArea)
81+
input_widget.focus()
82+
83+
if event.key == Key.ESCAPE.value:
7784
input_widget.clear()
78-
input_widget.focus()
7985

8086
async def action_submit(self) -> None:
8187
menu = self.query_one(SlashCommandMenu)

src/agent_chat_cli/utils/logger.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
import json
22
import logging
3+
import os
34
from typing import Any
45

56
from textual.logging import TextualHandler
67

78

89
def setup_logging():
10+
level = os.getenv("LOG_LEVEL", "INFO").upper()
11+
912
logging.basicConfig(
10-
level="NOTSET",
13+
level=level,
1114
handlers=[TextualHandler()],
1215
)
1316

tests/test_app.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,3 +150,14 @@ async def test_interrupt_blocked_during_permission_prompt(
150150
await app.actions.interrupt()
151151

152152
assert app.ui_state.interrupting is False
153+
154+
async def test_escape_triggers_interrupt_when_menu_not_visible(
155+
self, mock_agent_loop, mock_config
156+
):
157+
app = AgentChatCLIApp()
158+
async with app.run_test() as pilot:
159+
app.ui_state.start_thinking()
160+
161+
await pilot.press("escape")
162+
163+
assert app.ui_state.interrupting is True

0 commit comments

Comments
 (0)