<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotemacs/modules/ai-config.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-10T04:40:26+00:00</updated>
<entry>
<title>fix(calendar-sync): handle variable-length date lists in RRULE UNTIL</title>
<updated>2026-03-10T04:40:26+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-03-10T04:40:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=37a7bf1bf54512def40bee8405939d101a136f45'/>
<id>urn:sha1:37a7bf1bf54512def40bee8405939d101a136f45</id>
<content type='text'>
date-to-time used (reverse date) which broke when RRULE UNTIL values
were parsed as 5-element lists (year month day hour minute) from UTC
timestamps. This caused recurring events with UTC UNTIL dates to
expand to 0 occurrences, producing stale calendar entries.
</content>
</entry>
<entry>
<title>refactor(gptel): extract model-list and selection logic for testability</title>
<updated>2026-03-07T03:20:29+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-03-07T03:20:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=7ee1d232c78410f2079856726b880d993da1f166'/>
<id>urn:sha1:7ee1d232c78410f2079856726b880d993da1f166</id>
<content type='text'>
- Extract cj/gptel--build-model-list from cj/gptel-change-model
- Extract cj/gptel--current-model-selection from cj/gptel-change-model
- Add test-ai-config-build-model-list.el (9 tests)
- Add test-ai-config-current-model-selection.el (8 tests)
</content>
</entry>
<entry>
<title>refactor(gptel): lazy-load gptel-magit, rebind rewrite/context keys</title>
<updated>2026-03-07T03:15:31+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-03-07T03:15:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=2faf32bcc5107312e6f9066489fb93e41e5fbaa8'/>
<id>urn:sha1:2faf32bcc5107312e6f9066489fb93e41e5fbaa8</id>
<content type='text'>
- Replace use-package gptel-magit hook with autoloads via
  with-eval-after-load 'magit (loads gptel only on key press)
- Move org header defuns above use-package to fix load order
- Set gptel-include-reasoning to "*AI-Reasoning*" buffer
- Rebind rewrite to C-; a r, clear context to C-; a c
- Add test-ai-config-gptel-magit-lazy-loading.el (8 tests)
- Mark all ai-config cleanup items DONE in todo.org
</content>
</entry>
<entry>
<title>refactor(gptel): move config defuns to top level, rebind keys, set reasoning</title>
<updated>2026-03-07T03:02:03+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-03-07T03:02:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=eb3ff56ad5660cc2ba4c7289af487b7429144f3d'/>
<id>urn:sha1:eb3ff56ad5660cc2ba4c7289af487b7429144f3d</id>
<content type='text'>
- Move cj/gptel--fresh-org-prefix, cj/gptel--refresh-org-prefix,
  cj/gptel-backend-and-model, cj/gptel-insert-model-heading out of
  use-package :config to top level (fixes byte-compile warnings)
- Set gptel-include-reasoning to "*AI-Reasoning*" buffer
- Rebind rewrite to C-; a r, clear context to C-; a c
- Update todo.org with completed cleanup items
</content>
</entry>
<entry>
<title>test(gptel): add unit tests for ai-config, remove dead cj/gptel-backends</title>
<updated>2026-03-07T02:40:23+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-03-07T02:40:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=1fc3a444910e27228dfa1b96d630413ddf31e9b9'/>
<id>urn:sha1:1fc3a444910e27228dfa1b96d630413ddf31e9b9</id>
<content type='text'>
- Add testutil-ai-config.el with gptel stubs for batch testing
- Add tests for cj/gptel--model-to-string (9 tests)
- Add tests for cj/gptel--fresh-org-prefix (8 tests)
- Add tests for cj/gptel-backend-and-model (8 tests)
- Remove dead cj/gptel-backends defvar (duplicates cj/gptel--available-backends)
</content>
</entry>
<entry>
<title>fix(gptel): fix docstring warnings, rename model-&gt;string to model-to-string</title>
<updated>2026-03-07T01:29:14+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-03-07T01:29:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=c33db7fde4b19dc15f3b63adb6aa3facc05a06a1'/>
<id>urn:sha1:c33db7fde4b19dc15f3b63adb6aa3facc05a06a1</id>
<content type='text'>
- Escape single quote in cj/ensure-gptel-backends docstring
- Wrap cj/gptel--available-backends docstring to 80 chars
- Add missing docstring to cj/gptel--model-to-string
- Rename cj/gptel--model-&gt;string to cj/gptel--model-to-string
- Mark stale model list task as DONE in todo.org
</content>
</entry>
<entry>
<title>fix(gptel): remove duplicate backend setter, fix commentary keybindings</title>
<updated>2026-03-07T01:18:27+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-03-07T01:18:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=fd78f1f28fce29987698f628a75f0d9b8d84363f'/>
<id>urn:sha1:fd78f1f28fce29987698f628a75f0d9b8d84363f</id>
<content type='text'>
Remove redundant gptel-backend setq and orphaned section header.
Fix commentary keybinding references: M-a → C-; a, correct buffer
add (.) and rewrite (&amp;) bindings.
</content>
</entry>
<entry>
<title>feat(gptel): update Claude models, fix default system prompt</title>
<updated>2026-03-07T01:12:35+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-03-07T01:12:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=e8b58fa437f059048846b090226f66376c051f0a'/>
<id>urn:sha1:e8b58fa437f059048846b090226f66376c051f0a</id>
<content type='text'>
Update Anthropic model list to current: claude-opus-4-6, claude-sonnet-4-6,
claude-haiku-4-5-20251001. Fix gptel--system-message not picking up the
custom default.org directive (defvar set at load time before gptel-prompts
replaces the default entry). Add cleanup tasks for ai-config, calibredb,
and slack reaction workflow to todo.org.
</content>
</entry>
<entry>
<title>chore(ai-config): switch default gptel backend to Claude</title>
<updated>2026-02-03T13:39:55+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-03T13:39:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=8278503b8a33005aaa2197680e243033ae23e275'/>
<id>urn:sha1:8278503b8a33005aaa2197680e243033ae23e275</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix(ai-config): remove redundant autoload for cj/toggle-gptel</title>
<updated>2026-01-24T18:46:04+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-24T18:46:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=ba14fb20081b36dc5d0c0fdf955322aa9a1400cb'/>
<id>urn:sha1:ba14fb20081b36dc5d0c0fdf955322aa9a1400cb</id>
<content type='text'>
</content>
</entry>
</feed>
