---
title: v4.0.22 Changelog
description: See what's new in Kener v4.0.22, including new features, improvements, and bug fixes
---

## New features {#new-features}

> [!NOTE]
> The migration for sqlite3 was broken in the release 4.0.21. So it has been fixed in this release.

### Multi-monitor alert configurations {#multi-monitor-alerts}

Alert configurations can now be applied to **multiple monitors** at once. Previously each alert config was tied to a single monitor — creating the same alert for several monitors required duplicating it.

- A searchable multi-select UI replaces the single-monitor dropdown when creating or editing alerts.
- Alert logs show which specific monitor triggered each alert.
- Existing single-monitor configs are automatically migrated to the new schema.

New database migration adds a `monitor_alerts_config_monitors` junction table and a `monitor_tag` column on `monitor_alerts_v2` to track per-monitor trigger history.

### Upcoming maintenances on status pages {#upcoming-maintenances}

Upcoming scheduled maintenance events are now displayed on the home page, custom page routes, and individual monitor detail pages. This gives visitors advance notice of planned work.

Visibility is controlled by the existing **Event Display Settings → Maintenances → Upcoming** toggle in **Manage → Site Configurations**.

### Maintenance subscriber notifications {#maintenance-notifications}

Maintenance events can now trigger subscriber notifications at each lifecycle stage: **created**, **reminder**, **started**, and **ended**. Configure which events send notifications in **Manage → Site Configurations → Maintenance Notification Settings**.

| Event type | When sent                    | Default |
| :--------- | :--------------------------- | :------ |
| Created    | New event is generated       | Off     |
| Reminder   | Event enters READY state     | On      |
| Started    | Event enters ONGOING state   | On      |
| Ended      | Event enters COMPLETED state | On      |

The **reminder buffer** (default 1 hour) controls how far before the start time the READY transition and reminder notification happen.

### Analytics documentation {#analytics-docs}

A new [Analytics](/docs/v4/analytics) documentation page covers all seven supported providers — Google Analytics, Plausible, Mixpanel, Amplitude, Microsoft Clarity, Umami, and PostHog — with configuration tables, setup instructions, and ad-blocker proxy tips.

## Improvements {#improvements}

### Google Tag Manager transport URL and script host {#gtm-transport-url}

The Google Tag Manager integration now supports two new optional fields:

- **Transport URL** — custom endpoint for analytics hits (useful for bypassing ad blockers with a proxy like [Saki](https://github.com/nicholasgasior/saki)).
- **Script Host** — custom URL for the gtag.js script instead of the default `googletagmanager.com`.

Configure both in **Manage → Analytics Providers → Google Analytics**.

### Improved TCP and API monitor error handling {#tcp-api-error-handling}

- **TCP monitors** now collect all host connection failure messages and report them as a combined error.
- **API monitors** now create an HTTPS agent with keep-alive and socket pooling, distinguish timeout errors more accurately (`ECONNABORTED` vs message-based), and truncate eval errors to 200 characters.

### "Included Monitors" shows count {#included-monitors-count}

The group monitor popover and related components now display the number of included monitors — e.g. "Included Monitors (5)" — making it easier to see group size at a glance. All locale files updated with the `%count` placeholder.

### Czech and Slovak translation updates {#czech-slovak-translations}

Updated Czech (`cs.json`) and Slovak (`sk.json`) translations with new and corrected strings.

## Bug fixes {#bug-fixes}

- Fixed custom CSS and custom fonts documentation guide links pointing to incorrect URLs.
- Removed unused `<svelte:head>` elements and stale metadata from documentation layouts.
- Removed `knip.json` — the project now uses default knip configuration.

## Security {#security}

Patched critical and high-severity vulnerabilities by adding `overrides` for `fast-xml-parser`, `rollup`, `undici`, `minimatch`, `devalue`, `dompurify`, `cookie`, and `mailparser`. Updated `@sveltejs/kit` to ^2.53.3 and `svelte` to ^5.53.5.
