<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotemacs.git/modules/transcription-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-01-29T21:59:34+00:00</updated>
<entry>
<title>fix(transcription): add T keybinding to dirvish-mode-map</title>
<updated>2026-01-29T21:59:34+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-29T21:59:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=8ee102b3ea0ec05e386c889e5bd4a9610cb6a52e'/>
<id>urn:sha1:8ee102b3ea0ec05e386c889e5bd4a9610cb6a52e</id>
<content type='text'>
Dirvish uses its own keymap rather than inheriting from dired-mode-map,
so the transcription keybinding needs to be explicitly added.
</content>
</entry>
<entry>
<title>fix(recording): Fix phone call audio capture with amix filter</title>
<updated>2025-11-15T00:34:39+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-15T00:34:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=6d4fe20acf25a2d0a585dc89286439aaedc7aace'/>
<id>urn:sha1:6d4fe20acf25a2d0a585dc89286439aaedc7aace</id>
<content type='text'>
Phone calls were not capturing the remote person's voice due to severe
volume loss (44 dB) when using the amerge+pan FFmpeg filter combination.

Changes:
- Replace amerge+pan with amix filter (provides 44 dB volume improvement)
- Increase default system volume from 0.5 to 2.0 for better capture levels
- Add diagnostic tool to show active audio playback (C-; r w)
- Add integration test with real voice recording
- Fix batch mode compatibility for test execution

The amix filter properly mixes microphone and system monitor inputs without
the massive volume loss that amerge+pan caused. Verified with automated
integration test showing perfect transcription of test audio.

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

Co-Authored-By: Claude &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>perf: Merge performance branch - org-agenda cache, tests, and inbox zero</title>
<updated>2025-11-12T08:46:27+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-12T08:46:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=84eef1d3b1b0195a2f8fbf5b141ba5e58004c28d'/>
<id>urn:sha1:84eef1d3b1b0195a2f8fbf5b141ba5e58004c28d</id>
<content type='text'>
This squash merge combines 4 commits from the performance branch:

## Performance Improvements
- **org-agenda cache**: Cache org-agenda file list to reduce rebuild time
  - Eliminates redundant file system scans on each agenda view
  - Added tests for cache invalidation and updates

- **org-refile cache**: Optimize org-refile target building (15-20s → instant)
  - Cache eliminates bottleneck when capturing tasks

## Test Suite Improvements
- Fixed all 18 failing tests → 0 failures (107 test files passing)
- Deleted 9 orphaned test files (filesystem lib, dwim-shell-security, org-gcal-mock)
- Fixed missing dependencies (cj/custom-keymap, user-constants)
- Fixed duplicate test definitions and wrong variable names
- Adjusted benchmark timing thresholds for environment variance
- Added comprehensive tests for org-agenda cache functionality

## Documentation &amp; Organization
- **todo.org recovery**: Restored 1,176 lines lost in truncation
  - Recovered Methods 4, 5, 6 + Resolved + Inbox sections
  - Removed 3 duplicate TODO entries

- **Inbox zero**: Triaged 12 inbox items → 0 items
  - Completed: 3 tasks marked DONE (tests, transcription)
  - Relocated: 4 tasks to appropriate V2MOM Methods
  - Deleted: 4 duplicates/vague tasks
  - Merged: 1 task as subtask

## Files Changed
- 58 files changed, 29,316 insertions(+), 2,104 deletions(-)
- Tests: All 107 test files passing
- Codebase: Cleaner, better organized, fully tested

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

Co-Authored-By: Claude &lt;noreply@anthropic.com&gt;
</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.git/commit/?id=afb86d5c559413bddf80ff38260d0cf0debb585f'/>
<id>urn:sha1:afb86d5c559413bddf80ff38260d0cf0debb585f</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).

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

Co-Authored-By: Claude &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix: Update transcription keybindings for clarity</title>
<updated>2025-11-04T20:40:20+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-04T20:40:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=97f722e8255705b7cd2d5b21432ea5c20d8e1321'/>
<id>urn:sha1:97f722e8255705b7cd2d5b21432ea5c20d8e1321</id>
<content type='text'>
Changed transcription submenu keybindings:
- C-; t t → C-; t a (transcribe audio)
- C-; t b → C-; t v (view transcriptions)
- C-; t k → unchanged (kill transcription)

More intuitive mnemonics: a=audio, v=view, k=kill

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

Co-Authored-By: Claude &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat: Add complete async audio transcription workflow</title>
<updated>2025-11-04T20:35:50+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-04T20:35:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=45cab5c38dc089935416a89d36b461d9127094ac'/>
<id>urn:sha1:45cab5c38dc089935416a89d36b461d9127094ac</id>
<content type='text'>
Implemented full transcription system with local Whisper and OpenAI API
support. Includes comprehensive test suite (60 tests) and reorganized
keybindings for better discoverability.

Features:
- Async transcription (non-blocking workflow)
- Desktop notifications (started/complete/error)
- Output: audio.txt (transcript) + audio.log (process logs)
- Modeline integration showing active transcription count
- Dired integration (press T on audio files)
- Process management and tracking

Scripts:
- install-whisper.sh: Install Whisper via AUR or pip
- uninstall-whisper.sh: Clean removal with cache cleanup
- local-whisper: Offline transcription using installed Whisper
- oai-transcribe: Cloud transcription via OpenAI API

Tests (60 passing):
- Audio file detection (16 tests)
- Path generation logic (11 tests)
- Log cleanup behavior (5 tests)
- Duration formatting (9 tests)
- Active counter &amp; modeline (11 tests)
- Integration workflows (8 tests)

Keybindings:
- Reorganized gcal to C-; g submenu (s/t/r/c)
- Added C-; t transcription submenu (t/b/k)
- Dired: T to transcribe file at point

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

Co-Authored-By: Claude &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
