# Changelog All notable changes to this project are documented here. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [1.1.0] ### Added - Layered architecture: `api/`, `core/`, `analytics/`, `safety/`, `ui/`. - Settings module (`pydantic-settings`) — single source of truth for env vars. - App factory `create_app()` with FastAPI `lifespan` for clean startup/shutdown. - LLM registry with TTL cache + hash key — reuses `MarkItDown(LLM)` clients per `(api_key, base_url, model)` triple, with a connection-pooled `httpx.Client` per OpenAI client. - Streaming uploads to disk in a worker thread; no double-write to tmp. - HTML cleanup powered by `selectolax` (strips `