CHANGELOG
FIX: The controller no longer crashes when the bandwidth-limit relax cycle meets a public share with no frontend selection. An account's limit is now cleared only once every one of its shares has been relaxed; a share that cannot be relaxed is retried on the next cycle without disturbing other accounts, and dial policies that already exist are not recreated.
FIX: The controller holds one OpenZiti management session and re-authenticates only when it expires, instead of logging in on every operation. This removes the pressure on the OpenZiti controller's authentication rate limit during bursts of share activity and limit enforcement. A persistent authentication failure, such as rotated or mistyped OpenZiti credentials, now fails operations quickly instead of queueing them behind one login attempt after another.
FIX: The metrics consumer bounds how many AMQP messages it holds unacknowledged and how long it spends on each: InfluxDB writes and share lookups have deadlines and a bounded retry, after which the message is dropped rather than parked, so a slow or unavailable InfluxDB or database can no longer fill the broker's memory. Malformed events are dropped immediately, a panic while processing one message no longer stops the consumer, and a full limits queue drops the handoff after a timeout while the usage stays recorded in InfluxDB.
CHANGE: Makefile: make builds the UIs and installs the module, make test runs the full gate (UI builds and lints, go test, go vet), make clean resets the project-owned GOBIN and UI build products. The UI lint errors the gate surfaced are fixed.