<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotemacs/todo.org, 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-05T19:16:09+00:00</updated>
<entry>
<title>chore(todo): re-stamp task-review batch, tag two quick tasks</title>
<updated>2026-06-05T19:16:09+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-05T19:16:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=f31e8f3a39190424eec325234224311618e28267'/>
<id>urn:sha1:f31e8f3a39190424eec325234224311618e28267</id>
<content type='text'>
Daily task-review pass over the seven oldest-unreviewed tasks: all kept as-is and re-stamped to 2026-06-05. Tagged the TTY C-; keymap task :solo:quick: and the Slack popup task :quick:.
</content>
</entry>
<entry>
<title>chore(todo): file slack-popup and ghostel selection-color tasks</title>
<updated>2026-06-05T14:55:41+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-05T14:55:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=e97e99b375fa779b4b14ff218c2c26b334a28470'/>
<id>urn:sha1:e97e99b375fa779b4b14ff218c2c26b334a28470</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat(term): replace vterm with ghostel as the terminal engine</title>
<updated>2026-06-05T10:28:58+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-05T10:28:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=ebdf9e466b0e1f86e9b7d76650ac32408273e7a7'/>
<id>urn:sha1:ebdf9e466b0e1f86e9b7d76650ac32408273e7a7</id>
<content type='text'>
I swapped the terminal engine from vterm to ghostel (libghostty-vt) everywhere. term-config replaces vterm-config (the F12 terminal, the C-; x menu, tmux history capture), and ai-term replaces ai-vterm (the F9 Claude-agent launcher). ghostel renders the agent TUI without vterm's flicker under heavy streaming, and one engine now covers every terminal workflow.

Two behavior changes fall out of the swap. F9 launches in a terminal frame now: ghostel renders in TTY frames, so the old GUI-only guard is gone. Terminal windows no longer dim when unfocused: ghostel resolves its palette into the native module per-terminal, so there's no per-window color hook to dim through the way vterm had.

auto-dim drops its vterm color-advice path, the dashboard Terminal button launches ghostel, and the vterm and vterm-toggle packages are removed. The tmux pane-history and copy-mode machinery carried over unchanged. It keys on the pty tty, which ghostel exposes.
</content>
</entry>
<entry>
<title>chore(todo): restore orphaned heading, file TTY keymap task</title>
<updated>2026-06-04T00:21:53+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-04T00:21:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=c094b2e4e64530379a9cb273303308a9affcabf6'/>
<id>urn:sha1:c094b2e4e64530379a9cb273303308a9affcabf6</id>
<content type='text'>
I restored the heading "Color dashboard navigator independently of list items" above its PROPERTIES drawer. The 2026-06-02 archive cleanup dropped the heading, which orphaned the drawer and body into the preceding DONE task and tripped org-lint's obsolete-properties-drawer check. org-lint is clean again.

