chore: prepare release 4.4.2

This commit is contained in:
matt 2026-03-26 09:06:20 -07:00
parent e4acf22773
commit 6a76b6d45d
14 changed files with 284 additions and 6 deletions

View file

@ -13,7 +13,7 @@
# HOST=0.0.0.0 # Uvicorn bind host (only when APP_MODE=web). # HOST=0.0.0.0 # Uvicorn bind host (only when APP_MODE=web).
# PORT=8080 # Uvicorn port. # PORT=8080 # Uvicorn port.
# WORKERS=1 # Uvicorn worker count. # WORKERS=1 # Uvicorn worker count.
APP_VERSION=v4.3.2 # Matches dockerhub compose. APP_VERSION=v4.4.2 # Matches dockerhub compose.
############################ ############################
# Theming # Theming

View file

@ -0,0 +1,79 @@
name: Commander-Specific Theme Request
description: Request a new theme tied to a specific commander's abilities, or report an existing commander theme that is missing, misconfigured, or lacking synergy coverage.
title: "[Commander Theme] "
labels: ["commander-theme-request"]
body:
- type: markdown
attributes:
value: |
Thanks for helping improve commander coverage! Please fill out the fields below as completely as you can.
- type: input
id: commander-name
attributes:
label: Commander Name
description: Full card name of the commander.
placeholder: e.g., Atraxa, Praetors' Voice
validations:
required: true
- type: input
id: theme-name
attributes:
label: Theme Name
description: What is the commander-specific theme being requested?
placeholder: e.g., Atraxa Proliferate, Meren Reanimator
validations:
required: true
- type: checkboxes
id: request-type
attributes:
label: Request Type
options:
- label: New commander theme — this commander has no theme in the catalog for this strategy
- label: Existing theme fix — a theme exists but is missing key synergy cards or has incorrect data
- label: Theme description improvement — the description doesn't capture this commander's playstyle
- type: input
id: color-identity
attributes:
label: Commander Color Identity
description: What is the commander's color identity?
placeholder: e.g., WUBG
validations:
required: true
- type: textarea
id: description
attributes:
label: Theme Description
description: Describe how this theme works specifically with this commander. What does the deck try to do, and how does the commander enable or lead that strategy?
placeholder: This commander enables...
validations:
required: true
- type: textarea
id: synergy-cards
attributes:
label: Key Synergy Cards
description: List 310 cards that are particularly important for this commander's strategy and why they synergize.
placeholder: |
- Card Name — reason it synergizes with the commander
- Card Name — reason it synergizes with the commander
- Card Name — reason it synergizes with the commander
validations:
required: true
- type: input
id: related-themes
attributes:
label: Related Themes
description: Are there existing general themes this overlaps with?
placeholder: e.g., Graveyard Recursion, +1/+1 Counters
- type: textarea
id: notes
attributes:
label: Additional Notes
description: Anything helpful — EDHREC page link, ruling clarifications, partner/background interactions, etc.

View file

@ -0,0 +1,68 @@
name: General Theme Request
description: Request a new general theme, or report an existing theme that is missing cards, misconfigured, or poorly described.
title: "[Theme Request] "
labels: ["theme-request"]
body:
- type: markdown
attributes:
value: |
Thanks for helping improve the theme catalog! Please fill out the fields below as completely as you can.
- type: input
id: theme-name
attributes:
label: Theme Name
description: What is the name of the theme? (e.g., "Graveyard Recursion", "Artifact Synergy")
placeholder: e.g., Graveyard Recursion
validations:
required: true
- type: checkboxes
id: request-type
attributes:
label: Request Type
options:
- label: New theme — this theme doesn't exist in the catalog yet
- label: Existing theme fix — a theme exists but is missing cards or has incorrect data
- label: Theme description improvement — the description is generic or unhelpful
- type: textarea
id: description
attributes:
label: Theme Description
description: In your own words, describe what this theme is about. What does a deck built around it try to do?
placeholder: This theme focuses on...
validations:
required: true
- type: textarea
id: example-cards
attributes:
label: Example Cards
description: List 310 cards that clearly represent this theme and briefly note why each fits.
placeholder: |
- Card Name — reason it fits
- Card Name — reason it fits
- Card Name — reason it fits
validations:
required: true
- type: input
id: colors
attributes:
label: Colors
description: What color(s) is this theme primarily associated with? (W/U/B/R/G/Colorless — or "All")
placeholder: e.g., B, G or All
- type: input
id: related-themes
attributes:
label: Related Themes
description: Are there existing themes in the catalog this closely relates to or overlaps with?
placeholder: e.g., Token Generation, Aristocrats
- type: textarea
id: notes
attributes:
label: Additional Notes
description: Anything else we should know? Links to EDHREC, MTG Wiki, or other resources are welcome.

