* **New Features**
* Added a singleton flag to DAG enqueue requests to prevent duplicate
runs when a DAG is already running or queued.
* **API Changes**
* Enqueue endpoint now can return HTTP 409 Conflict for singleton-mode
conflicts.
* Added more specific authentication error codes.
* **Behavioral Changes**
* Enqueue/retry paths no longer perform prior maxActiveRuns queue-length
enforcement unless singleton is used.
* Queue concurrency now honors DAG-configured max active runs for
DAG-based queues.
* **Tests**
* Added integration test validating max-active-runs behavior for
DAG-based queues.
* **New Features**
* JWT login/usage added; multiple auth methods (JWT, API token, Basic,
OIDC) can be enabled and used together.
* New auth-related API error codes: auth.unauthorized,
auth.token_invalid, auth.forbidden.
* **Behavior**
* Built-in auth mode ignores Basic auth (warning exposed); health and
login endpoints remain public.
* App clears stale built-in tokens at startup; Authorization headers
applied reliably.
* **Tests**
* Extensive auth tests and improved test helpers for auth flows and
headers.
* **Chores**
* Persisted users path added to test configs.
* **New Features**
* Resource history API (GET /services/resources/history) returning CPU,
memory, disk and load time series; supports duration and remote-node
query params.
* Background resource monitoring service with in-memory retention and
configurable sampling interval.
* Resource Usage charts added to System Status with loading/error
states, current-value display, auto-refresh and last-updated timestamp.
* **Chores**
* Monitoring config defaults (retention 24h, interval 5s), config
parsing and environment bindings.
* Server startup integrates resource service lifecycle.
* **Tests**
* New unit and integration tests for the monitoring service, store, ring
buffer, and API.
* **New Features**
* Added an optional "negate" flag for preconditions at both DAG and step
levels to invert condition evaluation.
* API and schema updated to include the new negate field.
* **Tests**
* Expanded test coverage for negated preconditions across DAGs, steps,
commands, environment variables, and error scenarios.