What changed:
Replaced the cache/search/scoring flow with a simpler weighted search.
Search cache now stores only plain page fields: title, description, raw
content, tags, category.
Removed the persisted normalized search payloads and legacy helper
paths.
Search renders through normal listing templates for theme compatibility.
Added fail-open behavior: unexpected search errors log and return no
results instead of blanking the page.
Kept excerpts and highlighting, but made them plain-text based and
safer.
The important change: search still intercepts the route early, but
before themes render it now feeds results through the normal
home/listing state. That avoids themes going blank when they do not know
how to render a custom search state.
I also made search safer:
Indexes raw page text instead of fully rendered content.
Uses raw content for excerpts.
Guards the search call so exceptions do not white-screen the page.
Updated Dark Neon so it still detects search pages correctly after this
compatibility change.
What changed:
Removed the enlarged nested search cache fields I had added, which could
push larger sites into memory/time failures.
Added a self-heal so existing oversized search caches regenerate into
the smaller format.
Stopped fuzzy matching against full body content; it now only fuzzes
title/tags/category/description.
Hardened search-term splitting and malformed input handling.