v0.5.0 — Upstash Backend & Scroll-to-Text
What's New
Upstash Search Backend
The vector backend has been migrated from Jina + Turso to Upstash Search — a single managed service that handles both storage and retrieval. This removes the need to provision a separate Turso database and simplifies the infrastructure to one API key and one service.
Breaking change: existing indexes must be re-indexed. Update your config to use the Upstash provider and run `searchsocket index --force`.
Scroll-to-Text Navigation
Search result links now include everything needed for smooth in-page navigation:
- `_sskt` query param — the matched text target for SvelteKit client navigations
- `_ssk` query param — the section title for context
- `#:~:text=` fragment — native browser scroll-to-text for full page loads
Results scroll the user directly to the relevant passage rather than just the top of the page.
Cross-Node Text Matching
A TreeWalker-based text map concatenates all visible text nodes before matching, so search terms that span split DOM nodes (e.g. `Installation`) are found and highlighted correctly.
CSS Custom Highlight API
Highlighting now uses the CSS Custom Highlight API (`::highlight()` pseudo-element) where available — non-destructive, no DOM mutations. A DOM mutation fallback handles older browsers.
Two-Pass Regex Matching
Highlights are found using a two-pass strategy: a strict pass requires separators between tokens, and a lenient fallback allows zero-width separators for adjacent DOM nodes without whitespace.
Dual Page+Chunk Parallel Search
Vector search now runs in parallel at both page and chunk granularity, with score blending to combine the results. This improves relevance especially for queries that match well at one level but not the other.
Ranking Pipeline Improvements
New reranking, score-gap trimming, and title boost options give finer control over result ordering.
Changed
- Removed local markdown mirror feature
Fixed
- Respect Upstash 4096-char content limit per document during indexing
- Fixed pnpm version in CI prune workflow