opencode-voice-dictation/docs/project-map/src.md
Sergey af5bc63bcc
fix(ui): support OpenCode 1.18.x composer selectors (#29)
## Что сделано
- Обновлён массив 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>
2026-07-25 01:29:00 +03:00

31 lines
No EOL
1.6 KiB
Markdown

---
module: src
purpose: Исходники userscript — UI, аудио-захват, транскрипция, вставка текста
key_files:
- src/index.ts — entry point userscript
- src/ui.ts — позиционирование кнопки 🎤, COMPOSER_SELECTORS, findComposer()
- src/audio.ts — захват микрофона (MediaRecorder)
- src/transcribe.ts — отправка в Groq Whisper API
- src/insert.ts — вставка транскрипта в prompt-input
- src/config.ts — настройки (API key, hotkey, language)
- src/keyboard.ts — глобальный hotkey
- src/types.ts — shared типы
dependencies: []
last_updated: 2026-07-24
---
# src/
## Structure
- `index.ts` — entry point userscript
- `ui.ts` — позиционирование кнопки 🎤, `COMPOSER_SELECTORS`, `findComposer()`, MutationObserver
- `audio.ts` — захват микрофона (MediaRecorder)
- `transcribe.ts` — отправка в Groq Whisper API
- `insert.ts` — вставка транскрипта в prompt-input (gate `[data-component="prompt-input"]`)
- `config.ts` — настройки (API key, hotkey, language)
- `keyboard.ts` — глобальный hotkey
- `types.ts` — shared типы
## Patterns
- Селекторы OpenCode UI собраны в массив `COMPOSER_SELECTORS` (primary → fallback), `findComposer()` перебирает сверху вниз.
- UI-элементы появляются асинхронно — отслеживаются через MutationObserver в `setupUI`.