Web: mobile UI polish; Multi-Copy opt-in + tag filter; banner subtitle inline; New Deck modal refinements; version bump to 2.2.4; update release notes template

This commit is contained in:
matt 2025-09-02 16:03:12 -07:00
parent ef858e6d6a
commit 0033f07783
14 changed files with 408 additions and 60 deletions

View file

@ -1,40 +1,31 @@
# MTG Python Deckbuilder ${VERSION}
## Highlights
- Combos & Synergies: detect curated two-card combos and synergies, surface them in a unified chip-style panel on Step 5 and Finished Decks, and preview both cards on hover.
- Auto-Complete Combos: optional mode that adds missing partners up to a target before theme fill/monolithic spells so added pairs persist.
- Mobile UI polish: collapsible left sidebar with persisted state, sticky controls that respect the header, and banner subtitle that stays inline when the menu is collapsed.
- Multi-Copy is now opt-in from the New Deck modal, and suggestions are filtered to match selected themes (e.g., Rabbit Kindred → Hare Apparent).
- New Deck modal improvements: integrated commander preview, theme selection, and optional Multi-Copy in one flow.
## Whats new
- Detection: exact two-card combos and curated synergies with list version badges (combos.json/synergies.json).
- UI polish:
- Chip-style rows with compact badges (cheap/early, setup) in both the end-of-build panel and finished deck summary.
- Dual-card hover: moving your mouse over a combo row previews both cards side-by-side; hovering a single name shows that card alone.
- Ordering: when enabled, Auto-Complete Combos runs earlier (before theme fill and monolithic spells) to retain partners.
- Enforcement:
- Color identity respected via the filtered pool; off-color or unavailable partners are skipped gracefully.
- Honors Locks, Owned-only, and Replace toggles.
- Persistence & Headless parity:
- Interactive runs export these JSON fields and Web headless runs accept them:
- prefer_combos (bool)
- combo_target_count (int)
- combo_balance ("early" | "late" | "mix")
## JSON (Web Configs) — example
```json
{
"prefer_combos": true,
"combo_target_count": 3,
"combo_balance": "mix"
}
```
- Mobile & layout
- Sidebar toggle button (persisted in localStorage), smooth hide/show.
- Sticky build controls offset via CSS variables to avoid overlap in emulators and mobile.
- Banner subtitle stays within the header and remains inline with the title when the sidebar is collapsed.
- Multi-Copy
- Moved to Commander selection now instead of happening during building.
- Opt-in checkbox in the New Deck modal; disabled by default.
- Suggestions only appear when at least one theme is selected and are limited to archetypes whose matched tags intersect the themes.
- Multi-Copy runs first when selected, with an applied marker to avoid redundant rebuilds.
- New Deck & Setup
- Setup/Refresh prompt modal if the environment is missing or stale, with a clear path to run/refresh setup before building.
- Centralized staged context creation and error/render helpers for a more robust Step 5 flow.
## Notes
- Curated list versions are displayed in the UI for transparency.
- Existing completed pairs are counted toward the target; only missing partners are added.
- No changes to CLI inputs for this feature in this release.
- Headless: `tag_mode` supported from JSON/env and exported in interactive run-config JSON.
- Logic for removal tagging causing self-targetting cards (e.g. Conjurer's Closet) to be tagged as removal (2.2.3)
- Multi-Copy selection is part of the interactive New Deck modal (not a JSON field); it remains off unless explicitly enabled.
- Setup helpers: `is_setup_ready()` and `is_setup_stale()` inform the modal prompt and can be tuned with `WEB_AUTO_SETUP` and `WEB_AUTO_REFRESH_DAYS`.
- Headless parity: `tag_mode` (AND/OR) remains supported in JSON/env and exported in interactive run-config JSON.
## Fixes
- Fixed an issue with the Docker Hub image not having the config files for combos/synergies/default deck json example
- Bug causing basic lands to no longer be added due to combined dataframe not including basics (2.2.3)
- Continue responsiveness and click reliability on mobile/emulators; sticky overlap eliminated.
- Multi-Copy application preserved across New Deck submit; duplicate re-application avoided with an applied marker.
- Banner subtitle alignment fixed in collapsed-menu mode (no overhang, no line-wrap into a new row).
- Docker: normalized line endings for entrypoint to avoid Windows checkout issues.