HoldToType

documentazione

Compilarlo da soli

L'unico requisito è un Docker Desktop in esecuzione. Sulla macchina non si installa nulla: né Go, né compilatori, né strumenti di pacchettizzazione.

Uno script

git clone https://github.com/Vitalii-Yemets/holdtotype
cd holdtotype
.\build.ps1   # modello small, circa 466 MB
.\build.ps1 -Model medium   # più preciso, più grande

Il risultato finisce in dist/:

filecos'è
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

Cosa fa la pipeline

Compilazione incrociata MinGW-w64 di whisper.cpp e llama.cpp dentro un container Linux, il client Go con cgo per la cattura del microfono, generazione delle icone, pacchettizzazione dell'installer. È tutto in build/Dockerfile. Entrambi i motori sono fissati a versioni precise, così le build restano riproducibili.

Test

Anche tutto questo gira in container, niente da installare:

docker build --file build/Dockerfile --target gotest .   # test unitari Go e go vet, destinazione 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 pagina delle impostazioni in jsdom
  • client/internal/... — test unitari delle parti che portano la logica: confronto di versioni, scorciatoie duplicate, regole per applicazione, sostituzioni, comandi vocali, cronologia, catene di prompt, analisi del suono, hash dei file e il file degli elenchi.
  • test/ui.test.js — la vera pagina delle impostazioni resa in jsdom: cambio di sezione, la matrice di traduzione, l'editor dei prompt, regole, sostituzioni, comandi, cronologia, eliminazione dei modelli, la procedura guidata al primo avvio, e nessun errore JavaScript.
  • test/locales.test.js — ognuna delle otto lingue contiene ogni stringa che la pagina e il programma richiedono.
  • test/setup.test.js — la pagina dell'installer: i passi, la scelta del modello, le opzioni silenziose.
  • client/internal/theme — ogni design mantiene il proprio volto, angoli, tacche di livello e spie.

Poi esegui la tua build invece di quella scaricata. È lo stesso programma, fatto dagli stessi sorgenti.