## Что сделано - Обновлён массив COMPOSER_SELECTORS в src/ui.ts: добавлены новые селекторы [data-component="prompt-input-v2"] и [data-component="session-prompt-dock"] как primary для OpenCode v1.18.x - Старые селекторы session-new-composer/session-composer сохранены как fallback для обратной совместимости - README обновлён с указанием совместимой версии OpenCode v1.18.x (русский и английский блоки) - Добавлен handoff-документ и ADR 0001 с обоснованием порядка fallback-селекторов ## Почему В OpenCode v1.18.x селекторы session-composer/session-new-composer удалены из исходников, из-за чего findComposer() возвращал null и кнопка 🎤 не появлялась в чате. Порядок массива обновлён как primary (v1.18.x) → fallback (pre-1.18), чтобы сохранить совместимость с OpenCode <1.18 до oldInterfaceSunset (2026-09-14). Closes #28 --------- Co-authored-by: opencode-agent <agent@opencode.local>
1.5 KiB
1.5 KiB
| module | purpose | last_updated |
|---|---|---|
| . | Index of project structure and top-level modules | 2026-07-24 |
Project Map — opencode-voice-dictation
Userscript для голосовой диктовки в OpenCode web через Whisper (Groq API). Точки входа в UI OpenCode определяются через массив COMPOSER_SELECTORS в src/ui.ts (primary для v1.18.x + fallback для pre-1.18).
Top-level modules
src/— исходники userscript (entry, ui, audio, transcribe, insert, config, keyboard, types)tests/— unit-тесты (vitest) + моки.github/— CI workflows, dependabot, releasedocs/— handoff, ADR, project map
Build / tooling
vite.config.ts+vite-plugin-monkey— сборка userscript (.user.js)biome.json— lint/formattsconfig.json— TypeScriptknip.json— детектор неиспользуемого кодаvitest.config.ts— test runner
Conventions
- Один handoff на PR:
docs/handoff/pr-<N>-<slug>.mdс секциями## Что сделано,## Почему,## Pending,## Watch out. - ADR на архитектурное решение:
docs/handoff/adr/<NNNN>-<slug>.mdс секциями## Статус,## Контекст,## Решение,## Альтернативы. - Селекторы OpenCode UI — primary (новые) → fallback (старые), порядок = приоритет детекции.