## Что сделано - Обновлён массив 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>
31 lines
No EOL
1.6 KiB
Markdown
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`. |