Skip to content

Memtrace v1.1.8

Choose a tag to compare

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

Memtrace v1.1.8

Convergence knows when to stop

New

  • The built-in CPU profiler now works on Linux and macOS as well as Windows: set MEMCORE_SELF_PROFILE=1 and the database engine samples its own hot functions and writes named stack reports into its normal log — no admin rights or external tools on any platform, and reports carry function names rather than raw addresses.
  • New features land on Nightly first: npm install -g memtrace@nightly is the same memtrace command, and it is not always stable. They still ship on the default install. memtrace install stays on the channel you already have.

Fixed

  • Preserving a repository's last-published graph is now a settled, certified-clean outcome of convergence instead of a reported failure. Treating it as an error left the repository permanently dirty and queued, and both halves of convergence looped on that state — the link pass re-armed itself off the non-empty queue, and every dashboard poll and boot probe re-queued the still-dirty publication.
  • Background link passes that leave repositories queued but make no progress now stop re-arming themselves under one capped policy. Index completions, watcher saves, and dashboard polls still schedule passes normally, so no single unsettleable repository state can pin a background loop again.
  • Indexing no longer crashes on non-ASCII source. Statement windows in the Rust transport detector sliced at fixed byte offsets that can land inside a multi-byte character, killing ingestion on any codebase with Danish, German, French, or Czech comments or identifiers ("byte index N is not a char boundary"). All four windowing sites now align to character boundaries, pinned by a property test that feeds the detector arbitrary unicode.
  • The telemetry opt-out now means zero non-licence traffic. Previously the licence heartbeat carried graph statistics and record counts regardless of the opt-out, so an opted-out user's usage still appeared server-side. With MEMTRACE_TELEMETRY=off — or the industry DO_NOT_TRACK convention, now honoured equally — the heartbeat still validates your session and carries contract-billing meter counts, but graph statistics, repository rows, and record counts never leave the machine, and the launcher's npm version check goes quiet too. TELEMETRY.md now documents exactly what flows in every mode, verifiable with a network sniffer.
  • One global VS Code MCP entry now serves every project: the installer writes "cwd": "${workspaceFolder}", so each window anchors the server on its own project instead of the editor's ambient directory — previously all projects could silently share one wrong, empty user-level store. memtrace mcp --help also finally documents the --workspace flags it has always accepted.
  • Windows lock-contention classification is now guarded at the source level: every file-lock site routes through one shared platform rule, so a raw os error 33 (the Windows spelling of "lock is busy") can never again be treated as a fatal error by a site that missed the mapping.
  • .memtraceignore now governs live working-tree ingestion, not just memtrace index. Saving an ignored file used to re-ingest it into the graph as a working-tree episode — the ignore file appeared to work until the file was next touched. The watcher batch now filters through the exact matcher the CLI uses (user patterns over the built-in noise baseline, !path re-includes intact), edits to .memtraceignore take effect on the very next save, and benchmark-fixture saves stop generating episodes the CLI scan would never have indexed.
  • Decision-memory queries no longer fail against a momentarily busy Cortex sidecar. The sidecar serves local IPC one request at a time, so a recall queued behind a long ingest could burn its whole deadline and be reported unavailable — enterprise sessions measured roughly one failure in four calls. Read-only decision queries now retry once with a fresh window, a transport failure reports how many attempts were made and stays unmistakably distinct from a genuine “no matching memories” answer, and recall answers name the workspace scope they were filtered by — so a zero-match answer against a store the dashboard shows full of decisions is diagnosable as a scope mismatch rather than reading as “no decisions recorded”. MEMCORTEX_DECISION_TIMEOUT_MS raises the deadline for very large stores.
  • memtrace doctor no longer flags three healthy states as problems needing --fix: a locked workspace PID file is the live owner's own singleton advertisement, not a stale file (and --fix no longer offers to delete it out from under the running daemon); the UI port being held by the very owner doctor just called healthy is not a port conflict; and Claude Code skills installed through the plugin marketplace are now found in the plugin cache instead of being reported as “0 skills” on a fully working setup.
  • Manually curated symbol links (link_symbols) now survive a repository clear-and-rebuild. A full reindex previously wiped them along with the parser's own output; the rebuild now snapshots them first and restores them afterwards, re-attached to the re-parsed symbols through their deterministic identities.

Install

npm install -g memtrace