<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotemacs.git/modules/auth-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-02-15T20:41:12+00:00</updated>
<entry>
<title>fix(keybindings): remove auth-cache binding from C-; A</title>
<updated>2026-02-15T20:41:12+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-15T20:41:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=8be31167f77ace5a2660ac916c06866348b5fe5a'/>
<id>urn:sha1:8be31167f77ace5a2660ac916c06866348b5fe5a</id>
<content type='text'>
Resolves conflict with align-regexp on the same key. Auth cache reset
is accessible via M-x cj/reset-auth-cache.
</content>
</entry>
<entry>
<title>refactor: Use cj/log-silently for debug messages</title>
<updated>2025-11-17T04:10:58+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-17T04:10:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=eb261131bd8652ee8565526f68bd922e7b60c70f'/>
<id>urn:sha1:eb261131bd8652ee8565526f68bd922e7b60c70f</id>
<content type='text'>
Converted debug/informational messages to use cj/log-silently instead of
message across multiple modules. These are automatic initialization or
background task messages that don't need minibuffer display but should
still be logged to *Messages* buffer.

Changes:
- org-agenda-config.el: Cache build/hit messages (4 messages)
- org-refile-config.el: Cache build/hit + mode switching (5 messages)
- org-export-config.el: reveal.js download message (1 message)
- auth-config.el: oauth2-auto cache fix message (1 message)
- quick-video-capture.el: initialization message (1 message)

All modules now require system-lib for cj/log-silently function.
Keeps UI clean while maintaining debuggability.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix: Resolve Google Calendar password prompts via advice</title>
<updated>2025-11-11T23:39:43+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-11T23:35:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=9701946c6e037fabf033f18597f94bf05dfbf09f'/>
<id>urn:sha1:9701946c6e037fabf033f18597f94bf05dfbf09f</id>
<content type='text'>
Fixed oauth2-auto.el caching bug using Emacs advice system (survives updates).

Root Cause:
- oauth2-auto version 20250624.1919 has `or nil` on line 206
- This completely disables the internal hash-table cache
- Every org-gcal sync requires decrypting oauth2-auto.plist from disk
- GPG passphrase prompted every ~15 minutes (violated "Frictionless" value)

The Fix (via advice):
- Created cj/oauth2-auto--plstore-read-fixed with cache enabled
- Applied as :override advice to oauth2-auto--plstore-read
- Survives package updates (unlike direct modification)
- Can be easily removed if upstream fixes the bug

Changes:
- modules/auth-config.el:
  * Added cj/oauth2-auto--plstore-read-fixed (lines 75-93)
  * Applied advice on package load (lines 96-98)
  * Added cj/clear-oauth2-auto-cache helper
  * Documented fix in commentary (lines 16-22)
- todo.org: Mark #A priority task as DONE
- docs/oauth2-auto-cache-fix.md: Detailed documentation

Result:
- Passphrase prompted ONCE per Emacs session (on cold start)
- Subsequent org-gcal syncs use cached tokens (no prompts)
- Workflow now frictionless as intended
- Fix persists across package updates

Upstream:
- Bug acknowledged in code: "Assume cache is invalidated. FIXME"
- Should report to: https://github.com/rhaps0dy/emacs-oauth2-auto
- Simple fix: Remove `or nil` on line 206

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat: Fix modeline lag and add org multi-level sort with comprehensive tests</title>
<updated>2025-11-08T22:11:58+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-08T22:11:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=8176eff73b826f7fec9d7f458f7d2f36f4d12e58'/>
<id>urn:sha1:8176eff73b826f7fec9d7f458f7d2f36f4d12e58</id>
<content type='text'>
Performance improvement and new feature with full test coverage.

## Changes

### 1. Fix modeline line/column position lag (#A priority)
- Replace expensive line-number-at-pos with cached %l/%c format specifiers
- Enable line-number-mode explicitly for caching
- Result: Instant modeline updates, zero performance overhead
- Files: modules/modeline-config.el:81-83, modules/ui-config.el:53

### 2. Implement multi-level org sorting
- New function: cj/org-sort-by-todo-and-priority
- Sorts by TODO status (TODO before DONE) AND priority (A→B→C→D)
- Uses stable sorting: priority first, then TODO state
- Gracefully handles empty sections (no error)
- Bound to C-; o o (ordering → org sort)
- Files: modules/org-config.el:278-299, modules/custom-ordering.el:253,267

