<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotemacs.git/modules/ai-config.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-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.git/commit/?id=4080daf948b23d0b6b59394623e12983f0a9cfad'/>
<id>urn:sha1:4080daf948b23d0b6b59394623e12983f0a9cfad</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.git/commit/?id=3b120b35fff1e21114c7ff189def31b538c7a2ac'/>
<id>urn:sha1:3b120b35fff1e21114c7ff189def31b538c7a2ac</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)

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</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.git/commit/?id=3eb1a0ccaa37410e6fe0059a9cb10145efa0d615'/>
<id>urn:sha1:3eb1a0ccaa37410e6fe0059a9cb10145efa0d615</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

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</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.git/commit/?id=fb4905714fb7f3a0dc316157da24794c1708dfe8'/>
<id>urn:sha1:fb4905714fb7f3a0dc316157da24794c1708dfe8</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

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</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.git/commit/?id=873269cdea6a0c93f7eb25acabce8b72f8be6126'/>
<id>urn:sha1:873269cdea6a0c93f7eb25acabce8b72f8be6126</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)

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</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.git/commit/?id=399901ab27b2d47e908782e94fbb96888aa89089'/>
<id>urn:sha1:399901ab27b2d47e908782e94fbb96888aa89089</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

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</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.git/commit/?id=1e0a5d35d31651b09f8d3bdfac07927cebebda5f'/>
<id>urn:sha1:1e0a5d35d31651b09f8d3bdfac07927cebebda5f</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.git/commit/?id=5a7ea4e0123ecee298437fb2be8d16d3ee9cf29d'/>
<id>urn:sha1:5a7ea4e0123ecee298437fb2be8d16d3ee9cf29d</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.git/commit/?id=03a9247ba4be4803b995510e0e6980254034d7ba'/>
<id>urn:sha1:03a9247ba4be4803b995510e0e6980254034d7ba</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.git/commit/?id=32a00c07b208469fd036d5acf3d3fb48381296a7'/>
<id>urn:sha1:32a00c07b208469fd036d5acf3d3fb48381296a7</id>
<content type='text'>
</content>
</entry>
</feed>
