<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-20T20:38:23+00:00</updated>
<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>
<entry>
<title>docs(spec): cancel the org workflow doctor, it has no job</title>
<updated>2026-07-10T11:00:44+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-07-10T11:00:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=6a193a6c4b36c6bae4a5e2f2a7a8e8b9a32aed71'/>
<id>urn:sha1:6a193a6c4b36c6bae4a5e2f2a7a8e8b9a32aed71</id>
<content type='text'>
A doctor that refuses to install anything buys nothing that isn't already there.

Every external binary is guarded at its point of use, with a message that names it: hugo-config guards hugo and the file-manager opener, org-webclipper guards pandoc, org-export-config guards zathura, and ox-pandoc guards itself upstream. Missing packages surface at load or first use. Path checks were the only new capability, and warning about them at startup contradicts the spec's own goal of keeping startup quiet, while an on-demand check nobody remembers to run is worth nothing.

The spec's Problem section rested on a premise nobody verified: that none of these dependencies was checked anywhere. It came from grepping for our own warn helper by name instead of reading the modules for the behavior. The body stays as written with the correction marked, and a postmortem records that the Reuse dimension named the helper that made the feature redundant, then dismissed it in one clause.

No code changed.
</content>
</entry>
</feed>
