# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/), and this project adheres to [Semantic Versioning](https://semver.org/). ## [0.1.0] — 2026-06-25 ### Added - NATS subscriber for `pulse.metrics.>` with JSON unmarshal - Scoring engine with lethal checks (disabled, stale, status, capacity, CPU, failure rate) - Weighted score formula (call 40%, load 30%, idle 20%, fail 10%) - Best-node cache with O(1) route resolution - REST API: `/api/route` (no auth), `/api/nodes`, `/api/trunks`, `/api/users` - JWT authentication (access + refresh tokens) with admin/viewer roles - Monitoring endpoints: Prometheus + Zabbix (API-key auth) - WebSocket hub for real-time metrics streaming - SvelteKit frontend with dashboard, node/trunk/user management - FreeSWITCH ESL client for Sofia gateway management - ASCII metrics logger with daily rotation - Config manager with atomic JSON save (tmp → rename) - Rate limiting with per-IP token buckets - CORS middleware - Graceful shutdown (SIGINT/SIGTERM, 10s timeout) - systemd unit with security isolation - NATS metrics emulator for testing (7 scenarios) - route.lua — FreeSWITCH dialplan script - Build system: single binary with embedded frontend (Makefile) ### Security - Auto-generated JWT secret and monitoring API key on first run - bcrypt password hashing - NoNewPrivileges, ProtectSystem, PrivateTmp in systemd unit