# 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). ## [0.3.1] - 2026-01-06 ### Fixed - Reduced opam package size from 87MB to ~200KB by using `git archive` for tarball creation ## [0.2.1] - 2026-01-04 ### Fixed - **Server port binding now fails correctly when port is already in use.** Previously, `reuse_port` defaulted to `true`, which enabled `SO_REUSEPORT` and allowed multiple processes to silently bind to the same port. This caused confusing behavior where a new server would start successfully but only receive a fraction of connections. Now `reuse_port` defaults to `false`, and binding to an already-used port will fail with a clear error. ### Changed - `Server.default_config.reuse_port` now defaults to `false` instead of `true`. - Users who intentionally want multiple processes sharing a port (for load balancing) can enable it explicitly via `{ config with reuse_port = true }`. ## [0.2.0] - 2026-01-03 ### Added - Phoenix-style three-layer plug architecture - Pipeline module for reusable plug collections - Endpoint module for global plug entry point - Scoped authentication with `Plug.Auth` pipeline ### Changed - Refactored plug system to match Phoenix conventions - Improved router with per-route plug support ## [0.1.0] - Initial Release ### Added - HTTP/1.1 and HTTP/2 client and server - WebSocket support (RFC 6455) - Server-Sent Events (SSE) - Lock-free pub/sub messaging - Connection pooling - TLS support via tls-eio - Static file serving - Gzip/zstd compression - CORS, CSRF, rate limiting plugs - CLI tools: `hc` (client) and `hs` (file server)