Skip to content

Memtrace v1.1.7

Choose a tag to compare

@Alex793x Alex793x released this 01 Sep 02:02
· 51 commits to main since this release

Memtrace v1.1.7

Relinking settles instead of retrying forever

Changed

  • Setting MEMTRACE_MEMDB_ENDPOINT (or MEMTRACE_MEMDB_ENDPOINTS) now always means "connect to that server" — external mode — including loopback addresses such as an SSH tunnel or kubectl port-forward to a hosted MemDB. Previously a loopback value silently selected local mode, ignored the address, and started a local engine, so writes meant for the appliance landed in a local store. Only the literal default endpoint still selects local mode; set MEMTRACE_MEMDB_MODE=local explicitly if you relied on the old inference.

Fixed

  • Cross-repository relinking no longer loops forever on a repository whose live graph is empty while a good last-published graph is on disk: keeping that graph is now a settled outcome rather than a retried failure, so convergence completes, the dashboard stops reporting an endless warm-up, and startup embedding stops waiting behind it. Stores already stuck this way settle on their own after upgrading, no reindex needed. Background link passes that repeatedly make no progress now back off and eventually stop re-arming themselves, so no single repository state can pin that loop again.
  • Live file-watch updates against an https:// hosted MemDB no longer fail while every other query path reports the server healthy: the watcher's incremental persists now dial through the same TLS-capable connection as the rest of Memtrace instead of a cleartext-only path that could never reach a TLS endpoint.
  • A refreshed seat token can no longer replace a working credential with one the server rejects. Session start used to blindly store the freshly minted seat token for the active endpoint; on a deployment that does not authorize that seat yet (the organization's pinned endpoint does not cover it, or the seat was revoked), this overwrote the credential memtrace connect had installed and every following session failed. The refreshed token is now verified against the live server first, and an unauthorized one is reported — with the endpoint-pinning fix to apply — while the existing credential stays in place.
  • An authentication rejection from a hosted MemDB is now reported as exactly that, instead of "could not reach the external MemDB" with DNS-and-firewall guidance for a server that answered. The error now says the server is reachable but rejected the bearer, and lists the credential-side fixes: pin the endpoint in the dashboard so member seats are accepted, or reconnect with your connection file.
  • memtrace start no longer aborts a completed boot with a bare "No such file or directory (os error 2)". Concurrent publishers of the daemon's owner-state file shared one temp filename, so one could lose a rename race — a benign, self-healing condition the write layer already classified as ignorable, but the startup path treated as fatal. Each write now uses a unique temp name, a lost publish is logged and re-published by the heartbeat within seconds, and the heartbeat republishes the resolved UI port rather than the boot-time one.
  • A warming flag can no longer outlive the condition it reports. The boot readiness probe ran exactly once; when an editor's MCP child booted before memtrace start, every response carried warming: true and empty_state_reason: "warming" forever — including fully populated results, which taught agents to abandon a healthy graph for grep. The flag now re-probes on observation and in the background once an owner appears, and a non-empty result is always labelled as real data (not_empty) no matter what the flag says.
  • Repository discovery no longer sweeps OS profile trees. Launched from a home directory, the scan used to walk the entire user profile — registering package caches, Temp scratch directories, and editor backup folders as zero-node repositories, slowly. AppData, Library, and Application Data are now skipped, the walk is depth-bounded, and multi-repo discovery rooted at the home directory itself is refused with a clear message.
  • When the MemCortex local endpoint is reserved by a leftover handle that no longer answers, Memtrace no longer launches a daemon doomed to print an ownership error on every supervisor tick. It skips the futile spawn, explains once what actually holds the endpoint and how to free it — including the case a plain taskkill cannot fix, where a process that inherited the handle outlived the daemon — and takes over automatically the moment the endpoint frees.
  • The one-time post-upgrade index refresh now verifies itself: each refreshed repository is re-checked, and if its schema markers did not persist — the condition that made a demo estate silently re-parse and re-embed on every start — the boot log names the repository and the exact stored versions instead of looping quietly.

Install

npm install -g memtrace