Release LoadGen Api, Appliance and MCP Server: 1.0.0.11868
LoadGen General
- No general changes in this release.
LoadGen Api
- [#8604] Added extended scheduling options for monitoring profiles — new Weekly N>1, Monthly (day-of-month or "Nth weekday"), Quarterly, and Custom Cron recurrence types in addition to the existing daily cadence. Existing daily schedules continue to work without migration; cloud-mode agents receive pre-expanded run instants for the new patterns and the legacy day-of-week mask for daily / weekly-N=1 schedules.
- [#8623] Added a typed
FRONTENDDOMAINREQUIREDerror code on the Docker / Services enable endpoint so the Frontend can render a specific "configure a frontend domain first" message instead of polling the job status. Also added whitelisted container-log collection covering InfluxDB, Grafana, the API, the MCP server, the Frontend, nginx, and Let's Encrypt — surfaced in support bundles so the next appliance-can't-start report lands with the actual container exit reason instead of generic "Connection refused". - [#8622] The customer-facing Appliance Not Available message has been rewritten to one short non-technical sentence per recovery class. The full multi-cause operator diagnostic now goes to the API host log, never the browser. The token status reported to the Frontend now also flags a corrupt configuration file, so it can render a specific "appsettings.json on the host is corrupt — last token rotation may have failed" hint.
- [#8591] Saving user preferences is now non-destructive — an empty reporter email is rejected with a typed
nullemailuse_deleteerror, and clearing the saved address now requires an explicit delete. Closes a silent data-loss path where the saved support email was wiped by an over-eager logout hook. - LG057 uptime-bundle bonus — customers with both LG050 (ApiBase) and LG054 (ApiMonitoring) active now receive +25 LG057 (Uptime Monitoring) checks on top of any cloud LG057 row. The bonus is recalculated automatically, so it vanishes the moment either prerequisite expires.
- Server-side LG057 uptime-check quota — creating or importing uptime checks now rejects definitions that would push the tenant past the LG057 seat count. A single create past the limit is refused with a "delete an existing check" hint; import accepts up to the remaining slot count and skips each excess row with a per-row error message.
- Fixed reload-from-LoadGen imports failing with
400 Bad Requestwhen saving ticket history. The work-item URL is now optional, so historical tickets that do not carry a DevOps URL can be persisted. - Fixed reload-from-LoadGen rows disappearing from Refresh list after a successful import. History lookups now match against the effective ticket status, so freshly-imported rows pass the status-filter chip immediately. Internal-support reload flows can now list history for all reporters; the default caller-scoped view is unchanged.
- Saving ticket history now cleanly distinguishes inserting a new row from replacing an existing row by tracking id, and rejects entries without a tracking id with a typed
trackingidrequirederror. The history page is now also reachable for non-admin support users.
LoadGen Appliance
- [#8623] Fixed the appliance leaving InfluxDB and Grafana in a broken half-configured state when an operator enabled them before a frontend domain was set. A new prerequisite gate refuses the request with a typed
FRONTENDDOMAINREQUIREDerror instead of letting the containers come up with placeholder hostnames. The subdomain resolver also runs before the containers start, so they come up with real hostnames on the very first bring-up and are reachable immediately. - [#8622] Three independent appliance hardening fixes after a token rotation containing shell-special characters left the agent in a crash loop:
- The token-writing layer now handles every printable character correctly, so rotating tokens that contain special characters no longer corrupts the written configuration.
- The agent self-heals on startup from a corrupt
appsettings.json— it backs up the broken file with a UTC timestamp, swaps in canonical defaults, and the admin token is repopulated automatically on the next start.
- A new systemd drop-in pins
Agent__BindAddress=0.0.0.0so the agent no longer silently falls back to127.0.0.1when the main unit drifts. Operators who deliberately want loopback can override with a higher-prefix drop-in.
LoadGen MCP Server
- No MCP Server changes in this release.