## Что сделано - `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>
31 lines
1.2 KiB
TypeScript
31 lines
1.2 KiB
TypeScript
import { defineConfig } from "vite";
|
|
import monkey from "vite-plugin-monkey";
|
|
|
|
export default defineConfig({
|
|
plugins: [
|
|
monkey({
|
|
entry: "src/index.ts",
|
|
userscript: {
|
|
name: "OpenCode Voice Dictation",
|
|
namespace: "https://github.com/slaid098/opencode-voice-dictation",
|
|
version: "1.0.2",
|
|
description:
|
|
"Voice dictation for OpenCode web using Whisper (Groq API) - works on PC and mobile",
|
|
author: "slaid098",
|
|
match: ["*://*/*"],
|
|
grant: ["GM_xmlhttpRequest", "GM_getValue", "GM_setValue", "GM_registerMenuCommand"],
|
|
connect: ["api.groq.com"],
|
|
"run-at": "document-idle",
|
|
icon: "https://raw.githubusercontent.com/slaid098/opencode-voice-dictation/main/assets/icon.png",
|
|
updateURL:
|
|
"https://raw.githubusercontent.com/slaid098/opencode-voice-dictation/dist/opencode-voice-dictation.meta.js",
|
|
downloadURL:
|
|
"https://raw.githubusercontent.com/slaid098/opencode-voice-dictation/dist/opencode-voice-dictation.user.js",
|
|
},
|
|
build: {
|
|
fileName: "opencode-voice-dictation.user.js",
|
|
metaFileName: true,
|
|
},
|
|
}),
|
|
],
|
|
});
|