### 3. Comprehensive ERT test suite (12/12 passing)
- Normal cases: Mixed TODO/DONE, multiple of same type, same priority
- Boundary cases: Empty sections, single entries, no priorities
- Error cases: Non-org-mode buffer
- Test file: tests/test-org-sort-by-todo-and-priority.el

### 4. Testing improvements discovered
- Disable org-mode hooks to avoid package dependencies in batch mode
- org-sort-entries must be called from parent heading
- Preserve priority cookie in org-get-heading (t t nil t)
- Add condition-case to handle "Nothing to sort" gracefully

### 5. Minor cleanup
- Comment out chime-debug setting (org-agenda-config.el:267)
- Mark modeline lag task as DONE in todo.org

## Technical Details

Modeline optimization:
- line-number-at-pos is O(n) where n = current line
- %l and %c are O(1) lookups from cached values

Org sorting algorithm uses stable sort:
1. Sort by priority (A, B, C, D, unprioritized)
2. Sort by TODO status (preserves priority order within groups)
Result: TODO [#A], TODO [#B], DONE [#A], DONE [#B], etc.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat: Add comprehensive authentication cache reset utility</title>
<updated>2025-11-06T23:58:40+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-06T23:58:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=90b24921b780da0c9ec60f8aed256e91066df9a1'/>
<id>urn:sha1:90b24921b780da0c9ec60f8aed256e91066df9a1</id>
<content type='text'>
Added cj/reset-auth-cache function to recover from incorrect password
entry for encrypted files like authinfo.gpg. Resolves "Bad session key"
and "Decryption failed" errors.

Key features:
- Smart cache clearing: preserves 400-day GPG/SSH cache by default
- Optional prefix arg (C-u) to also clear gpg-agent cache
- Clears auth-source, EPA file handler, and optionally gpg-agent caches
- Bound to C-; A for easy access (removed from debug menu C-c d)

Also added cj/kill-gpg-agent for aggressive agent reset when needed.

Consolidates and replaces simpler auth-source-only version that was
previously in config-utilities.el.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix: Resolve Google Calendar password prompts every 10 minutes</title>
<updated>2025-11-05T06:53:52+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-05T06:53:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=76b7a15d7eaeaff81874d922d5ce2b0090eb7c98'/>
<id>urn:sha1:76b7a15d7eaeaff81874d922d5ce2b0090eb7c98</id>
<content type='text'>
Problem: oauth2-auto.plist passphrase requested every ~10 minutes during
gcal-sync auto-sync, interrupting workflow despite 400-day gpg-agent cache.

Root cause: auth-config.el was setting GPG_AGENT_INFO to nil, telling
Emacs to ignore gpg-agent entirely. Additionally, plstore caching was
loading too late in org-gcal-config.

Solution:
- Disabled GPG_AGENT_INFO override to allow gpg-agent usage
- Added auth-source-cache-expiry (24-hour cache for credentials)
- Moved plstore configuration from org-gcal-config to auth-config
- Enabled plstore-cache-passphrase-for-symmetric-encryption globally
- Set plstore-encrypt-to nil for symmetric encryption

Files modified:
- modules/auth-config.el: Added plstore config, removed agent bypass
- modules/org-gcal-config.el: Removed duplicate plstore config
- docs/NOTES.org: Session notes documenting fix

Testing: Restart Emacs and verify no password prompts for 30+ minutes.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix cosmetic whitespace issue</title>
<updated>2025-10-22T17:14:59+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-10-22T17:14:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=2a543ea6a0fd018a24008fba514a6967c3f62cfb'/>
<id>urn:sha1:2a543ea6a0fd018a24008fba514a6967c3f62cfb</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix: auth-config: change require for user-constants</title>
<updated>2025-10-20T14:06:28+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-10-20T14:06:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=b4d89552f8c6b34b202dd4ef01e14a43da1440e8'/>
<id>urn:sha1:b4d89552f8c6b34b202dd4ef01e14a43da1440e8</id>
<content type='text'>
Switch from require to eval-when-compile for loading user-constants
to ensure the authinfo-file location is defined at compile-time.
</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.git/commit/?id=092304d9e0ccc37cc0ddaa9b136457e56a1cac20'/>
<id>urn:sha1:092304d9e0ccc37cc0ddaa9b136457e56a1cac20</id>
<content type='text'>
</content>
</entry>
</feed>
