HoldToType

документація

Зібрати самому

Єдина вимога — запущений Docker Desktop. На машину нічого не встановлюється: ні Go, ні компіляторів, ні інструментів пакування.

Один скрипт

git clone https://github.com/Vitalii-Yemets/holdtotype
cd holdtotype
.\build.ps1   # модель small, близько 466 МБ
.\build.ps1 -Model medium   # точніша, більша

Результат опиняється в dist/:

файлщо це
holdtotype.exe

tray client: Go, WinAPI, WebView2

whisper-server.exe

recognition, whisper.cpp, static build

sherpa-server.exe

recognition, sherpa-onnx, official static build, pinned and checksum-verified

sherpa-online-server.exe

streaming recognition, sherpa-onnx, from the same pinned archive

llama-server.exe

the editor model for post-processing, llama.cpp

models/

the model you chose at build time

config.default.json

default settings

Що робить конвеєр

Крос-компіляція whisper.cpp і llama.cpp через MinGW-w64 у контейнері Linux, клієнт на Go з cgo для захоплення мікрофона, генерація іконок, пакування інсталятора. Усе це в build/Dockerfile. Обидва рушії закріплені на конкретних версіях, тож збірки відтворювані.

Тести

Усе теж працює в контейнерах, нічого встановлювати не треба:

docker build --file build/Dockerfile --target gotest .   # юніт-тести Go і go vet, ціль Windows
docker run --rm -v "${PWD}:/w" -w /w node:20 sh -c "node test/build-page.js && cd test && npm i --no-save --silent jsdom && node ui.test.js"   # сторінка налаштувань у jsdom
  • client/internal/... — юніт-тести частин з логікою: порівняння версій, дублікати сполучень, правила для програм, заміни, голосові команди, історія, ланцюжки промптів, аналіз звуку, хеші файлів і файл списків.
  • test/ui.test.js — справжня сторінка налаштувань у jsdom: перемикання розділів, матриця перекладу, редактор промптів, правила, заміни, команди, історія, видалення моделей, майстер першого запуску і відсутність помилок JavaScript.
  • test/locales.test.js — кожна з восьми мов містить кожен рядок, який потрібен сторінці та програмі.
  • test/setup.test.js — сторінка інсталятора: кроки, вибір моделі, тихі ключі.
  • client/internal/theme — кожен дизайн зберігає своє обличчя, кути, позначки рівня і лампи.

Далі запускайте власну збірку замість завантаженої. Це та сама програма, зроблена з тих самих джерел.