Packages

PDF generation library with versioned Liquid templates stored in a database

Current section

Files

Jump to
sfera_doc CHANGELOG.md
Raw

CHANGELOG.md

# Changelog
## [0.1.0] 2026-03-15
### Changed
- **Breaking:** Removed `update_template/3` function - use `create_template/3` for both creating and versioning templates (functionally identical)
- Updated `create_template/3` documentation to clearly explain versioning behavior
- Reorganized README with improved structure and navigation
### Added
- Quick links navigation bar in README for faster access to key sections
- "Understanding storage backends" section with comprehensive comparison table and guidance
- "Workflows" section with Mermaid diagrams visualizing core features:
- PDF rendering flow with caching and error paths
- Template versioning lifecycle
- Template management from creation to deletion
- "Extensibility" section documenting all pluggable components:
- Custom storage backends
- Custom template engines
- Custom PDF engines
- Custom PDF object stores
- Custom PDF cache adapters
- Reference implementations and example code for each extensibility point
- Integration Tests and Code Coverage Report
### Fixed
- Corrected storage backend adapter interface documentation (was listing wrong callbacks)
## [0.0.2] 2026-03-06
### Added
- `.iex.exs` development helper that auto-starts `SferaDoc.Dev.Repo` when using Ecto storage adapter
- `SferaDoc.Dev.Repo` module for development database connection
- Comprehensive test suite for `SferaDoc.Cache.ParsedTemplate` covering cache operations, TTL expiration, and edge cases
### Fixed
- Changed PDF assigns hashing from MD5 to SHA-256 for better collision resistance
- Fixed ChromicPDF adapter to remove invalid `:output` option and properly decode base64-encoded PDFs
- Fixed `SferaDoc.Renderer.render/3` to return `{:ok, pdf_binary}` instead of telemetry result
### Changed
- Refactored `SferaDoc.Cache.ParsedTemplate` for better code organization and removed unnecessary documentation
- Added debug logging for PDF size when rendering with ChromicPDF
- Updated README:
- Added link to Development Guidelines wiki page under Contributing section
- Updated features to describe two-tier PDF storage architecture
- Changed "hot cache" terminology to "cache" for clarity
- Updated module documentation:
- Simplified and shortened main module docs while preserving all examples
- Added explicit explanation of storage backends (templates vs PDFs)
- Reorganized PDF caching section into "Two-Tier PDF Storage"
- Added comprehensive pluggable adapter documentation for storage backends, template engines, PDF engines, and object stores
- Moved object store adapter documentation to Pluggable Engines section for consistency
## [0.0.1] 2026-02-27
### Added
- Initial release of SferaDoc, a PDF generation library for Elixir
- Versioned Liquid template management with create, update, list, activate, and delete operations
- Template parsing with `solid` and ETS-based parsed template caching
- Chrome-based PDF rendering via `chromic_pdf`
- Pluggable template storage adapters: Ecto, Redis, and ETS
- Optional two-tier PDF storage: hot cache (Redis or ETS) plus durable object store (S3, Azure Blob, or file system)
- Required variable schema validation before rendering
- Telemetry events for render start, stop, and exception