This release includes breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
+12 more
Affected surfaces
Summary
AI summaryUpdates New Features, Bug Fixes, and replicated/global across a mixed release.
Full changelog
Date: 2026-03-30
Base: v1.1.2 (a9e6893)
New Features
Docker Swarm Monitoring
Maintenant now auto-discovers and monitors Docker Swarm clusters with no configuration required. When deployed on a manager node, it detects Swarm mode automatically and starts tracking services, tasks, and nodes in real time.
Community Edition — the same "observe without config" experience, extended to Swarm:
- Service discovery — All services enumerated via the Swarm API with mode (replicated/global), image, replica counts (e.g. "3/3 running"), task states, published ports, and attached networks
- Stack grouping — Services deployed with
docker stack deployare automatically grouped by their stack name (com.docker.stack.namespace); override per-service withmaintenant.group - Real-time SSE updates — Service create, update, and remove events propagate to the dashboard within seconds
- Startup reconciliation — Full service and task discovery on startup ensures the dashboard reflects cluster state even after a restart
- Worker node fallback — If deployed on a worker node, Maintenant degrades gracefully to standard Docker container monitoring with a log message
- Manager demotion handling — If the node is demoted from manager to worker at runtime, Maintenant degrades automatically and broadcasts a status update
Enterprise Edition — cluster intelligence, alerting, and a dedicated dashboard:
- Node health overview — All nodes with role, status, availability, engine version, and task count
- Node alerting — Alerts when nodes go down, are drained, or quorum is degraded
- Crash-loop detection — Automatic detection of task failure patterns (3+ failures within 5 minutes), with recovery detection
- Replica health alerting — Alerts when running replicas fall below the desired count
- Rolling update tracking — Real-time progress, stall detection, and rollback alerts
- Dedicated Swarm dashboard — Cluster-wide view with node list, service summary, task distribution, and aggregate health
Labels must be placed in the deploy.labels section of the service definition, not the top-level labels section. All standard maintenant.* labels are supported (group, ignore, alert severity, channels).
See the Swarm documentation and Swarm deployment guide for details.
Kubernetes Dashboard
The Kubernetes section of the UI has been completely reworked. Where the previous release shipped the K8s backend, this release adds the dedicated frontend section with full cluster visibility.
- Workloads view — Deployments, StatefulSets, and DaemonSets grouped by namespace with replica counts, readiness, and rollout status
- Pod detail — Individual pod states, container list, resource usage, restart counts, and log access
- Cluster overview — Node list with roles, status, and resource allocation
- Namespace filtering — The view respects
MAINTENANT_K8S_NAMESPACESandMAINTENANT_K8S_EXCLUDE_NAMESPACES— only visible namespaces appear in the UI
Helm Chart for Kubernetes
A production-ready Helm chart is now included at deploy/helm/maintenant/.
helm install maintenant ./deploy/helm/maintenant \
-n maintenant --create-namespace
The chart ships with Ingress support (including TLS), configurable resource limits, Enterprise license injection (direct or via existing secret), and sensible defaults. See the Kubernetes guide for the full values reference.
Runtime-Aware Navigation
The sidebar now adapts to the detected runtime. Docker, Swarm, and Kubernetes each surface their own dedicated section — only what is relevant to your environment is shown. Runtime detection happens automatically and the UI updates in real time via SSE if the runtime status changes (e.g. Swarm manager demotion).
Update Tag Filter Labels
Two new Docker labels let you precisely control which tags Maintenant considers as update candidates for a container, closing #14.
| Label | Type | Description |
|-------|------|-------------|
| maintenant.update.tag-include | Go regex | Only tags matching this pattern are considered as update candidates |
| maintenant.update.tag-exclude | Go regex | Tags matching this pattern are excluded from candidates |
Priority rules:
tag-includereplaces the automatic variant filter (e.g.-alpine,-bookwormdetection is bypassed)tag-excludealone preserves the variant filter — only matching tags are removed after- Exclude applies after include — exclude always wins when both are set
- Invalid regex → warning logged, label ignored, default behavior applies
Common patterns:
# Stay on Node 20 alpine — never jump to Node 21
labels:
maintenant.update.tag-include: "^20\\.\\d+\\.\\d+-alpine$"
# Exclude pre-release tags
labels:
maintenant.update.tag-exclude: "(rc|beta|alpha)"
# Pin to Postgres 15.x, no pre-releases
labels:
maintenant.update.tag-include: "^15\\."
maintenant.update.tag-exclude: "(rc|beta|alpha)"
These labels have no effect on containers using non-semver channel tags (latest, lts, stable) — those containers use digest-only comparison and bypass the tag list entirely.
Bug Fixes
- Numeric build ID tags excluded from semver candidates — Tags composed entirely of digits (e.g. CI build IDs like
20240315) are no longer treated as semver candidates and no longer generate spurious update suggestions - CrashLoopBackOff alerts fire at startup — Pods already in a crash loop when Maintenant starts now trigger alerts immediately instead of waiting for the next state transition
- Kubernetes ExternalID route matching — Routes that accept Kubernetes ExternalIDs (which include
/) now use wildcard path segments and match correctly - Expired license reported when registry is unreachable — License validation now correctly reports an expired license even when the license server cannot be reached, instead of falling back silently to Community Edition
Upgrading from v1.1.2
docker compose pull && docker compose up -d --force-recreate
- Database migrations run automatically on startup
- Swarm CE and Kubernetes features require no schema changes (in-memory state)
- Enterprise Swarm node tracking adds a
swarm_nodestable (migration applied automatically) - No configuration changes required — runtime detection is fully automatic
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
Related context
Related tools
Beta — feedback welcome: [email protected]