github mnemosyne-oss/mnemosyne v0.7.0

3 hours ago

What's Changed

  • docs: surface sponsors near the top of the README, fix the blog scaffold by @AxDSan in #590
  • docs(readme): give the sponsor block real presence by @AxDSan in #591
  • governance: add CODEOWNERS and MAINTAINERS.md by @AxDSan in #597
  • docs(hermes): clarify Docker multi-profile wrappers by @dplush in #609
  • fix(hermes): preserve wrapper installs safely by @dplush in #610
  • fix(model-refresh): degrade malformed confidence instead of raising or outranking by @Milgauss in #574
  • fix: widen sqlite-vec candidates before working-memory filters by @pvspencer22 in #608
  • Fix malformed tables by @SaSteMi in #569
  • fix(benchmarks): carry the #544 version regex fix to the benchmark copy by @fesalfayed in #596
  • docs(persona): clarify tier ordering and retention semantics by @Milgauss in #612
  • feat(diagnostics): report resolved embedding dimension in doctor by @paoloantinori in #567
  • fix(hermes): report memory_not_found when invalidate matches no row by @Sanjays2402 in #542
  • fix: code audit F-rule cleanup (10 files, 73 lines) by @ether-btc in #483
  • fix: add register() bridge so Hermes memory provider discovery finds MnemosyneMemoryProvider by @oscarello in #565
  • ci: widen Ruff baseline to F/RUF022, scoped to PR changed-files by @ether-btc in #568
  • fix(hermes): align packaged manifest version by @dplush in #588
  • fix: honor dry run for file imports by @dplush in #540
  • fix(config): resolve recall weights at runtime by @dplush in #572
  • fix(config): resolve degrade batch at runtime by @dplush in #626
  • fix(persona): retain small sections under token cap by @dplush in #627
  • docs: complete unreleased release notes by @dplush in #628
  • fix(beam): fail loudly on incomplete vector rebuilds by @dplush in #603
  • docs: add changelog entry for #603 by @dplush in #629
  • fix(hermes): reject mismatched wrapper Python runtimes by @dplush in #630
  • docs(hermes): explain wrapper Python compatibility by @dplush in #632
  • docs(recall): clarify runtime weight precedence by @dplush in #633
  • docs(cli): explain rebuild repair exit codes by @dplush in #634
  • docs(hermes): explain direct import dry run by @dplush in #636
  • test(beam): cover successful vector reindex mapping by @dplush in #637
  • fix(beam): invalidate persisted cache after remember by @dplush in #566
  • feat(cli): report core and Hermes versions by @dplush in #643
  • fix(hygiene): unwrap audit envelope before cleaning candidates by @Awshesh12 in #619
  • test(hermes): cover invalidate audit metadata by @dplush in #638
  • fix(embeddings): fail loud on unknown embedding model by @paoloantinori in #521
  • feat(recall): add MNEMOSYNE_LEXICAL_GATE_MIN knob to override the lexical admission gate by @hofstatter in #639
  • docs(configuration): document the lexical recall gate + measured recall-flag data by @kenichi-shibata in #622
  • chore(hermes): prepare 0.6.0 standalone release by @dplush in #667
  • fix: record recall diagnostics on the polyphonic recall path by @cgray2222 in #668
  • fix(mcp): report failed invalidations accurately by @dplush in #675
  • test(mcp): cover hygiene cleanup with legacy importance by @dplush in #673
  • fix: recognize bge-m3 embedding alias by @dplush in #674
  • fix: validate invalidation replacements by @dplush in #678
  • fix: replace bare except with logger.warning in legacy provider register() by @ether-btc in #650
  • fix(hermes-provider): advertise shared_* tools in plugin.yaml manifest by @ether-btc in #648
  • fix(hermes): follow wrapper-script exec target when locating Hermes Python by @Awshesh12 in #620
  • fix: harden Hermes automatic prefetch relevance by @pvspencer22 in #616
  • test(repair): avoid brittle process fd count assertion by @mikemikimike in #614
  • fix(hermes): rebind memory on session switch by @mikemikimike in #604
  • fix(beam): invalidate cache after forgetting memory by @dplush in #593
  • fix(hermes): support root-only plugin installs by @topbronson in #592
  • feat(llm): add MiniMax provider preset (regional endpoints + model config) by @octo-patch in #575
  • Update feature comparisons in README.md by @gustavami in #534
  • test(mcp): cover SSE messages mount lifecycle by @aaka3207 in #652
  • fix(cli): normalize MSYS backup destinations by @dplush in #683
  • docs: document Hermes integration test setup by @dplush in #684
  • fix(hermes): validate the discovered interpreter and honor --python (follow-up to #620) by @tonythomson in #623
  • docs: add embedding model reindex runbook by @dplush in #698
  • fix(beam): preserve degradation savepoint during vec refresh by @dplush in #694
  • docs: clarify LLM consolidation configuration by @dplush in #686
  • fix: warn before uncached local model download by @dplush in #704
  • fix(hermes): export the resolved memory bank by @dplush in #702
  • feat(llm): allow relocating the local model cache by @tonythomson in #713
  • fix(mcp): expose canonical retirement tool by @dplush in #723
  • fix(hermes): honor tool allowlist during discovery by @dplush in #725
  • test(hermes): cover no-yaml allowlist parity by @dplush in #731
  • fix: fail closed on truncated reasoning traces by @dplush in #734
  • docs: add release note for truncated reasoning fix by @dplush in #737
  • fix: log final API embedding failures by @dplush in #738
  • docs: add release notes for MCP and Hermes fixes by @dplush in #740
  • docs: correct FastEmbed E5 model examples by @dplush in #746
  • fix(mcp): handle non-ASCII bearer tokens safely by @ddddddddwp in #743
  • fix: status reports interpreter mismatch instead of version mismatch (#736) by @ddddddddwp in #751
  • fix: preserve caller transactions in memory batches by @dplush in #760
  • fix: keep direct wrapper stores atomic by @dplush in #764
  • fix(shmr): pass list to embeddings.embed, drop non-existent facts.status filter (#762) by @ddddddddwp in #765
  • fix(mcp): advertise only tools with dispatch handlers (#728) by @ddddddddwp in #758
  • fix(hermes): use the shared environment check in the provider diagnostic by @tonythomson in #711
  • fix(core): normalize valid_until writes and comparisons to aware UTC (#525) by @ddddddddwp in #759
  • fix(packaging): exclude Hermes sources from Core wheel by @ddddddddwp in #730
  • fix: split leading-hyphen fragments into FTS-safe recall terms (#744) by @ddddddddwp in #750
  • fix(core): bound SQLite FD retention under connection churn by @israellot in #747
  • fix(hermes): scope auto-sleep to triggering session; honor auto_sleep_enabled (#771) by @ddddddddwp in #772
  • fix(beam): exclude dialog sources from working-memory vec pool (#696) by @Goonik in #705
  • fix(beam): cascade gists on forget by @dplush in #786
  • chore(release): correct the pending version to 4.0.0 and add the migration guide by @AxDSan in #775
  • docs(rfc): correct seven errors in the multimodal RFCs and de-vendor the seam by @AxDSan in #776
  • feat(media): media asset registry and moment index (RFC 0003 phase 0) by @AxDSan in #777
  • feat(core): give the blob store a reader via ContentResolver and BlobResolver by @AxDSan in #778
  • feat(beam): let remember() take an explicit memory_type and opt out of dedupe by @AxDSan in #779
  • feat(modality): vendor-neutral provider seam for describing non-text content by @AxDSan in #780
  • feat(media): remember_media(), reference to recall by @AxDSan in #781
  • docs: sweep the CHANGELOG against v3.15.1..HEAD and write the 4.0.0 upgrade guide by @AxDSan in #792
  • feat(release): support PEP 440 pre-release tags so a major can have a beta by @AxDSan in #794
  • docs(releasing): make RELEASING.md the whole pipeline, and fix two wrong claims by @AxDSan in #791
  • chore(hermes): bump the standalone plugin to 0.7.0 and stop pinning the version in tests by @AxDSan in #795
  • feat(release): make release.py understand pre-releases, and stop blaming this repo for sibling drift by @AxDSan in #796
  • chore(release): bump the pending version to 4.0.0b1 for the beta cycle by @AxDSan in #799
  • test: make modality stub response order deterministic (#798) by @ddddddddwp in #801
  • fix(hermes): retain host backend while a primary provider remains active by @dplush in #802
  • fix: preserve committed mutations when cache invalidation fails by @dplush in #803
  • fix(hermes): make wrapper validation timeout configurable by @dplush in #805
  • fix(hermes): explain Windows symlink privilege recovery by @dplush in #808
  • fix(hermes): discover native Windows venv Python by @dplush in #811
  • docs: add native Windows Hermes recovery guide by @dplush in #812
  • fix: detect CJK-labelled secrets across all handling surfaces by @ddddddddwp in #810
  • fix(cli): emit static error codes at failure boundaries by @bayhnf in #814
  • docs(changelog): order the 3.12.x sections descending, drop a stale artifact by @AxDSan in #824
  • fix(build): exclude examples/ from Core wheel package discovery by @AxDSan in #823
  • test(beam): stop the valid_until fixture failing for two hours every day by @AxDSan in #825
  • fix(export): disclose partial portable JSON surfaces by @dplush in #822
  • fix(shmr): keep non-dense imports usable without NumPy by @bayhnf in #839
  • fix(modality): honor known HTTP statuses for retry decisions by @dplush in #844
  • feat: add native MCP Streamable HTTP transport by @donbowman in #749
  • docs(releasing): define how a beta cycle ends by @AxDSan in #826
  • docs(skill): stop publishing deployment topology and named routing rules by @AxDSan in #845
  • fix(release): the pre-push tag comparison must allow equality by @AxDSan in #800
  • docs(readme): add the Trendshift badge by @AxDSan in #853
  • ci: bound job runtime and cancel superseded pull request runs by @AxDSan in #861
  • fix(tests): deliver http.request to the hand-driven SSE GET (#860) by @AxDSan in #867
  • fix(hooks): inspect added staged PII lines by @dplush in #870
  • fix: avoid onnxruntime blkid stderr regression by @dplush in #852
  • test: avoid root plugin import shadowing under pytest by @dplush in #877
  • feat: expose BEAM initialization vector status by @dplush in #880
  • fix(hermes-provider): include plugin.yaml in the built wheel's package data by @AmirF194 in #689
  • docs(mcp): say that streamable-http also needs an allowed-hosts policy (#873) by @AxDSan in #875
  • fix(hermes): stop defaulting native Windows to a privilege-gated install mode by @AxDSan in #864
  • docs(hermes): wrapper mode is the general answer, not a Docker workaround by @AxDSan in #858
  • fix: cache Hermes config reads by @dplush in #884
  • docs(maintainers): state that either maintainer may review any PR by @AxDSan in #846
  • fix: validate wrapper --python environment by @dplush in #885
  • fix: cap sqlite-vec before nonportable 0.1.10 alphas by @dplush in #890
  • fix: make native consolidation-log imports idempotent by @mikemikimike in #887
  • test: make mnemosyne-stats suite hermetic against ambient data dir (#783) by @ddddddddwp in #787
  • fix: record fallback_rate on the polyphonic recall path by @cgray2222 in #677
  • fix(memoria): remove literal backslash escapes from ru and es patterns by @Sanjays2402 in #577
  • fix(hermes-provider): share one initialized provider with plugin tools by @supervised-nl in #793
  • fix: prevent entity-only recall candidates by @dplush in #892
  • fix(entities): stop storing quoted spans as entity vocabulary by @Milgauss in #894
  • fix(extraction): whole-word articles and a closed-list object guard for pattern facts by @Milgauss in #876
  • fix(beam): degrade query-side vec0 dimension mismatch instead of crashing recall by @paoloantinori in #754
  • ci: exclude mcp 2.1.0 and run the test matrix under pytest-timeout (#871) by @AxDSan in #898
  • feat(core): MNEMOSYNE_JOURNAL_MODE env override for store connections by @paoloantinori in #785
  • fix(batch): sanitize public batch failure payloads by @bayhnf in #842
  • test: stabilize temporal recall performance gate by @dplush in #899
  • test: cover temporal recency score gap by @dplush in #903
  • fix: preserve day-first English named dates by @dplush in #908
  • docs: remove the Hermes Tweet compatibility entry by @AxDSan in #916
  • fix: force UTF-8 stdout/stderr in run_cli to prevent UnicodeEncodeError on Windows pipes by @Ralph-Abejuela in #915
  • fix(consolidation): preserve UTC event chronology and atomic summary writes by @linouxis9 in #912
  • fix(beam): recall Korean queries by stripping particles and keeping 2-syllable tokens by @ZohnNasse in #896
  • fix(recall): opt-in self-echo suppression with compression-boundary release by @linouxis9 in #918
  • fix: invalidate enhanced recall cache for staged FTS by @dplush in #921
  • fix(plugins): isolate discovery module keys and restore failed loads by @linouxis9 in #920
  • fix(consolidation): never auto-invalidate heuristic conflict pairs by @linouxis9 in #917
  • chore: end the Atlas Cloud Compute Partner sponsorship by @AxDSan in #924
  • docs: accept paid sponsorships, not only credit programs by @AxDSan in #925
  • fix(hermes): isolate sync to shared surface by @dplush in #929
  • Cascade support rows on every memory delete path by @itz-puneet in #930
  • fix(memoria): anchor negation patterns at word boundaries (#559) by @dplush in #931

New Contributors

Full Changelog: v3.15.1...v0.7.0

Don't miss a new mnemosyne release

NewReleases is sending notifications on new releases.