<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotemacs/init.el, branch v0.7.2</title>
<subtitle>My Emacs configuration
</subtitle>
<id>https://git.cjennings.net/dotemacs/atom?h=v0.7.2</id>
<link rel='self' href='https://git.cjennings.net/dotemacs/atom?h=v0.7.2'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/'/>
<updated>2026-03-06T10:09:44+00:00</updated>
<entry>
<title>feat: add Slack client module with dashboard integration</title>
<updated>2026-03-06T10:09:44+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-03-06T10:09:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=ce0eb84ba7cd2d3533dc1c7d1c2215760000a8fb'/>
<id>urn:sha1:ce0eb84ba7cd2d3533dc1c7d1c2215760000a8fb</id>
<content type='text'>
Add emacs-slack config with auth-source credentials, DM/mention-only
notifications via notify script, compose buffer workflow, and dashboard
icon. Keybindings under C-; S prefix.
</content>
</entry>
<entry>
<title>feat(json,yaml): add tree-sitter modes, formatting, and jq integration</title>
<updated>2026-03-03T01:46:38+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-03-03T01:46:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=fbaac182eed439326ac7a4f179d503541e93f8f3'/>
<id>urn:sha1:fbaac182eed439326ac7a4f179d503541e93f8f3</id>
<content type='text'>
New prog-json module: json-ts-mode with jq formatting (C-; f) and
jq-interactively (C-c C-q). Upgraded prog-yaml to yaml-ts-mode with
prettier formatting. Both use treesit-auto for grammar management.
Includes 18 new tests (10 JSON, 8 YAML), 185/185 passing.
</content>
</entry>
<entry>
<title>feat(restclient): add REST API client for interactive API exploration</title>
<updated>2026-02-19T05:20:28+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-19T05:20:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=0d56007c1fc700f233e0aa66bb2e647c1fcc8cdf'/>
<id>urn:sha1:0d56007c1fc700f233e0aa66bb2e647c1fcc8cdf</id>
<content type='text'>
restclient.el + restclient-jq integration with SkyFi API templates,
tutorial file, auto key injection from authinfo, 17 ERT tests.
</content>
</entry>
<entry>
<title>feat(reveal): add org-reveal presentation workflow with ERT tests</title>
<updated>2026-02-14T09:21:13+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-14T09:21:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=ad4a5d7ba23a5871b241c4a41b3d1dede036a028'/>
<id>urn:sha1:ad4a5d7ba23a5871b241c4a41b3d1dede036a028</id>
<content type='text'>
Replaced pandoc-based reveal.js export with native ox-reveal integration.
New org-reveal-config.el module provides offline, self-contained HTML export
with keybindings under C-; p. Includes setup script for reveal.js 5.1.0
and 34 ERT tests covering header template and title-to-filename helpers.
</content>
</entry>
<entry>
<title>feat(hugo): extract hugo-config module with C-; h keybindings</title>
<updated>2026-02-14T06:06:45+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-14T06:06:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=cb44e9cae2284585cf77f9cf6927947c066db45d'/>
<id>urn:sha1:cb44e9cae2284585cf77f9cf6927947c066db45d</id>
<content type='text'>
Standalone module for ox-hugo blog workflow. One-file-per-post
structure with keybindings for new post, export, open dir (dirvish
and system file manager), and toggle draft.
</content>
</entry>
<entry>
<title>chore: minor housekeeping updates</title>
<updated>2026-02-05T00:44:07+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-05T00:44:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=6bf96b15da42c6c8cc92f8df5165f492ce1d0cc6'/>
<id>urn:sha1:6bf96b15da42c6c8cc92f8df5165f492ce1d0cc6</id>
<content type='text'>
- Add typo correction: should't -&gt; shouldn't
- Add dirvish shortcut pcr for career project
- Rename pc -&gt; pcl for clipper project
- Minor whitespace cleanup in init.el
</content>
</entry>
<entry>
<title>refactor(calendar): move calendar URLs into calendar-sync.el</title>
<updated>2026-02-04T11:41:08+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-04T11:41:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=b1131cd97e18cb850f251ecfefb6a49833701fa7'/>
<id>urn:sha1:b1131cd97e18cb850f251ecfefb6a49833701fa7</id>
<content type='text'>
Consolidate calendar configuration within the module itself rather
than requiring setup in init.el. Improves module encapsulation.
</content>
</entry>
<entry>
<title>feat(calendar-sync): add RECURRENCE-ID exception handling for recurring events</title>
<updated>2026-02-03T13:39:50+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-03T13:39:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=d0f928114f096af39c8231b7c4a9c9b05fc45f08'/>
<id>urn:sha1:d0f928114f096af39c8231b7c4a9c9b05fc45f08</id>
<content type='text'>
Handle rescheduled instances of recurring calendar events by processing
RECURRENCE-ID properties from ICS files. When someone reschedules a single
instance of a recurring meeting in Google Calendar, the calendar-sync module
now shows the rescheduled time instead of the original RRULE time.

New functions:
- calendar-sync--get-recurrence-id: Extract RECURRENCE-ID from event
- calendar-sync--get-recurrence-id-line: Get full line with TZID params
- calendar-sync--parse-recurrence-id: Parse into (year month day hour minute)
- calendar-sync--collect-recurrence-exceptions: Collect all exceptions by UID
- calendar-sync--occurrence-matches-exception-p: Match occurrences to exceptions
- calendar-sync--apply-single-exception: Apply exception data to occurrence
- calendar-sync--apply-recurrence-exceptions: Apply all exceptions to occurrences

Also adds DeepSat calendar configuration (dcal-file) to user-constants,
init.el, and org-agenda-config.

48 unit and integration tests added covering normal, boundary, and error cases.
</content>
</entry>
<entry>
<title>feat(keyboard): add GUI key translation for M-S- bindings</title>
<updated>2026-02-02T14:34:36+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-02T14:34:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=7de7885ba13e616eb796de77cb2cf44a37884402'/>
<id>urn:sha1:7de7885ba13e616eb796de77cb2cf44a37884402</id>
<content type='text'>
Rename terminal-compat.el to keyboard-compat.el and add GUI support.

Problem: M-S-o and other Meta+Shift bindings didn't work in GUI mode.
GUI Emacs receives M-O (uppercase) but bindings use M-S-o syntax.
Terminal can't use M-O due to arrow key escape sequence conflicts.

Solution: Use key-translation-map in GUI mode to translate M-O -&gt; M-S-o
for all 18 Meta+Shift keybindings. Terminal fixes unchanged.

Also fix two test issues:
- Remove expected-fail from expand-weekly test (timezone fix resolved it)
- Add helpful install messages to dependency-checking tests
</content>
</entry>
<entry>
<title>fix(terminal): add console/mosh compatibility</title>
<updated>2026-01-24T04:42:10+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-24T04:42:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=3ed0e8ea7c39ea0eaaa48506b7b99dee5ee6ca30'/>
<id>urn:sha1:3ed0e8ea7c39ea0eaaa48506b7b99dee5ee6ca30</id>
<content type='text'>
- Create terminal-compat.el for arrow key escape sequences
- Fix M-uppercase keybindings (M-O → M-S-o, etc.) that conflicted
  with terminal escape sequences ESC O A/B/C/D
- Add GUI-only guards for emojify and icon rendering
- 18 keybindings updated across 13 modules with override comments
</content>
</entry>
</feed>
