llm: search web UI #578

Closed
opened 2026-07-16 19:26:09 +00:00 by kert · 2 comments
Owner

Minimal search page at llm.fhirworx.io (dashboard-launcher style, no SPA framework).

Scope

  • search box + filters (docket/rule/year/tag), results with snippets, llm: tags, bib citations
  • served by the llm FastAPI service behind the existing oauth2-proxy

Acceptance

  • usable from the dashboard; headless-probe test on the compose net (healthy ≠ working frontend)

Spec: docs/superpowers/specs/2026-07-16-llm-module-design.md

Minimal search page at llm.fhirworx.io (dashboard-launcher style, no SPA framework). **Scope** - [ ] search box + filters (docket/rule/year/tag), results with snippets, llm: tags, bib citations - [ ] served by the llm FastAPI service behind the existing oauth2-proxy **Acceptance** - usable from the dashboard; headless-probe test on the compose net (healthy ≠ working frontend) Spec: [`docs/superpowers/specs/2026-07-16-llm-module-design.md`](https://git.fhirworx.io/homelab/stack/src/branch/main/docs/superpowers/specs/2026-07-16-llm-module-design.md)
kert added this to the P35: LLM Tagging — closed-vocab RAG tagging into bib/Zotero milestone 2026-07-16 19:26:09 +00:00
kert added the docsllm labels 2026-07-16 19:26:09 +00:00
Author
Owner

Status audit (2026-08-13, repo-verified): NOT DONE. No search web UI (chat UI shipped under #569/P34 serves /chat only).

**Status audit (2026-08-13, repo-verified):** NOT DONE. No search web UI (chat UI shipped under #569/P34 serves /chat only).
Author
Owner

Done in 2ba846b (merged b4a3a54), rolled to llm:b4a3a54 and live at https://llm.fhirworx.io/ui/search (behind the same oauth2-proxy as the chat; the chat header now links to Search and back). Framework-free single file like chat.html: query box; collection / kind / docket / year filters limited to the API's allowed values; results with kind badge, linked label, date, docket or comment id, title, snippet; a per-result 'similar' toggle that renders /similar/{item_key} in place; limit/offset pager; the search state lives in the query string so a search is shareable and reloadable. All API data goes into text nodes, no innerHTML, no external script/style URLs. Tag filter deliberately absent — llm: tags arrive with #575/#576 (an HTML comment marks the spot). Verified: TestClient tests (route, similar, pagination, error detail, no CDN, nav links); headless probe on the compose net: python dev/scripts/nb_fe_smoke.py --url http://llm:8000/ui/search --network gateway → no console/page errors. Known limit: /search's total is the page size, not a true total, so 'next' can land on one empty final page.

Done in 2ba846b (merged b4a3a54), rolled to llm:b4a3a54 and live at https://llm.fhirworx.io/ui/search (behind the same oauth2-proxy as the chat; the chat header now links to Search and back). Framework-free single file like chat.html: query box; collection / kind / docket / year filters limited to the API's allowed values; results with kind badge, linked label, date, docket or comment id, title, snippet; a per-result 'similar' toggle that renders /similar/{item_key} in place; limit/offset pager; the search state lives in the query string so a search is shareable and reloadable. All API data goes into text nodes, no innerHTML, no external script/style URLs. Tag filter deliberately absent — llm: tags arrive with #575/#576 (an HTML comment marks the spot). Verified: TestClient tests (route, similar, pagination, error detail, no CDN, nav links); headless probe on the compose net: python dev/scripts/nb_fe_smoke.py --url http://llm:8000/ui/search --network gateway → no console/page errors. Known limit: /search's total is the page size, not a true total, so 'next' can land on one empty final page.
kert closed this issue 2026-09-11 22:50:59 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: homelab/stack#578