From 12a2ce6a7eccf3a5093f7ac0dcd5b79a074a51f8 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Thu, 28 May 2026 03:11:19 -0500 Subject: docs(todo): close chat-buffer placement + exit-keys task I folded the "Chat buffer placement + exit keys" task into a dated event-log entry under the DOING Signal parent. The work landed in dotemacs 998e9c7a (bottom-30 docking via display-buffer-alist plus tests) and signel-fork df02d79 (pop-to-buffer + signel--cancel-input + C-c C-k binding). --- todo.org | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/todo.org b/todo.org index 15530e6f..8d8c7a9a 100644 --- a/todo.org +++ b/todo.org @@ -80,12 +80,8 @@ vNext after the 1:1 initiate-message flow is stable. Merge =listGroups= with =li *** TODO [#B] C-; M prefix binding doesn't take effect on fresh Emacs launch :bug: Surfaced during the 2026-05-28 manual verify of test 1. After a fresh restart, =C-; M SPC= did nothing — the =cj/signel-prefix-map= wasn't bound under =M= in =cj/custom-keymap=. A live-reload of =modules/signal-config.el= via =emacsclient -e '(load ...)'= immediately activated the binding, so the wiring at =signal-config.el:278-280= (=(with-eval-after-load 'keybindings (when (boundp 'cj/custom-keymap) (keymap-set cj/custom-keymap "M" cj/signel-prefix-map)))=) IS correct in isolation but isn't firing on the real launch sequence. Likely a load-order interaction or a use-package init/config timing issue (cf. the CLAUDE.md gotcha "Run a full Emacs launch after any use-package :config block edit" — modules can byte-compile clean and pass unit tests but fail at full Emacs launch). Probable fix path: switch signal-config.el to the documented =cj/register-prefix-map= helper from =modules/keybindings.el= (the helpers exist exactly to remove each module's hidden assumption that =cj/custom-keymap= is bound at the right moment). Reproduce: restart Emacs and try =C-; M SPC= without first reloading =signal-config.el=. -*** TODO [#B] Chat buffer placement + exit keys :feature:ux: -Surfaced during the 2026-05-28 manual verify of the initiate-message workflow. The buffer where the user composes a message after picking a contact should: -- Open in the bottom 50% of the frame (not float in whatever the default display-buffer rule picks). -- Bind =C-c C-c= to send. -- Bind =C-c C-k= to cancel and close the buffer gracefully (without leaving stale state in the signel fork's input-line cache). -Touches both =modules/signal-config.el= (display-buffer rule + keymap) and the signel fork at =~/code/signel/signel.el= (the chat buffer's actual mode map and send/abort entry points). Add ERT coverage for the abort path so the cache invariant survives. +*** 2026-05-28 Thu @ 03:09:18 -0500 Chat buffer docks bottom 30% and C-c C-k cancels +=display-buffer-alist= entry in =modules/signal-config.el= matches =^\*Signel: = chat buffers and routes them through =display-buffer-at-bottom= with =window-height . 0.3=, so the chat docks to the bottom 30% of the frame. The signel fork's =signel-chat= switched from =switch-to-buffer= to =pop-to-buffer= so the rule can apply (=switch-to-buffer= ignores =display-buffer-alist=). =C-c C-c= was already bound to =signel--send-input= in the mode; =C-c C-k= now binds =signel--cancel-input=, a new fork helper that clears the editable region between =signel--input-marker= and =point-max= and then calls =quit-window=. Buffer stays alive so chat history above the marker survives revisits; cleared input means the next visit lands on a fresh prompt. Five ERT tests in =tests/test-signel-cancel-input.el= (clears pending, empty-area no-op, quit-window called, buffer preserved, keymap binding) and two new tests in =tests/test-signal-config.el= (entry shape + regex match set). Dotemacs commit 998e9c7a, fork commit df02d79. ** TODO [#B] Emacs Manual Testing and Validation :verify: SCHEDULED: <2026-05-29 Fri> -- cgit v1.2.3