7.7 KiB
7.7 KiB
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]
Added
- Docker deployment configuration for public demo
- Dockerfile with Python 3.11-slim and WeasyPrint dependencies
- .dockerignore to exclude tests, docs, and development files
- deploy/ directory with docker-compose, nginx config, and Cloudflare Tunnel setup
- PDF Report Generation (Sprint 18)
- Professional PDF reports from test results with charts and styling
ReportGeneratorclass orchestrating data gathering, chart generation, and PDF outputReportConfigfor 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 IDsexport-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.8to 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
servecommand 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 |