From 14285ff3144e1b97b8a94372847f8deff038a83f Mon Sep 17 00:00:00 2001 From: John O'Keefe Date: Tue, 27 Oct 2026 19:04:59 -0400 Subject: [PATCH] fix(search): register the headerSearch Alpine component (dropdown regression) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The dropdown never opened on typing: the search-dropdown migration left ./search un-imported after dropping the initializeSearch call from header.ts, so the bundler tree-shook the module away and the x-data="headerSearch" scope never registered — every handler binding (input/focus/keys) silently died. This is a client-wiring defect that HTTP-level integration tests structurally cannot see; a Playwright e2e spec (e2e/search-scrubber.spec.ts) now drives the real bundle: sub-2-char input stays closed, 2+ chars opens the swapped templ dropdown. --- web/src/header.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/web/src/header.ts b/web/src/header.ts index c18d54b0..fa16e450 100644 --- a/web/src/header.ts +++ b/web/src/header.ts @@ -1,4 +1,9 @@ import { Alpine } from "./alpine"; +// Side-effect import: registers the headerSearch Alpine component that +// owns the header dropdown's client-local state (open/close/keyboard). +// Without it the bundler tree-shakes the module away and the search +// input silently stops opening the dropdown. +import "./search"; import { initializeTheme, changeTheme,