All checks were successful
Build ptprnt / build (push) Successful in 4m15s
71 lines
2.7 KiB
Markdown
71 lines
2.7 KiB
Markdown
# 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.
|