3.2.0 (2026-09-21)
Bug Fixes
- embeddings: address PR review comments on spec/code inconsistencies (7beddd3)
- embeddings: match provider prefixes case-insensitively (ceb51ef)
- embeddings: recognize namespaced quantized models (fb43b8b), closes #484
- embeddings: resolve provider prefixes against a known provider list (232c81b)
- embeddings: restore the safe credential fallback (a5f0173)
- embeddings: withdraw the unimplemented sagemaker provider (d91d8a2)
- github: key auth error messages off the response status (46625cf)
- scraper: address review findings on outcome and persistence handling (69d8227), closes #490
- scraper: close data-loss paths found auditing merged work (8d38c66)
- scraper: define scrape progress counter semantics (eb7ee20), closes #490 #490
- scraper: detect misfiled script types and cache compiled patterns (42b4c6a), closes #490
- scraper: measure the main-region ratio on normalized text (81acf0a)
- scraper: name the content type when an unprocessable root fails (211934c)
- scraper: record a markdown variant under the page it represents (ce5220b)
- scraper: record the retrieval location of an empty page (b12625e)
- scraper: salvage markdown node by node when conversion fails (e07296c)
- scraper: scope html extraction to the declared main region (2426a04), closes #504
- scraper: stop indexing raw HTML when markdown conversion fails (a338dd0), closes #496
- scraper: stop lowercasing URLs, and specify normalization (98eee82)
- scraper: treat a plain-text markdown alternate as markdown again (0d8b2ba)
- search-eval: fail loudly on a dead Context7 library instead of scoring zero (7afc239)
- search-eval: stop the embedding model spec disabling the regression gate (75c21e1)
- splitter: drop heading anchor annotations from indexed text (4d8bd56)
- splitter: index real markdown frontmatter instead of "undefined" (cc275cb), closes #503
- splitter: only treat a YAML mapping as markdown frontmatter (dde63d1)
- store: address the second review round on page identity (dcb016a)
- store: apply the version label contract on read as well as write (c15279e)
- store: gate version coercion to partial-version shapes (ab939ab)
- store: handle compaction size races (ee0cd03)
- store: keep the location a page's content came from (7ac750f)
- store: keep version labels distinct when normalizing for matching (1b72fb0)
- store: reclaim sqlite space after documentation removal (044d881), closes #476
- store: reduce vacuum memory pressure (6eba99c)
- store: resolve competing page representations without losing content (efd8020)
- store: resolve partial semver versions like "1.20" in findBestVersion (928c424), closes #475 #475 #480
- test: derive the playwright test config from the real defaults (24d0151)
- test: make npm run test:live actually run the live suite (3b592ab)
Features
- scraper: harden fetch fallbacks and llms.txt parsing (77a5648), closes #488
- store: unify version label handling across write and read paths (abaf88e), closes #475 #480 #475 #480