{"repo":"NousResearch/hermes-agent","public_id":"1795","display_label":"Shift+Enter newline handling in Ghostty and WezTerm terminals","summary":"One issue reports newline/multiline input problems in Ghostty on macOS, and two pull requests with identical titles propose CLI changes for Kitty keyboard protocol Shift+Enter handling in Ghostty and WezTerm. The titles suggest a shared theme, but the outcome of these changes is not stated.","subsystem":"hermes_cli","counts":{"members":3,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":1},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":2345,"merged_at":"2026-03-21T17:04:20+00:00"},"resolution":{"state":"resolved","by":"pr-2345"},"freshness":{"state":"stale","last_verified_at":"2026-03-21T17:04:20+00:00","is_stale":true},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.6666666666666666},"fix_edges":[{"issue_number":1795,"pr_number":2345,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-03-21T17:04:20+00:00"}],"members":[{"kind":"issue","number":1795,"title":"[Bug]: Newline/multiline input broken in Ghostty terminal on macOS","url":null,"state":"closed"},{"kind":"pr","number":1798,"title":"fix(cli): handle Kitty keyboard protocol Shift+Enter for Ghostty/WezTerm","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#2345","number":2345}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":2345,"title":"fix(cli): handle Kitty keyboard protocol Shift+Enter for Ghostty/WezTerm","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["cli.py"],"fix_hunks":[{"file":"cli.py","hunks":["@@ -6044,6 +6044,7 @@ def handle_ctrl_enter(event):\n             \"\"\"Ctrl+Enter (c-j) inserts a newline. Most terminals send c-j for Ctrl+Enter.\"\"\"\n             event.current_buffer.insert_text('\\n')\n \n+<<<<<<< Updated upstream\n         @kb.add('tab', eager=True)\n         def handle_tab(event):\n             \"\"\"Tab: accept completion, auto-suggestion, or start completions.","@@ -6080,6 +6081,19 @@ def handle_tab(event):\n             else:\n                 # No menu and no suggestion — start completions from scratch\n                 buf.start_completion()\n+=======\n+        @kb.add('s-enter')\n+        def handle_shift_enter(event):\n+            \"\"\"Shift+Enter inserts a newline (standard terminals).\"\"\"\n+            event.current_buffer.insert_text('\\n')\n+\n+        # Kitty keyboard protocol: Ghostty and other Kitty-protocol terminals\n+        # encode Shift+Enter as CSI 13;2u instead of a simple escape sequence.\n+        @kb.add('escape', '[', '1', '3', ';', '2', 'u')\n+        def handle_kitty_shift_enter(event):\n+            \"\"\"Shift+Enter in Kitty keyboard protocol (Ghostty, WezTerm, etc.).\"\"\"\n+            event.current_buffer.insert_text('\\n')\n+>>>>>>> Stashed changes\n \n         # --- Clarify tool: arrow-key navigation for multiple-choice questions ---\n \n"]}]}],"trust":{"default_tier":"verified","includes_suggested":false}}