From 3dafba72cc013fdbebaa86ffeb00b362329051b7 Mon Sep 17 00:00:00 2001 From: Arthur Belleville Date: Fri, 15 May 2026 10:19:10 +0200 Subject: [PATCH] fix(04-WR-02): set HX-Retarget/HX-Reswap on 422 path in TaskCreateHandler Without these headers, HTMX used the form's own hx-target="#column-{status}" + hx-swap="beforeend", appending the error form into the task column and destroying all visible task cards. The error form now lands back in the add-task slot where it belongs. Co-Authored-By: Claude Sonnet 4.6 (1M context) --- backend/internal/web/handlers_tasks.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/backend/internal/web/handlers_tasks.go b/backend/internal/web/handlers_tasks.go index 8786bba..c4b1efd 100644 --- a/backend/internal/web/handlers_tasks.go +++ b/backend/internal/web/handlers_tasks.go @@ -147,6 +147,10 @@ func TaskCreateHandler(deps TasksDeps) http.HandlerFunc { if errs.Title != "" { w.Header().Set("Content-Type", "text/html; charset=utf-8") + if r.Header.Get("HX-Request") == "true" { + w.Header().Set("HX-Retarget", "#add-task-slot-"+statusStr) + w.Header().Set("HX-Reswap", "innerHTML") + } w.WriteHeader(http.StatusUnprocessableEntity) if r.Header.Get("HX-Request") == "true" { _ = templates.TaskCreateFormFragment(