You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Feat: Add whisper speech-to-text input command with post-transcription actions for insert, editable send-to-session, and clipboard copy (#268)
* Add Whisper speech-to-text input and tests
* Rename menu entry v to Git/GitHub action
* update HISTORY
* Rename menu label to GitHub PR AI Action
* Refactor speech-to-text and lazy-load prompt mode
* fix test suites
* Add comparison table and clarify differences
* Enable AI session links by default
Copy file name to clipboardExpand all lines: README.org
+21-2Lines changed: 21 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,7 +27,24 @@ An Emacs interface for AI-assisted software development. *The purpose is to prov
27
27
28
28
- I switch between different CLI-based AI tools in Emacs: Claude Code / OpenAI Codex / Gemini CLI / etc. If you also use different AI tools inside Emacs, but want to keep the same user interface and experience, this package is for you.
29
29
30
-
- Lots of features and tools are ported from [[https://github.com/tninja/aider.el][aider.el]]. If you like the features in aider.el, but wish to switch to modern AI coding CLI, this package is also for you.
30
+
- If you are deciding between the main AI coding packages inside Emacs, the most important question is this: do you want one consistent coding workflow across many AI tools, or do you want the deepest integration for one specific agent runtime? The table below focuses on the user-visible differences that matter day to day.
| Switching | Best when you move between Codex, Claude Code, Gemini CLI, Copilot CLI, and other supported backends without relearning commands | Claude Code only | Many ACP agents, but through one ACP shell model | ECA agents and models inside one ECA workspace |
35
+
| Context | Current file, visible buffers, function or region, saved repo context, prompt files, and @ file completion | Active file, selection, project data, diagnostics, and editor-aware mentions | Shell session context, project files, transcripts, screenshots, and clipboard image support | File and range references, repomap, cursor auto-context, and workspace-aware chats |
36
+
| Editor tools | Built-in Emacs MCP tools for project info, imenu, xref, and tree-sitter, plus MCP debug and config helpers | Deepest Claude-specific Emacs MCP bridge, including diagnostics and custom Emacs tools exposed to Claude | MCP server configuration is available, but the main focus is the ACP shell session | MCP-aware chat settings and tool-call handling, but centered on the ECA server |
37
+
| Actions | Task-first actions such as change code, implement TODO, explain, ask, refactor, and prompt workflows | Claude-first IDE prompting, mentions, and editor-aware operations | Shell-first agent interaction; coding style depends on the ACP agent you connect | Chat-first coding, context injection, and rewrite flows |
38
+
| Dev loop | Built-in TDD cycle, diff review, Magit helpers, and refactoring actions | Strong Claude-specific ediff flow with diagnostics-aware review | Strong queue, transcript, model-switching, and container-friendly shell workflow | Strong approvals, rewrite diff, timelines, and saved chats |
39
+
| Sessions | One consistent workflow even when the backend changes underneath | Multiple Claude sessions per project | Multiple ACP shells with queueing and transcripts | Multiple chats per workspace with agent and model switching |
40
+
| Visibility | Review-oriented commands, prompt files, and backend-aware session buffers | Session list, debug buffer, resume flow, and IDE diff controls | Queue view, transcripts, screenshots, and shell-level visibility | Tool-call approvals, expandable blocks, timeline view, and chat state indicators |
41
+
| Best fit | You want one Emacs UX across many AI coding tools | You want the deepest Claude Code integration in Emacs | You want ACP-native shells and transcript-heavy workflows | You want a polished server-backed chat workspace |
42
+
43
+
- All four packages share the same broad goal: keep AI-assisted coding inside Emacs, preserve project context, and make long-running AI sessions practical. The difference is where they place the center of gravity. =claude-code-ide.el= goes deepest on Claude Code plus MCP-powered editor awareness. =agent-shell= goes deepest on ACP and shell-native agent operations. =eca-emacs= goes deepest on a dedicated server-backed chat UX.
44
+
45
+
- =ai-code-interface.el= is different because its biggest advantage is *one stable coding workflow across many AI backends*. Unlike =claude-code-ide.el=, which is centered on Claude Code, =agent-shell=, which is centered on ACP shells, or =eca-emacs=, which is centered on the ECA server, =ai-code-interface.el= keeps the same menu, context gathering, prompt construction, refactoring actions, TDD helpers, git-oriented review flow, and Emacs MCP tools while the backend changes underneath. In practice, that means switching from Claude Code to Codex, Gemini CLI, Copilot CLI, or another backend does not force you to relearn how you work inside Emacs.
46
+
47
+
- That also means this package is a good fit when you do not want to pick a single winner forever. You can keep using specialized backends when they are the right tool for a task, but still drive them from one Emacs-centered interface focused on code changes, review, and iterative development instead of one vendor-specific chat surface.
31
48
32
49
- Screenshot
33
50
@@ -109,6 +126,7 @@ Enable installation of packages from MELPA by adding an entry to package-archive
109
126
110
127
*** Optional Dependencies
111
128
- `helm`: For an enhanced auto-completion experience (`ai-code-input.el`).
129
+
- `whisper`: For speech-to-text input via `ai-code-speech-to-text-input`. Record audio, press `RET` to stop, then choose whether to insert the transcription into the current buffer, send it to the active AI coding session with editable initial input, or copy it to the clipboard.
112
130
- `gptel`: For intelligent, AI-generated content headlines in the prompt file.
113
131
- ai-code-task-use-gptel-filename: When non-nil, file name created by `ai-code-create-or-open-task-file` or `ai-code-create-file-or-dir` will have auto-generated filenames created by GPTel
114
132
- ai-code-notes-use-gptel-headline: When non-nil, notes created by `ai-code-take-notes` will have auto-generated headlines created by GPTel
@@ -131,7 +149,7 @@ Enable installation of packages from MELPA by adding an entry to package-archive
131
149
[[./clickable_link_ai_session.png]]
132
150
- *Context-Aware Code Actions*: The menu exposes dedicated entries for changing code (`c`), implementing TODOs (`i`), asking questions (`q`), explaining code (`x`), sending free-form commands (`<SPC>`), and refreshing AI context (`@`). Each command automatically captures the surrounding function, region, or clipboard contents (via `C-u`) to keep prompts precise.
133
151
- *Agile Development Workflows*: Use the refactoring navigator (`r`), the guided TDD cycle (`t`), and the pull/review diff helper (`v`) to keep AI-assisted work aligned with agile best practices. Prompt authoring is first-class through quick access to the prompt file (`p`), build/test helper (`b`), and AI-assisted shell/file execution (`!`). In prompt files, send the current block with `C-c C-c`.
134
-
- *Productivity & Debugging Utilities*: Initialize project navigation assets (`.`), investigate exceptions (`e`), auto-fix Flycheck issues in scope (`f`), copy or open file paths formatted for prompts (`k`, `o`), generate MCP inspector commands (`m`), capture session notes straight into Org (`n`), and toggle desktop notifications (`N`) to get alerted when AI responses are ready in background sessions.
152
+
- *Productivity & Debugging Utilities*: Initialize project navigation assets (`.`), investigate exceptions (`e`), auto-fix Flycheck issues in scope (`f`), copy or open file paths formatted for prompts (`k`, `o`), generate MCP inspector commands (`m`), capture session notes straight into Org (`n`), dictate prompts with speech-to-text (`:`), and toggle desktop notifications (`N`) to get alerted when AI responses are ready in background sessions.
135
153
- *Seamless Prompt Management*: Open the prompt file via `ai-code-open-prompt-file` (stored under `.ai.code.files/.ai.code.prompt.org` by default), send regions with `ai-code-prompt-send-block`, and reuse prompt snippets via `yasnippet` to keep conversations organized.
136
154
- *Interactive Chat & Context Tools*: Dedicated buffers hold long-running chats, automatically enriched with file paths, diffs, and history from Magit or Git commands for richer AI responses.
137
155
- *AI-Assisted Bash Commands*: From Dired, shell, eshell, or vterm, run `C-c a !` and type natural-language commands prefixed with `:` (e.g., `:count lines of python code recursively`); the tool generates the shell command for review and executes it in a compile buffer.
@@ -147,6 +165,7 @@ Enable installation of packages from MELPA by adding an entry to package-archive
147
165
- *One-prompt TDD with refactoring*: Press `C-c a`, then `t` (`ai-code-tdd-cycle`) and choose `5. Red + Green + Blue (One prompt)` to generate tests, implement code, run tests, and then refactor the changed code in one flow.
148
166
- *Reviewing a Pull Request*: Press `C-c a`, then `v` (`ai-code-pull-or-review-diff-file`). Choose to generate a diff between two branches. The diff will be created in a new buffer, and you'll be prompted to start a review.
149
167
- *Multiple Sessions Support*: Start more AI coding session with C-c a a after launching one. Select active session with C-c a z. Prompt with above command will be sent to the selected session.
168
+
- *Speech to Text Input*: Press `C-c a`, then `:` (`ai-code-speech-to-text-input`). Speak your prompt, press `RET` to stop recording, then choose whether to insert the transcription into the current buffer, send it to the active AI coding session after editing it in `ai-code-read-string`, or copy it to the clipboard.
0 commit comments