couto/xkcd-search
refactor: optimize ingest upserts, modularize tests, and add CI workflow
refactor: simplify codebase, split MCP server, drop xkcd.com ingestion
feat(evals): add configurable conftest, NDCG@5 metrics, and hardened realistic dataset
refactor: simplify sampler to read directly from LanceDB
refactor: simplify evals with vanilla pytest, drop deepeval bloat, and add realistic search queries
feat: add deepeval retrieval evaluation suite and explainxkcd sampler
refactor: streamline codebase, prune unneeded tests and docs, polish SKILL and README per guidelines
fix: use explicit is not None check for table initialization
refactor: simplify src modules, remove server.py indirection, test public interfaces only
feat: modernize xkcd search with LanceDB, FastMCP native routes, and Hugging Face stack
fix: center comic images in search results
feat: run report-only eval step in nightly index workflow
feat: commit eval set of 40 query-to-comic pairs
feat: simplify search UI to clickable comic images
fix: stop 403-rate-limit boot crashes from the GitHub API
feat: add top-K input and rename app title to 'xkcd search'
feat: add evals CLI for hit@k and MRR retrieval metrics
fix: keep search button next to query box above results
feat: compose search app and MCP endpoint behind build_app()
feat: add search app surface with ComicCard and a Gradio UI
feat: add initial documentation for xkcd search language and concept
Add documentation for agent skills and issue tracking
Change to OpenCode
fix: move tenacity to main dependencies in pyproject.toml
ci: add OpenCode GitHub agent workflow (#4)
ci: add OpenCode GitHub agent workflow
Add CODEOWNERS file
Simplify retry decorator and add builder dependency group
Add retry logic for explainxkcd 503 errors (#2)
simplify: use FastMCP custom_route for landing page
fix: use Starlette directly to avoid FastAPI trailing slash redirect
feat: add browser landing page for MCP endpoint
docs: update README to reflect HF Spaces restart API instead of empty commit
docs: add sync comments for EMBED_MODEL across builder, Dockerfile, workflow
refactor: simplify codebase
fix: lint issues and make tests compatible with deployed index
fix: use --no-project flag for model download step before src copy
fix: restore fetch-depth=0 for full clone required by HF push
fix: add module docstring to __init__.py for uv_build compatibility
refactor: simplify cleanup from /simplify review
ci: replace FastMCP redeploy with HF Spaces restart + sync workflow
fix(docker): copy LICENSE so uv_build can package the project
migrate to Hugging Face Spaces; consolidate builder module
test: add remote smoke-test script for deployed MCP endpoint
fix(server): don't let transient refresh errors kill the poll thread
refactor: avoid duplicate int() cast in get_comic
refactor: drop unused upload_release; workflow uses gh CLI directly
test: add vcr cassettes for get_comic tool tests
docs: document get_comic tool and hosting migration path
feat: add get_comic tool for direct lookups by number
