v0.2.1 — pre-public-announce review
[0.2.1] - 2026-04-17
Final pre-public-announce review pass. No user-visible behaviour changes;
every fix is either first-adopter ergonomics, supply-chain hardening, or
internal abstraction hygiene so a future contributor can't trip on the
same sharp edges the review found.
Fixed
athenaeum servepre-init hint — the "Runathenaeum init --path {args.path}" line printed the literal placeholder because the f-string prefix was missing; pre-init users saw{args.path}and lost trustVectorBackend.querynow logs a WARNING with the exception class name whenget_collectionfails, instead of swallowing silently — "vector returns nothing" was the top first-adopter confusion in the v0.2.0 reviewquery_topicsAPI failures now log at WARNING (was DEBUG) with the exception class name — silent fall-through to the regex extractor hid degraded proper-noun recall
Changed
- Release workflow hardened — all GitHub Actions pinned to full commit SHAs (supply-chain hardening against tag retag attacks); PEP 740 build-provenance attestations enabled
- Search backend unification — the in-memory keyword scorer is now a first-class
KeywordBackendinathenaeum.search, registered alongside FTS5 and vector via the sameSearchBackendProtocol;mcp_server.recall_searchdispatches all three backends through one code path athenaeum servecache sanity check — warns on startup when the configuredsearch_backendhas no index on disk (so recall doesn't silently return zero hits)EntityIndexnow exposes__iter__,__len__, anditems(); callers no longer reach into_by_namedirectly- Public API types tightened:
status()returns aStatusInfoTypedDict;parse_frontmatter/render_frontmatterusedict[str, object] - Dependency upper bounds added to
anthropic(<1.0),fastmcp(<3.0),chromadb(<2.0),pyyaml(<7) — surprise majors can't silently break a released wheel - Wheel build explicitly includes
src/athenaeum/py.typedandsrc/athenaeum/schema/**/*.md(was implicit via hatchling defaults) - README links to GitHub-hosted docs instead of relative paths so they render on PyPI
- Claude Code call-out added to the README tagline pointing to the transparent sidecar section
examples/claude-code/README.mdleads withclaude mcp addas the preferred MCP install recipe (matches canonical form)