Files
ptprnt/CHANGELOG.md
Moritz Martinius d3e137ff9c
All checks were successful
Build ptprnt / build (push) Successful in 3m52s
Add changelog, uniform naming, prepare v0.2.0 tagging (#18)
Reviewed-on: moritz/ptouch-prnt#18
2025-10-16 19:36:15 +00:00

2.7 KiB

Changelog

All notable changes to ptprnt will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[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. All credits for reverse engineering the Brother P-touch USB protocol go to Dominic Rademacher.