HoldToType

dokumentacja

Zbuduj samodzielnie

Jedynym wymaganiem jest uruchomiony Docker Desktop. Na maszynie nic się nie instaluje: ani Go, ani kompilatorów, ani narzędzi do pakowania.

Jeden skrypt

git clone https://github.com/Vitalii-Yemets/holdtotype
cd holdtotype
.\build.ps1   # model small, około 466 MB
.\build.ps1 -Model medium   # dokładniejszy, większy

Wynik trafia do dist/:

plikco to jest
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

Co robi potok

Kompilacja skrośna whisper.cpp i llama.cpp przez MinGW-w64 w kontenerze Linux, klient w Go z cgo do przechwytywania mikrofonu, generowanie ikon, pakowanie instalatora. Wszystko to jest w build/Dockerfile. Oba silniki są przypięte do konkretnych wersji, więc buildy pozostają powtarzalne.

Testy

Wszystko też działa w kontenerach, nic nie trzeba instalować:

docker build --file build/Dockerfile --target gotest .   # testy jednostkowe Go i go vet, cel 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"   # strona ustawień w jsdom
  • client/internal/... — testy jednostkowe części, które niosą logikę: porównywanie wersji, duplikaty skrótów, reguły dla aplikacji, zamiany, polecenia głosowe, historia, łańcuchy promptów, analiza dźwięku, skróty plików i plik list.
  • test/ui.test.js — prawdziwa strona ustawień wyrenderowana w jsdom: przełączanie sekcji, macierz tłumaczenia, edytor promptów, reguły, zamiany, polecenia, historia, usuwanie modeli, kreator pierwszego uruchomienia i brak błędów JavaScript.
  • test/locales.test.js — każdy z ośmiu języków zawiera każdy tekst, o który proszą strona i program.
  • test/setup.test.js — strona instalatora: kroki, wybór modelu, ciche przełączniki.
  • client/internal/theme — każdy wygląd zachowuje własną twarz, narożniki, znaczniki poziomu i lampki.

Potem uruchamiaj własny build zamiast pobranego. To ten sam program, zrobiony z tych samych źródeł.