<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotemacs/docs, 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-07-21T12:07:51+00:00</updated>
<entry>
<title>docs(spec): flip keybinding-console-safety DOING to READY</title>
<updated>2026-07-21T12:07:51+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-07-21T12:07:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=ed306961291c49fd3f7c445b3a8ef91d2708da2c'/>
<id>urn:sha1:ed306961291c49fd3f7c445b3a8ef91d2708da2c</id>
<content type='text'>
The DOING came from a legacy status retrofit with no build tasks ever decomposed, and the primary work has not started: the key-translation layer is still live and the M-S- bindings are still global. READY is the honest state, design settled and awaiting decomposition.
</content>
</entry>
<entry>
<title>fix(agenda): spawn the agenda frame tiled, not compositor-fullscreen</title>
<updated>2026-07-20T20:38:23+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-07-20T20:38:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=1ccd7bddf55c41202afe316e70fa01059e1bcbbb'/>
<id>urn:sha1:1ccd7bddf55c41202afe316e70fa01059e1bcbbb</id>
<content type='text'>
I dropped (fullscreen . fullboth) from the spawned frame so a tiling WM places it side by side with the working frame. "Fullscreen" was the wrong word for the intent: a normal frame at its full tiled position, not one covering the whole output. The engage-routing and focus logic are unchanged and matter more now, since a task opens in the adjacent working pane.
</content>
</entry>
<entry>
<title>feat(agenda): add S-&lt;f8&gt; dedicated fullscreen agenda frame</title>
<updated>2026-07-20T19:23:38+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-07-20T19:23:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=404590623599398f120cd73d44ad235271c3b5bd'/>
<id>urn:sha1:404590623599398f120cd73d44ad235271c3b5bd</id>
<content type='text'>
I added a standing agenda surface in its own fullscreen frame of the daemon, placeable on its own workspace while the working frames stay untouched. S-&lt;f8&gt; spawns, raises, or closes it. The force-rescan moves to C-M-&lt;f8&gt;.

It shows a today-anchored seven-day view and refreshes every five minutes through org-agenda-redo, so the now-line and synced events stay current without re-scanning the file list. A default-deny minor mode keeps it read-only: only navigation, the engage keys (routed to the working frame), and the frame's own controls are allowed. A failed redo falls back to the last-good snapshot with cloned markers, so the frame is never blank or unrestricted.

I made it a frame of the daemon rather than a second process, so it shares the live state (calendar-sync, edits, the now-line). There's no startup auto-open, and the Hyprland-managed-window variant is a vNext once this proves out.
</content>
</entry>
<entry>
<title>docs(spec): redesign org-agenda spec to a fullscreen frame, mark READY</title>
<updated>2026-07-20T14:54:43+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-07-20T14:54:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=ab16633846d5a656de1f0c114334a06fca326a0a'/>
<id>urn:sha1:ab16633846d5a656de1f0c114334a06fca326a0a</id>
<content type='text'>
Craig redirected the right-side dock to a dedicated fullscreen frame of the daemon. I resolved all 8 decisions, reworked the design, alternatives, phases, and acceptance criteria to match, and flipped DRAFT to READY on the spec-review gate. One non-blocking finding: the frame view needs its own custom-command entry.
</content>
</entry>
<entry>
<title>docs: fix broken file: links in theme-studio and ai-kb specs</title>
<updated>2026-07-20T12:25:31+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-07-20T12:25:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=955f92ba7e159d0b70cbb279507e9c4e44eda1d2'/>
<id>urn:sha1:955f92ba7e159d0b70cbb279507e9c4e44eda1d2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: add workflow font profiles</title>
<updated>2026-07-20T02:10:40+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-07-20T02:10:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=18bcd567d1e7770b4e28c43eeefbf81696e2f4a3'/>
<id>urn:sha1:18bcd567d1e7770b4e28c43eeefbf81696e2f4a3</id>
<content type='text'>
I replaced the mixed Fontaine presets with seven named profiles that persist across restarts. The mode line, echo area, and minibuffer stay in Berkeley Mono.

Nov applies the shared Reading profile inside each EPUB buffer without changing the global selection.
</content>
</entry>
<entry>
<title>docs: add org-agenda dock-mode spec (draft)</title>
<updated>2026-07-18T15:32:18+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-07-18T15:32:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=410d885d88e12016a76ecbcedbe7ea69b734fa9b'/>
<id>urn:sha1:410d885d88e12016a76ecbcedbe7ea69b734fa9b</id>
<content type='text'>
A right-side full-height agenda dock: side-window display ignoring the 0.75 below-selected rule, a dock-scoped 5-min redo, and jump-to-task that opens in the working window. Four design decisions stay open (dock width, composite view shape, focus-on-open, auto-open default).
</content>
</entry>
<entry>
<title>refactor(signal): retire the in-Emacs signel client to the archive</title>
<updated>2026-07-14T06:12:21+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-07-14T06:12:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=a9736bcf1f1d683656d7222bdda26c1a7ef73986'/>
<id>urn:sha1:a9736bcf1f1d683656d7222bdda26c1a7ef73986</id>
<content type='text'>
Agents drive Signal via signal-cli and signal-mcp, so the interactive client earns no keep. I moved signal-config.el and its seven test files to archive/ per the pasture convention, dropped the require from init.el, removed the dashboard's Signal launcher (row sizes now 5 4 3 2, tests updated), and unregistered the C-; M prefix from the running daemon. The ~/code/signel fork repo is untouched. The spec record stays IMPLEMENTED with a retirement history line, and the messenger-unification draft carries a premise-shift note.
</content>
</entry>
<entry>
<title>docs(specs): retire the gloss spec, close signal-client as implemented</title>
<updated>2026-07-14T06:02:21+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-07-14T06:02:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=42664cd1097a7bcea5de629bbddb3a58eadcdb57'/>
<id>urn:sha1:42664cd1097a7bcea5de629bbddb3a58eadcdb57</id>
<content type='text'>
The gloss spec described a repo scaffold and implementation that shipped months ago (the package lives at its own repo and gloss-config.el already wires it in) — the file was a stale artifact, deleted on Craig's call. signal-client flips to IMPLEMENTED: v1 is in daily use, and the messenger-unification spec designates the smoke project as the ground-up successor, so further client work happens there.
</content>
</entry>
<entry>
<title>docs(spec): reconcile init-load-graph to the shipped LSP decision</title>
<updated>2026-07-11T03:52:03+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-07-11T03:52:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=0cd82cab2699ae4cba5772da8a69d5402fd391b6'/>
<id>urn:sha1:0cd82cab2699ae4cba5772da8a69d5402fd391b6</id>
<content type='text'>
The spec owned the LSP and tree-sitter decisions but still recommended consolidating under prog-lsp. That inverted what shipped: prog-lsp was dead code nothing required, so the fix folded it into prog-general and deleted it. Update the programming target, module table, and ownership note to record prog-general as the sole LSP owner and tree-sitter gated to 'prompt. The keyword stays DOING for the remaining load-graph work.
</content>
</entry>
</feed>