View file

@ -0,0 +1,76 @@
name: Feature Request
description: Request a new app feature, UI improvement, workflow enhancement, or any functionality not related to theme or commander data.
title: "[Feature Request] "
labels: ["feature-request"]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to suggest an improvement! Please fill out the fields below.
- type: input
id: title
attributes:
label: Feature Title
description: A short, clear title for the feature.
placeholder: e.g., Add export to Moxfield format
validations:
required: true
- type: textarea
id: problem
attributes:
label: Problem / Use Case
description: What problem does this solve? Describe the situation where you'd use this feature and what you currently have to do instead.
placeholder: When I try to..., I can't because...
validations:
required: true
- type: textarea
id: solution
attributes:
label: Proposed Solution
description: Describe the feature you'd like. How would it work? Where in the UI would it live?
placeholder: I'd like to see...
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: Alternatives Considered
description: Have you worked around this in another way? Are there existing features that partially address this?
- type: dropdown
id: priority
attributes:
label: Priority / Impact
options:
- Critical — blocks me from using the app
- High — significantly improves my workflow
- Medium — nice to have, would use often
- Low — minor convenience or polish
validations:
required: true
- type: checkboxes
id: area
attributes:
label: Affected Area
options:
- label: Deck Builder (build flow, steps, results)
- label: Theme Catalog / Theme Browser
- label: Commander Browser
- label: Random Build
- label: Owned Cards / Library
- label: Exports (CSV/TXT/JSON)
- label: Diagnostics / Logging
- label: Docker / Deployment
- label: CLI / Headless runner
- label: Other
- type: textarea
id: notes
attributes:
label: Additional Notes
description: Screenshots, mockups, links to similar features in other tools, or any other context that would help.

View file

@ -20,6 +20,12 @@ _No unreleased changes yet_
### Removed ### Removed
_No unreleased changes yet_ _No unreleased changes yet_
## [4.4.2] - 2026-03-26
### Added
- **Community links**: GitHub repo, issue tracker, feature request, and DockerHub links now appear in the site footer and on the home page.
- **Feature request templates**: Three GitHub issue templates added — General Theme Request, Commander-Specific Theme Request, and Other Feature Request — accessible directly from the Themes page, Commanders page, and home page respectively.
- **Theme & Commander feedback prompts**: A short prompt linking to the appropriate feature request template appears at the top of the Themes catalog and Commanders pages.
## [4.3.2] - 2026-03-25 ## [4.3.2] - 2026-03-25
### Added ### Added
- **Smart Land Bases checkbox**: The New Deck modal Preferences section now has a **Smart Land Bases** checkbox (checked by default) to enable or disable smart land analysis per-build, replacing the `ENABLE_SMART_LANDS` environment variable. - **Smart Land Bases checkbox**: The New Deck modal Preferences section now has a **Smart Land Bases** checkbox (checked by default) to enable or disable smart land analysis per-build, replacing the `ENABLE_SMART_LANDS` environment variable.

View file

@ -13,7 +13,12 @@ _No unreleased changes yet_
### Removed ### Removed
_No unreleased changes yet_ _No unreleased changes yet_
## [4.3.2] - 2026-03-25 ## [4.4.2] - 2026-03-26
### Added
- **Community links**: GitHub, issue tracker, feature request, and DockerHub links in the footer and home page.
- **Feature request templates**: GitHub issue templates for General Theme Requests, Commander-Specific Theme Requests, and Other Feature Requests.
- **Feedback prompts**: Inline prompts on the Themes and Commanders pages linking to the relevant request templates.
### Added ### Added
- **Smart Land Bases checkbox**: The New Deck modal now has a **Smart Land Bases** checkbox in the Preferences section (checked by default). Enables or disables smart land analysis per-build without needing environment variables. - **Smart Land Bases checkbox**: The New Deck modal now has a **Smart Land Bases** checkbox in the Preferences section (checked by default). Enables or disables smart land analysis per-build without needing environment variables.

View file

