Skip to content

fix: hide hero during search, make header search work on every route (#615)#616

Merged
rdmueller merged 1 commit into
LLM-Coding:mainfrom
raifdmueller:fix/615-search-ux
Jun 12, 2026
Merged

fix: hide hero during search, make header search work on every route (#615)#616
rdmueller merged 1 commit into
LLM-Coding:mainfrom
raifdmueller:fix/615-search-ux

Conversation

@raifdmueller

@raifdmueller raifdmueller commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Summary

Implements the agreed UX direction from #615.

1. Search results were invisible (home)

An active search query now hides the hero section, so results appear directly under the header; clearing the query restores it. Toggled in applyCardFilters() — the single funnel both search inputs (desktop header + mobile) already flow through. The role filter alone deliberately leaves the hero in place.

2. Search was dead on non-home routes

Typing in the header search anywhere else now navigates to the home page and applies the query there — the home page acts as the search-results page. No polling needed: the header (and the typed text in it) survives the route switch because only #page-content is re-rendered; grid initialization picks the pending query up from the input.

3. "0/0 anchors" counter on doc pages

The router now announces resolved routes via a route:changed CustomEvent (kept free of UI knowledge); main.js hides the #anchor-count element on every route except home.

Verification

  • TDD: 4 new unit tests (hero hides on query / restores on clear / stays for role-only filter; router dispatches route:changed) — 115/115 pass
  • E2E: 3 new scenarios (hero hide/restore while typing; counter hidden on /about/; typing on /about/ lands on / with filtered grid and visible counter) — 38/38 pass locally
  • Playwright against the built preview: hero block → none → block on query/clear, 3 visible cards + counter "3" for "tdd"; static no-JS home unchanged (hero markup present via curl)
  • Lint + Prettier clean; app version 0.7.0 → 0.8.0

Closes #615

🤖 Generated with Claude Code

Summary by CodeRabbit

Release Notes

  • Neue Funktionen

    • Suche funktioniert nun von jeder Seite aus – Suchanfragen navigieren automatisch zur Startseite und filtern Ergebnisse dort
    • Hero-Bereich wird bei aktiver Suche ausgeblendet, um Suchergebnisse besser sichtbar zu machen
    • Anchor-Counter wird auf Seiten ohne Ergebnisse ausgeblendet
  • Tests

    • Tests für Such-UX-Verbesserungen und Router-Ereignisse hinzugefügt
  • Dokumentation

    • Changelog aktualisiert für Version 0.8.0

…LM-Coding#615)

Two search UX problems:

1. Typing on the home page filtered the grid, but the hero section
   pushed the results below the fold. An active search query now hides
   the hero (restored on clearing); the role filter alone deliberately
   leaves it in place. Toggled centrally in applyCardFilters(), the
   shared funnel of both search inputs.

2. The header search box was dead on every other route (nothing to
   filter, no results page) and the counter sat at a meaningless
   "0/0". Typing away from home now navigates to the home page, where
   grid initialization picks the query up from the header input (which
   survives the route switch because the header is not re-rendered).
   The router announces resolved routes via a route:changed
   CustomEvent; main.js uses it to hide the anchor counter outside the
   home route.

TDD: 4 new unit tests (hero hide/restore/role-only, route event) plus
3 new E2E scenarios — full suites green (115 unit, 38 E2E). Verified
in the built preview via Playwright: hero block->none->block on
query/clear with live counter, search from /about/ lands filtered on
home, counter hidden on doc routes, static no-JS home unchanged.

App version 0.7.0 -> 0.8.0.

Closes LLM-Coding#615

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Caution

Review failed

Pull request was closed or merged during review

Walkthrough

Die Pull Request implementiert eine Such-UX-Verbesserung (#615) mit drei Verhaltensänderungen: Der Hero-Bereich wird bei aktiver Suche ausgeblendet um Ergebnisse sichtbar zu halten; Header-Search navigiert zur Home-Route und wendet Query an, mit Persistierung des Suchbegriffs über den Seitenwechsel; der Anchor-Counter wird außerhalb der Home-Route verborgen statt statisch „0 / 0" anzuzeigen. Neue route:changed Event-Infrastruktur im Router ermöglicht diese Route-abhängigen UI-Anpassungen.

Changes

Search UX Feature mit Cross-Route-Navigation

Layer / File(s) Zusammenfassung
Route Change Event System
website/src/utils/router.js, website/src/utils/router.test.js
Neue announceRoute(path) Funktion sendet route:changed CustomEvent nach Route-Auflösung; wird nach Contract-Route-Handler, erfolgreichem Route-Handler und Fallback-Route aufgerufen; Router-Unit-Test validiert Event-Dispatch mit korrekter Route in detail.path.
Hero Element und Ausblendungslogik
website/src/components/main-content.js, website/src/components/card-grid.js, website/src/components/card-grid.test.js, website/tests/e2e/website.spec.js
#hero Element wird mit ID markiert in Hero-Section; applyCardFilters() blendet Hero aus wenn searchQuery nicht leer ist, stellt ihn wieder her wenn Query geleert wird; Unit-Tests validieren drei Szenarien (aktive Suche, geleerte Suche, nur Rollenfilter); E2E-Test prüft Hero-Ausblendung beim Durchsuchen.
Header Search Navigation und Grid Init
website/src/main.js, website/tests/e2e/website.spec.js
Header-Search prüft aktuelle Route; bei non-Home-Route navigiert zur Home und stoppt Handler; bei Home synchronisiert search-input Wert und wendet Filter an; Grid-Init übernimmt eventuell vorhandenes Query aus header-search-input beim Home-Erscheinen; E2E-Test prüft Navigation von About-Route mit gespeichertem Hero-Hidden-Zustand.
Anchor Counter Route-Sichtbarkeit
website/src/main.js
Event-Listener auf route:changed synchronisiert #anchor-count: nur auf / sichtbar, auf anderen Routen verborgen; wird beim Router-Init ausgeführt um Initialzustand zu setzen; APP_VERSION auf 0.8.0 angehoben.
Tests und Dokumentation
docs/changelog.adoc
Changelog dokumentiert drei Verhaltensänderungen: Hero-Ausblendung bei aktiver Suche, funktionsfähige Suche von jeder Route mit Navigation zur Home und Abfragepersistierung, Anchor-Counter-Ausblendung außerhalb Home-Route.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • LLM-Coding/Semantic-Anchors#549: Modifiziert applyCardFilters() in card-grid.js um Quick-Nav-Chip-Counts nach Filter-Sichtbarkeitswechsel zu synchronisieren, während diese PR Hero-Visibility bei Search steuert — beides Sichtbarkeitsupdates im gleichen Function.
  • LLM-Coding/Semantic-Anchors#462: Modifiziert Hero-Markup in main-content.js renderMain() — diese PR fügt id="hero" für Search-Targeting hinzu, während #462 Hero-Section-Layout und verwandte Strings/Links umgestaltet.
  • LLM-Coding/Semantic-Anchors#612: Modifiziert Router /contract/:id Handling; diese PR erweitert Routing um route:changed Event nach /contract/:id-Übergang, während #612 neue Contract-Route-Logik implementiert.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 20.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed Der PR-Titel fasst die Hauptänderungen präzise zusammen: Hero bei Suche verstecken und Header-Suche auf allen Routen funktionsfähig machen.
Linked Issues check ✅ Passed Alle Anforderungen aus Issue #615 sind implementiert: Hero-Sichtbarkeit bei aktiver Suche [#615], Header-Suche auf anderen Routen mit Navigation zur Home [#615], und Anchor-Counter verstecken außerhalb Home [#615].
Out of Scope Changes check ✅ Passed Alle Änderungen sind direkt auf die Anforderungen aus #615 ausgerichtet; die Versionserhöhung und Router-Events sind notwendige Stützänderungen für die Funktionalität.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@rdmueller rdmueller merged commit 1f04053 into LLM-Coding:main Jun 12, 2026
6 of 7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix: search results hidden behind hero; search is dead on non-home routes

2 participants