I also filed "TTY-accessible personal C-; keymap" [#B]: C-; is GUI-only, so the whole custom prefix family is unreachable in a terminal. The task records the single-point fix in keybindings.el and the candidate TTY-safe mirror prefixes.
</content>
</entry>
<entry>
<title>chore(todo): drop keybinding-display.md item from pearl follow-ups</title>
<updated>2026-06-03T04:41:55+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-03T04:41:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=c0f92fbb1bed6275d19edd8ed83d16f9c5ebfdef'/>
<id>urn:sha1:c0f92fbb1bed6275d19edd8ed83d16f9c5ebfdef</id>
<content type='text'>
</content>
</entry>
<entry>
<title>chore(todo): archive resolved tasks and file pearl follow-ups</title>
<updated>2026-06-03T04:21:54+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-03T04:21:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=7a5c8d9f0d65c95f773234faee627196ea3f8503'/>
<id>urn:sha1:7a5c8d9f0d65c95f773234faee627196ea3f8503</id>
<content type='text'>
Move the f9 toggle, completing-read prompts, and GPG pinentry subtrees into Resolved, and file the pearl vanilla-config dogfooding follow-ups surfaced by the cross-project handoff.
</content>
</entry>
<entry>
<title>feat(ui): name the operation in completing-read prompts</title>
<updated>2026-06-03T01:38:06+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-03T01:38:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=13b053c2a99d30c1131d920a62febde6ee9a628b'/>
<id>urn:sha1:13b053c2a99d30c1131d920a62febde6ee9a628b</id>
<content type='text'>
A picker prompt is the last thing shown before a command commits, so a bare noun leaves a mis-keyed command ambiguous. Hitting C-f8 (project agenda) instead of C-f9 (AI-vterm picker) gave the same "Project:" prompt with no signal which one was about to run.

Reworded 17 prompts across 8 modules so each names the operation rather than just the thing being chosen: "Project:" becomes "Show agenda for project:", "F6:" becomes "Run tests:", the dwim-shell sub-prompts gain their context (checksum algorithm, PDF compression quality, text-to-speech voice, run dwim-shell command), the two contact pickers split into "Find contact:" and "Insert contact email:", and the dirvish ediff, org finalize, and custom-comments length/box-style prompts get the same treatment.

I audited all ~124 completing-read / read-* call sites; the rest already named their operation and were left alone. These are prompt-string changes only, no logic touched.
</content>
</entry>
<entry>
<title>chore(todo): reconcile stale tasks and re-stamp the reviewed batch</title>
<updated>2026-06-02T23:12:03+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-02T23:12:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=2377c06a65d38a84c8a29163c01cc386a5047e71'/>
<id>urn:sha1:2377c06a65d38a84c8a29163c01cc386a5047e71</id>
<content type='text'>
Audit reconciliation:
- EAT consolidation: moved DOING back to TODO — the eval matrix has no recorded run since the 2026-05-26 direction note, so it isn't active work.
- Finish terminal GPG pinentry: CANCELLED as a duplicate. The "Terminal GPG pinentry Completion" task is canonical; its audit already found the terminal-pinentry branch gone, so the work restarts from main and is tracked there.
- M-F9 close: added a note that it's still a bug, distinct from the F9 toggle collapse — close should leave the surrounding layout intact, and cj/--ai-vterm-close-buffer still deletes the window.
- De-linked the coverage-v1 cross-reference, which pointed at a session file that was never archived.

Review: re-stamped LAST_REVIEWED on the seven oldest-unreviewed tasks (debug-profiling, org-noter, API workspace, Company-to-Corfu, F2 preview, TRAMP/dirvish, F-key Completion), all kept as-is.
</content>
</entry>
<entry>
<title>fix(ai-vterm): make F9 a faithful toggle of the agent split</title>
<updated>2026-06-02T18:04:37+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-02T18:04:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=38dad925528e05f2084474ead5519a6a6ceb70f7'/>
<id>urn:sha1:38dad925528e05f2084474ead5519a6a6ceb70f7</id>
<content type='text'>
F9 toggle-off used quit-restore-window to dismiss the agent. With several agents alive sharing one slot, switching among them (C-F9) reuses the window via set-window-buffer, which leaves the window's quit-restore parameter pointing at the first agent shown. Once stale, quit-restore-window falls back to switch-to-prev-buffer and surfaces a different agent instead of removing the window, so F9 appeared to "show another agent" rather than hide the split.

Toggle-off now collapses the split with delete-window, which is independent of the slot's buffer history, so the working buffer reclaims the frame. Geometry is captured first so the next toggle-on re-splits at the same width.

Toggle-on reopens the exact agent that was hidden (new cj/--ai-vterm-last-hidden-buffer), falling back to the most-recent agent only when that buffer has been killed. Hide-then-show is now a faithful round trip, not a jump to whichever agent is most-recent in buffer-list.

Sole-window toggle-off returns to the most-recent non-agent buffer instead of other-buffer, which could land on another agent.

I updated the two reuse-edge-window tests that asserted the old restore-displaced-into-a-kept-slot behavior to match the new always-collapse behavior.
</content>
</entry>
<entry>
<title>chore(todo): task-review hygiene pass</title>
<updated>2026-06-01T13:44:04+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-01T13:44:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=143abcb3d0afebc81be6f79f07fc199351c4931b'/>
<id>urn:sha1:143abcb3d0afebc81be6f79f07fc199351c4931b</id>
<content type='text'>
I stamped LAST_REVIEWED on the seven oldest-unreviewed tasks and tagged the gptel-magit velox bug and the Signal dashboard task as quick.
</content>
</entry>
</feed>
