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 — каждый дизайн сохраняет своё лицо, углы, отметки уровня и лампы.

Дальше запускайте собственную сборку вместо скачанной. Это та же программа, сделанная из тех же исходников.