Releases: alash3al/stash
Releases · alash3al/stash
Release list
v0.2.11
What's Changed
- docs: Ollama local-first setup + pipeline stage count alignment by @rudi193-cmd in #9
- fix(security): escape LIKE wildcards in namespace path resolution by @rudi193-cmd in #10
Full Changelog: v0.2.10...v0.2.11
v0.2.10
What's Changed
- docs: post-install guide + fix MCP copy buttons (#6) by @rudi193-cmd in #8
- fix: pattern stage silently drops all output due to && vs || in fallback logic by @ali-h-abbas in #7
- docs(brain): align Consolidate docstring with the 8-stage pipeline by @truffle-dev in #1
New Contributors
- @rudi193-cmd made their first contribution in #8
- @ali-h-abbas made their first contribution in #7
- @truffle-dev made their first contribution in #1
Full Changelog: v0.2.9...v0.2.10
v0.2.9: Consolidation Quality & MCP Setup Docs
What Changed
Consolidation Quality Fixes
- Removed ungrounded word validation — the old check rejected valid generalized facts. Generalization IS the point of consolidation; the system prompt already constrains the LLM, and downstream dedup/contradiction/decay catch real problems.
- Improved reasoner prompt — now instructs the LLM to preserve specifics (proper nouns, library names, version numbers, file paths, quantities) instead of producing vague summaries.
- Lowered dedup threshold from 0.95 → 0.85 — aligns with the similarity threshold used for clustering; the old 0.95 let near-identical facts through.
- Boosted confidence for structured facts — facts with entity+property+value fields get a 30% confidence boost since structured extraction requires more LLM precision.
Documentation
- Added MCP client setup section to README — SSE URL (
http://localhost:8080/sse) plus example configs for Cursor, Claude Desktop, OpenCode, and Windsurf.
Results
- Fact creation rate went from 1/24 to 5/5 in testing
- Zero grounding rejections on valid facts
- Specifics (numbers, names, thresholds) now preserved in fact content
- Structured facts at confidence 0.53 vs old 0.33
v0.2.8: Explicit MCP Context Namespaces
Summary
- Scopes MCP context tools to explicit namespaces instead of defaulting to
/. - Tunes MCP prompts so context is optional short-lived working focus, while recall remains the primary durable-memory lookup path.
- Updates runtime version metadata to 0.2.8.
Verification
- go test ./...
v0.2.7: Fact Synthesis & Proactive Memory Prompts
What's New
Prompt & Consolidation Fixes
- Reasoner: Changed → with strict anti-verbatim rules
- First-person stripping (// removal)
- Explicit bad/good JSON examples in prompt
- Grounding validation now rejects substring copies and >80% word overlap with any source episode
MCP Prompt Enhancements
- Server Description: Added Proactivity Clause + Tool Decision Tree for fast tool selection
- remember: Added Trash Filter — session narration, unverified hunches, temporary states, and generic platitudes are now explicitly discouraged. Added gate.
- consolidate: Clarified that and return EMPTY for unconsolidated namespaces — making clear why consolidation is non-optional.
- create_goal: Added Quality Gate — one-off tasks finishing in a single conversation should not become goals.
Version
MCP server version: →
v0.2.6: Full Consolidation Result in MCP Tool
Feature
Added
- Full consolidation result returned from the
consolidateMCP tool - Previously: only 4 fields (namespace, facts_created, relationships_found, patterns_found)
- Now: all 20 fields from ConsolidationResult
New Fields in Response
episodes_read- number of episodes processedfacts_deduplicated- duplicate facts skippedcausal_links_found- causal relationships extractedcontradictions_found/contradictions_auto_resolvedgoals_annotated/goals_suggested_completefailure_repeats_detected/failure_patterns_foundhypotheses_auto_confirmed/hypotheses_auto_rejected/hypotheses_updatedfacts_decayed/facts_expired- confidence decay statsllm_calls- number of LLM API calls madeduration- time taken (human-readable string)errors- list of any errors encountered
Why
Agents using the consolidate tool can now see the full picture of what happened, including errors and all processing stages.
v0.2.5: Bullet-Proof Consolidation Error Handling
Bug Fix
Fixed
- Consolidation now only advances checkpoints on success
- Episodes, facts, patterns with failed extraction are NOT lost
- If any error occurs during consolidation, the checkpoint is NOT advanced
- Failed clusters are automatically retried on the next consolidation run
- Commit: d4cf1e4
Technical Details
- Modified
consolidateEpisodesToFacts(): Only updateLastEpisodeIDif no errors - Modified
consolidateFactsToRelationships(): Only updateLastFactIDif no errors - Modified
consolidateToPatterns(): Added success flag to checkpoint update - Updated
updatePatternCheckpoint(): Only advanceLastPatternFactID/LastPatternRelIDon success
Why This Matters
Before: If consolidation hit an error during extraction, the checkpoint still advanced. Next run would skip the failed episodes forever.
After: Checkpoint only advances when consolidation fully succeeds. Failed episodes are retried. Deduplication prevents duplicate facts from already-succeeded clusters.
Result: Consolidation is now fully idempotent and safe from data loss. Episodes/facts/patterns can never be silently dropped.
v0.2.4: Idempotent Namespace Creation
Feature
Added
- Idempotent namespace creation: CreateNamespace now never fails on duplicate slugs
- If namespace exists: updates name/description and returns id
- If namespace new: creates it as normal
- Commit: b782dd7
Technical Details
- Added
ON CONFLICT (slug) DO UPDATEclause to namespace INSERT - Updates name and description if namespace already exists
- Also updates
updated_attimestamp on update - Consistent with parent namespace auto-creation behavior
Benefit
- Auto-initialization of /self and /self/* namespaces no longer fails on second run
- Makes the initialization process fully idempotent
- Enables safe re-runs of configuration/setup scripts
v0.2.3: Fix Database Type Conversion
Bug Fix
Fixed
- Database type conversion error: Fixed 'unable to encode int into text' error when storing vector dimension
- Settings table stores all values as TEXT columns
- Dimension values now properly converted to string before INSERT
- Dimension values properly parsed back from string when reading
- Commit: 4893334
Technical Details
- Added
strconvimport to internal/db/db.go - Use
fmt.Sprintf("%d", expectedDim)to convert int to string for storage - Use
strconv.Atoi(storedDimStr)to parse string back to int when validating
This patch ensures v0.2.2's dimension-based validation actually works in practice.
v0.2.2: Flexible Embedding Model Switching
Changes
Features
- Dimension-based validation: Change from model-specific validation to dimension-based validation
- Flexible embedding model switching: Users can now switch between different embedding models as long as they output the same dimension
- Example: Switch from
gemini-embedding-001totext-embedding-3-small(both 1536D) without losing data - Example: Switch from any 1536D model to any other 1536D model
- Example: Switch from
- Model metadata for audit: Embedding model name is still stored in settings for monitoring/audit purposes, but doesn't constrain storage
Technical Details
- Store
vector_dimensionin settings table (the actual storage constraint) - Store
embedding_modelseparately for audit purposes (flexibility constraint) - Dimension validation via
validateDimensionLock()function - Model metadata recording via
storeEmbeddingModelMetadata()function - Improved error message: explains that users can switch models with the same dimension
- Fully backward compatible: existing databases work seamlessly
Benefits
- No vendor lock-in to specific embedding model provider
- Easy optimization: switch models for better quality/cost without database recreation
- Future-proof: new embedding models can be adopted without data loss
- Dimension is the source of truth, not the model name