diff --git a/.env.example b/.env.example index 54b1454..6637455 100644 --- a/.env.example +++ b/.env.example @@ -13,7 +13,7 @@ # HOST=0.0.0.0 # Uvicorn bind host (only when APP_MODE=web). # PORT=8080 # Uvicorn port. # WORKERS=1 # Uvicorn worker count. -APP_VERSION=v4.5.1 # Matches dockerhub compose. +APP_VERSION=v4.5.2 # Matches dockerhub compose. ############################ # Theming diff --git a/CHANGELOG.md b/CHANGELOG.md index 347c9b0..f1194e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,8 +8,11 @@ This format follows Keep a Changelog principles and aims for Semantic Versioning - Link PRs/issues inline when helpful, e.g., (#123) or [#123]. Reference-style links at the bottom are encouraged for readability. ## [Unreleased] +_No unreleased changes yet._ + +## [4.5.2] - 2026-04-01 ### Added -- **Hover-intent prefetch** (`WEB_PREFETCH=1`): Hovering over an "Open" button on the Finished Decks page now prefetches the deck view in the background after a 100 ms delay, eliminating the CSV-parse wait on click. On Chrome 108+, uses the Speculation Rules API for full prerender (`data-prerender-ok="1"`); falls back to `rel=prefetch` on other browsers. Feature-flagged and off by default; respects Data Saver / 2G connections and limits concurrent prefetches to 2. +- **Hover-intent prefetch** (`WEB_PREFETCH=1`): Hovering over an "Open" button on the Finished Decks page now prefetches the deck view in the background after a 100 ms delay, eliminating the CSV-parse wait on click. Falls back to `rel=prefetch` on all browsers (Speculation Rules API infrastructure included for future side-effect-free GET routes). Feature-flagged and off by default; respects Data Saver / 2G connections. ## [4.5.1] - 2026-04-01 ### Added diff --git a/RELEASE_NOTES_TEMPLATE.md b/RELEASE_NOTES_TEMPLATE.md index ad4576b..cb3b04a 100644 --- a/RELEASE_NOTES_TEMPLATE.md +++ b/RELEASE_NOTES_TEMPLATE.md @@ -1,6 +1,9 @@ # MTG Python Deckbuilder ## [Unreleased] -### Added -- **Hover-intent prefetch** (`WEB_PREFETCH=1`): Hovering over an "Open" button on the Finished Decks page now prefetches the deck view in the background after a 100 ms delay, eliminating the CSV-parse wait on click. On Chrome 108+, uses the Speculation Rules API for full prerender (`data-prerender-ok="1"`); falls back to `rel=prefetch` on other browsers. Feature-flagged and off by default; respects Data Saver / 2G connections and limits concurrent prefetches to 2. +_No unreleased changes yet._ + +## [4.5.2] - 2026-04-01 +### Added +- Hover-intent prefetch (`WEB_PREFETCH=1`): hovering the Open button on the Finished Decks page prefetches the deck view after 100 ms, making it load near-instantly. Off by default; Data Saver / slow connections are respected automatically. diff --git a/docker-compose.yml b/docker-compose.yml index 3fb6399..c9512cc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -144,7 +144,7 @@ services: # WEB_THEME_FILTER_PREWARM: "0" WEB_AUTO_ENFORCE: "0" # 1=auto-run compliance export after builds WEB_CUSTOM_EXPORT_BASE: "" # Optional: custom base dir for deck export artifacts - APP_VERSION: "v4.5.1" # Displayed version label (set per release/tag) + APP_VERSION: "v4.5.2" # Displayed version label (set per release/tag) # ------------------------------------------------------------------ # Misc / Land Selection (Step 7) Environment Tuning diff --git a/dockerhub-docker-compose.yml b/dockerhub-docker-compose.yml index b2c80b9..26c7d30 100644 --- a/dockerhub-docker-compose.yml +++ b/dockerhub-docker-compose.yml @@ -146,7 +146,7 @@ services: # WEB_THEME_FILTER_PREWARM: "0" WEB_AUTO_ENFORCE: "0" # 1=auto-run compliance export after builds WEB_CUSTOM_EXPORT_BASE: "" # Optional: custom base dir for deck export artifacts - APP_VERSION: "v4.5.1" # Displayed version label (set per release/tag) + APP_VERSION: "v4.5.2" # Displayed version label (set per release/tag) # ------------------------------------------------------------------ # Misc / Land Selection (Step 7) Environment Tuning diff --git a/docs/releases/v4.5.2.md b/docs/releases/v4.5.2.md new file mode 100644 index 0000000..0c6c355 --- /dev/null +++ b/docs/releases/v4.5.2.md @@ -0,0 +1,21 @@ +# MTG Python Deckbuilder v4.5.2 + +## Summary +Adds hover-intent prefetch for the Open Deck button on the Finished Decks page, reducing perceived load time when navigating into a deck view. + +## Added + +### Hover-intent prefetch (`WEB_PREFETCH=1`) +Hovering over an "Open" button on the Finished Decks page now prefetches the deck view in the background after a 100 ms delay. When you click, the page loads from the browser's prefetch cache rather than waiting on a network round-trip — making it feel near-instant. + +- Off by default; enable with `WEB_PREFETCH=1` +- Respects `Save-Data` header and slow (2G) connections — no prefetch on metered/slow connections +- Limits concurrent prefetches to 2 +- Speculation Rules API infrastructure included for future side-effect-free GET routes +- `Cache-Control: private, max-age=30` added to `/decks/view` when flag is enabled + +## Configuration + +| Variable | Default | Description | +|---|---|---| +| `WEB_PREFETCH` | `0` | Set to `1` to enable hover-intent prefetch on the Open Deck button | diff --git a/pyproject.toml b/pyproject.toml index 33f6d5f..2c73b99 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta" [project] name = "mtg-deckbuilder" -version = "4.5.1" +version = "4.5.2" description = "A command-line tool for building and analyzing Magic: The Gathering decks" readme = "README.md" license = {file = "LICENSE"}