fix(stt-client): stt --stop détecte le process lancé via pipx

`_running_stt_pids` ne regardait que argv[0], or pipx lance
`python -E /…/bin/stt --window app` → argv[0] est l'interpréteur, pas `stt`
(et le `-E` décale encore le chemin). Du coup `stt --stop` ne trouvait jamais
l'instance vocale (« Aucun service ni instance en cours ») alors qu'elle
tournait — confirmé en conditions réelles.

Désormais on cherche un token qui est un *chemin* vers `stt` (slash + basename
`stt`) dans toute la ligne de commande, ce qui écarte aussi le `stt` nu d'un
`journalctl -u stt` (faux positif), et on ignore toujours les sous-commandes
utilitaires.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
alkatrazz 2026-06-19 21:41:41 +02:00
parent 9feb02ed70
commit 3976a9d699
2 changed files with 8 additions and 2 deletions

View file

@ -1,6 +1,6 @@
[project]
name = "stt"
version = "0.6.0"
version = "0.6.1"
description = "STT — client vocal Jarvis du homelab Funk (voix + HUD, parle au STT-server)"
requires-python = ">=3.11"
readme = "README.md"

View file

@ -139,7 +139,13 @@ def _running_stt_pids() -> list[int]:
continue
if not args:
continue
if os.path.basename(args[0]) == "stt" and not (utilitaires & set(args)):
# Le chemin du bin `stt` peut être argv[0] (exec direct via shebang) ou un
# token plus loin (lancement pipx : `python -E /…/bin/stt --window app` →
# le `-E` décale le chemin). On cherche un token qui est un *chemin* vers
# `stt` (slash + basename `stt`) — ça écarte le `stt` nu d'un
# `journalctl -u stt` — et on ignore les sous-commandes utilitaires.
is_stt = any("/" in a and os.path.basename(a) == "stt" for a in args)
if is_stt and not (utilitaires & set(args)):
pids.append(pid)
return pids