v4.0.20 Changelog
See what's new in Kener v4.0.20, including new features, improvements, and bug fixes
New features
Sitemap configuration
Admins can now configure how sitemap.xml is generated from Manage → Site Configurations → Sitemap. Three modes are available:
| Mode | Behaviour |
|---|---|
| Auto | Automatically includes all pages, visible active monitors, and current/previous month event pages |
| Manual | Only the URLs you explicitly add are included |
| Off | Returns a 404 for /sitemap.xml |
In Auto mode you can also add extra manual URLs alongside the auto-generated ones. The sitemap URL is shown in the admin UI for easy copying.
HEIC/HEIF image support
All image upload fields — logo, favicon, social preview, page logo, monitor image — now accept HEIC and HEIF formats (common on iPhones). Uploaded HEIC/HEIF images are automatically converted to JPEG server-side using heic-convert before processing with sharp.
The default BODY_SIZE_LIMIT has been increased to 3 MB (from the SvelteKit default of 512 KB) to accommodate larger image uploads. You can override this via the BODY_SIZE_LIMIT environment variable.
Improvements
Open Graph & Twitter Card meta tags
All public-facing pages now emit complete Open Graph and Twitter Card meta tags:
- Status pages (
/,/[page_path]) —og:title,og:description,og:type,og:image,twitter:card,twitter:image - Incident pages — article-type OG tags with the first comment as description
- Maintenance pages — article-type OG tags with the maintenance description
- Event pages — OG tags with month-specific title and description
- Monitor pages — OG tags with monitor name and status
Improved SEO semantics
- Page headers and incident/maintenance titles are now wrapped in proper
<h1>/<h2>HTML heading tags for better SEO structure. robotsmeta tag (noindex, nofollow) added to admin, account, and embed layouts to prevent search engines from indexing private pages.robots.txtexpanded with explicitAllow/Disallowrules and entries for AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, etc.).
Page-level SEO field key fix
Page-level SEO settings now use the correct keys (metaPageTitle, metaPageDescription, socialPagePreviewImage) consistently. Previously, the dashboard controller read metaTitle/metaDescription/socialPreviewImage which didn't match what the page settings form saved. Pages with zero monitors also now correctly return SEO metadata.
Separate save buttons for page settings
The page settings UI now has separate Save buttons and loading states for Display settings and SEO settings, so saving one section doesn't affect the other.
Bug fixes
- Fixed image upload error handling on pages — non-OK responses are now caught before attempting to parse JSON.
- Removed unused
MonitorAlerting.sveltecomponent and stalellms.txt/sitemap.xmlserver handlers.