<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotemacs/tests/test-org-roam-config-copy-todo-to-today.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-16T08:45:29+00:00</updated>
<entry>
<title>refactor(org-workflow): four hygiene fixes from the module-by-module re-review</title>
<updated>2026-05-16T08:45:29+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-16T08:45:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=a005c7636f30b710e27a6812ca989506d5df7531'/>
<id>urn:sha1:a005c7636f30b710e27a6812ca989506d5df7531</id>
<content type='text'>
- org-roam-config.el: extract `cj/--org-roam-should-copy-completed-task-p'
  and gate the `org-after-todo-state-change-hook' on it.  Skips
  fileless buffers (org-capture, indirect, temp Org) where
  `buffer-file-name' is nil and the downstream copy used to crash.
  Same gcal.org skip preserved.  Five existing tests updated to
  bind `buffer-file-name' inside `run-hooks' so the positive-case
  hook still fires.

- org-webclipper.el: drop the redundant
  `org-protocol-protocol-alist' registration inside
  `cj/webclipper-ensure-initialized'.  The
  `with-eval-after-load 'org-protocol' block at the bottom of the
  module is the single registration site now; comment in the
  initializer explains why.  Split the matching test into two:
  one for template registration (the initializer's actual job) and
  one for protocol registration (which now fires from the
  after-load block when `org-protocol' provides).

- org-webclipper.el: validate `:url' and `:title' in
  `cj/org-protocol-webclip'.  `:url' must be a non-empty string;
  `:title' must be a string when provided.  Signals `user-error'
  with the unexpected value instead of silently setting the
  globals to nil and failing downstream in the capture handler.

- mu4e-org-contacts-integration.el: declare `contacts-file' (via
  `eval-when-compile (defvar ...)') and `cj/get-all-contact-emails'
  (via `declare-function') near the top of the file.  Byte-compile
  in isolation no longer warns about free variables / unknown
  functions; the cross-module dependency is explicit at the top.
</content>
</entry>
<entry>
<title>Revert "checking in modified/removed tests and other misc changes"</title>
<updated>2025-11-14T08:35:00+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-14T08:35:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=2312e40358a923fe72785af504c9272506d8d58d'/>
<id>urn:sha1:2312e40358a923fe72785af504c9272506d8d58d</id>
<content type='text'>
This reverts commit 1218bae708a6755e3628f15fef58e6806ac81039.
</content>
</entry>
<entry>
<title>checking in modified/removed tests and other misc changes</title>
<updated>2025-11-14T08:31:16+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-14T08:31:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=1218bae708a6755e3628f15fef58e6806ac81039'/>
<id>urn:sha1:1218bae708a6755e3628f15fef58e6806ac81039</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix:org-roam: copy completed tasks to dailies on state transitions</title>
<updated>2025-10-26T05:16:54+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-10-26T05:16:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=0418ccd93b2e9224de41db461a1a41f8658c6ec5'/>
<id>urn:sha1:0418ccd93b2e9224de41db461a1a41f8658c6ec5</id>
<content type='text'>
  Fixed and enhanced the org-roam hook that copies completed tasks to
  daily notes:

  - Fixed hook not triggering immediately after Emacs launch by moving it
    outside the lazy-loaded use-package org-roam :config block and into
    with-eval-after-load 'org

  - Changed hook to trigger for ANY org-done-keyword (DONE, CANCELLED,
    etc.) instead of just "DONE"

  - Updated hook to only trigger on non-done → done transitions using
    org-last-state, preventing duplicate copies when changing between
    done states (e.g., DONE → CANCELLED)

  - Added docstrings to org-roam helper functions to fix checkdoc linter
    warnings

  - Created comprehensive ERT test suite with 10 tests covering:
    * Hook registration before org-roam loads (lazy-loading fix)
    * Transitions to done states (nil→DONE, TODO→DONE, IN-PROGRESS→DONE,
      WAITING→CANCELLED)
    * Non-triggering cases (done→done, transitions to non-done states)
</content>
</entry>
</feed>
