diff --git a/CHANGELOG.txt b/CHANGELOG.txt index cb16688b..45bf1c13 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,4 +1,26 @@ 2026-03-05 +perf: add organization_id to alerts for fast single-table queries + - Denormalize organization_id from device to alerts table for query performance + - Add composite indexes on (organization_id, alert_type, resolved_at) + - Optimize list_organization_active_alerts to eliminate expensive 3-table joins + - Auto-populate organization_id when creating alerts +Files: lib/towerops/alerts/alert.ex, alerts.ex + priv/repo/migrations/20260305152930_add_organization_id_to_alerts.exs + +fix: change agent token cascade deletes to RESTRICT for data safety + - Changed agent_tokens.organization_id from CASCADE to RESTRICT on delete + - Changed agent_assignments.agent_token_id from CASCADE to RESTRICT on delete + - Prevents silent data loss when deleting organizations or agent tokens +Files: priv/repo/migrations/20260305152524_fix_agent_cascade_deletes.exs + +fix: add validation for state_descr in sensor readings + - Added min/max length validation (1-255 chars) for state_descr field + - Prevents empty or overly long state descriptions from being stored +Files: lib/towerops/snmp/sensor_reading.ex + +ci: upgrade to Elixir 1.19.5 and OTP 28.3 to match .tool-versions +Files: .forgejo/workflows/build.yaml + fix: comprehensive reliability audit bug fixes (16 bugs fixed) - Critical (5): Task.yield_many race condition, Enum.zip data corruption, missing Alert schema fields, LiveView timer/PubSub leaks - High (3): clock skew handling, nil crash in interface status, migration index naming diff --git a/priv/static/changelog.txt b/priv/static/changelog.txt index fd3aa548..930474f5 100644 --- a/priv/static/changelog.txt +++ b/priv/static/changelog.txt @@ -1,4 +1,7 @@ 2026-03-05 — Reliability & Performance Improvements +* Optimized alert queries for faster dashboard loading on large organizations +* Improved data integrity with stricter database constraints +* Enhanced validation for sensor readings to prevent invalid data * Fixed memory leaks in real-time dashboard components * Improved error handling for device polling and monitoring * Better handling of clock synchronization issues between servers