From 5119018feeaa22c47c0e91e15d3b9414dd6e0772 Mon Sep 17 00:00:00 2001 From: grm Date: Wed, 16 Sep 2026 00:20:06 +0300 Subject: Put the header search box in the menu row, and stop saying "Search" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The header search was a band of its own under the menu; now it floats at the right end of the menu row and only gets a thin bar when the header has no menu. The forms are a single input — Enter and the phone keyboard's search key submit a one-field form everywhere — with the placeholder as the label, side boxes start without a heading, and the results page shows a box only when no module does, so a page no longer reads "Search" a dozen times. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01Sd8UPWrvyYCLj97JexNw3A --- AGENTS.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'AGENTS.md') diff --git a/AGENTS.md b/AGENTS.md index 5e94b3d..3959498 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -295,9 +295,13 @@ internal/web/ server.go (host router, middleware, render helpers) and `blog/tag.html`); the two modules are `tags` (by use, `count`) and `tagcloud` (alphabetical, `cloudSizes` → `tc-1…tc-5`). - **Search** (`web/search.go`, `handleBlogSearch`, `GET /search?q=&p=`, - `blog/search.html`): the `search` module is a plain GET form (header bar or - side box, `searchform` in `layouts/blog.html`; the results page shows one - too). `searchPattern` turns the query into the regex both Postgres and Go + `blog/search.html`): the `search` module is a plain GET form of one input + (`searchform` in `layouts/blog.html`; Enter submits, the placeholder is the + label, so "Search" is not repeated all over the page). In the header it is + rendered inside the menu module's row, floated right (`Layout.HeaderMenu/ + HeaderSearch`), and gets its own thin bar only when the header has no menu; + in a column it is a box with an optional heading. The results page shows a + box of its own only when no module does (`Layout.HasSearch`). `searchPattern` turns the query into the regex both Postgres and Go run: words `regexp.QuoteMeta`'d and joined with `.*`, so the reader's words are literal, case does not matter (`~*` / `(?is)`) and spaces mean "anything in between", in order. `SearchPublishedPosts` matches it against -- cgit v1.2.3