<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotemacs/modules/cj-org-text.el, 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-05-10T20:25:27+00:00</updated>
<entry>
<title>refactor(cj-org-text): rename to cj-org-text-lib for naming consistency</title>
<updated>2026-05-10T20:25:27+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-10T20:25:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=0f9e308745b77ca589e5b25f415121058b9f08ee'/>
<id>urn:sha1:0f9e308745b77ca589e5b25f415121058b9f08ee</id>
<content type='text'>
Same naming-convention fix as the cj-cache rename.  Org-safe text
sanitizers extracted in Phase 3 went into modules/cj-org-text.el,
should have followed the established `-lib' suffix convention.

Rename modules/cj-org-text.el -&gt; modules/cj-org-text-lib.el; update
provide form, file header, and the two (require 'cj-org-text) call
sites in calendar-sync and test-cj-org-text-sanitize.  No behavior
change.
</content>
</entry>
<entry>
<title>refactor(cj-org-text): extract Org-safe text sanitizers from calendar-sync</title>
<updated>2026-05-10T19:34:52+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-10T19:34:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=c44a52a7905b605a6537e3ff9bb4fe3afede0485'/>
<id>urn:sha1:c44a52a7905b605a6537e3ff9bb4fe3afede0485</id>
<content type='text'>
Phase 3 of utility-consolidation. Three sanitizers moved from calendar-sync.el into a new cj-org-text.el module so other consumers (web-clipper, AI conversation, mail-to-org capture) can compose Org content from external text without depending on calendar:

- `calendar-sync--sanitize-org-body' -&gt; `cj/org-sanitize-body-text'
- `calendar-sync--sanitize-org-property-value' -&gt; `cj/org-sanitize-property-value'
- `calendar-sync--sanitize-org-heading' -&gt; `cj/org-sanitize-heading'

The helpers stay pure (string in, string out, nil-safe) and have no Org-mode dependency, so they work in batch and in tests without loading Org.

Migrate calendar-sync.el to use the new public names: drop the three local defuns, add `(require \='cj-org-text)', update the six call sites in `calendar-sync--make-event-entry'.

Move the existing 17-test file to `tests/test-cj-org-text-sanitize.el', rename test names to match the new helpers, add 1 nil-input test for `cj/org-sanitize-heading' that wasn't in the original file. Total: 18 Normal/Boundary tests across the three helpers.
</content>
</entry>
</feed>
