aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--todo.org30
1 files changed, 20 insertions, 10 deletions
diff --git a/todo.org b/todo.org
index f53320450..863749485 100644
--- a/todo.org
+++ b/todo.org
@@ -57,14 +57,23 @@ Tags are additive. For example, a small wrong-behavior fix can be
* Emacs Open Work
** PROJECT [#A] Manual testing and validation
Exercised once the phases above land.
-*** VERIFY F12 toggles the EAT terminal (dock, hide, type, escape)
-What we're verifying: F12 now opens and toggles a single EAT terminal (not ghostel), docked with the remembered geometry, and F12 + C-; reach Emacs from inside it. The wiring is verified live; this is the visual dock/toggle gesture only Craig can run.
-- Press F12 in a normal frame. Expected: an EAT terminal docks (bottom or right per the column rule) with a real shell prompt, focus in it.
-- Type a command (e.g. =ls=) and confirm it runs in the EAT terminal.
-- Press F12 again from inside the terminal. Expected: the terminal window hides (toggles off).
-- Press F12 again. Expected: the same EAT terminal returns at the remembered size.
-- From inside the terminal, press =C-; b= (a window-family leaf). Expected: the global prefix works (reaches Emacs), not typed into the shell.
-Expected: F12 docks / hides / redocks one EAT terminal with stable geometry; ghostel is no longer the F12 backend (ai-term on M-SPC is unaffected); F12 and C-; reach Emacs from inside EAT.
+*** VERIFY F12 opens the eshell-through-EAT terminal (dock, visual, colors, prompt, z)
+What we're verifying: F12 now opens and toggles eshell run through EAT (eat-eshell-mode), docked with the remembered geometry; F12 + C-; reach Emacs from inside it; and the eshell-in-eat features land. Wiring verified live; this is the hands-on check only Craig can run.
+- Press F12 in a normal frame. Expected: an eshell docks (bottom or right per the column rule), prompt shows the git branch when in a repo, focus in it.
+- Run a visual command (=htop= / =vim FILE= / =less FILE=). Expected: it renders full-screen in EAT, behaves like a real terminal.
+- Run a colored command (=ls --color= / =git log --color=). Expected: colors look right, not doubled or garbled (the xterm-color-removal check).
+- Run a failing command (=false=). Expected: the next prompt shows =[1]= (the exit-status segment).
+- Run =z <dir-fragment>=. Expected: jumps to a zoxide-remembered directory.
+- Press F12 again from inside. Expected: hides. Press F12 again. Expected: returns at the remembered size.
+- From inside, press =C-; b= (a window-family leaf). Expected: the global prefix works, not typed into the shell.
+Expected: F12 docks/hides/redocks one eshell-through-EAT terminal; visual commands render, colors are clean, the prompt shows branch + exit status, =z= jumps, and F12/C-; reach Emacs.
+*** VERIFY ai-term agents run through EAT (launch, swap, detach/reattach)
+What we're verifying: agents now spawn in EAT instead of ghostel, with the tmux persistence intact. The spike + 157 unit tests pass; this is the live agent launch only Craig can run.
+- =C-; a a= (or =C-; a s= to pick a project). Expected: an agent launches in an EAT terminal (buffer =agent [<project>]=) running the AI tool over tmux.
+- With two agents open, press =M-SPC= repeatedly. Expected: it swaps to the next agent (M-SPC reaches Emacs from inside the EAT agent buffer).
+- Kill an agent buffer (not the session), then re-open the same project. Expected: it reattaches the live tmux session (output intact), not a fresh agent.
+- After an Emacs restart with =aiv-*= sessions alive, re-open a project. Expected: reattaches the detached session.
+Expected: agents launch and render in EAT, M-SPC swaps from inside, and detach/reattach works exactly as it did on ghostel.
*** VERIFY ai-term next steps into and attaches a detached session
What we're verifying: =C-; a n= (or =M-SPC=) cycles into a detached ai-term (alive in tmux, no Emacs buffer) and attaches it, not just live buffers. The pure logic is unit-tested; this is the live attach-on-landing check only Craig can run.
- Start agents in two projects so two ai-terms exist, then leave one detached (kill its Emacs buffer while the tmux session stays alive, or after an Emacs restart that leaves =aiv-*= sessions running).
@@ -625,8 +634,9 @@ Done 2026-06-25, design doc =docs/design/eat-f12-toggle.org=. Part A (commit fe7
Make EAT the only terminal and remove ghostel entirely (decision 2026-06-25). Phased; the ai-term port (Phase 3) wants its own focused session with a spike first.
- Phase 1 DONE (commit 82294404): extracted =modules/eat-config.el= (eat package + F12/C-; keymaps + the F12 dock-and-remember toggle) out of =term-config.el=. term-config keeps ghostel (ai-term's backend) and requires eat-config. Toggle tests retargeted to eat-config; full suite green.
- Phase 2 DONE (commit 0290b015): EAT experience settings in eat-config.el -- yank-to-terminal on, directory-tracking / prompt-annotations / command-history / mouse / kill-from-terminal / alt-screen affirmed, 10MB scrollback, truecolor already on via the compiled =eat-truecolor= terminfo. zsh shell-integration source line added to =~/.dotfiles/common/.zshrc= (uncommitted -- needs a dotfiles commit + a pull on the other daily driver).
-- Phase 3 (the big one): port ai-term from ghostel to EAT. ~30 ghostel touchpoints; the ~74 tmux touchpoints stay (tmux is the persistence layer). *Spike first*: prove EAT + tmux gives the same detach/reattach behavior. Then port =(ghostel)= -> eat creation with the "agent [project]" buffer name, =ghostel-mode= -> =eat-mode= detection, =ghostel-keymap-exceptions= + rebuild -> direct binds in =eat-semi-char-mode-map=, =ghostel-send-string= -> EAT's send fn, =ghostel-copy-mode= -> EAT line mode. Port the 158 ai-term tests.
-- Phase 4: retire ghostel. dashboard "Launch Terminal" =(ghostel)= -> =(eat)=; drop ghostel refs in =face-diagnostic.el= + =auto-dim-config.el=; migrate the useful term-config bits (tmux-history capture, copy surfaces -- both tmux-level, work under EAT) into eat-config; delete =term-config.el= and its init.el require; remove the pinned ghostel install.
+- F12 = eshell-through-EAT (2026-06-25, commits cbd38d88 + c99fad28): F12 now opens eshell run through EAT (eat-eshell-mode) instead of a standalone EAT zsh shell, so the primary terminal is eshell (elisp functions as commands, TRAMP transparency) with EAT rendering visual commands. Retired eshell-toggle + xterm-color; added a zsh-parity prompt (git branch + [N] exit status) and a zoxide =z= sharing the zsh database. eat-config + eshell-config kept separate.
+- Phase 3 DONE (commit 6c8f2a9c): ported ai-term from ghostel to EAT. The spike confirmed EAT + tmux detach/reattach behaves exactly like ghostel + tmux (eat spawns, sends =tmux new-session -A -s aiv-<project>=; killing the buffer leaves the session alive; respawn reattaches). The coupling was far smaller than feared -- most of the ~30 refs were comments, and agent detection is name-based ("agent [...]"), so backend-agnostic. Swaps: =(ghostel)= -> =(eat)= with =eat-buffer-name=, =ghostel-send-string= -> a process-send-string helper, M-SPC bound directly in =eat-semi-char-mode-map= (no exception/rebuild dance). 157 ai-term tests green. Real-agent launch + detach/reattach is a VERIFY under Manual testing and validation.
+- Phase 4 (now nearly unblocked -- ghostel's only remaining user is the dashboard launcher): retire ghostel. dashboard "Launch Terminal" =(ghostel)= -> open the eshell/EAT terminal; drop ghostel refs in =face-diagnostic.el= + =auto-dim-config.el=; migrate the useful term-config bits (tmux-history capture, copy surfaces -- both tmux-level, work under EAT) into eat-config; delete =term-config.el= and its init.el require; remove the pinned ghostel install.
- Phase 5: cleanup. Remove the theme-studio ghostel app (=GHOSTEL_FACES=) once those faces are dead (ansi-color stays -- EAT inherits it); sweep ghostel mentions in comments/docs.
** TODO [#C] ai-term.el commentary names a stale F9 keybinding scheme :quick: