# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ## [0.1.0] - 2026-05-30 ### Added - **FrankenPHP runtime** — base image migrated from `php-cli` to FrankenPHP Alpine for better performance and built-in web server support - **FrankenPHP worker mode** — Symfony worker script (`public/worker.php`) with request reuse and graceful reload - **Caddy configuration** — `docker/frankenphp/Caddyfile` and `Caddyfile.dev` for production and development setups - **Provider health probes** — `ProviderInterface` extended with `ping()` and `probe()` methods; `ProbeTrait` provides the shared implementation - **Per-provider status on `/health`** — the health endpoint now reports `ok`, `degraded`, or `down` for each configured provider (GitHub, GitLab, Gitea), along with an error code and latency - **Supporting value objects** — `ProviderStatus`, `ProviderStatusType`, `ProviderErrorCode`, and `ProviderHealthChecker` service - **`ContributionAggregator` service** — contribution merging logic extracted from `GraphController` into a dedicated, testable service ### Fixed - Optional environment variables (`GITLAB_URL`, `ALLOWED_HOSTS`, etc.) now have explicit empty default values in `docker-compose.yml`, preventing Docker Compose warnings on startup ### Changed - `SvgRenderer` is now `final` and declares `strict_types=1` ### Tests - Unit tests added for `ProbeTrait`, `ProviderHealthChecker`, `ProviderStatus`, `ContributionAggregator`, and all three provider probes (`GitHubProvider`, `GitLabProvider`, `GiteaProvider`) - `SvgRendererTest` refactored to follow project PHPUnit conventions (`#[Test]` attribute, `it_` prefix, Arrange/Act/Assert structure) ## [0.0.1] - 2025-01-01 ### Added - Initial release — GitHub, GitLab, and Gitea contribution graph as a self-hosted SVG endpoint - Light and dark theme support - Filesystem cache with 1-hour TTL - Docker multi-stage build (`base → deps → build → final`) - Basic `/health` endpoint [Unreleased]: https://github.com/ArthurErlich/git-contribution-graph/compare/0.1.0...HEAD [0.1.0]: https://github.com/ArthurErlich/git-contribution-graph/compare/0.0.1...0.1.0 [0.0.1]: https://github.com/ArthurErlich/git-contribution-graph/releases/tag/0.0.1