# 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]

## [0.3.5] - 2025-11-05

### Changed

- Reduced minimum Python requirement from 3.13 to 3.10

## [0.3.4] - 2025-10-31

### Added

- CLI parameters support with `--help` and `--version` options
- Environment variables displayed in CLI help with descriptions
- Support for all configuration options via CLI flags (--folder, --git-url, --cache-dir, etc.)

### Fixed

- Corrected version number inconsistency

## [0.3.3] - 2025-10-13

### Added

- Support for `VARIABLE_FORMAT` environment variable to choose between `{var}` (brace) and `$var` (dollar) syntax
- Support for `AUTO_DISCOVER_ARGS` environment variable to auto-discover template variables as required arguments
- Support for `SKIP_FRONTMATTER` environment variable to skip frontmatter processing and use raw markdown content

## [0.3.2] - 2025-10-11

### Fixed

- Fix git repository cache path generation to use repository owner instead of protocol user (was creating `$CACHE_DIR/git/git/repo` instead of `$CACHE_DIR/git/owner/repo`)

## [0.3.1] - 2025-10-08

### Added

- Comprehensive validation and warning system for frontmatter fields
- Automatic type conversion for non-string fields with stderr warnings
- Validation for argument names (must contain only alphanumeric and underscore characters)
- Required validation for argument names (skip arguments without valid names)
- Detailed error messages for invalid folder paths, unsafe template variables, and processing exceptions

### Security

- Replace unsafe dynamic code execution with safe MarkdownPrompt class for prompt rendering
- Add validation to prevent format string injection attacks in template variables
- Only allow alphanumeric and underscore characters in variable names (e.g., `{name}`, `{project_name}`)
- Block dangerous expressions like `{name.__class__}` or `{name[0]}` at file loading time

## [0.3.0] - 2025-09-30

### Added

- Support for prompt arguments with variable replacement using `{variable}` format in templates
- Escape literal brackets using double brackets (`{{var}}`)
- Support for `title` field in frontmatter (defaults to filename)

### Changed

- Remove tag `local` from all prompts, add tag `shinkuro`.

## [0.2.0] - 2025-09-29

### Changed

- Replace `GITHUB_REPO` environment variable with `GIT_URL` for broader git repository support
- Update cache directory structure from `~/.shinkuro/remote/github/{owner}/{repo}` to `~/.shinkuro/remote/git/{user}/{repo}`
- Support any git URL format (GitHub, GitLab, SSH, HTTPS with credentials)

## [0.1.0] - 2025-09-29

### Added

- Local file mode
- GitHub mode

[unreleased]: https://github.com/DiscreteTom/shinkuro/compare/v0.3.5...HEAD
[0.3.5]: https://github.com/DiscreteTom/shinkuro/compare/v0.3.4...v0.3.5
[0.3.4]: https://github.com/DiscreteTom/shinkuro/compare/v0.3.3...v0.3.4
[0.3.3]: https://github.com/DiscreteTom/shinkuro/compare/v0.3.2...v0.3.3
[0.3.2]: https://github.com/DiscreteTom/shinkuro/compare/v0.3.1...v0.3.2
[0.3.1]: https://github.com/DiscreteTom/shinkuro/compare/v0.3.0...v0.3.1
[0.3.0]: https://github.com/DiscreteTom/shinkuro/compare/v0.2.0...v0.3.0
[0.2.0]: https://github.com/DiscreteTom/shinkuro/compare/v0.1.0...v0.2.0
[0.1.0]: https://github.com/DiscreteTom/shinkuro/releases/tag/v0.1.0
