diff --git a/.env.example b/.env.example index 639eb50..775a47f 100644 --- a/.env.example +++ b/.env.example @@ -13,7 +13,7 @@ # HOST=0.0.0.0 # Uvicorn bind host (only when APP_MODE=web). # PORT=8080 # Uvicorn port. # WORKERS=1 # Uvicorn worker count. -APP_VERSION=v2.9.1 # Matches dockerhub compose. +APP_VERSION=v3.0.0 # Matches dockerhub compose. ############################ # Theming diff --git a/CHANGELOG.md b/CHANGELOG.md index 268c25d..96f0713 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,9 @@ This format follows Keep a Changelog principles and aims for Semantic Versioning - Link PRs/issues inline when helpful, e.g., (#123) or [#123]. Reference-style links at the bottom are encouraged for readability. ## [Unreleased] +_No unreleased changes yet_ + +## [3.0.0] - 2025-10-19 ### Summary Major infrastructure upgrade to Parquet format with comprehensive performance improvements, simplified data management, and instant setup via GitHub downloads. diff --git a/docker-compose.yml b/docker-compose.yml index 768c2fd..37c2d2e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -123,7 +123,7 @@ services: # WEB_THEME_FILTER_PREWARM: "0" WEB_AUTO_ENFORCE: "0" # 1=auto-run compliance export after builds WEB_CUSTOM_EXPORT_BASE: "" # Optional: custom base dir for deck export artifacts - APP_VERSION: "2.9.1" # Displayed version label (set per release/tag) + APP_VERSION: "v3.0.0" # Displayed version label (set per release/tag) # ------------------------------------------------------------------ # Misc / Land Selection (Step 7) Environment Tuning diff --git a/dockerhub-docker-compose.yml b/dockerhub-docker-compose.yml index 10e2c77..7cb92dd 100644 --- a/dockerhub-docker-compose.yml +++ b/dockerhub-docker-compose.yml @@ -125,7 +125,7 @@ services: # WEB_THEME_FILTER_PREWARM: "0" WEB_AUTO_ENFORCE: "0" # 1=auto-run compliance export after builds WEB_CUSTOM_EXPORT_BASE: "" # Optional: custom base dir for deck export artifacts - APP_VERSION: "2.9.1" # Displayed version label (set per release/tag) + APP_VERSION: "v3.0.0" # Displayed version label (set per release/tag) # ------------------------------------------------------------------ # Misc / Land Selection (Step 7) Environment Tuning diff --git a/docs/releases/v3.0.0.md b/docs/releases/v3.0.0.md new file mode 100644 index 0000000..a796daf --- /dev/null +++ b/docs/releases/v3.0.0.md @@ -0,0 +1,65 @@ +# MTG Python Deckbuilder v3.0.0 + +**Release Date**: October 19, 2025 + +### Summary +Major infrastructure upgrade: migrated to Parquet data format with comprehensive performance improvements, combo tag support, simplified data management, and instant setup via GitHub downloads. + +### What's New +- **Instant Setup** - Download pre-tagged card database from GitHub instead of 15-20 minute initial build +- **Parquet Migration** - Unified `all_cards.parquet` replaces multiple CSV files for faster, more efficient card storage +- **Combo Tags** - 226 cards now tagged with combo-enabling abilities for better synergy detection +- **Parallel Tagging** - Optional 4.2x speedup for card tagging (22s → 5.2s) +- **Automatic Deduplication** - No more duplicate card printings cluttering your deck options +- **Built-in Commander Filtering** - Instant identification of 2,751 commanders and 31 backgrounds + +### Improvements +- **First-Run Experience** - Auto-downloads pre-tagged data on first run (seconds vs. 15-20 minutes) +- **Faster Startup** - Binary columnar format loads significantly faster than text parsing +- **Smaller File Sizes** - Single Parquet file is more compact than multiple CSVs +- **Better Data Quality** - Automatic validation, deduplication, and type checking +- **Cleaner Organization** - Single source of truth for all 29,857 cards +- **Web Performance** - Card browser, commander catalog, and owned cards all benefit from faster data access +- **Weekly Updates** - Pre-tagged data refreshed weekly via GitHub Actions + +### For Users +Everything works the same or better! Main visible differences: +- **First-time users**: Setup completes in seconds (auto-downloads pre-tagged data) +- Faster load times and data operations +- Better card recommendations with combo tag support +- More reliable data handling +- Web UI includes manual "Download from GitHub" button for instant refresh + +### Technical Details +- Data stored in `card_files/processed/all_cards.parquet` +- Boolean flags (`isCommander`, `isBackground`) replace separate CSV files +- CLI execution: `python -m code.main` +- Headless execution: `python -m code.headless_runner --config ` +- GitHub Actions and Docker builds updated for Parquet workflow + +### Breaking Changes +- **MAJOR**: CSV-based card data deprecated in favor of Parquet format +- Existing CSV workflows require migration to use processed Parquet files +- Module imports updated - use `python -m code.main` for CLI execution +- Some internal APIs changed to support unified data source + +### Migration Guide +For existing users: +1. Pull latest code: `git pull` +2. Delete old CSV files (optional): `rm csv_files/*.csv` +3. Let auto-download fetch pre-tagged data OR run manual setup +4. Existing decks and configs remain compatible + +For Docker users: +1. Pull new image: `docker pull mwisnowski/mtg-python-deckbuilder:v3.0.0` +2. Use updated docker-compose files (included) +3. Volume mounts work the same + +### Full Changelog +See [CHANGELOG.md](../../CHANGELOG.md#300---2025-10-19) for complete details. + +### Known Issues +- None at release time + +### Acknowledgments +This release represents a significant architectural improvement to support better performance and maintainability going forward. Thank you to all contributors and users who provided feedback! diff --git a/pyproject.toml b/pyproject.toml index a02f71b..a8c65ac 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta" [project] name = "mtg-deckbuilder" -version = "2.9.1" +version = "3.0.0" description = "A command-line tool for building and analyzing Magic: The Gathering decks" readme = "README.md" license = {file = "LICENSE"}