<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotemacs/docs, branch v0.7.2</title>
<subtitle>My Emacs configuration
</subtitle>
<id>https://git.cjennings.net/dotemacs/atom?h=v0.7.2</id>
<link rel='self' href='https://git.cjennings.net/dotemacs/atom?h=v0.7.2'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/'/>
<updated>2025-11-06T06:44:46+00:00</updated>
<entry>
<title>chore: Move docs folder to .gitignore</title>
<updated>2025-11-06T06:44:46+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-06T06:44:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=fd426c1980926c1c4a240262a0f9322156ea40f3'/>
<id>urn:sha1:fd426c1980926c1c4a240262a0f9322156ea40f3</id>
<content type='text'>
Removed docs/ from version control to keep session notes, personal
workflows, and V2MOM documentation private. These files remain on disk
but are no longer tracked by git.

Files removed from tracking:
- docs/NOTES.org (session history)
- docs/EMACS-CONFIG-V2MOM.org (personal goals)
- docs/SOMEDAY-MAYBE.org (research backlog)
- docs/values-comparison.org
- docs/workflows/*.org (workflow templates)

The docs/ folder still exists locally but is now gitignored.
</content>
</entry>
<entry>
<title>feat: Add AssemblyAI transcription backend with speaker diarization</title>
<updated>2025-11-06T06:43:13+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-06T06:43:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=7110f8c1f41b9c82288efb328c709dd00ed8fcb6'/>
<id>urn:sha1:7110f8c1f41b9c82288efb328c709dd00ed8fcb6</id>
<content type='text'>
Integrated AssemblyAI as the third transcription backend alongside OpenAI
API and local-whisper, now set as the default due to superior speaker
diarization capabilities (up to 50 speakers).

New Features:
- AssemblyAI backend with automatic speaker labeling
- Backend switching UI via C-; T b (completing-read interface)
- Universal speech model supporting 99 languages
- API key management through auth-source/authinfo.gpg

Implementation:
- Created scripts/assemblyai-transcribe (upload → poll → format workflow)
- Updated transcription-config.el with multi-backend support
- Added cj/--get-assemblyai-api-key for secure credential retrieval
- Refactored process environment handling from if to pcase
- Added cj/transcription-switch-backend interactive command

Testing:
- Created test-transcription-config--transcription-script-path.el
- 5 unit tests covering all 3 backends (100% passing)
- Followed quality-engineer.org guidelines (test pure functions only)
- Investigated 18 test failures: documented cleanup in todo.org

Files Modified:
- modules/transcription-config.el - Multi-backend support and UI
- scripts/assemblyai-transcribe - NEW: AssemblyAI integration script
- tests/test-transcription-config--transcription-script-path.el - NEW
- todo.org - Added test cleanup task (Method 3, priority C)
- docs/NOTES.org - Comprehensive session notes added

Successfully tested with 33KB and 4.1MB audio files (3s and 9s processing).
</content>
</entry>
<entry>
<title>docs: Add session notes for terminology refactor and template polish</title>
<updated>2025-11-05T19:07:04+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-05T19:07:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=ddfc140cc24373971e526c196eb8ddc97bca7d84'/>
<id>urn:sha1:ddfc140cc24373971e526c196eb8ddc97bca7d84</id>
<content type='text'>
Documented comprehensive session covering:
- Terminology refactor (session → workflow)
- Template enhancements in ~/documents/claude/
- Clear docs/ versioning policy for code vs non-code projects
</content>
</entry>
<entry>
<title>refactor: Rename "session" to "workflow" for documented processes</title>
<updated>2025-11-05T18:58:56+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-05T18:58:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=776b507351d5c8e05c107357c304240764f7d020'/>
<id>urn:sha1:776b507351d5c8e05c107357c304240764f7d020</id>
<content type='text'>
This resolves the ambiguity where "session" meant two different things:
- Working session (time period we work together)
- Documented routine/workflow (process to achieve a goal)

Changes:
- Renamed docs/sessions/ → docs/workflows/
- Renamed create-session.org → create-workflow.org
- Updated all references throughout:
  - "session type" → "workflow"
  - "session workflow" → "workflow"
  - "session definition" → "workflow definition"
  - "Available Session Types" → "Available Workflows"

Updated files:
- docs/NOTES.org - All workflow references updated
- docs/workflows/*.org - All workflow files updated with new terminology
- ~/documents/claude/NOTES.org - Template updated
- ~/documents/claude/NOTES-NEW.org - New template updated

Terminology now clear:
- "Let's run the refactor workflow" = Execute existing workflow
- "I want to create a refactor workflow" = Create new workflow definition
- "This session" = Working time period (unchanged)
</content>
</entry>
<entry>
<title>docs: Create generic V2MOM session workflow and consolidate NOTES.org</title>
<updated>2025-11-05T18:40:19+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-05T18:40:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=a6b2c1b5aeb4fc81afd7ebd9e55876643fb10757'/>
<id>urn:sha1:a6b2c1b5aeb4fc81afd7ebd9e55876643fb10757</id>
<content type='text'>
- Created docs/sessions/create-v2mom.org with fully generic V2MOM workflow
  - Applicable to any project: health, finance, software, personal goals
  - 8-phase process with examples across multiple domains
  - Time estimate: 2-3 hours to create a V2MOM

- Consolidated NOTES.org files (deleted root, enhanced docs/NOTES.org)
  - Integrated generic protocols from template
  - Added User Information, Session Protocols, File Preferences sections
  - Enhanced with Reminders Protocol and wrap-up workflow
  - Single comprehensive 1252-line reference for all sessions

- Updated docs/EMACS-CONFIG-V2MOM.org metadata
</content>
</entry>
<entry>
<title>feat: Configure scratch buffer for org-mode with cursor at end</title>
<updated>2025-11-05T07:00:38+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-05T07:00:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=f6b6717ee39a9480a139f2e47a34f006fee07c60'/>
<id>urn:sha1:f6b6717ee39a9480a139f2e47a34f006fee07c60</id>
<content type='text'>
- Set initial-major-mode to org-mode for *scratch* buffer
- Add emacs-startup-hook to position cursor at end of buffer
- Update greeting message comment syntax from ;; to # for org-mode
- Re-enable debug flag reset on startup in early-init.el

This makes the scratch buffer immediately ready for org-mode note-taking
with cursor positioned for typing, eliminating manual mode switching and
cursor movement.
</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/commit/?id=df1795543a272e2f637f9b3016f33786a9c1148e'/>
<id>urn:sha1:df1795543a272e2f637f9b3016f33786a9c1148e</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.
</content>
</entry>
<entry>
<title>docs: Add comprehensive external dependencies audit</title>
<updated>2025-11-05T05:58:20+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-05T05:58:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=634c91d83de56fdd72296be7392fd0385dab12b9'/>
<id>urn:sha1:634c91d83de56fdd72296be7392fd0385dab12b9</id>
<content type='text'>
Created config-dependencies.org documenting all external (non-Emacs)
dependencies required for full configuration functionality.

Analysis covers:
- ~50 external dependencies across all feature areas
- Organized by functionality (media, email, programming, documents, etc.)
- Package names for pacman/yay/pip/npm/go installation
- Required vs optional status for each dependency
- Quick reference commands for minimal/recommended/full installs

Key features documented:
- Audio/video recording (ffmpeg, libpulse)
- Transcription (whisper, languagetool)
- Email (mu, isync, msmtp)
- Programming language support (LSP servers for Go, Python, C, Bash, JS/TS)
- Document generation (pandoc, LaTeX, PDF tools)
- Media handling (yt-dlp, mpv)
- Desktop integration (dunst, xdg-utils)

Next steps:
- Compare with archsetup script to identify gaps
- Create dependency verification script
- Ensure archsetup installs all Emacs requirements

Session notes added documenting the analysis process.
</content>
</entry>
<entry>
<title>docs: Add wrap-up phrase variations to NOTES.org</title>
<updated>2025-11-05T05:38:33+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-05T05:38:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=a0a1fb8e9e5947417ff9134bfb4d856aa6c67bf7'/>
<id>urn:sha1:a0a1fb8e9e5947417ff9134bfb4d856aa6c67bf7</id>
<content type='text'>
Added 'wrap up', 'wrap this up', and 'wrap it up' to recognized
wrap-up trigger phrases for future sessions.
</content>
</entry>
<entry>
<title>docs: Add session notes for 2025-11-04 grammar checker test suite</title>
<updated>2025-11-05T05:37:42+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-05T05:37:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=cdb8829259c16afe404f2e46b53c941aaee3c8de'/>
<id>urn:sha1:cdb8829259c16afe404f2e46b53c941aaee3c8de</id>
<content type='text'>
Documented comprehensive test suite implementation:
- 15 tests covering LanguageTool integration (6 unit + 9 integration)
- Test fixtures with known grammar errors
- Applied quality-engineer.org testing philosophy
- All tests passing and integrated with Makefile
</content>
</entry>
</feed>
