## Что сделано - Убран тег v1.0.0 и GitHub Release v1.0.0 - release.yml → deploy.yml (деплой в dist без GitHub Release) - Добавлен assets/icon.png 128×128 - README перегенерирован через create-readme (include_clone=false, кликабельные steps) - docs/project-map/github.md обновлён - ADR + handoff созданы ## Почему GitHub Releases избыточны — автообновление работает через @updateURL на ветку dist. README не соответствовал стандарту create-readme (нет delimiter-тегов для slaid098.dev). @icon ссылался на несуществующий файл. Closes #36 Closes #36 --------- 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: .
|
||
purpose: Index of project structure and top-level modules
|
||
last_updated: 2026-07-30
|
||
---
|
||
|
||
# Project Map — opencode-voice-dictation
|
||
|
||
Userscript для голосовой диктовки в OpenCode web через Whisper (Groq API). Точки входа в UI OpenCode определяются через массив `COMPOSER_SELECTORS` в `src/ui.ts` (primary для v1.18.x + fallback для pre-1.18).
|
||
|
||
## Top-level modules
|
||
|
||
- [`src/`](./src.md) — исходники userscript (entry, ui, audio, transcribe, insert, config, keyboard, types)
|
||
- [`tests/`](./tests.md) — unit-тесты (vitest) + моки
|
||
- [`.github/`](./github.md) — CI workflows, dependabot, deploy
|
||
- [`assets/`](./assets.md) — статичные ассеты (иконка userscript)
|
||
- [`docs/`](./docs.md) — handoff, ADR, project map
|
||
|
||
## Build / tooling
|
||
|
||
- `vite.config.ts` + `vite-plugin-monkey` — сборка userscript (.user.js)
|
||
- `biome.json` — lint/format
|
||
- `tsconfig.json` — TypeScript
|
||
- `knip.json` — детектор неиспользуемого кода
|
||
- `vitest.config.ts` — test runner
|
||
|
||
## Conventions
|
||
|
||
- Один handoff на PR: `docs/handoff/pr-<N>-<slug>.md` с секциями `## Что сделано`, `## Почему`, `## Pending`, `## Watch out`.
|
||
- ADR на архитектурное решение: `docs/decisions/<NNNN>-pr-<N>-<slug>.md` с секциями `## Статус`, `## Контекст`, `## Решение`, `## Альтернативы`.
|
||
- Селекторы OpenCode UI — primary (новые) → fallback (старые), порядок = приоритет детекции. |