## Что сделано - Обновлён массив 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.6 KiB
1.6 KiB
| module | purpose | key_files | dependencies | last_updated | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| src | Исходники userscript — UI, аудио-захват, транскрипция, вставка текста |
|
2026-07-24 |
src/
Structure
index.ts— entry point userscriptui.ts— позиционирование кнопки 🎤,COMPOSER_SELECTORS,findComposer(), MutationObserveraudio.ts— захват микрофона (MediaRecorder)transcribe.ts— отправка в Groq Whisper APIinsert.ts— вставка транскрипта в prompt-input (gate[data-component="prompt-input"])config.ts— настройки (API key, hotkey, language)keyboard.ts— глобальный hotkeytypes.ts— shared типы
Patterns
- Селекторы OpenCode UI собраны в массив
COMPOSER_SELECTORS(primary → fallback),findComposer()перебирает сверху вниз. - UI-элементы появляются асинхронно — отслеживаются через MutationObserver в
setupUI.