From 427e428875d2d7f5b99c43e5a80007ee7d90381b Mon Sep 17 00:00:00 2001 From: tcconnally Date: Tue, 7 Jul 2026 15:13:54 -0500 Subject: [PATCH 1/2] =?UTF-8?q?release:=20v1.0.21=20=E2=80=94=20bridge=20f?= =?UTF-8?q?ixes=20(#704/#699),=20perseus=20knows=20(#692/#695),=20real=20v?= =?UTF-8?q?ersion=20badge=20(#696)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 --- CHANGELOG.md | 28 ++++++++++++++++++++++++++++ VERSION | 2 +- perseus.py | 6 +++--- pyproject.toml | 2 +- 4 files changed, 33 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b447651..0d43d64 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,34 @@ else (installer, docs) is generated by `scripts/release.sh`. ## [Unreleased] +## [1.0.21] - 2026-07-07 + +### Fixed +- **Legacy `mneme:`/`mimir:` config no longer shadowed by the default `perseus_vault:` block** (#704). + `load_config` materializes a full default `perseus_vault:` block, so a config that only had a + legacy block — the previously-recommended migration target — was silently dead: the bridge fell + back to a bare `perseus-vault` PATH lookup and `fallback_to_local` masked it as "local results + only". Legacy blocks are now folded into the canonical key at load (deep-merged; explicit + canonical wins key-by-key), with a one-time deprecation notice and a new `perseus doctor` check + that ERRORS when a raw legacy block is not reflected in the resolved connector config. +- **`MnemeConnector.recall` sends the Vault tool's canonical argument names** (#699). The tool + drops unknown keys silently, so `max_results` never reached `limit` (every bridge recall was + pinned to 10) and `min_decay_score` never reached `min_decay`. A single memory-type filter now + maps onto the tool's `type`; `include_federation`/`filters` are documented no-ops. +- **Serve index version badge follows the real package version** (#696) — it was hardcoded `v0.6`. + +### Added +- **`perseus knows`** (#692, alias `perseus memory review`) — plain-language "what does my + assistant know about me?" screen: active-only headline count, buckets (About you / Project + facts & decisions / Recently learned / Low confidence), ✔/~ trust markers, 8-char short ids + resolved git-style, and curation (`--show`, `--forget` reversible archive, `--correct` + bitemporal wrong→right pair) with confirm-before-write. `--json` for machines. Config block: + `knows.enabled` / `knows.limit`. +- **`/knows` serve endpoint + "What Perseus knows about you" index panel** (#695) — the #692 + renderer over HTTP (markdown or `?format=json`) through the existing redact + bearer-auth + path, read-only; the index gains Vault memory stat cards fed by the Vault's active-only stats + (perseus-vault #493), never the archived-inflated totals. + ## [1.0.20] - 2026-07-07 Merged via #689. diff --git a/VERSION b/VERSION index 450f88e..ace256e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.0.20 \ No newline at end of file +1.0.21 \ No newline at end of file diff --git a/perseus.py b/perseus.py index 4a06b9d..19ec2a0 100644 --- a/perseus.py +++ b/perseus.py @@ -74,7 +74,7 @@ def _perseus_lazy_urllib_request(name, _urllib=urllib): # ── Version (injected by scripts/build.py at build time) ────────────────── # All other modules reference _PERSEUS_VERSION; the build script's # _VERSION_RE replaces the literal "0.0.0" with the VERSION file value. -_PERSEUS_VERSION = "1.0.20" # replaced at build time by scripts/build.py — see VERSION file for canonical value +_PERSEUS_VERSION = "1.0.21" # replaced at build time by scripts/build.py — see VERSION file for canonical value # Register as 'perseus' so plugins can import from us (task-65) import sys as _sys @@ -952,7 +952,7 @@ def _reset_hooks_cache() -> None: try: from .serve import _PERSEUS_VERSION except ImportError: - _PERSEUS_VERSION = "1.0.20" # replaced at build time by scripts/build.py (see VERSION file) + _PERSEUS_VERSION = "1.0.21" # replaced at build time by scripts/build.py (see VERSION file) # ──────────────────────────────── Webhooks ─────────────────────────────────── @@ -24671,7 +24671,7 @@ def _find_version() -> str: return candidate.read_text(encoding="utf-8").strip() return _PERSEUS_VERSION # fallback to build-time injected literal -_PERSEUS_VERSION = "1.0.20" # replaced at build time by scripts/build.py (see VERSION file) +_PERSEUS_VERSION = "1.0.21" # replaced at build time by scripts/build.py (see VERSION file) _PERSEUS_VERSION = _find_version() diff --git a/pyproject.toml b/pyproject.toml index 9126b47..58e0170 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "perseus-ctx" -version = "1.0.20" +version = "1.0.21" description = "Live context engine for AI assistants — resolve before context, zero cold-start tax." readme = "README.md" license = { text = "MIT" } From fe67a81a05fa6cbea9c4b70a6bc0489e7f31e2f3 Mon Sep 17 00:00:00 2001 From: tcconnally Date: Tue, 7 Jul 2026 15:29:15 -0500 Subject: [PATCH 2/2] release: server.json version 1.0.20 -> 1.0.21 (version-drift gate) Co-Authored-By: Claude Fable 5 --- server.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server.json b/server.json index dcf5902..94cd6cd 100644 --- a/server.json +++ b/server.json @@ -3,12 +3,12 @@ "name": "io.github.Perseus-Computing-LLC/perseus", "title": "Perseus: MCP server and live context engine", "description": "Live context MCP server: resolves git, services, and tests into agent context. Local-first, MIT.", - "version": "1.0.20", + "version": "1.0.21", "packages": [ { "registryType": "pypi", "identifier": "perseus-ctx", - "version": "1.0.20", + "version": "1.0.21", "packageArguments": [ { "type": "positional",