# 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.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

---

## [0.4.0] - 2025-11-24

### Added
- **Multiple Card Drawing**: Allow drawing multiple unique cards in a single reading (`feat: allow drawing multiple unique cards`)
- **GitLab Package Registry**: Upload binary artifacts to GitLab Package Registry during release (`feat: upload binary to GitLab Package Registry during release`)

### Changed
- **Card Loading Optimization**: Refactored tarot card loading for improved performance (`refactor: optimize tarot card loading`)

### Fixed
- **Release Asset URL**: Updated release asset URL to use GitLab Package Registry (`fix: update release asset URL to use GitLab Package Registry`)
- **Formatting**: Fixed code formatting issues (`fixes formatting`)

### Documentation
- Updated README with recent changes

---

## [0.3.0] - 2025-09-26

### Changed
- **Release Process**: Modified release process to use git tags instead of commit SHA (`fix: update version to 0.3.0 and modify release process to use tags`)
- **Rust Edition**: Updated from edition 2021 to 2024 (`fix: update edition from 2021 to 2024 in Cargo.toml`)
- **CI/CD Pipeline**: Improved GitLab CI/CD pipeline configuration
  - Removed multi-platform build stage
  - Updated release rules to only trigger on tags
  - Improved echo statements for clarity
  - Updated Rust version to 1.90
  - Specified version for cargo-audit installation in security scans

### Fixed
- **Release Rules**: Fixed release rules to ensure execution on tags (`fix: update release rules to always trigger on tags`)
- **Cleanup Job Rules**: Fixed cleanup job rules for merge requests and tags

### Refactored
- **Tarot Card Function**: Refactored `draw_random_tarot_card` to return arcana type (`refactor draw_random_tarot_card to return arcana type and update main to display card type with color`)
- **Code Quality**: 
  - Removed redundant version info test from unit tests
  - Removed unused serde_json import
  - Simplified card assignment in TarotReading
  - Cleaned up imports and improved formatting in main.rs
  - Removed optional security scanning, performance test, and coverage jobs from CI pipeline

---

## [0.2.0] - 2025-09-26

### Changed
- **License**: Changed from MIT to GNU Affero General Public License v3.0 (AGPL-3.0)
  - Ensures software remains free and open source
  - Prevents proprietary commercialization
  - Requires sharing modifications under same license

### Added
- **Help and Version Commands**: Added `--help` and `--version` command-line options with corresponding unit tests (`add help and version commands with corresponding tests`)

### Documentation
- **README**: Significantly expanded README with:
  - Project overview and features
  - Usage instructions and examples
  - Development guidelines
  - Installation instructions
  - Updated licensing information

### Tests
- Added unit tests for CardMeaning and get_tarot_meaning functions
- Added validation tests for draw_random_tarot_card output format (`add unit tests for CardMeaning and get_tarot_meaning functions, and validate draw_random_tarot_card output format`)

---

## [0.1.0] - Initial Release

### Added
- Basic tarot card reading functionality
- CLI interface for drawing random tarot cards
- Card meanings and interpretations
- Support for Major and Minor Arcana cards
- JSON-based card data (`cards.json`)
- README with project overview
- Help and version commands

### Development
- Added GitLab CI/CD pipeline configuration
  - Automated testing
  - Security scanning with cargo-audit
  - Release builds
  - Code coverage reporting

---

## Legend

- **Added**: New features
- **Changed**: Changes in existing functionality
- **Fixed**: Bug fixes
- **Refactored**: Code restructuring without functionality changes
- **Removed**: Removed features or code
- **Documentation**: Documentation updates
- **Tests**: Test additions or modifications
