# Changelog All notable changes to ptprnt will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [0.2.0] - v0.2.0 ### Added - Multi-label support - print multiple labels in sequence - LabelBuilder API with fluent interface for constructing labels - FakePrinter driver for testing without hardware (outputs PNG files) - PrinterService core service for printer operations - CliParser component with ICliParser interface - ICairoWrapper interface for testable graphics rendering - MockCairoWrapper for unit testing - Pre-commit hook for automatic copyright updates - USB trace mode for debugging (`-Dusb_trace_only=true`) ### Changed - **Major refactoring**: Reorganized codebase into layered architecture - Application layer: PtouchPrint, CliParser, PrinterService - Printer drivers: Moved to `src/printers/` with factory pattern - Graphics system: Added builder pattern and Cairo abstraction - Core services: Separated into `src/core/` directory - Label class now uses dependency injection for Cairo/Pango - CLI parsing separated from main application logic - Updated dependencies to latest versions - Improved project documentation (README.md, CLAUDE.md) ### Fixed - Label corruption issues resolved - Printer info retrieval bugs - USB attachment logic - Multiple lines handling in labels - Printer selection logic ## [0.1.0] - 2024 ### Added - Initial release of ptprnt - Basic label printing functionality for Brother P-touch P700 series - Pango/Cairo-based text rendering - USB device communication via libusb-1.0 - Template-based Bitmap class supporting multiple pixel formats (ALPHA8, RGBX8, RGBA8, ARGB8) - Monochrome bitmap conversion for printer output - PrinterDriverFactory for creating printer instances - USB device abstraction layer (IUsbDevice, UsbDevice, UsbDeviceFactory) - Command-line interface using CLI11 - Logging with spdlog and file output - Unit tests using GoogleTest - Code coverage reporting with gcovr - Meson build system with C++20 support - CI/CD pipeline with automated testing ### Core Components (v0.1.0) - PtouchPrint: Main application orchestrator - P700Printer: Brother P-touch P700 driver implementation - Bitmap: Template-based image storage - Label: Text rendering with Pango/Cairo - Monochrome: Bitmap to monochrome conversion - UsbDevice: libusb wrapper for device communication --- ## Project Origins ptprnt is a modern C++20 rewrite of [ptouch-print](https://git.familie-radermacher.ch/linux/ptouch-print.git). All credits for reverse engineering the Brother P-touch USB protocol go to Dominic Rademacher.