diff --git a/.env.example b/.env.example index c8ad1a5..c07aabd 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=v2.7.0 # Matches dockerhub compose. +APP_VERSION=v2.7.1 # Matches dockerhub compose. ############################ # Theming diff --git a/CHANGELOG.md b/CHANGELOG.md index 50c779d..49ccc56 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,14 @@ _No unreleased changes yet._ ### Fixed _No unreleased fixes yet._ +## [2.7.1] - 2025-10-14 +### Summary +Quick Build UI refinements for improved desktop display. + +### Fixed +- Quick Build progress display now uses full desktop width instead of narrow mobile-like layout +- Quick Build completion screen properly transitions to full-width Step 5 layout matching manual build experience + ## [2.7.0] - 2025-10-14 ### Summary - Enhanced deck building workflow with improved stage ordering, granular skip controls, and one-click Quick Build automation. diff --git a/code/web/routes/build.py b/code/web/routes/build.py index a3fca96..9723ab6 100644 --- a/code/web/routes/build.py +++ b/code/web/routes/build.py @@ -3760,19 +3760,16 @@ def quick_build_progress(request: Request): logger.info(f"[Progress Poll] sid={sid}, progress={progress is not None}, running={progress.get('running') if progress else None}") if not progress or not progress.get("running"): - # Build complete - return Step 5 content + remove the polling div + # Build complete - return Step 5 content that replaces the entire wizard container res = sess.get("last_result") if res and res.get("done"): ctx = step5_ctx_from_result(request, sess, res) - # Render Step 5, then add script to remove polling div - step5_html = templates.get_template("build/_step5.html").render(ctx) - # Return Step 5 content + a script that removes the poller and replaces #wizard - final_html = f''' - {step5_html} -
- ''' - response = HTMLResponse(final_html) + # Return Step 5 which will replace the whole wizard div + response = templates.TemplateResponse("build/_step5.html", ctx) response.set_cookie("sid", sid, httponly=True, samesite="lax") + # Tell HTMX to target #wizard and swap outerHTML to replace the container + response.headers["HX-Retarget"] = "#wizard" + response.headers["HX-Reswap"] = "outerHTML" return response # Fallback if no result yet return HTMLResponse('Build complete. Please refresh.') diff --git a/code/web/templates/build/_quick_build_progress.html b/code/web/templates/build/_quick_build_progress.html index 415b2aa..9959d9e 100644 --- a/code/web/templates/build/_quick_build_progress.html +++ b/code/web/templates/build/_quick_build_progress.html @@ -1,6 +1,6 @@ {# Quick Build Progress Indicator - Current Stage + Completed List #} -Building your deck automatically without approval steps...
+Building your deck automatically without approval steps...
This may take 10-30 seconds depending on deck complexity...