Skip to content

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased

Fixed

  • actuator.enabled: false now actually disables the endpoints (every /actuator/* route answers 404). Previously the setting was documented but never read.

Added

  • GET /actuator/metrics: Prometheus default-registry exposition behind the metrics extra; answers 501 when prometheus-client is not installed. Honors the Accept header: application/openmetrics-text gets an OpenMetrics exposition (with the mandatory # EOF terminator), anything else gets Prometheus text 0.0.4. Format validity is pinned by a test using the official parser.
  • ActuatorSettings.check_timeout_seconds (default 5.0): per-indicator time budget; a slower check reports DOWN with a timeout error.

Changed

  • Health indicators now run concurrently (previously sequential); total probe time is bounded by the slowest indicator, capped by the timeout.
  • Sync check() methods execute in a worker thread, so a blocking probe no longer stalls the event loop.

0.1.0 - 2026-07-02

Added

  • ActuatorController exposing GET /actuator/health, /actuator/health/live, /actuator/health/ready and /actuator/info via pico-fastapi.
  • HealthIndicator protocol — @component classes are auto-collected through List[HealthIndicator] injection; check() may be sync or async and return a dict or a truthy value. A raising indicator reports DOWN in isolation.
  • InfoContributor protocol for dynamic /actuator/info entries.
  • ActuatorSettings (@configured, prefix actuator): enabled, show_components, static info map.
  • Auto-discovery through the pico_boot.modules entry point.
  • Minimal runnable example under examples/minimal/.