opencode voice dictation
Find a file
dependabot[bot] f5956d0268
build(deps-dev): bump happy-dom from 17.6.3 to 20.10.6 (#6)
Bumps [happy-dom](https://github.com/capricorn86/happy-dom) from 17.6.3
to 20.10.6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/capricorn86/happy-dom/releases">happy-dom's
releases</a>.</em></p>
<blockquote>
<h2>v20.10.6</h2>
<h3>👷‍♂️ Patch fixes</h3>
<ul>
<li>Await NodeJS internal ReadableStream promise during teardown - By
<strong><a
href="https://github.com/capricorn86"><code>@​capricorn86</code></a></strong>
in task <a
href="https://redirect.github.com/capricorn86/happy-dom/issues/2217">#2217</a></li>
</ul>
<h2>v20.10.5</h2>
<h3>👷‍♂️ Patch fixes</h3>
<ul>
<li>Adds cache to query selector parser - By <strong><a
href="https://github.com/capricorn86"><code>@​capricorn86</code></a></strong>
in task <a
href="https://redirect.github.com/capricorn86/happy-dom/issues/2142">#2142</a>
<ul>
<li>The selector parser degraded in performance in v20.6.3 to solve more
complex selectors</li>
<li>Parsing is still a bit slower, but the cache will hopefully mitigate
most of the problem</li>
</ul>
</li>
</ul>
<h2>v20.10.4</h2>
<h3>👷‍♂️ Patch fixes</h3>
<ul>
<li>Coerce null qualifiedName to empty string in createDocument - By
<strong><a
href="https://github.com/Firer"><code>@​Firer</code></a></strong> in
task <a
href="https://redirect.github.com/capricorn86/happy-dom/issues/2206">#2206</a></li>
</ul>
<h2>v20.10.3</h2>
<h3>👷‍♂️ Patch fixes</h3>
<ul>
<li>Fix &quot;~=&quot; attribute selector matching hyphenated substrings
in CSS selectors - By <strong><a
href="https://github.com/mixelburg"><code>@​mixelburg</code></a></strong>
in task <a
href="https://redirect.github.com/capricorn86/happy-dom/issues/2194">#2194</a></li>
</ul>
<h2>v20.10.2</h2>
<h3>👷‍♂️ Patch fixes</h3>
<ul>
<li>Updates external dependencies - By <strong><a
href="https://github.com/capricorn86"><code>@​capricorn86</code></a></strong>
in task <a
href="https://redirect.github.com/capricorn86/happy-dom/issues/2163">#2163</a></li>
</ul>
<h2>v20.10.0</h2>
<h3>🎨 Features</h3>
<ul>
<li>Adds support for setting a canvas adapter for handling the canvas
rendering using the browser setting <a
href="https://github.com/capricorn86/happy-dom/wiki/IOptionalBrowserSettings">canvasAdapter</a>
- By <strong><a
href="https://github.com/RAprogramm"><code>@​RAprogramm</code></a></strong>
and <strong><a
href="https://github.com/capricorn86"><code>@​capricorn86</code></a></strong>
in task <a
href="https://redirect.github.com/capricorn86/happy-dom/issues/241">#241</a></li>
<li>Adds new package <a
href="https://github.com/capricorn86/happy-dom/tree/master/packages/%40happy-dom/node-canvas-adapter">@​happy-dom/node-canvas-adapter</a>
- By <strong><a
href="https://github.com/RAprogramm"><code>@​RAprogramm</code></a></strong>
and <strong><a
href="https://github.com/capricorn86"><code>@​capricorn86</code></a></strong>
in task <a
href="https://redirect.github.com/capricorn86/happy-dom/issues/241">#241</a>
<ul>
<li><a
href="https://github.com/capricorn86/happy-dom/tree/master/packages/%40happy-dom/node-canvas-adapter">@​happy-dom/node-canvas-adapter</a>
is a pluggable canvas adapter for Happy DOM using <a
href="https://github.com/Automattic/node-canvas">node-canvas</a>.</li>
</ul>
</li>
<li>Adds support for loading image files when enabling the browser
setting <a
href="https://github.com/capricorn86/happy-dom/wiki/IOptionalBrowserSettings">enableImageFileLoading</a>
- By <strong><a
href="https://github.com/capricorn86"><code>@​capricorn86</code></a></strong>
in task <a
href="https://redirect.github.com/capricorn86/happy-dom/issues/241">#241</a></li>
<li>Adds support for loading image data URLs - By <strong><a
href="https://github.com/capricorn86"><code>@​capricorn86</code></a></strong>
in task <a
href="https://redirect.github.com/capricorn86/happy-dom/issues/241">#241</a></li>
<li>Adds support for <a
href="https://developer.mozilla.org/en-US/docs/Web/API/ImageData">ImageData</a>
- By <strong><a
href="https://github.com/capricorn86"><code>@​capricorn86</code></a></strong>
in task <a
href="https://redirect.github.com/capricorn86/happy-dom/issues/241">#241</a></li>
<li>Adds support for <a
href="https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap">ImageBitmap</a>
- By <strong><a
href="https://github.com/capricorn86"><code>@​capricorn86</code></a></strong>
in task <a
href="https://redirect.github.com/capricorn86/happy-dom/issues/241">#241</a></li>
<li>Adds support for <a
href="https://developer.mozilla.org/en-US/docs/Web/API/Window/createImageBitmap">Window.createImageBitmap()</a>
- By <strong><a
href="https://github.com/capricorn86"><code>@​capricorn86</code></a></strong>
in task <a
href="https://redirect.github.com/capricorn86/happy-dom/issues/241">#241</a></li>
</ul>
<h2>v20.9.0</h2>
<h3>🎨 Features</h3>
<ul>
<li>Adds support for event listener properties on Window (e.g.
<code>Window.onkeydown</code>) - By <strong><a
href="https://github.com/capricorn86"><code>@​capricorn86</code></a></strong>
in task <a
href="https://redirect.github.com/capricorn86/happy-dom/issues/2131">#2131</a></li>
</ul>
<h2>v20.8.9</h2>
<h3>👷‍♂️ Patch fixes</h3>
<ul>
<li>Fixes issue where cookies from the current origin was being
forwarded to the target origin in fetch requests - By <strong><a
href="https://github.com/capricorn86"><code>@​capricorn86</code></a></strong>
in task <a
href="https://redirect.github.com/capricorn86/happy-dom/issues/2117">#2117</a>
<ul>
<li>A security advisory (<a
href="https://github.com/capricorn86/happy-dom/security/advisories/GHSA-w4gp-fjgq-3q4g">GHSA-w4gp-fjgq-3q4g</a>)
was reported for this security vulnerability. Big thanks to <a
href="https://github.com/r74tech"><code>@​r74tech</code></a> for
reporting this!</li>
</ul>
</li>
</ul>
<h2>v20.8.8</h2>
<h3>👷‍♂️ Patch fixes</h3>
<ul>
<li>Fixes issue where export names can be interpolated as executable
code in ESM - By <strong><a
href="https://github.com/capricorn86"><code>@​capricorn86</code></a></strong>
in task <a
href="https://redirect.github.com/capricorn86/happy-dom/issues/2113">#2113</a>
<ul>
<li>A security advisory (<a
href="https://github.com/capricorn86/happy-dom/security/advisories/GHSA-6q6h-j7hj-3r64">GHSA-6q6h-j7hj-3r64</a>)
has been reported that shows a security vulnerability where it may be
possible to escape the VM context and get access to process level
functionality in unsafe environments using CommonJS. Big thanks to <a
href="https://github.com/tndud042713"><code>@​tndud042713</code></a> for
reporting this!</li>
</ul>
</li>
</ul>
<h2>v20.8.7</h2>
<h3>👷‍♂️ Patch fixes</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="fed1de2680"><code>fed1de2</code></a>
fix: <a
href="https://redirect.github.com/capricorn86/happy-dom/issues/2217">#2217</a>
Await NodeJS internal ReadableStream promise during teardown (<a
href="https://redirect.github.com/capricorn86/happy-dom/issues/2">#2</a>...</li>
<li><a
href="6a9adb5334"><code>6a9adb5</code></a>
fix: <a
href="https://redirect.github.com/capricorn86/happy-dom/issues/2142">#2142</a>
Adds cache to query selector parser (<a
href="https://redirect.github.com/capricorn86/happy-dom/issues/2214">#2214</a>)</li>
<li><a
href="4440f5fc95"><code>4440f5f</code></a>
fix: <a
href="https://redirect.github.com/capricorn86/happy-dom/issues/2206">#2206</a>
Coerce null qualifiedName to empty string in createDocument (<a
href="https://redirect.github.com/capricorn86/happy-dom/issues/2207">#2207</a>)</li>
<li><a
href="05e5465314"><code>05e5465</code></a>
chore: <a
href="https://redirect.github.com/capricorn86/happy-dom/issues/2208">#2208</a>
Updates contribution guidelines (<a
href="https://redirect.github.com/capricorn86/happy-dom/issues/2211">#2211</a>)</li>
<li><a
href="7103b05998"><code>7103b05</code></a>
chore: <a
href="https://redirect.github.com/capricorn86/happy-dom/issues/2208">#2208</a>
Updates contribution guidelines (<a
href="https://redirect.github.com/capricorn86/happy-dom/issues/2210">#2210</a>)</li>
<li><a
href="4c292ef101"><code>4c292ef</code></a>
chore: <a
href="https://redirect.github.com/capricorn86/happy-dom/issues/2208">#2208</a>
Updates contribution guidelines (<a
href="https://redirect.github.com/capricorn86/happy-dom/issues/2209">#2209</a>)</li>
<li><a
href="7e25c97fe6"><code>7e25c97</code></a>
fix: <a
href="https://redirect.github.com/capricorn86/happy-dom/issues/2194">#2194</a>
Fix ~= attribute selector matching hyphenated substrings (<a
href="https://redirect.github.com/capricorn86/happy-dom/issues/2205">#2205</a>)</li>
<li><a
href="b334a12fc3"><code>b334a12</code></a>
fix: <a
href="https://redirect.github.com/capricorn86/happy-dom/issues/2163">#2163</a>
Updates external dependencies (<a
href="https://redirect.github.com/capricorn86/happy-dom/issues/2188">#2188</a>)</li>
<li><a
href="20f89aa787"><code>20f89aa</code></a>
fix: <a
href="https://redirect.github.com/capricorn86/happy-dom/issues/2180">#2180</a>
Try to fix publish workflow (<a
href="https://redirect.github.com/capricorn86/happy-dom/issues/2181">#2181</a>)</li>
<li><a
href="f08c3fa773"><code>f08c3fa</code></a>
chore: <a
href="https://redirect.github.com/capricorn86/happy-dom/issues/2177">#2177</a>
Update happy-conventional-commit (<a
href="https://redirect.github.com/capricorn86/happy-dom/issues/2179">#2179</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/capricorn86/happy-dom/compare/v17.6.3...v20.10.6">compare
view</a></li>
</ul>
</details>
<details>
<summary>Maintainer changes</summary>
<p>This version was pushed to npm by <a
href="https://www.npmjs.com/~GitHub%20Actions">GitHub Actions</a>, a new
releaser for happy-dom since your current version.</p>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=happy-dom&package-manager=npm_and_yarn&previous-version=17.6.3&new-version=20.10.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Sergey <93754860+slaid098@users.noreply.github.com>
2026-07-08 09:51:33 +03:00
.github build(deps): bump actions/checkout from 4 to 7 (#3) 2026-07-08 09:49:33 +03:00
src feat: cancel button, question prompt mic, solid timer (#10) 2026-07-08 09:40:24 +03:00
tests feat: cancel button, question prompt mic, solid timer (#10) 2026-07-08 09:40:24 +03:00
.gitignore feat: initial implementation of OpenCode Voice Dictation 2026-07-08 05:37:17 +00:00
.nvmrc feat: initial implementation of OpenCode Voice Dictation 2026-07-08 05:37:17 +00:00
biome.json feat: initial implementation of OpenCode Voice Dictation 2026-07-08 05:37:17 +00:00
knip.json feat: initial implementation of OpenCode Voice Dictation 2026-07-08 05:37:17 +00:00
LICENSE feat: initial implementation of OpenCode Voice Dictation 2026-07-08 05:37:17 +00:00
package-lock.json build(deps-dev): bump happy-dom from 17.6.3 to 20.10.6 (#6) 2026-07-08 09:51:33 +03:00
package.json build(deps-dev): bump happy-dom from 17.6.3 to 20.10.6 (#6) 2026-07-08 09:51:33 +03:00
README.md feat: redesign mic button UI, restructure README (RU first) (#9) 2026-07-08 09:08:12 +03:00
tsconfig.json feat: initial implementation of OpenCode Voice Dictation 2026-07-08 05:37:17 +00:00
vite-env.d.ts feat: initial implementation of OpenCode Voice Dictation 2026-07-08 05:37:17 +00:00
vite.config.ts feat: auto-build CI workflow, one-click install URLs, auto-update docs 2026-07-08 05:45:54 +00:00
vitest.config.ts feat: initial implementation of OpenCode Voice Dictation 2026-07-08 05:37:17 +00:00

OpenCode Voice Dictation / Голосовая диктовка для OpenCode

CI Release License: MIT


Русский

Голосовая диктовка для OpenCode web через Whisper (Groq API). Качество как в Cursor. Работает на ПК и телефоне.

Установка

Установить скрипт — открой ссылку в браузере с Violentmonkey/Tampermonkey и подтверди установку.

Или скачай с Releases и импортируй вручную.

Совместимость

Платформа Браузер Менеджер скриптов Статус
ПК Vivaldi Violentmonkey
ПК Chrome Tampermonkey
ПК Firefox Tampermonkey
Android Firefox Tampermonkey
Android Vivaldi Нет расширений
Android Chrome Нет расширений

Настройка

  1. Получи бесплатный ключ на console.groq.com/keys
  2. Открой OpenCode web
  3. Меню Violentmonkey/Tampermonkey → Set Groq API Key → вставь gsk_...

Использование

  1. Нажми кнопку микрофона в правом верхнем углу поля ввода
  2. Говори (виден таймер записи)
  3. Нажми снова — текст появится в поле ввода
  4. На ПК: Ctrl+Space — горячая клавиша

Автообновление

Скрипт обновляется сам. При пуше в main CI собирает новую версию и публикует в ветку dist. Пользователи получают обновление автоматически.

Настройки

Пункт меню Описание
Set Groq API Key Ключ gsk_...
Toggle Auto-Submit Отправлять после транскрипции
Set Whisper Model whisper-large-v3 или whisper-large-v3-turbo
Set Language ru, en или пусто (авто)
Set Whisper Prompt Контекст для точности

English

Voice dictation for OpenCode web via Whisper (Groq API). Cursor-quality transcription. Works on desktop and mobile.

Install

Install Script — open this link in a browser with Violentmonkey/Tampermonkey and confirm installation.

Or download from Releases and import manually.

Compatibility

Platform Browser Userscript Manager Status
Desktop Vivaldi Violentmonkey
Desktop Chrome Tampermonkey
Desktop Firefox Tampermonkey
Android Firefox Tampermonkey
Android Vivaldi No extensions
Android Chrome No extensions

Setup

  1. Get a free API key at console.groq.com/keys
  2. Open OpenCode web
  3. Violentmonkey/Tampermonkey menu → Set Groq API Key → paste gsk_...

Usage

  1. Click the mic button in the top-right corner of the input area
  2. Speak (recording timer is displayed)
  3. Click again — transcribed text appears in the input
  4. Desktop: Ctrl+Space shortcut

Auto-Update

The script updates automatically. When code is pushed to main, CI builds and publishes to the dist branch. Users receive updates automatically.

Settings

Menu Item Description
Set Groq API Key API key gsk_...
Toggle Auto-Submit Auto-send after transcription
Set Whisper Model whisper-large-v3 or whisper-large-v3-turbo
Set Language ru, en, or empty (auto-detect)
Set Whisper Prompt Context for accuracy

License

MIT — see LICENSE