nexo-brain 5.3.4 → 5.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nexo-brain",
3
- "version": "5.3.4",
3
+ "version": "5.3.5",
4
4
  "description": "Local cognitive runtime for Claude Code \u2014 persistent memory, overnight learning, doctor diagnostics, personal scripts, recovery-aware jobs, startup preflight, and optional dashboard/power helper.",
5
5
  "author": {
6
6
  "name": "NEXO Brain",
package/README.md CHANGED
@@ -89,7 +89,7 @@ Versions `3.1.7` through `3.2.0` close the recent-memory gap:
89
89
  - when even that misses, NEXO now exposes raw transcript fallback tools for Claude Code and Codex session stores
90
90
  - NEXO can now inspect itself through a live system catalog derived from canonical sources instead of relying only on stale docs or operator memory
91
91
 
92
- Version `5.3.3` closes the remaining packaged-runtime doctor mismatch: the built-in hourly backup helper is now inventoried as a core LaunchAgent, so clean installs no longer get a false unknown-LaunchAgent warning. Version `5.3.2` already hardened the runtime boundary by persisting which runtime scripts/hooks are core product artifacts, keeping `nexo scripts` from mixing those into the personal bucket, and migrating the legacy Claude Code heartbeat wrappers into managed core hooks.
92
+ Version `5.3.5` keeps CLI version visibility honest right after `nexo update`: if the cached npm version lags behind the runtime you just installed, `nexo` / `nexo chat` now clamp `Latest` to the installed version and refresh the cache instead of showing a stale older release. Version `5.3.4` already cleaned up legacy core alias leakage and added the version-status banner. Version `5.3.3` closed the remaining packaged-runtime doctor mismatch: the built-in hourly backup helper is now inventoried as a core LaunchAgent, so clean installs no longer get a false unknown-LaunchAgent warning. Version `5.3.2` already hardened the runtime boundary by persisting which runtime scripts/hooks are core product artifacts, keeping `nexo scripts` from mixing those into the personal bucket, and migrating the legacy Claude Code heartbeat wrappers into managed core hooks.
93
93
 
94
94
  Version `5.3.1` normalizes packaged npm installs so they behave like packaged npm installs: `nexo update` now keeps the runtime anchored to `~/.nexo`, refreshes packaged bootstrap/client artifacts after upgrade, avoids repo-only release-artifact drift in installed runtimes, and keeps personal scripts on the canonical packaged path.
95
95
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nexo-brain",
3
- "version": "5.3.4",
3
+ "version": "5.3.5",
4
4
  "mcpName": "io.github.wazionapps/nexo",
5
5
  "description": "NEXO Brain — Shared brain for AI agents. Persistent memory, semantic RAG, natural forgetting, metacognitive guard, trust scoring, 150+ MCP tools. Works with Claude Code, Codex, Claude Desktop & any MCP client. 100% local, free.",
6
6
  "homepage": "https://nexo-brain.com",
package/src/cli.py CHANGED
@@ -122,11 +122,31 @@ def _should_refresh_latest_version() -> bool:
122
122
  return False
123
123
 
124
124
 
125
+ def _version_sort_key(raw: str) -> tuple[tuple[int, ...], int, str]:
126
+ value = str(raw or "").strip()
127
+ base, _, suffix = value.partition("-")
128
+ parts: list[int] = []
129
+ for piece in base.split("."):
130
+ try:
131
+ parts.append(int(piece))
132
+ except Exception:
133
+ parts.append(-1)
134
+ while len(parts) < 3:
135
+ parts.append(0)
136
+ return (tuple(parts), 1 if not suffix else 0, suffix)
137
+
138
+
125
139
  def _version_status_line() -> str:
126
140
  installed = _get_version()
127
141
  latest = _load_latest_version_cache()
128
142
  if latest is None and _should_refresh_latest_version():
129
143
  latest = _fetch_latest_version()
144
+ if latest and installed and _version_sort_key(latest) < _version_sort_key(installed):
145
+ latest = installed
146
+ try:
147
+ _save_latest_version_cache(installed)
148
+ except Exception:
149
+ pass
130
150
  if latest:
131
151
  return f"NEXO Latest: v{latest} | Installed: v{installed}"
132
152
  return f"NEXO Installed: v{installed}"