HoldToType

docs

Compilarlo tú mismo

El único requisito es un Docker Desktop en marcha. No se instala nada en la máquina: ni Go, ni compiladores, ni herramientas de empaquetado.

Un script

git clone https://github.com/Vitalii-Yemets/holdtotype
cd holdtotype
.\build.ps1   # modelo small, unos 466 MB
.\build.ps1 -Model medium   # más preciso, más grande

El resultado acaba en dist/:

archivoqué es
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

Qué hace la cadena

Compilación cruzada MinGW-w64 de whisper.cpp y llama.cpp dentro de un contenedor Linux, el cliente Go con cgo para capturar el micrófono, generación de iconos, empaquetado del instalador. Todo está en build/Dockerfile. Ambos motores están fijados a versiones concretas, así que las compilaciones siguen siendo reproducibles.

Pruebas

Todo se ejecuta también en contenedores, nada que instalar:

docker build --file build/Dockerfile --target gotest .   # pruebas unitarias de Go y go vet, destino 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 página de ajustes en jsdom
  • client/internal/... — pruebas unitarias de las piezas que llevan lógica: comparación de versiones, atajos duplicados, reglas por aplicación, sustituciones, comandos de voz, historial, cadenas de prompts, análisis de sonido, hashes de archivos y el archivo de listas.
  • test/ui.test.js — la página de ajustes real renderizada en jsdom: cambio de sección, la matriz de traducción, el editor de prompts, reglas, sustituciones, comandos, historial, borrado de modelos, el asistente de primer arranque, y sin errores de JavaScript.
  • test/locales.test.js — cada uno de los ocho idiomas lleva cada cadena que la página y el programa piden.
  • test/setup.test.js — la página del instalador: los pasos, la elección de modelo, las opciones silenciosas.
  • client/internal/theme — cada diseño conserva su propia cara, esquinas, marcas de nivel y luces.

Después ejecuta tu propia compilación en vez de la descargada. Es el mismo programa, hecho de las mismas fuentes.