<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotemacs/tests/test-ai-term--shutdown-countdown.el, branch main</title>
<subtitle>My Emacs configuration
</subtitle>
<id>https://git.cjennings.net/dotemacs/atom?h=main</id>
<link rel='self' href='https://git.cjennings.net/dotemacs/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/'/>
<updated>2026-06-24T10:43:45+00:00</updated>
<entry>
<title>feat(ai-term): wrap-teardown + shutdown entry points for rulesets</title>
<updated>2026-06-24T10:43:45+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-24T10:43:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=4e1401d1499be3d24df78edd97310d200e719e10'/>
<id>urn:sha1:4e1401d1499be3d24df78edd97310d200e719e10</id>
<content type='text'>
Add the three headless functions the rulesets wrap-it-up workflow calls via emacsclient -e, since this module owns the aiv- session naming, the agent buffer, and the geometry restore. cj/ai-term-quit kills a project's tmux session and agent buffer and restores the layout, idempotent and safe when already gone. cj/ai-term-live-count returns the integer count of live aiv- sessions for the shutdown safety gate. cj/ai-term-shutdown-countdown re-checks that gate, then runs an abort-able run-at-time countdown in the echo area and, uncancelled, runs the shutdown command (a defcustom so tests stub it). Reuses the existing kill/close helpers. 13 ERT tests cover the live-count parsing, the quit kill-and-idempotency, and the gate-abort/cancel/tick logic; the tmux and shutdown side effects are manual.

Claude-Session: https://claude.ai/code/session_01BqrdWUo9GcznYX2pZr76gZ
</content>
</entry>
</feed>
