commits
- replace env_logger with logfire for structured observability
- add opentelemetry middleware for automatic http request tracing
- instrument search operations with custom spans:
- embedding generation
- vector search
- bm25 search
- reciprocal rank fusion
- remove unused upsert method and struct from turbopuffer client
(ingestion script calls api directly, not used by main application)
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- add width: 100%, min-width: 0, flex-shrink: 0 to prevent button overflow
- replace min-max normalization with absolute RRF score scaling
- scale by 25x so good matches approach 1.0, poor matches stay low
- this respects actual match quality instead of forcing top result to 95%
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- add bufo favicon
- link to bufo.zone and turbopuffer hybrid search docs
- link to source code on tangled.sh
- mobile-first responsive layout (single column on mobile)
- larger images on mobile for better visibility
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 10 requests per minute per IP (burst of 10)
- returns 429 Too Many Requests after limit exceeded
- protects voyage API costs from query spam
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- multimodal image embeddings via voyage-multimodal-3
- hybrid search combining vector (ANN) + text (BM25) with RRF
- normalized similarity scores (0-95%) for intuitive UI display
- ingestion pipeline for bufo.zone images
- clean web interface with image grid and relevance scores
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- replace env_logger with logfire for structured observability
- add opentelemetry middleware for automatic http request tracing
- instrument search operations with custom spans:
- embedding generation
- vector search
- bm25 search
- reciprocal rank fusion
- remove unused upsert method and struct from turbopuffer client
(ingestion script calls api directly, not used by main application)
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- add width: 100%, min-width: 0, flex-shrink: 0 to prevent button overflow
- replace min-max normalization with absolute RRF score scaling
- scale by 25x so good matches approach 1.0, poor matches stay low
- this respects actual match quality instead of forcing top result to 95%
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- add bufo favicon
- link to bufo.zone and turbopuffer hybrid search docs
- link to source code on tangled.sh
- mobile-first responsive layout (single column on mobile)
- larger images on mobile for better visibility
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- multimodal image embeddings via voyage-multimodal-3
- hybrid search combining vector (ANN) + text (BM25) with RRF
- normalized similarity scores (0-95%) for intuitive UI display
- ingestion pipeline for bufo.zone images
- clean web interface with image grid and relevance scores
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>