Skip to content

v2.20.0 — Security hardening + chat routing/console/widget fixes

Choose a tag to compare

@ebongard ebongard released this 10 Jul 12:04
· 261 commits to main since this release
fb2d0fe

Deployed to the private cluster on 2026-07-10 (backend images secsprint → wiss404 → shoverview → widget; frontend v2.15.55 → v2.15.56). Current live backend tag: 2026-07-10-widget, frontend v2.15.56.

🔒 Security — OWASP-scan hardening sprint

  • #945 (#684) supply-chain: pin MCP deps to immutable commit SHAs + bound python-jose<4
  • #946 (#698) refresh-token rotation + reuse-detection on /refresh (fail-closed blacklist)
  • #947 (#693 / #696 / #694) login-surface: Redis-capable rate-limit storage + right-most-untrusted XFF, per-username account lockout, login_failure_total / authz_denied_total metrics, enforced must_change_password (HTTP + WS)
  • #948 (#697) explicit auth-config posture in the ConfigMap + fail-loud consistency assertion (RENFIELD_ENV now a tracked field)
  • #949 (#445) consolidated atom-ownership checks into a shared load_owned_atom chokepoint (uniform 404, TOCTOU-safe)
  • #950 (#695) corrected stale "un-circle-filtered" docstrings in the atoms query path
  • #687 / #690 / #692 / #657 re-verified as already-fixed and closed with current-code evidence

Auth remains off (single-user LAN posture) — this wave is the multi-user prerequisite set for the xidra clone. The auth-on cutover (flip AUTH_ENABLED/WS_AUTH_ENABLED/RENFIELD_ENV=production + TRUSTED_PROXIES + Redis rate-limit storage, strong SECRET_KEY first) is documented in k8s/configmap.yaml.

💬 Chat routing / UX

  • #951 detect the Reva Wissensbasis surface via the 200 /api/config/features flag instead of a 404-probe — kills console 404 noise
  • #953 gate the ChatMessages /trace query on availability — eliminates the last console 404 (6 → 0)
  • #952 smart-home overviews are now one agent tool (internal.smart_home_overview), not four router short-circuits — fixes time questions ("Wie spät ist es?") non-deterministically dumping room temperatures. No regex, no hardcoded topics — the LLM orchestrates.
  • #954 steer the agent to the overview widget tool over raw GetLiveContext — the typed sensor/status/devices widgets render again

Notes

  • Private twin_adapter re-staged on every backend rebuild; twin capture + recall verified end-to-end post-deploy.