HoldToType

docs

Le construire soi-même

La seule condition est un Docker Desktop en marche. Rien n'est installé sur la machine : pas de Go, pas de compilateurs, pas d'outils d'empaquetage.

Un script

git clone https://github.com/Vitalii-Yemets/holdtotype
cd holdtotype
.\build.ps1   # modèle small, environ 466 Mo
.\build.ps1 -Model medium   # plus précis, plus gros

Le résultat arrive dans dist/ :

fichierce que c'est
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

Ce que fait la chaîne

Compilation croisée MinGW-w64 de whisper.cpp et llama.cpp dans un conteneur Linux, le client Go avec cgo pour la capture du micro, génération des icônes, empaquetage de l'installateur. Tout est dans build/Dockerfile. Les deux moteurs sont figés sur des versions précises, donc les builds restent reproductibles.

Tests

Tout tourne aussi dans des conteneurs, rien à installer :

docker build --file build/Dockerfile --target gotest .   # tests unitaires Go et go vet, cible 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"   # la page des réglages dans jsdom
  • client/internal/... — tests unitaires des parties qui portent la logique : comparaison de versions, doublons de raccourcis, règles par application, remplacements, commandes vocales, historique, chaînes de prompts, analyse du son, hachages de fichiers et le fichier des listes.
  • test/ui.test.js — la vraie page des réglages rendue dans jsdom : changement de section, la matrice de traduction, l'éditeur de prompts, règles, remplacements, commandes, historique, suppression de modèles, l'assistant du premier lancement, et aucune erreur JavaScript.
  • test/locales.test.js — chacune des huit langues porte chaque chaîne que la page et le programme demandent.
  • test/setup.test.js — la page de l'installateur : les étapes, le choix du modèle, les options silencieuses.
  • client/internal/theme — chaque design garde son propre visage, ses coins, ses repères de niveau et ses voyants.

Puis lancez votre propre build au lieu de celui téléchargé. C'est le même programme, fait des mêmes sources.