<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotemacs/modules/elfeed-config.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-25T13:35:21+00:00</updated>
<entry>
<title>docs(load-graph): classify elfeed-config, the last init module</title>
<updated>2026-05-25T13:35:21+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-25T13:35:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=a522e5537ab9c94a45656b28e94a73b98f47d4b8'/>
<id>urn:sha1:a522e5537ab9c94a45656b28e94a73b98f47d4b8</id>
<content type='text'>
elfeed-config was the only init module without a load-graph header. It was deferred because annotating the header triggers a byte-compile, which broke its tests. With that test rewritten to use real structs, I added the header (Layer 4, optional, currently eager but a command-loaded deferral candidate, runtime requires user-constants, system-lib, media-utils), added elfeed-config to the header-contract allowlist, and moved it from the inventory's deferred and pending sections into the Batch 8 table.

That brings the inventory to 102 of 102 modules classified, completing the Phase 1 classification pass.
</content>
</entry>
<entry>
<title>fix(elfeed): bound and clean up the synchronous YouTube fetch</title>
<updated>2026-05-24T19:40:03+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-24T19:40:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=c097b5b4540d51fd279a81c0834b008331e936c9'/>
<id>urn:sha1:c097b5b4540d51fd279a81c0834b008331e936c9</id>
<content type='text'>
cj/youtube-to-elfeed-feed-format called url-retrieve-synchronously with no timeout, so a hung YouTube request would block Emacs indefinitely, and it only killed the temporary URL buffer when an ID was successfully extracted — a page without the expected markers leaked the buffer.

Passed cj/elfeed-url-fetch-timeout (10s) to the synchronous fetch, and moved the fetch+parse into an unwind-protect that always kills the temp buffer (live-p guarded), including the parse-failure path. Tests mock the network boundary and cover a normal channel parse, that a timeout is passed, and that the buffer is not leaked when parsing fails.

Also added tests for the EWW user-agent advice (no code change): it already injects the desktop UA only from eww-mode buffers, so package.el and other non-EWW url callers pass through untouched — the tests pin that scoping and the replace-not-duplicate header behavior.
</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>
<entry>
<title>fix(tests): Move cj/log-silently to system-lib.el, fix all test failures</title>
<updated>2025-11-15T20:08:47+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-15T20:08:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=8e8152e13b455021e604ea8cb989028bda1c9f5a'/>
<id>urn:sha1:8e8152e13b455021e604ea8cb989028bda1c9f5a</id>
<content type='text'>
Consolidated cj/log-silently function to system-lib.el as the canonical
location for low-level utility functions. This fixes 4 failing tests in
video-audio-recording that couldn't find the function.

Changes:
- Move cj/log-silently to system-lib.el (from system-utils.el)
- Remove duplicate definition from org-agenda-config-debug.el
- Remove duplicate definition from system-utils.el
- Add (require 'system-lib) to all modules using cj/log-silently:
  - video-audio-recording.el
  - org-agenda-config-debug.el
  - media-utils.el (also removed declare-function)
  - elfeed-config.el (replaced system-utils with system-lib)
  - wrap-up.el

Test Results:
- Before: 112/113 passing (4 video-audio-recording tests failing)
- After: 113/113 passing ✓

All tests now pass with zero failures.

Fixes TODO #809-895 (move cj/log-silently to system-lib.el)
</content>
</entry>
<entry>
<title>changing repositories</title>
<updated>2025-10-12T16:47:26+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-10-12T16:47:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=092304d9e0ccc37cc0ddaa9b136457e56a1cac20'/>
<id>urn:sha1:092304d9e0ccc37cc0ddaa9b136457e56a1cac20</id>
<content type='text'>
</content>
</entry>
</feed>
