mtg_python_deckbuilder/docs/releases/v2.4.1.md
matt 641b305955
Some checks failed
CI / build (push) Has been cancelled
chore: prepare release 2.4.1
2025-10-03 11:30:26 -07:00

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_catalog emits a normalized theme_catalog.csv with 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_mode with 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_metrics for diagnostics, and surfaces user theme weighting via structured user_theme_applied logs and the diagnostics dashboard panel.
    • Environment variables surfaced in compose, .env.example, and docs:
      • SHOW_COMMANDERS (default 1): show the Commanders browser tile.
      • RANDOM_REROLL_THROTTLE_MS (default 350): client guard to prevent rapid rerolls.
      • RANDOM_STRUCTURED_LOGS (default 0): emit structured JSON logs for random builds.
      • RANDOM_TELEMETRY (default 0): enable lightweight timing/attempt counters for diagnostics.
      • RATE_LIMIT_ENABLED (default 0), 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.

Changed

  • Run-config exports now surface userThemes and themeCatalogVersion metadata 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.json when theme_catalog.csv is absent, restoring resolution, removal, and build application for user-supplied themes across web and headless flows.