llms.txt
Search Documentation
Search through all documentation pages
v4.x

v4.1.1 Changelog

See what's new in Kener v4.1.1, including new features, improvements, and bug fixes

New features

Display events inline

A new Display Events Inline toggle in Manage → Site Configurations controls how active events surface on the public site.

  • On — ongoing incidents, ongoing maintenances, and upcoming maintenances render as inline sections directly on the home, custom, and monitor pages, alongside a dedicated events list.
  • Off (default) — events stay in the notifications popover in the top bar.

The two surfaces are mutually exclusive: when inline events are enabled the notifications popover is hidden so events aren't shown twice.

Public RSS feeds

Kener now publishes a public RSS 2.0 feed of incidents and scheduled maintenance, so users can subscribe without email.

  • Routes: GET /rss.xml (default page), GET /{page_path}/rss.xml (named page), and GET /monitors/{monitor_tag}/rss.xml (single monitor).
  • The public layout emits a <link rel="alternate" type="application/rss+xml"> in <head>, scoped to the current view, so browsers and readers auto-discover the right feed.
  • An RSS icon button appears next to the Subscribe / share controls, gated on a new showRssFeed option (default on) under Manage → Site Configurations → Monitor Sub Menu Options.
  • Coverage mirrors the events page — past (last 90 days) and upcoming maintenance windows — and site-wide maintenances show as Affected: All monitors. Responses are cached for 5 minutes.

Improvements

Path-based heartbeat URLs

Heartbeat monitors now use a path-separated endpoint, /ext/heartbeat/{tag}/{secret}, instead of the old {tag}:{secret} form. Legacy colon-style URLs are automatically rewritten, so existing heartbeats keep working without changes. See Heartbeat Monitor.

"Started" column on incidents

The Manage → Incidents table gained a Started column showing when each incident began, and date formatting across the incidents UI is now standardized for consistent display in cells and tooltips.

Isolated web and worker database pools

Background jobs can no longer starve page loads of database connections. The connection pool is split by execution context (routed via AsyncLocalStorage):

  • Web poolDATABASE_POOL_MAX (default 10) — serves HTTP requests.
  • Worker poolDATABASE_WORKER_POOL_MAX (default 5, new) — serves schedulers and BullMQ workers.

This fixes KnexTimeoutError: Timeout acquiring a connection errors seen when monitor bursts overlapped page loads. See Environment Variables.

Faster monitor-bars aggregation

Added a covering index (monitor_tag, timestamp, status, latency) on monitoring_data so the daily status aggregation behind the status-page bars is served entirely from the index. This removes per-row table lookups and cuts multi-second queries on large instances (~1M+ rows) to near-instant.

Bug fixes

  • Redis writes recover after replica failover. Clients now reconnect on READONLY errors, so after a primary failover writes resume without restarting Kener. Point REDIS_URL at the writer/primary endpoint when your provider exposes separate reader and writer URLs.