Commit Graph
4 Commits
Author SHA1 Message Date
m3ta-chiron 156c20dbb3 feat(api): CORS-Tür für POST /speak — OPTIONS-Preflight und ACAO aus Config
OPTIONS /speak beantwortet Preflights mit 204 + Allow-Headers/Methods/Max-Age,
wenn die Origin in server.allowed_origins steht; ungeliste Origins und leere
Liste bekommen keine CORS-Header (Browser blockt). Nur /speak, kein anderer
Endpunkt. /status ergänzt additiv cors:[origins] (immer vorhanden, [] wenn zu).
2026-10-18 20:06:05 +02:00
m3ta-chiron b56c8abfae feat(api): /speak meldet Gesetz-Verwürfe, /status zeigt Gesetz-State
POST /speak antwortet bei Verwurf dokumentiert mit 202 {id:"",
discarded:"rate_limit"|"quiet_hours"} (+ toast:true im Toast-Modus)
— analog zum Mute-Muster, kein Fehler. GET /status ergänzt additiv
rate_limit {interval, allow_high_burst, next_slot} und quiet_hours
{window, active, mode, until} (RFC3339 bzw. null). talkd verwired die
Gesetze aus der Config und loggt sie beim Start. Die CLI meldet
'discarded: <grund>' plain (wie muted) und zeigt in talk status die
Zeilen rate-limit/ruhezeit mit Slot bzw. Fenster-Ende.
2026-10-18 17:40:46 +02:00
m3ta-chiron d09aff6874 feat(talkd): Daemon mit HTTP-API auf 127.0.0.1, Queue-Betrieb und Shutdown
- HTTP-Server nur auf 127.0.0.1 (Port aus config server.port/TALK_PORT),
  klarer Fehler wenn der Port belegt ist
- Ansagen laufen über die unveränderte Provider-Kette (pro Item gebaut,
  Pin/Voice je Anfrage); /status meldet den aktiven Provider
- SIGINT/SIGTERM: erst HTTP dicht, dann Queue schließen (laufende Ansage
  wird abgebrochen, Worker-Exit wird abgewartet)
- Mute ohne Config-Dir: dokumentierte Warnung statt Absturz
2026-10-18 17:10:36 +02:00
m3ta-chiron 33b97a50ea feat(cli): add subcommand dispatch, --version and stub commands 2026-10-18 15:14:18 +02:00