aboutsummaryrefslogtreecommitdiff
path: root/todo.org
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-06-24 00:34:56 -0400
committerCraig Jennings <c@cjennings.net>2026-06-24 00:34:56 -0400
commit1f0a47cb8eff3c896dc745c515b5e8a658e7232d (patch)
tree9e64e5a9819819a832bf1119f77f5826587fd91b /todo.org
parent7696ff76b62ffb79729473de24bf9d54ece71871 (diff)
downloaddotemacs-1f0a47cb8eff3c896dc745c515b5e8a658e7232d.tar.gz
dotemacs-1f0a47cb8eff3c896dc745c515b5e8a658e7232d.zip
chore(todo): close C-arrow copy-mode bug, restore ai-term heading
Close the copy-mode regression task with its resolution, and restore the ai-term wrap-teardown heading that was dropped when the bug task was filed. Update the copy-mode manual VERIFY for the C-<up>-only behavior. Claude-Session: https://claude.ai/code/session_01BqrdWUo9GcznYX2pZr76gZ
Diffstat (limited to 'todo.org')
-rw-r--r--todo.org17
1 files changed, 10 insertions, 7 deletions
diff --git a/todo.org b/todo.org
index 3191d4819..b0383cc7e 100644
--- a/todo.org
+++ b/todo.org
@@ -55,8 +55,10 @@ Tags are additive. For example, a small wrong-behavior fix can be
=:bug:quick:=, and a feature that requires internal restructuring can be
=:feature:refactor:=.
* Emacs Open Work
-** TODO [#B] C-<left>/<right>/<down> wrongly enter terminal copy-mode :bug:quick:
-Regression from today's modified-arrow copy-mode work (commit 83f2ac01). In a ghostel buffer, C-<left>/<right>/<down> now enter copy-mode, but they should pass through to the terminal — C-<left>/C-<right> are readline word-movement at the shell prompt, so intercepting them breaks command-line editing. Only C-<up> (the scroll-up-into-history gesture) should enter copy-mode. Fix: drop C-<left>/<right>/<down> from both the ghostel-mode-map bindings and ghostel-keymap-exceptions in modules/term-config.el, keep C-<up>. Open call (gates :solo:): whether the same exclusion applies to M-<left>/<right>/<down> or M-arrows stay fully bound (the original task heading asked for the M-<arrow> family; M-arrows don't collide with readline the way C-arrows do). From the roam inbox, Craig's testing 2026-06-24.
+** DONE [#B] C-<left>/<right>/<down> wrongly enter terminal copy-mode :bug:quick:
+CLOSED: [2026-06-24 Wed]
+Fixed 2026-06-24: per Craig, only C-<up> enters copy-mode now — all other arrows (C-<down>/<left>/<right> and the M-arrows) were dropped from both the ghostel-mode-map binding and ghostel-keymap-exceptions in modules/term-config.el, so C-<left>/C-<right> reach the shell as readline word-motion again. Also per Craig: C-<up> pressed while already in copy-mode just moves up — cj/term-copy-mode-up checks tmux pane_in_mode (and ghostel--input-mode without tmux) and skips re-entry, which would otherwise reset the cursor. 6 ERT tests rewritten; byte-compile clean; the live daemon was stripped of the stale bindings/exceptions and reloaded (C-<up> bound + an exception, C-<left> forwarded to the pty). Real-terminal scroll is the VERIFY under Manual testing and validation.
+** TODO [#B] ai-term wrap-teardown + shutdown functions :feature:
The .emacs.d half of the rulesets wrap-it-up teardown / shutdown feature. Implement three functions in =modules/ai-term.el=, all callable headlessly via =emacsclient -e= (no interactive frame): =cj/ai-term-quit "<project>"= (teardown a project's aiv- tmux session + buffer + geometry restore), =cj/ai-term-live-count= (integer, the safety gate), =cj/ai-term-shutdown-countdown= (run-at-time timer). Craig's 2026-06-23 decisions: non-destructive qualifier = "with summary"/"and summarize"; countdown is a run-at-time timer (not a tty writer); safety gate uses cj/ai-term-live-count. Lands with the rulesets half (workflow + Stop hook already built/pushed). Spec: =inbox/PROCESSED-2026-06-23-2331-from-rulesets-ai-term-teardown-companion.org= (rulesets proposal: docs/design/2026-06-23-wrap-teardown-shutdown-proposal.org). Own focused session.
** TODO [#C] ai-term multi-LLM support — Claude / Codex / ollama :feature:
Allow creating an ai-term that launches any of Claude, Codex, or a local LLM via ollama, switchable at session start. From rulesets/Craig via the roam inbox. Spec note: =inbox/PROCESSED-2026-06-23-2123-from-rulesets-ai-term-multi-llm-support-from-craig.org=.
@@ -477,12 +479,13 @@ Expected: d duplicates; D names the exact targets and only deletes on yes; the f
Craig confirmed in his live GUI frame: the agent window keeps its height across repeated F9 toggles after a C-; b pull-away, even under the WIP theme's near-zero mode-line-inactive. The total-height capture/replay fix holds (dbee95ae).
*** 2026-06-20 Sat @ 22:11:00 -0400 F9 toggle preserves all windows in a 3-window layout
Craig confirmed in his live GUI frame: toggling the agent off then on in a 3-window layout returns the same three windows — both working windows survive and the agent re-splits its own bottom strip. The reversible-toggle fix holds (64916462).
-*** VERIFY modified-arrow copy-mode scrolls in a real terminal
-What we're verifying: C-/M-<arrow> in a ghostel buffer enters copy-mode and carries the movement, in one stroke, against a live tmux pane. The bindings, exceptions, and the dwim+arrow byte sequence are verified in the daemon; the actual copy-mode scroll needs a real attached tmux session.
+*** VERIFY C-<up> copy-mode scroll in a real terminal
+What we're verifying: C-<up> in a ghostel buffer enters copy-mode and scrolls up in one stroke, repeated C-<up> keep scrolling without re-entry, and the other modified arrows are left alone (C-<left>/C-<right> still do readline word-motion at the prompt). The bindings, exceptions, the pane_in_mode guard, and the byte sequence are verified in the daemon; the actual scroll needs a real attached tmux session.
- Open a terminal (=C-; x N= or F12) so tmux auto-starts; run something with scrollback.
-- Press C-<up> (or M-<up>) once.
-- Press it a few more times; then try C-<down>.
-Expected: the first C-<up> enters tmux copy-mode and moves up one line at column 0; further C-<up> keep scrolling up the left edge; C-<down> moves back down. M-<arrow> behaves identically to C-<arrow>. Without tmux (rare here), the same keys enter =ghostel-copy-mode= and move point. If an arrow does nothing or reaches the shell instead, capture it and reopen the task.
+- At the shell prompt, type a long line and press C-<left> / C-<right> — confirm they move by word (not copy-mode).
+- Press C-<up> once, then a few more times.
+- While in copy-mode, press C-<up> again a few times.
+Expected: C-<left>/C-<right> move by word at the prompt (reach the shell, not Emacs). The first C-<up> enters tmux copy-mode and moves up one line at column 0; further C-<up> keep scrolling up the left edge without resetting position. C-<down>/<left>/<right> and the M-arrows do NOT enter copy-mode. Without tmux (rare here), C-<up> enters =ghostel-copy-mode= and moves point up, and a second C-<up> moves up again rather than toggling copy-mode off. If C-<up> does nothing, resets position on repeat, or C-<left>/<right> get swallowed, capture it and reopen the task.
*** VERIFY face-name buttons open describe-face
What we're verifying: the face names in the Face Diagnosis report are live buttons. The button text properties (action + face data) are confirmed in the daemon; this is the click/RET confirmation.
- Put point on themed text and run =C-h F= (=cj/describe-face-at-point=).