diff --git a/CHANGELOG.md b/CHANGELOG.md
index e3d01df..947f7c2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
# Changelog
+## 0.40.4 - 2026-05-25
+
+- Widened the watchlist auto-download modal layout so `Name source` and `Name` each fill half of the dialog row instead of staying in narrow grid cells.
+
## 0.40.3 - 2026-05-25
- Passed the Search page `Season` value into new watchlist entries so the initial auto-download series setting matches what was chosen before tracking the show.
diff --git a/README.md b/README.md
index e23520a..3bfc12d 100644
--- a/README.md
+++ b/README.md
@@ -225,6 +225,7 @@ Main behavior:
8. Pagination shows 30 cards per page.
9. `Alternative titles` opens a centered overlay with English alternate titles from AniDB when the watchlist refresh can match the show to an AniDB entry.
10. `Auto-download` opens a centered overlay with per-series settings for language, quality, series number, and the sanitized library name used for automatically queued episodes.
+Auto-download layout note: `Name source` and `Name` share a wider half-and-half row inside the modal for easier editing.
11. Adding a show from Search reuses the current `Season` field as the initial auto-download series value for that new watchlist entry.
Status behavior:
diff --git a/VERSION b/VERSION
index e373c4a..f57373a 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.40.3
+0.40.4
diff --git a/app_support.py b/app_support.py
index 2b6c1db..30f5c10 100644
--- a/app_support.py
+++ b/app_support.py
@@ -19,7 +19,7 @@ from uuid import uuid4
PROJECT_ROOT = Path(__file__).resolve().parent
ANI_CLI = os.environ.get("ANI_CLI_BIN") or shutil.which("ani-cli") or "ani-cli"
APP_NAME = "ani-cli-web"
-VERSION = "0.40.3"
+VERSION = "0.40.4"
ALLANIME_BASE = "allanime.day"
ALLANIME_API = f"https://api.{ALLANIME_BASE}"
ALLANIME_REFERER = "https://allmanga.to"
diff --git a/test_app.py b/test_app.py
index c95afb3..57d4137 100644
--- a/test_app.py
+++ b/test_app.py
@@ -2006,6 +2006,8 @@ class TemplateHelperTests(unittest.TestCase):
self.assertIn("Save auto-download", APP.WATCHLIST_HTML)
self.assertIn("Manual add does not trigger it", APP.WATCHLIST_HTML)
self.assertIn("Name source", APP.WATCHLIST_HTML)
+ self.assertIn('class="wide-half">Name source', APP.WATCHLIST_HTML)
+ self.assertIn('class="wide-half">Name', APP.WATCHLIST_HTML)
self.assertIn("Custom", APP.WATCHLIST_HTML)
self.assertIn("Series", APP.WATCHLIST_HTML)
diff --git a/watchlist_page.py b/watchlist_page.py
index bb3ed0c..71bd7b8 100644
--- a/watchlist_page.py
+++ b/watchlist_page.py
@@ -603,9 +603,15 @@ WATCHLIST_HTML = r"""
}
.auto-download-grid {
display: grid;
- grid-template-columns: repeat(3, minmax(0, 1fr));
+ grid-template-columns: repeat(6, minmax(0, 1fr));
gap: 8px;
}
+ .auto-download-grid label {
+ grid-column: span 2;
+ }
+ .auto-download-grid .wide-half {
+ grid-column: span 3;
+ }
.auto-download-modal label {
font-size: 10px;
}
@@ -685,6 +691,8 @@ WATCHLIST_HTML = r"""
@media (max-width: 560px) {
.watchlist-grid { grid-template-columns: 1fr; }
.auto-download-grid { grid-template-columns: 1fr; }
+ .auto-download-grid label,
+ .auto-download-grid .wide-half { grid-column: span 1; }
}
@@ -816,10 +824,10 @@ WATCHLIST_HTML = r"""
-