fix(server): close residual review findings F-5..F-8

- Continuous endpoints reject non-list channels (400), null no longer wipes stored list (F-5)
- '@'-prefixed legacy channel values normalized on load/save in manager and store (F-6)
- _run_loop guarded: unexpected exceptions logged, backoff retry, no silent thread death (F-7)
- +8 tests: continuous validation, normalization, loop survival, join-timeout/tombstone (F-8)
- 58 tests passing; REVIEW.md updated
This commit is contained in:
2026-09-07 13:00:25 +02:00
parent e93e68db7e
commit bc2e93353a
4 changed files with 367 additions and 73 deletions
+1 -1
View File
@@ -158,7 +158,7 @@ class StateStore:
"enabled": bool(config.get("enabled", True)),
"interval_minutes": max(1, int(config.get("interval_minutes", 1) or 1)),
"channels": [
str(item).strip()
str(item).strip().lstrip("@")
for item in config.get("channels", [])
if str(item).strip()
],