<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotemacs/modules/dirvish-config.el, branch performance</title>
<subtitle>My Emacs configuration
</subtitle>
<id>https://git.cjennings.net/dotemacs/atom?h=performance</id>
<link rel='self' href='https://git.cjennings.net/dotemacs/atom?h=performance'/>
<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:dirvish-config: Enable file marking for mu4e attachments</title>
<updated>2025-10-31T10:55:41+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-10-31T10:55:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=fe4dc5ea4c1de2c079d34d5bed4b93aa152aa660'/>
<id>urn:sha1:fe4dc5ea4c1de2c079d34d5bed4b93aa152aa660</id>
<content type='text'>
Add 'turn-on-gnus-dired-mode' to 'dired-mode-hook' to facilitate
marking files in Dirvish for attachment in mu4e emails.
</content>
</entry>
<entry>
<title>fix(dirvish): move deadgrep from D to G, preserve dired-do-delete on D</title>
<updated>2025-10-29T18:14:00+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-10-29T18:14:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=b9adb25f6de84eda3c6daed040b918778bc66a9e'/>
<id>urn:sha1:b9adb25f6de84eda3c6daed040b918778bc66a9e</id>
<content type='text'>
The previous commit incorrectly moved deadgrep to 'D', which conflicts
with the important dired-do-delete command (immediate delete of marked
files). This commit moves deadgrep to 'G' instead.

## Changes

**prog-general.el:**
- Move cj/deadgrep-here from 'D' to 'G' (was dired-do-chgrp, rarely used)

**dirvish-config.el:**
- Updated Commentary to document both 'D' and 'G' keybindings
- 'D' remains dired-do-delete (standard dired immediate delete)
- 'G' is now deadgrep search

## Final Keybinding Map

| Key | Binding                       | Purpose                        |
|-----|-------------------------------|--------------------------------|
| d   | cj/dirvish-duplicate-file     | Duplicate with "-copy" suffix  |
| D   | dired-do-delete               | Delete marked files (standard) |
| g   | dirvish-quick-access          | Quick directory menu           |
| G   | cj/deadgrep-here              | Search with deadgrep           |

Capital G is mnemonic for "Grep" and doesn't conflict with important
dired commands. dired-do-chgrp is rarely used and not a loss.
</content>
</entry>
<entry>
<title>feat(dirvish): add file duplication with 'd' key, move deadgrep to 'D'</title>
<updated>2025-10-29T18:08:54+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-10-29T18:08:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=674feedb2d4d0484040be42e5ccec95e4e355c2a'/>
<id>urn:sha1:674feedb2d4d0484040be42e5ccec95e4e355c2a</id>
<content type='text'>
This commit adds a convenient file duplication function to dirvish and
reorganizes keybindings to avoid conflicts.

## Changes

**1. New function: cj/dirvish-duplicate-file (dirvish-config.el:150)**

Duplicates the file at point with "-copy" suffix before the extension:
- report.pdf → report-copy.pdf
- script.el → script-copy.el
- README → README-copy

Features:
- Prevents duplicating directories (files only)
- Checks if target exists and prompts to overwrite
- Refreshes buffer automatically after copying
- Shows clear message with old and new names

**2. Keybinding changes**

dirvish-config.el:
- Bound 'd' to cj/dirvish-duplicate-file (was dired-flag-file-deletion)
- Updated Commentary section to document new binding

prog-general.el:
- Moved cj/deadgrep-here from 'd' to 'D' (capital D)
- More mnemonic: D for Deadgrep
- Avoids conflict with new duplicate function

## Rationale

The 'd' key is prime real estate in file managers, and duplicating files
is a very common operation. The standard dired-flag-file-deletion is still
available via 'x' or the mark-and-delete workflow.

Deadgrep on 'D' is more discoverable (capital D for Deadgrep) and less
likely to be pressed accidentally.

## Usage

In dirvish, navigate to a file and press:
- 'd' - Duplicate file with "-copy" suffix
- 'D' - Search with deadgrep in current directory
</content>
</entry>
<entry>
<title>refactor:dirvish: Remove redundant nerd-icons setup</title>
<updated>2025-10-26T01:10:48+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-10-26T01:10:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=cad9605164155e4697409517c192b15cac5c6fe5'/>
<id>urn:sha1:cad9605164155e4697409517c192b15cac5c6fe5</id>
<content type='text'>
Move the `nerd-icons` setup from `dirvish-config.el` to
`font-config.el` to consolidate icon configurations.
</content>
</entry>
<entry>
<title>refactor:dirvish: remove unused dired sidebar code</title>
<updated>2025-10-26T01:08:04+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-10-26T01:08:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=b4d202f3256c6cfdd8a407169521cc7eb219f423'/>
<id>urn:sha1:b4d202f3256c6cfdd8a407169521cc7eb219f423</id>
<content type='text'>
Remove unused functions and configurations related to dired-sidebar
and nerd-icons-dired. This cleans up the code and reduces
unnecessary dependencies within the dashboard-config.el and
dirvish-config.el modules.
</content>
</entry>
<entry>
<title>feat(dirvish-config): Add sidebar attribute setting</title>
<updated>2025-10-26T00:24:27+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-10-26T00:24:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=ab51c3d68467f409d3da5e8d91855a75846bccce'/>
<id>urn:sha1:ab51c3d68467f409d3da5e8d91855a75846bccce</id>
<content type='text'>
Add `dirvish-side-attributes` for explicit sidebar configuration.
</content>
</entry>
<entry>
<title>feat:dirvish: shortcuts for Google Drive, remote git:cjennings.net</title>
<updated>2025-10-25T21:36:53+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-10-25T21:36:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=261ca11f7cca84e5f0bbe1d2d96999f1744214be'/>
<id>urn:sha1:261ca11f7cca84e5f0bbe1d2d96999f1744214be</id>
<content type='text'>
Include shortcuts for Google Drive in documents and add a remote
access path for git at cjennings.net in the dirvish configuration.
</content>
</entry>
<entry>
<title>feat:dirvish-config: Add absolute path copy functionality</title>
<updated>2025-10-23T05:26:17+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-10-23T05:26:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=57bd5af172f8d6c91ebac0b8edf1f8458fa47f08'/>
<id>urn:sha1:57bd5af172f8d6c91ebac0b8edf1f8458fa47f08</id>
<content type='text'>
Introduce the 'L' key binding to copy the absolute file path in
Dirvish. Extend `cj/dired-copy-path-as-kill` function to support
force copying of absolute paths with the new `force-absolute`
argument. This enhances the path copying capabilities by allowing
users to directly copy absolute paths when needed.
</content>
</entry>
<entry>
<title>refactor(dirvish-config): streamline commentary and key bindings</title>
<updated>2025-10-23T05:01:10+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-10-23T05:01:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=60ae04b619382615b5117cea8cb402c3160ca31f'/>
<id>urn:sha1:60ae04b619382615b5117cea8cb402c3160ca31f</id>
<content type='text'>
Condensed the commentary section to enhance readability. Reorganized
key bindings to follow a consistent format and moved `dired-mode`
auto-reversion to a separate expression. Simplified the
`use-package` declaration with a deferred init and added mode
overrides.
</content>
</entry>
</feed>