@ -119,6 +119,15 @@
<a href="https://scryfall.com" target="_blank" rel="noopener">Scryfall</a>. <a href="https://scryfall.com" target="_blank" rel="noopener">Scryfall</a>.
This website is not produced by, endorsed by, supported by, or affiliated with Scryfall or Wizards of the Coast. This website is not produced by, endorsed by, supported by, or affiliated with Scryfall or Wizards of the Coast.
{% set _pba = _price_cache_ts() %}{% if _pba %}<br><span class="muted" style="font-size:.8em;">Prices as of {{ _pba }} — for live pricing visit <a href="https://scryfall.com" target="_blank" rel="noopener">Scryfall</a>.</span>{% endif %} {% set _pba = _price_cache_ts() %}{% if _pba %}<br><span class="muted" style="font-size:.8em;">Prices as of {{ _pba }} — for live pricing visit <a href="https://scryfall.com" target="_blank" rel="noopener">Scryfall</a>.</span>{% endif %}
<br><span class="muted" style="font-size:.8em;">
<a href="https://github.com/mwisnowski/mtg_python_deckbuilder" target="_blank" rel="noopener">GitHub</a>
&middot;
<a href="https://github.com/mwisnowski/mtg_python_deckbuilder/issues" target="_blank" rel="noopener">Report an Issue</a>
&middot;
<a href="https://github.com/mwisnowski/mtg_python_deckbuilder/issues/new?template=other-feature-request-.md" target="_blank" rel="noopener">Request a Feature</a>
&middot;
<a href="https://hub.docker.com/repository/docker/mwisnowski/mtg-python-deckbuilder/general" target="_blank" rel="noopener">DockerHub</a>
</span>
</footer> </footer>
<!-- Card hover, theme badges, and DFC toggle styles moved to tailwind.css 2025-10-21 --> <!-- Card hover, theme badges, and DFC toggle styles moved to tailwind.css 2025-10-21 -->
<style> <style>

View file

@ -7,6 +7,9 @@
<h2>Commanders</h2> <h2>Commanders</h2>
<p class="muted">Browse the catalog and jump straight into a build with your chosen leader.</p> <p class="muted">Browse the catalog and jump straight into a build with your chosen leader.</p>
</header> </header>
<p style="font-size: .875rem;">
Know of commander-specific themes or synergies we're missing? <a href="https://github.com/mwisnowski/mtg_python_deckbuilder/issues/new?template=commander-specific-theme-request.md" target="_blank" rel="noopener" style="color: var(--accent); text-decoration: underline;">Submit a request here</a>.
</p>
<form <form
id="commander-filter-form" id="commander-filter-form"

View file

