diff --git a/tests/test_templates.py b/tests/test_templates.py
index 56c7e8d..8c33fb3 100644
--- a/tests/test_templates.py
+++ b/tests/test_templates.py
@@ -10,3 +10,10 @@ def test_templates_do_not_slice_filter_results_inline():
offenders.append(str(template))
assert offenders == []
+
+
+def test_search_template_does_not_require_browser_api_client():
+ content = Path("webui/app/templates/search.html").read_text()
+
+ assert "window.docsApiClient" not in content
+ assert "{% for result in results %}" in content
diff --git a/webui/app/main.py b/webui/app/main.py
index 969202b..e7e95a5 100644
--- a/webui/app/main.py
+++ b/webui/app/main.py
@@ -246,22 +246,26 @@ async def upload_file(
@app.get("/search")
async def search_form(request: Request):
- return templates.TemplateResponse("search.html", {"request": request, "query": "", "results": []})
+ return templates.TemplateResponse(
+ "search.html",
+ {"request": request, "query": "", "results": [], "limit": 10, "error": None},
+ )
@app.get("/search/results")
async def search_results(request: Request, q: str = "", limit: int = 10):
client = get_client()
results = []
+ error = None
if q:
try:
data = await client.post("/search", json={"query": q, "library_id": None, "limit": limit})
results = data.get("results", [])
- except Exception:
- results = []
+ except Exception as exc:
+ error = str(exc)
return templates.TemplateResponse(
"search.html",
- {"request": request, "query": q, "results": results, "limit": limit},
+ {"request": request, "query": q, "results": results, "limit": limit, "error": error},
)
diff --git a/webui/app/templates/search.html b/webui/app/templates/search.html
index dc57230..5a99229 100644
--- a/webui/app/templates/search.html
+++ b/webui/app/templates/search.html
@@ -11,61 +11,34 @@
-
-
-{% if results %}
+{% if error %}
+Error loading results: {{ error }}
+{% elif query and not results %}
+No results found.
+{% elif results %}
{{ results|length }} results found
+
+ {% for result in results %}
+
+ {{ result.title or result.path or result.library_id or 'Document result' }}
+ {{ (result.content or '')[:500] }}{% if (result.content or '')|length > 500 %}...{% endif %}
+
+ Library: {{ result.library_id or 'unknown' }}
+ {% if result.score is defined %} | Score: {{ '%.3f'|format(result.score) }}{% endif %}
+
+ {% if result.library_id %}
+ View library documents
+ {% endif %}
+
+ {% endfor %}
+
{% endif %}
-
-
-{% endblock %}
\ No newline at end of file
+{% endblock %}