<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotemacs.git/init.el, branch v0.7.2</title>
<subtitle>my Emacs configuration
</subtitle>
<id>https://git.cjennings.net/dotemacs.git/atom?h=v0.7.2</id>
<link rel='self' href='https://git.cjennings.net/dotemacs.git/atom?h=v0.7.2'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/'/>
<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.git/commit/?id=fc271461ac3b16ec161750335b5cb0bc81660639'/>
<id>urn:sha1:fc271461ac3b16ec161750335b5cb0bc81660639</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.git/commit/?id=b5cae72d8f824f235f351821f7d7052b66bc2513'/>
<id>urn:sha1:b5cae72d8f824f235f351821f7d7052b66bc2513</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.git/commit/?id=b19ad7899fecfb6835e19e23a7069233654c9fc7'/>
<id>urn:sha1:b19ad7899fecfb6835e19e23a7069233654c9fc7</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.git/commit/?id=176ea668cdd83beddd54a24334a8a9db3cc87dfb'/>
<id>urn:sha1:176ea668cdd83beddd54a24334a8a9db3cc87dfb</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.git/commit/?id=78c3ef3c2008f72f9e46f30447c68d627bd693cd'/>
<id>urn:sha1:78c3ef3c2008f72f9e46f30447c68d627bd693cd</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.git/commit/?id=ca725c2d3b143956f66c33413ab2726c57c78231'/>
<id>urn:sha1:ca725c2d3b143956f66c33413ab2726c57c78231</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.git/commit/?id=3d6a6155b68ae194fc17f8e0ca877a7f934a46b7'/>
<id>urn:sha1:3d6a6155b68ae194fc17f8e0ca877a7f934a46b7</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.git/commit/?id=84a02097bf842e96f7f4dd4e4ac39e78faf64989'/>
<id>urn:sha1:84a02097bf842e96f7f4dd4e4ac39e78faf64989</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.git/commit/?id=089a4313660cb8af1eca3829ffbdbae70f72333a'/>
<id>urn:sha1:089a4313660cb8af1eca3829ffbdbae70f72333a</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.git/commit/?id=7854ad74addd9bcae905def8fe4f844fb5c08678'/>
<id>urn:sha1:7854ad74addd9bcae905def8fe4f844fb5c08678</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>
