From b3ce2622e3faba78317438e31e6fbea6f9077903 Mon Sep 17 00:00:00 2001 From: jihoson Date: Tue, 17 Feb 2026 06:00:34 +0900 Subject: [PATCH] Add short enter aliases for Slack input --- README.md | 2 +- src/lazy_enter/bridge.py | 4 ++-- tests/test_bridge.py | 14 ++++++++++++++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 7e975a5..ee08420 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,7 @@ python -m lazy_enter 실행 후 Slack의 허용된 채널에서: - `/start-claude`, `/start-codex`: 기존 세션에 연결 - 일반 메시지 전송: 현재 연결된 CLI(Claude/Codex)로 입력만 전달 (엔터 미포함) -- `!enter` 전송: 엔터 키만 전달 (현재 프롬프트 제출) +- `!`, `!e`, `!enter` 전송: 엔터 키만 전달 (현재 프롬프트 제출) - `/stop-claude`, `/stop-codex`: 브릿지 연결 해제 (세션 유지) ## 테스트 및 품질 점검 diff --git a/src/lazy_enter/bridge.py b/src/lazy_enter/bridge.py index 824528e..9aa9562 100644 --- a/src/lazy_enter/bridge.py +++ b/src/lazy_enter/bridge.py @@ -18,7 +18,7 @@ logger = logging.getLogger(__name__) class Bridge: """Slack ↔ CLI 프로세스 간의 중계기.""" - ENTER_COMMAND = "!enter" + ENTER_COMMANDS = {"!", "!e", "!enter"} def __init__(self, config: Config | None = None) -> None: self.config = config or Config() @@ -45,7 +45,7 @@ class Bridge: self.slack.send_message(channel, ":warning: 연결된 세션이 없습니다.") return - if text.strip().lower() == self.ENTER_COMMAND: + if text.strip().lower() in self.ENTER_COMMANDS: self.pty.send_enter() self._last_sent_output = "" self._last_sent_fingerprint = None diff --git a/tests/test_bridge.py b/tests/test_bridge.py index 40dcd9b..5c9a6d6 100644 --- a/tests/test_bridge.py +++ b/tests/test_bridge.py @@ -160,6 +160,20 @@ def test_handle_message_enter_command_sends_enter_only(monkeypatch) -> None: assert pty.enter_count == 1 +def test_handle_message_short_enter_alias_sends_enter_only(monkeypatch) -> None: + FakePtyManager.instances.clear() + bridge = _make_bridge(monkeypatch) + + bridge._handle_command("start", "codex", "C1") + pty = FakePtyManager.instances[-1] + + bridge._handle_message("!", "C1") + bridge._handle_message("!e", "C1") + + assert pty.sent_inputs == [] + assert pty.enter_count == 2 + + def test_split_message_preserves_all_content(monkeypatch) -> None: bridge = _make_bridge(monkeypatch) chunks = bridge._split_message("line1\nline2\nline3", max_length=7)