mirror of
https://github.com/mwisnowski/mtg_python_deckbuilder.git
synced 2025-12-16 15:40:12 +01:00
3.1 KiB
3.1 KiB
MTG Python Deckbuilder v2.4.1
Summary
- Theme catalog groundwork for supplemental/custom themes now ships with a generator script and focused test coverage.
- Web builder gains an Additional Themes section with fuzzy suggestions and strict/permissive toggles for user-supplied tags.
- Compose manifests and docs include new environment toggles for random reroll throttling, telemetry/logging, homepage commander tile, and optional random rate limiting.
Added
- Script
python -m code.scripts.generate_theme_catalogemits a normalizedtheme_catalog.csvwith commander/card counts, deterministic ordering, and a reproducible version hash for supplemental theme inputs. - Unit tests cover catalog generation on fixture CSVs and verify normalization removes duplicate theme variants.
- Loader
load_theme_catalog()memoizes CSV parsing, validates required columns, and exposes typed entries plus version metadata for runtime integrations. - Unit tests exercise loader success, empty-file fallback, and malformed-column scenarios.
- Fuzzy theme matcher builds a trigram-backed index with Levenshtein + Sequence similarity scoring, threshold constants, and resolution utilities for supplemental theme inputs.
- Unit tests validate normalization, typo recovery, suggestion quality, and enforce a basic performance ceiling for 400+ theme catalogs.
- Headless configs accept
additional_themes+theme_match_modewith catalog-backed fuzzy resolution, strict/permissive enforcement, and persistence into exported run configs and diagnostics. - Added targeted tests for additional theme parsing, strict failure handling, and permissive warning coverage.
- Web New Deck modal renders an “Additional Themes” HTMX partial supporting add/remove, suggestion adoption, mode switching, limit enforcement, and accessible live messaging (gated by
ENABLE_CUSTOM_THEMES). - Supplemental theme telemetry now records commander/user/merged theme payloads, exposes
/status/theme_metricsfor diagnostics, and surfaces user theme weighting via structureduser_theme_appliedlogs and the diagnostics dashboard panel.- Environment variables surfaced in compose,
.env.example, and docs:SHOW_COMMANDERS(default1): show the Commanders browser tile.RANDOM_REROLL_THROTTLE_MS(default350): client guard to prevent rapid rerolls.RANDOM_STRUCTURED_LOGS(default0): emit structured JSON logs for random builds.RANDOM_TELEMETRY(default0): enable lightweight timing/attempt counters for diagnostics.RATE_LIMIT_ENABLED(default0),RATE_LIMIT_WINDOW_S(10),RATE_LIMIT_RANDOM(10),RATE_LIMIT_BUILD(10),RATE_LIMIT_SUGGEST(30): optional server-side rate limiting for random endpoints.
- Environment variables surfaced in compose,
Changed
- Run-config exports now surface
userThemesandthemeCatalogVersionmetadata while retaining legacy fields; headless imports accept both aliases without changing hash-equivalent payloads when no user themes are present.
Fixed
- Additional Themes now falls back to
theme_list.jsonwhentheme_catalog.csvis absent, restoring resolution, removal, and build application for user-supplied themes across web and headless flows.