# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ### Changed - Dependency update: typer to v0.21.1 (#1627) ## [0.1.3] - 2026-01-06 ### Added - Draft template visibility in list command (#1610) - Draft templates now shown with dimmed styling and status indicator instead of being hidden ### Changed - Schema deprecation postponed (#1636) - Template-only variable definitions deferred to maintain backward compatibility and reduce migration complexity ## [0.1.2] - 2025-12-11 ### Fixed - Nix flake missing `email-validator` dependency causing build failures (#1573) ## [0.1.0] - 2025-12-10 ### Added - Variable file support with `--var-file` flag (#1331) - Load variables from YAML file for non-interactive deployments - Variable override support for `show` command with `--var` and `--var-file` flags (#1421) - Preview variable overrides before generating - Terraform template support (#1422) - Manage Terraform configurations with schema 1.0 - Kubernetes template support (#1423) - Manage Kubernetes configurations with schema 1.0 - Helm template support (#1424) - Manage Helm charts with schema 1.0 - Ansible template support (#1426) - Manage Ansible playbooks with schema 1.0 - Packer template support (#1427) - Manage Packer templates with schema 1.0 - Alphabetically sorted commands in help output with grouped panels for better organization - Separate help panels for "Template Commands" and "Configuration Commands" - Compose Schema 1.2: Port variables (http, https, ssh, dns, dhcp, smtp) - Templates only prompt for ports they use - Compose Schema 1.2: Dedicated `volume` section for storage configuration (replaces swarm_volume_* variables) - Compose Schema 1.2: `resources` section for CPU and memory limits - Compose Schema 1.2: `traefik_domain` variable for base domain configuration (#1362) - Set once, use across all services - Compose Schema 1.2: `database_host` now requires `database_external=true` - Compose Schema 1.2: `email_encryption` replaces `email_tls` and `email_ssl` with options: none, ssl, tls - Markdown formatting support for template descriptions and next steps (#1471) - Output directory flag `--output`/`-o` for `generate` command (#1534) - Replaces positional directory argument - Variable property `autogenerated_length` to specify custom length for auto-generated values (default: 32 characters) - Nerd Font icon support with shortcode replacement in template descriptions - Rich visual feedback using standardized icon system ### Changed - Schema is now managed in JSON for better standardization and clarity (#1555) - Compose Schema 1.2: Removed `traefik_entrypoint` and `traefik_tls_entrypoint` variables - Removed Jinja2 `| default()` filter extraction and merging (#1410) - All defaults must now be defined in template/module specs - Refactored code quality (#1364) for all core modules from single files to package structure with specific submodules - Improved debug logging to capture module discovery and registration during initialization - Enhanced debug logging for better troubleshooting - Simplified dry-run output to show only essential information (files, sizes, status) - Traefik template now uses module spec variable `authentik_traefik_middleware` instead of template-specific `traefik_authentik_middleware_name` - `validate` command now accepts template ID as positional argument (e.g., `compose validate netbox`) - Consistent with archetypes command pattern - Sections can't be required anymore, only variables can be required - Simplifies logic and improves usability - Variables are now optional by default - only explicitly marked `required: true` variables are required, display shows `(*)` indicator instead of `(required)` ### Deprecated - Positional directory argument for `generate` command (#1534) - Use `--output`/`-o` flag instead (will be removed in v0.2.0) ### Fixed - CLI --var flag now properly converts boolean and numeric strings to appropriate Python types (#1522) - Empty template files are no longer created during generation (#1518) - Enhanced user confirmation flow for template generation (#1428) ## [0.0.7] - 2025-10-28 ### Added - Multiple Library Support (#1314) for git and local libraries - Multi-Schema Module Support and Backward Compatibility (Schema-1.0) - Schema-1.1 `network_mode` with options: bridge, host, macvlan - Schema-1.1 `swarm` module support - Variable-level and Section-level depenendencies `needs` with multiple values support - Optional Variables `optional: true` to allow empty/None values - PEP 8 formatting alignment - CLI variable dependency validation - raises error when CLI-provided variables have unsatisfied dependencies - Support for required variables independent of section state (#1355) - Variables can now be marked with `required: true` in template specs - Required variables are always prompted, validated, and included in rendering - Display shows yellow `(required)` indicator for required variables - Required variables from disabled sections are still collected and available ### Changed - Schema-1.1 Unified Docker Swarm Placement (#1359) - Simplified swarm placement constraints into a single variable - Refactored compose module from single file to package structure - Dependency validation moved to `validate_all()` for better error reporting - Schema-1.1 removed `network_enabled`, `ports_enabled` and `database_enabled` toggles (no longer optional) - Improved error handling and display output consistency - Updated dependency PyYAML to v6.0.3 (Python 3.14 compatibility) - Updated dependency rich to v14.2.0 (Python 3.14 compatibility) - Pinned all dependencies to specific tested versions for consistent installations ### Fixed - Required sections now ignore toggle and are always enabled - Module spec loading based on correct template schema version - Interactive prompts now skip all variables (including required) when parent section is disabled - Absolute paths without leading slash treated as relative paths in generate command (#1357) - Paths like `Users/xcad/Projects/test` are now correctly normalized to `/Users/xcad/Projects/test` - Supports common Unix/Linux root directories: Users/, home/, usr/, opt/, var/, tmp/ - Repository fetch fails when library directory already exists (#1279) - **Critical:** Python 3.9 compatibility - removed Context type annotations causing RuntimeError - Context access now uses click.get_current_context() for better compatibility ## [0.0.6] - 2025-10-14 ### Changed - Pinned all dependencies to specific tested versions for consistent installations - typer==0.19.2 - rich==14.1.0 - PyYAML==6.0.2 - python-frontmatter==1.1.0 - Jinja2==3.1.6 ### Fixed - **Critical:** Python 3.9 compatibility - removed Context type annotations causing RuntimeError - Context access now uses click.get_current_context() for better compatibility - Added tests directory to .gitignore ## [0.0.4] - 2025-01-XX Initial public release with core CLI functionality. [unreleased]: https://github.com/christianlempa/boilerplates/compare/v0.1.2...HEAD [0.1.2]: https://github.com/christianlempa/boilerplates/compare/v0.1.1...v0.1.2 [0.1.1]: https://github.com/christianlempa/boilerplates/compare/v0.1.0...v0.1.1 [0.1.0]: https://github.com/christianlempa/boilerplates/compare/v0.0.7...v0.1.0 [0.0.7]: https://github.com/christianlempa/boilerplates/compare/v0.0.6...v0.0.7 [0.0.6]: https://github.com/christianlempa/boilerplates/releases/tag/v0.0.6 [0.0.4]: https://github.com/christianlempa/boilerplates/releases/tag/v0.0.4