Compare commits

..

2 commits

Author SHA1 Message Date
Sergey
bc673e7c24
docs(readme): fix custom STT endpoint section (#49)
Some checks failed
CI / check (push) Successful in 1m41s
Deploy / build (push) Failing after 5s
## Что сделано

- EN и RU секции «Custom STT Endpoint» обновлены: nginx-конфиг заменён
на pass-through вариант без префикса:
  ```nginx
  location / {
      proxy_pass https://api.groq.com:443;
      proxy_set_header Host api.groq.com;
  }
  ```
- Пример endpoint теперь
`https://your-domain.com/openai/v1/audio/transcriptions` (без `/groq`) —
совпадает с реальной настройкой сервера (whisper.slaid098.dev).
- Добавлена заметка в обе секции: префикс пути не нужен, если домен
выделен только под Groq; `/groq`-вариант остаётся валидным для
мульти-прокси доменов (`location /groq/` с trailing slash срезает
префикс).

## Почему

README описывал конфиг с префиксом `/groq`, который не совпадает с
реальной настройкой. `proxy_pass` без trailing slash передаёт URI как
есть, поэтому на выделенном домене префикс лишний и только усложняет
настройку. Документация должна совпадать с реальным рабочим сервером.

## Watch out

- Только README.md (EN + RU секции). Код, тесты, версия не тронуты —
bump не требуется по AGENTS.md.

## Pending

—

Closes #48

Closes #48

---------

Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-06 11:10:06 +03:00
Sergey
b8040f6cd3
fix(transcription): empty whisperPrompt default to stop English bias (#47)
## Что сделано

- `DEFAULTS.whisperPrompt` изменён с 107-символьного английского списка
терминов на пустую строку (`src/config.ts:8`). Английский промпт уводил
русский аудио в английский (особенно на turbo) — нарушает документацию
Groq: «Use the same language as the language of the audio file».
- `tests/config.test.ts` — 2 устаревших теста (`non-empty
whisperPrompt`, `under 120 characters`) заменены на 1: `should have
empty whisperPrompt by default`.
- Version bump 1.0.4 → 1.0.5 в `vite.config.ts:11` и `package.json:3`.
- ADR-0007 (`docs/decisions/0007-pr-46-empty-whisper-prompt.md`) —
фиксирует решение, контекст (PR #43 + баг), последствия (`buildFormData`
falsy-check), альтернативы (двуязычный промпт, смена модели — обе
отвергнуты).
- README — секция troubleshooting «Wrong Language (English instead of
Russian)» добавлена в EN и RU секции после температурного блока.
Инструкция очистить Whisper Prompt через меню Tampermonkey.

## Почему

PR #43 добавил английский biasing-промпт для технических терминов. На
практике английский промпт + русский аудио = модель возвращает
английский текст, перебивая явный `language=ru`. Пользователь подтвердил
баг на turbo. Параметр `prompt` Whisper — это seed-контекст декодера,
модель стремится продолжить его язык. Пустой default = чистый
auto-detect без biasing. Поле и menu command остаются для юзеров с
узкопрофильной терминологией.

## Watch out

- **Обратная совместимость**: существующие юзеры со старым
107-символьным значением в `GM_getValue("whisperPrompt")` сохраняют его
— новый default применяется только к свежим установкам и к тем, кто
очистил поле через `Set Whisper Prompt`. Миграции нет намеренно (не
ломаем сохранённые настройки).
- `buildFormData` использует falsy-check `if (config.whisperPrompt)` —
пустая строка не отправляет поле `prompt` в Groq API вообще.
- `transcribe.test.ts` использует mock `whisperPrompt: "Software
development discussion."` — валидный mock для тестирования
prompt-передачи, НЕ тронут (не путать с DEFAULTS).
- `DEFAULTS.model` (`whisper-large-v3`), `DEFAULTS.language` (`""`),
`DEFAULTS.temperature` (`0`), `DEFAULTS.endpoint` — не менялись. Смена
модели на turbo была альтернативой, отвергнута (v3 лучше для русского,
баг в промпте не в модели).
- Touchpoints ровно 7: `src/config.ts`, `tests/config.test.ts`,
`vite.config.ts`, `package.json`, `docs/decisions/0007-*.md` (новый),
`README.md` (2 вставки EN+RU). `src/transcribe.ts` и остальные src-файлы
не тронуты.

## Pending

- CI на push-ветке (vitest, biome, tsc, knip) — все зелёные локально
(55/55 tests, 22 файла biome-clean, tsc чист, knip чист).
- После merge — ADR-0007 ссылается на PR #46 (номер уже известен из
issue).

Closes #46

---------

Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-04 15:13:01 +03:00

View file

@ -49,14 +49,16 @@ Groq may block direct requests from some networks. Point the script at your own
1. Deploy an nginx reverse proxy that forwards to `api.groq.com`:
```nginx
location /groq/ {
proxy_pass https://api.groq.com/;
location / {
proxy_pass https://api.groq.com:443;
proxy_set_header Host api.groq.com;
}
```
2. Tampermonkey menu → **Set STT Endpoint** → paste `https://your-domain.com/groq/openai/v1/audio/transcriptions`
2. Tampermonkey menu → **Set STT Endpoint** → paste `https://your-domain.com/openai/v1/audio/transcriptions`
3. Requests now go through your proxy. The userscript metadata uses `@connect *`, so any domain is allowed.
A path prefix is not needed if the domain is dedicated to Groq. The `/groq` variant stays valid for multi-proxy domains — `location /groq/` with a trailing slash strips the prefix.
### 🌡️ Temperature
Whisper may hallucinate on silence/noise. **Set Temperature** (default `0` = deterministic, range `0``1`) reduces hallucinations.
@ -111,14 +113,16 @@ Groq может блокировать прямые запросы из неко
1. Разверни nginx reverse proxy, который форвардит на `api.groq.com`:
```nginx
location /groq/ {
proxy_pass https://api.groq.com/;
location / {
proxy_pass https://api.groq.com:443;
proxy_set_header Host api.groq.com;
}
```
2. Меню Tampermonkey → **Set STT Endpoint** → вставь `https://your-domain.com/groq/openai/v1/audio/transcriptions`
2. Меню Tampermonkey → **Set STT Endpoint** → вставь `https://your-domain.com/openai/v1/audio/transcriptions`
3. Запросы пойдут через твой прокси. Метаблок юзерскрипта использует `@connect *`, поэтому разрешён любой домен.
Префикс пути не нужен, если домен выделен только под Groq. `/groq`-вариант остаётся валидным для мульти-прокси доменов — `location /groq/` с trailing slash срезает префикс.
### 🌡️ Temperature
Whisper может галлюцинировать на тишине/шуме. **Set Temperature** (по умолчанию `0` = детерминированный вывод, диапазон `0``1`) снижает галлюцинации.