Two parallel jobs:
- test: pytest on Windows + Linux matrix. Installs the minimal deps the
tests actually exercise (pyyaml + openai + flet). Heavy STT/TTS/Vosk
packages are runtime concerns, tests don't touch them.
- lint: ruff on Linux, lenient ruleset — catches real errors (E, F, W)
without enforcing stylistic preferences the codebase wasn't written
with ruff in mind for. Non-blocking (|| true) so style nits don't
break CI.
Triggers on push to feature/pc-tools/master/main and PRs to master/main.