1jehuang / 1jehuang/jcode

Feature request: native voice input (speak instead of typing prompts)

Open
#707 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

autonomous: no enhancement priority: low triage: needs-decision
Dominant language
Rust
Stars
19.9k
Forks
2.3k
Avg merge
2d 7h
Merged PRs (30d)
30

Description

Summary

Request: native voice input for jcode — speak instead of typing prompts, with the audio transcribed to text and submitted the same way a typed message is today.

Motivation

Typing every prompt is slower than speaking for many users/workflows, especially for long free-form asks, brainstorming, or when multitasking away from the keyboard. Claude Code and several other agent CLIs/desktop apps already support this via OS-level dictation as a workaround, but a first-class in-app voice input would be more discoverable and could integrate more tightly (e.g. a mic button/hotkey right in the TUI/desktop input bar, streaming partial transcription, auto-submit on silence, etc.) rather than relying on the user to separately invoke macOS dictation.

Current state

Confirmed via source search that jcode has no STT/TTS/voice feature today:

  • No "voice", "speech", "whisper", "microphone", "transcribe", "stt", or "tts" hits anywhere in crates/ or config.toml.
  • The only current workaround is OS-level dictation (e.g. macOS Fn Fn dictation hotkey) typing into the same input box jcode already has — functional, but external to jcode and not documented/surfaced as a supported flow.

Proposed scope (rough, for discussion)

  1. Input side (voice → text prompt):

    • A mic toggle (hotkey + button) in the TUI/desktop input bar.
    • Local or pluggable STT backend — e.g. whisper.cpp / OpenAI Whisper API / macOS's own Speech framework, configurable in config.toml similar to how provider/model routing works today.
    • Push-to-talk and/or silence-triggered auto-submit modes.
    • Should work on macOS to start (matches jcode's current primary platform); other platforms as a stretch goal.
  2. Output side (optional, separate ask if wanted): TTS read-aloud of assistant responses — lower priority, could be a follow-up issue rather than bundled here.

  3. Config surface: something like a [voice] section in config.toml (enabled, backend, hotkey, auto_submit_on_silence, etc.), consistent with how [display] and other sections are structured today.

Open questions for maintainers

  • Preferred STT backend/dependency (local whisper.cpp for privacy + no network dependency, vs. a cloud STT API for lower resource use)?
  • Should this live in jcode-tui only, or also the desktop2 app (given work is actively happening there per recent commit history — desktop2: a settings gear..., desktop2: more momentum... etc.)?
  • Is a mic-button UI affordance in scope, or hotkey-only for a first cut?

Happy to help scope this further or pick up implementation if there's appetite — filing this primarily to get it tracked and gather maintainer input on backend/architecture preference before any code is written.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the existing input and configuration areas under crates/ and config.toml, including the jcode-tui and desktop2 scope mentioned in the issue. Before implementation, get maintainer agreement on the STT backend, target interface, and whether TTS is excluded; done should mean a defined voice-to-text flow that submits prompts like typed input, with agreed configuration and platform coverage.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
cli, desktop
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.