# 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] ### Added - Fly.io deployment configuration for public demo - Dockerfile with Python 3.11-slim and WeasyPrint dependencies - fly.toml with scale-to-zero configuration (London region) - .dockerignore to exclude tests, docs, and development files - PDF Report Generation (Sprint 18) - Professional PDF reports from test results with charts and styling - `ReportGenerator` class orchestrating data gathering, chart generation, and PDF output - `ReportConfig` for customising company name, logo, charts, and DPI - HTML templates with Jinja2 for report structure - CSS stylesheet optimised for A4 PDF output via WeasyPrint - Matplotlib-based chart generation (voltage vs temperature, results summary) - New CLI commands: - `list-runs`: Display recent test runs with IDs - `export-report`: Generate PDF report from run ID - Dashboard PDF download button in Results Viewer - Reporting configuration section in default.yaml - Unit tests for models, HTML renderer, and chart generator - Integration test for full report generation pipeline ### Changed - Added `matplotlib>=3.8` to reports optional dependencies ## [0.1.0] - 2025-12-04 ### Added - Streamlit Dashboard Enhancement (Sprint 17) - HAL-based instrument control (no direct physics access) - Test execution page for running TempCo characterisation - Results viewer page with filtering and historical data - Form-based parameter controls preventing UI clunkiness - Live simulation charts with auto-start - End-to-end integration tests covering full workflow - Updated README with installation and usage instructions - Proprietary licence ### Changed - Integration tests now run 100x faster with simulation time scaling - Removed confusing pause/clear chart buttons from dashboard ### Fixed - CI release workflow now creates proper releases with changelog description ### Technical - Dashboard uses InstrumentFactory and InstrumentSet abstraction - Embedded SimulationServer with threading synchronisation - SQLite repository close() method for Windows file handle cleanup - 259 unit tests, 12 integration tests all passing - Coverage: 100% on core physics/instrument modules ## [0.1.0-beta.2] - 2025-12-03 ### Added - Test Executive Framework (Sprint 14) - TestContext dataclass providing runtime context for tests - ITest abstract base class defining test interface - TestLogger for recording measurements, results, and events - LimitChecker for evaluating pass/fail against specification limits - TestRunner for orchestrating test execution - SQLite-based TestRepository for persisting test data - Parquet measurement storage for efficient time-series data - DVT Test Implementation (Sprint 15) - BaseDVTTest providing common test utilities - TempCo characterisation test (temperature coefficient measurement) - Temperature sweep with automatic thermal settling - Linear regression TempCo calculation (ppm/°C) - Comprehensive integration tests for end-to-end validation ### Technical - Test framework supports data logging, limit evaluation, and result persistence - TempCo test demonstrates full end-to-end workflow: configure instruments → sweep temperature → measure → calculate → evaluate - All framework and test components fully type-checked and linted ## [0.1.0-beta.1] - 2025-12-02 ### Added - Hardware Abstraction Layer (HAL) with instrument interface protocols - IThermalChamber protocol with temperature control methods - IPowerSupply protocol with voltage/current control and measurement - IMultimeter protocol with DC voltage, current, and resistance measurement - Instrument drivers implementing HAL interfaces - ThermalChamberDriver implements IThermalChamber - PowerSupplyDriver implements IPowerSupply - MultimeterDriver implements IMultimeter - Instrument factory pattern for backend abstraction - InstrumentSet dataclass containing chamber, PSU, and DMM - InstrumentConfig for specifying backend (simulator/pyvisa) and connection details - InstrumentFactory.create() for creating instrument sets from configuration - Transport layer abstraction - Transport ABC defining connect/disconnect/read/write/query interface - TCPTransport implementation for TCP/IP connections - Comprehensive test suite for HAL (16 tests) - Interface implementation verification - Factory pattern testing with mocked backends - Configuration validation ### Changed - Drivers now explicitly inherit from interface ABCs for maximum type safety - Moved InstrumentServer to instruments/transport for better architecture ### Technical - ABC-based interfaces ensure compile-time interface compliance - Factory pattern enables seamless switching between simulated and real hardware - All HAL components fully type-checked with mypy strict mode ## [0.1.0-alpha.3] - 2025-12-02 ### Added - Async TCP server for exposing virtual instruments over network - InstrumentServer class with multi-port, multi-client support - Line-based SCPI protocol (newline-terminated commands/responses) - SimulationServer wiring physics engine to all virtual instruments - CLI `serve` command to start simulation server with configurable ports - Integration tests for TCP server and instrument connectivity ### Infrastructure - SCPI foundation (Sprint 5): command parser with IEEE 488.2 support - Virtual instrument base class with command dispatch - Thermal chamber simulator (TEMP:SETPOINT, TEMP:ACTUAL?, TEMP:STAB?) - Power supply simulator (VOLT, CURR, OUTP, MEAS commands) - Multimeter simulator (MEAS:VOLT:DC?, MEAS:CURR:DC?, CONF, READ?) ## [0.1.0-alpha.2] - 2025-12-02 ### Added - Streamlit dashboard for interactive physics visualisation - Real-time temperature charts (chamber, case, junction) - Current state metrics display (voltages, currents, power, temperatures) - Interactive controls in sidebar: - Temperature setpoint slider (-40°C to 125°C) - Input voltage slider (0-12V) - Load current slider (0-500mA) - Output enable toggle - Start/Stop/Reset simulation buttons - Self-heating demonstration panel with: - Junction-case and case-ambient temperature rise display - Power dissipation chart - Thermal coupling explanation ## [0.1.0-alpha.1] - 2025-12-02 ### Added - Physics engine with thermal-electrical coupling - First-order thermal response calculations for chamber and case - Junction temperature calculation via thermal resistance (θ_jc) - Self-heating effects from power dissipation - LDO DUT model with temperature-dependent behaviour - Output voltage temperature coefficient (ppm/°C) - Quiescent current temperature coefficient - Dropout voltage temperature dependence - Power dissipation calculation - Comprehensive physics engine test suite (13 tests) ## [0.0.1] - 2025-12-01 ### Added - Initial project scaffolding - pyproject.toml with core dependencies - Package directory structure with all subpackages - Development tooling configuration (ruff, mypy, pytest) - CLI entry point with version command - Project documentation (requirements, technical specification, architecture decisions) - Development plan with vertical slice approach - CI/CD pipeline configuration --- ## Version History | Version | Date | Milestone | |---------|------|-----------| | 0.1.0 | 2025-12-04 | MVP Complete | | 0.1.0-beta.2 | 2025-12-03 | First DVT test runs | | 0.1.0-beta.1 | 2025-12-02 | HAL complete | | 0.1.0-alpha.3 | 2025-12-02 | Network ready | | 0.1.0-alpha.2 | 2025-12-02 | Visual demo | | 0.1.0-alpha.1 | 2025-12-02 | Physics engine | | 0.0.1 | 2025-12-01 | Project scaffolding |