## Что сделано - `findComposer()` в `src/ui.ts` теперь skip `session-prompt-dock` если внутри есть `session-question-dock` — общий wrapper не используется как composer-target пока открыт question - `injectIntoComposer()` в `src/ui.ts` добавлен guard: не вставлять composer-кнопку если в DOM есть `[data-slot="question-custom-input"]` (открыт textarea "Свой ответ") - Бамп `@version` 1.0.1 → 1.0.2 в `package.json` и `vite.config.ts` — разблокировать автообновление ## Почему `session-prompt-dock` в OpenCode v1.18.3 — общий wrapper И для question-dock, И для composer. Когда агент задаёт вопрос (`questionRequest`), composer скрывается (`blocked=true`), но wrapper остаётся. `findComposer()` находил wrapper и вставлял кнопку в верх блока вопросов → дубликат + кнопка застревала после закрытия question. Defence-in-depth: guard в findComposer + guard в injectIntoComposer. Closes #28 Closes #28 --------- Co-authored-by: opencode-agent <agent@opencode.local>
30 lines
666 B
JSON
30 lines
666 B
JSON
{
|
|
"name": "opencode-voice-dictation",
|
|
"version": "1.0.2",
|
|
"private": true,
|
|
"type": "module",
|
|
"engines": {
|
|
"node": ">=20"
|
|
},
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "vite build",
|
|
"lint": "biome check",
|
|
"format": "biome format --write",
|
|
"typecheck": "tsc --noEmit",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"knip": "knip"
|
|
},
|
|
"devDependencies": {
|
|
"@biomejs/biome": "^1.9.4",
|
|
"@types/node": "^26.1.1",
|
|
"@vitest/coverage-v8": "^3.0.0",
|
|
"happy-dom": "^20.10.6",
|
|
"knip": "^6.24.0",
|
|
"typescript": "^5.7.0",
|
|
"vite": "^6.0.0",
|
|
"vite-plugin-monkey": "^5.0.0",
|
|
"vitest": "^3.0.0"
|
|
}
|
|
}
|