v4.0.16 Changelog
See what's new in Kener v4.0.16, including new features, improvements, and bug fixes
New features
gRPC monitor
Kener now supports monitoring gRPC services using the standard gRPC Health Check Protocol (grpc.health.v1). (#505)
Configuration:
| Field | Required | Description |
|---|---|---|
| Host | Yes | gRPC server hostname or IP |
| Port | Yes | gRPC server port (default 50051) |
| Service | No | Fully qualified service name (e.g. my.package.ServiceName). Leave empty to check overall server health |
| TLS | No | Enable TLS/SSL encrypted connections |
| Timeout | No | Request timeout in milliseconds (default 10000) |
Status mapping:
| Health status | Kener status |
|---|---|
SERVING |
UP |
NOT_SERVING |
DOWN |
| Timeout | DOWN |
UNKNOWN |
DEGRADED |
Page monitor ordering
Monitors on a status page can now be reordered using up/down arrows in the page editor. Previously, monitors were displayed in creation order. A new position column in the database controls the display sequence.
CSRF protection
Added origin-based CSRF protection for all state-changing form submissions (POST, PUT, PATCH, DELETE). When an Origin header is present, the server validates it against the expected host and rejects mismatched requests with HTTP 403. Combined with the existing SameSite=Lax cookie policy, this prevents cross-site form attacks. (#570)
Zeabur deployment
Added a one-click deployment template for Zeabur that provisions Kener with PostgreSQL and Redis pre-configured.
Bug fixes
JSON settings merge in monitor API
Fixed the PUT /api/v4/monitors/{tag} endpoint not correctly merging monitor_settings_json when the existing value was already a parsed object. The field is now always stringified before storage, preventing data loss during partial updates. (#654)
Improvements
Traditional Chinese locale
Added full Traditional Chinese (zh-TW) translation with 1000+ keys covering the entire UI.