<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotemacs/scripts, branch lkg</title>
<subtitle>My Emacs configuration
</subtitle>
<id>https://git.cjennings.net/dotemacs/atom?h=lkg</id>
<link rel='self' href='https://git.cjennings.net/dotemacs/atom?h=lkg'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/'/>
<updated>2025-11-06T06:43:13+00:00</updated>
<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>feat: Add LanguageTool integration for comprehensive grammar checking</title>
<updated>2025-11-05T05:26:42+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-05T05:26:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=118b586691d199b57cc15089089fd545109b6e86'/>
<id>urn:sha1:118b586691d199b57cc15089089fd545109b6e86</id>
<content type='text'>
Integrated LanguageTool as an on-demand grammar checker, replacing the
previously disabled proselint checker.

Changes:
- Created scripts/languagetool-flycheck wrapper for flycheck integration
  - Converts LanguageTool JSON output to flycheck format
  - Includes suggestions in error messages
  - 30-second timeout for large files

- Updated modules/flycheck-config.el:
  - Defined languagetool checker for text/markdown/org/gfm modes
  - Updated cj/flycheck-prose-on-demand to use LanguageTool
  - Added installation instructions (sudo pacman -S languagetool)
  - Improved documentation clarity

- Usage: Press C-; ? in org/text/markdown files
  - Enables flycheck with LanguageTool
  - Shows errors in *Flycheck errors* buffer
  - On-demand only (no performance impact)

- Updated docs/NOTES.org:
  - Added best practice: Test Emacs launch after non-trivial changes
  - Example: emacs --eval "(kill-emacs)"
  - Catches startup errors before committing

- Disabled weather debug mode (wttrin-debug nil)

- Marked todo.org grammar checker task as DONE

LanguageTool catches real grammar issues (subject-verb agreement, tense,
punctuation, common mistakes) that proselint missed.

Installation: LanguageTool 6.6 (222MB) from Arch repos
Dependencies: Python 3 (for wrapper script)
</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/commit/?id=d9bcfaa1d4924897a313499c4ce6821e32e53d5b'/>
<id>urn:sha1:d9bcfaa1d4924897a313499c4ce6821e32e53d5b</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
</content>
</entry>
<entry>
<title>feat: Add comprehensive Makefile for testing and validation</title>
<updated>2025-11-03T19:17:31+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-03T19:17:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=1fed4b50fcc892568d6f2975927a45a189316b14'/>
<id>urn:sha1:1fed4b50fcc892568d6f2975927a45a189316b14</id>
<content type='text'>
Add Makefile adapted from chime.el with targets for:

Testing:
- make test              - Run all tests (unit + integration)
- make test-unit         - Run unit tests only
- make test-integration  - Run integration tests only
- make test-file FILE=&lt;filename&gt;  - Run specific test file
- make test-name TEST=&lt;pattern&gt;   - Run tests matching pattern

Validation:
- make validate-parens   - Check for unbalanced parentheses
- make validate-modules  - Load all modules to verify compilation
- make compile           - Byte-compile all modules
- make lint              - Run checkdoc, package-lint, elisp-lint

Utilities:
- make profile           - Profile Emacs startup
- make clean             - Remove test artifacts and compiled files
- make clean-compiled    - Remove .elc/.eln files only
- make clean-tests       - Remove test artifacts only
- make reset             - Reset to first launch (destructive!)

Default target is 'make help' which displays all available targets.

Inline scripts from scripts/ directory:
- delete-elisp-compiled-files.sh → make clean-compiled
- profile-dotemacs.sh → make profile
- reset-to-first-launch.sh → make reset

Delete inlined scripts to reduce duplication.
</content>
</entry>
<entry>
<title>chore:scripts: update reset script to remove additional files</title>
<updated>2025-11-01T17:58:34+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-01T17:58:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=165c87e13cf36a80fdbcc1005467002751d55cde'/>
<id>urn:sha1:165c87e13cf36a80fdbcc1005467002751d55cde</id>
<content type='text'>
Add removal of `emms` and `request` directories and several files to
enhance the reset-to-first-launch script to ensure complete cleanup
of user data.
</content>
</entry>
<entry>
<title>refactor:script: simplify elisp compiled file deletion script</title>
<updated>2025-10-29T13:59:42+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-10-29T13:59:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=e92d343a4a65ec18083e3ada5c86e88e8d79fa95'/>
<id>urn:sha1:e92d343a4a65ec18083e3ada5c86e88e8d79fa95</id>
<content type='text'>
Remove user confirmation and file listing prompt. Simplify the
script by directly deleting .eln and .elc files in the specified
location and confirming completion.
</content>
</entry>
<entry>
<title>feat:emacs-build-script:build both emacs and emacs-debug versions</title>
<updated>2025-10-23T04:53:09+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-10-23T04:53:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=e73ed3693ea61d53eb40c40d870e6385dabed206'/>
<id>urn:sha1:e73ed3693ea61d53eb40c40d870e6385dabed206</id>
<content type='text'>
</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>
