Highlights
Three reported pain points are fixed in this release: slow startup on large session databases (#194), Markdown write caps blocking memory capture in policy-only mode (#218), and runaway .recovery-* snapshot accumulation (#214). On top of that, search ranking, review-model auth, and review resilience all get meaningful upgrades, with thanks to four external contributors.
Critical fixes
- Startup no longer blocks on huge session DBs (#220, fixes #194): the asynchronous
PRAGMA quick_check(measured ~2.5ms/MB, ~11s at 1.28GB) can now be skipped withquickCheckOnOpen: false. Operation-time corruption recovery stays enabled regardless, so safety is unchanged. - Policy-only writes bypass the Markdown character cap (#221, fixes #218): SQLite is the query authority in policy-only mode, so adds, replacements, and atomic mutation plans land in search even when they exceed the Markdown export limit. Legacy-inject mode keeps its caps, grace windows, auto-consolidation, and FIFO eviction.
- Rapid writes reuse one recovery snapshot (#222, fixes #214): successive overwrites within an hour publish atomically instead of banking a
.recovery-*sidecar per write (measured 17 snapshots for 10 churn writes, now 1). Slower writes still take a fresh snapshot, and crash-recovery guarantees are unchanged.
Search
- BM25 ranking for
memory_search(#118): results are relevance-ranked instead of recency-ordered, and the natural-language OR fallback is tightened to stopswallowing precise queries. - FTS5 query quality and session retention pruning (#184, @srcKod): better tokenization/matching for code-heavy memories, plus pruning of stale session-retention rows so the index stays lean.
target:"project"filter accepted inmemory_search(#213, @manooog): project-scoped memories are filterable instead of erroring.
Review pipeline resilience
- Header-only OAuth auth support (#191, @xz-dev): review completions work with providers that authenticate via headers alone.
- Session-scoped background cancellation (#192, @xz-dev): aborting one session no longer cancels another session's in-flight review.
llmFallbackModelschain for memory reviews (#215, @dominic-codespoti): when the primary review model fails, Pi walks a configured fallback chain instead of dropping the review.- Fallback-chain follow-ups (#219): a caller abort stops the chain immediately, and array-form
llmModelOverridetails merge into the fallback list instead of being overwritten.
Contributors
Thanks to @manooog, @xz-dev, @srcKod, and @dominic-codespoti for five of the ten PRs in this release.
Full diff: v0.9.7...v0.9.8