@ -3,7 +3,7 @@
{% block content %} {% block content %}
<section> <section>
<div class="actions-grid"> <div class="actions-grid" style="max-width: calc(4 * 220px + 3 * .75rem);">
{{ button('Build a Deck', variant='primary', href='/build', classes='action-button home-button') }} {{ button('Build a Deck', variant='primary', href='/build', classes='action-button home-button') }}
{{ button('Run a JSON Config', variant='secondary', href='/configs', classes='action-button home-button') }} {{ button('Run a JSON Config', variant='secondary', href='/configs', classes='action-button home-button') }}
{% if show_setup %}{{ button('Initial Setup', variant='secondary', href='/setup', classes='action-button home-button') }}{% endif %} {% if show_setup %}{{ button('Initial Setup', variant='secondary', href='/setup', classes='action-button home-button') }}{% endif %}
@ -19,6 +19,12 @@
<div id="themes-quick" style="margin-top:1rem; font-size:.85rem; color:var(--text-muted);"> <div id="themes-quick" style="margin-top:1rem; font-size:.85rem; color:var(--text-muted);">
<span id="themes-quick-status">Themes: …</span> <span id="themes-quick-status">Themes: …</span>
</div> </div>
<div class="actions-grid" style="max-width: calc(4 * 220px + 3 * .75rem); margin-top:2rem;">
{{ button('GitHub', variant='secondary', href='https://github.com/mwisnowski/mtg_python_deckbuilder', classes='action-button home-button', attrs='target="_blank" rel="noopener"') }}
{{ button('Report an Issue', variant='secondary', href='https://github.com/mwisnowski/mtg_python_deckbuilder/issues', classes='action-button home-button', attrs='target="_blank" rel="noopener"') }}
{{ button('Request a Feature', variant='secondary', href='https://github.com/mwisnowski/mtg_python_deckbuilder/issues/new?template=other-feature-request-.md', classes='action-button home-button', attrs='target="_blank" rel="noopener"') }}
{{ button('DockerHub', variant='secondary', href='https://hub.docker.com/repository/docker/mwisnowski/mtg-python-deckbuilder/general', classes='action-button home-button', attrs='target="_blank" rel="noopener"') }}
</div>
</section> </section>
<script> <script>
(function(){ (function(){

View file

@ -1,6 +1,9 @@
{% extends 'base.html' %} {% extends 'base.html' %}
{% block content %} {% block content %}
<h2>Theme Catalog (Simple)</h2> <h2>Theme Catalog (Simple)</h2>
<p style="margin-bottom: 1rem; font-size: .875rem;">
See a theme that's missing or might be set up wrong? <a href="https://github.com/mwisnowski/mtg_python_deckbuilder/issues/new?template=general-theme-request.md" target="_blank" rel="noopener" style="color: var(--accent); text-decoration: underline;">Submit a request here</a>.
</p>
<div id="theme-catalog-simple"> <div id="theme-catalog-simple">
<div class="flex gap-3 flex-wrap mb-3.5 items-end"> <div class="flex gap-3 flex-wrap mb-3.5 items-end">
<div class="flex-1 min-w-[220px] relative"> <div class="flex-1 min-w-[220px] relative">

View file

@ -142,7 +142,7 @@ services:
# WEB_THEME_FILTER_PREWARM: "0" # WEB_THEME_FILTER_PREWARM: "0"
WEB_AUTO_ENFORCE: "0" # 1=auto-run compliance export after builds WEB_AUTO_ENFORCE: "0" # 1=auto-run compliance export after builds
WEB_CUSTOM_EXPORT_BASE: "" # Optional: custom base dir for deck export artifacts WEB_CUSTOM_EXPORT_BASE: "" # Optional: custom base dir for deck export artifacts
APP_VERSION: "v4.3.2" # Displayed version label (set per release/tag) APP_VERSION: "v4.4.2" # Displayed version label (set per release/tag)
# ------------------------------------------------------------------ # ------------------------------------------------------------------
# Misc / Land Selection (Step 7) Environment Tuning # Misc / Land Selection (Step 7) Environment Tuning

View file

@ -144,7 +144,7 @@ services:
# WEB_THEME_FILTER_PREWARM: "0" # WEB_THEME_FILTER_PREWARM: "0"
WEB_AUTO_ENFORCE: "0" # 1=auto-run compliance export after builds WEB_AUTO_ENFORCE: "0" # 1=auto-run compliance export after builds
WEB_CUSTOM_EXPORT_BASE: "" # Optional: custom base dir for deck export artifacts WEB_CUSTOM_EXPORT_BASE: "" # Optional: custom base dir for deck export artifacts
APP_VERSION: "v4.3.2" # Displayed version label (set per release/tag) APP_VERSION: "v4.4.2" # Displayed version label (set per release/tag)
# ------------------------------------------------------------------ # ------------------------------------------------------------------
# Misc / Land Selection (Step 7) Environment Tuning # Misc / Land Selection (Step 7) Environment Tuning

23
docs/releases/v4.4.2.md Normal file
View file

@ -0,0 +1,23 @@
# MTG Python Deckbuilder v4.4.2
## Summary
Adds community links and GitHub feature request templates so users can easily report issues, request new themes, and suggest features directly from the app.
## Added
### Community links
GitHub repo, issue tracker, feature request, and DockerHub links now appear in the site footer and on the home page — visible from anywhere in the app without leaving the tab.
### GitHub issue templates
Three structured issue templates are available at `.github/ISSUE_TEMPLATE/`:
- **General Theme Request** — report a missing theme or a theme with incorrect/incomplete data.
- **Commander-Specific Theme Request** — request a new commander strategy theme or flag synergy gaps for a specific commander.
- **Other Feature Request** — suggest UI improvements, new workflow features, export formats, or anything else not theme/commander related.
Reference copies of each template are also saved in `logs/roadmaps/feature_requests/` for local reference.
### Feedback prompts
Short inline prompts with direct links to the relevant issue templates appear at the top of:
- **Themes** page — links to the General Theme Request template
- **Commanders** page — links to the Commander-Specific Theme Request template

View file

@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "mtg-deckbuilder" name = "mtg-deckbuilder"
version = "4.3.2" version = "4.4.2"
description = "A command-line tool for building and analyzing Magic: The Gathering decks" description = "A command-line tool for building and analyzing Magic: The Gathering decks"
readme = "README.md" readme = "README.md"
license = {file = "LICENSE"} license = {file = "LICENSE"}