- Face: new 'rage' state — 3-frame kaomoji loop (stare, flip the table, put it back) for in-flight request failures; 'error' stays the quiet persistent face for a dead link. Sim + artifact + design doc updated. - Gateway: stt.py/tts.py are now pluggable backends. Default 'speaches' talks OpenAI-format HTTP to the live container on :8601 (faster-whisper-small STT, Kokoro bm_george TTS with 24->16 kHz audioop resample); 'embedded' fallback kept behind the [speech] extra. Verified with a live TTS->STT round trip (warm: STT 0.27s, TTS 1.9s). Docker image is now slim (no CUDA/ML deps). Python pinned to 3.12 (system 3.8 too old, audioop gone in 3.13). - CI: .gitea/workflows/build.yml — lint+test on main pushes; on v* tags test, build gateway image, push to registry, release, and trigger Watchtower (tatlock pattern; needs REGISTRY_USER/REGISTRY_PASSWORD/ WATCHTOWER_TOKEN secrets). Runtime stack in deploy/desklock-gateway.yml. - architecture.md: measured speech latencies, deployed-Speaches status, CI & deployment section. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
29 lines
595 B
Makefile
29 lines
595 B
Makefile
.PHONY: setup run test lint typecheck clean
|
|
|
|
# audioop pins us below 3.13; system python3 on tower-of-joy is 3.8
|
|
PYTHON ?= python3.12
|
|
|
|
setup:
|
|
$(PYTHON) -m venv .venv
|
|
.venv/bin/pip install -e ".[dev]"
|
|
|
|
setup-speech:
|
|
.venv/bin/pip install -e ".[dev,speech]"
|
|
|
|
run:
|
|
.venv/bin/uvicorn desklock_gateway.main:app --host 0.0.0.0 --port 8600 --reload
|
|
|
|
test:
|
|
.venv/bin/pytest
|
|
|
|
lint:
|
|
.venv/bin/ruff check src tests
|
|
.venv/bin/ruff format --check src tests
|
|
|
|
typecheck:
|
|
.venv/bin/mypy src
|
|
|
|
clean:
|
|
rm -rf .venv .pytest_cache .ruff_cache .mypy_cache
|
|
find . -type d -name __pycache__ -exec rm -rf {} +
|