add shareable search results via query parameters
implements GET /api/search endpoint alongside existing POST endpoint,
enabling users to share search results via URL.
backend changes:
- refactor search logic into shared perform_search function
- add search_get handler for GET /api/search?query=...&top_k=...
- implement HTTP caching with ETag and Cache-Control headers
- ETag based on query hash enables 304 Not Modified responses
- 5-minute cache TTL balances freshness vs performance
frontend changes:
- update URL params when search is submitted (?q=...&top_k=...)
- auto-execute search on page load if URL contains query params
- support browser back/forward navigation with popstate
- migrate from POST to GET for all searches
caching strategy:
- browser caches results for 5 minutes using Cache-Control
- ETag validation prevents redundant data transfer
- results may be stale if new bufos ingested, but TTL is short
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>