Add voice dictation support - #99
ekishabasu1 wants to merge 2 commits into
Conversation
Add local speech recognition, dictation controls, voice settings, persistence, IPC plumbing, packaging, and smoke coverage. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: f9f046cd-30cb-4d7b-8e88-6f7ba3a9f90c
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: f9f046cd-30cb-4d7b-8e88-6f7ba3a9f90c
|
Thank youu! |
|
@JairEsk do you want to validate on mac and windows and merge approve the PR? :) |
|
Hi @ekishabasu1 @FreddyJD , Apologies for the delay on this — I was out over the weekend. :( Thanks for putting this PR together! Really excited about this feature. While testing the branch locally on macOS (
Root CauseIt looks like there is a structural discrepancy in the upstream
Since Suggested approachWe could dynamically resolve the inner root directory if a wrapper folder is detected after extraction: const binaryName = process.platform === 'win32' ? 'nemo-speech.exe' : 'nemo-speech'
let contentRoot = staging
if (!(await exists(join(contentRoot, 'bin', binaryName)))) {
const entries = await fsp.readdir(staging, { withFileTypes: true })
const nestedDir = entries.find((e) => e.isDirectory())
if (nestedDir && (await exists(join(staging, nestedDir.name, 'bin', binaryName)))) {
contentRoot = join(staging, nestedDir.name)
}
}
const expected = join(contentRoot, 'bin', binaryName)
if (!(await exists(expected))) {
throw new Error("The runtime archive didn't contain nemo-speech.")
}
await fsp.rm(runtimeDir(), { recursive: true, force: true })
await fsp.rename(contentRoot, runtimeDir())
Let me know what you think, and I'd be happy to re-test this on macOS once updated! :) 💯
<img width="806" height="173" alt="Captura de pantalla 2026-09-14 a la(s) 11 10 31" src="https://github.com/user-attachments/assets/be61eeb9-2ce0-4a06-8c1a-697cd2027e10" /> |
Summary
Validation