Repository navigation
Memtrace v1.0.2
Memtrace v1.0.2
Correct numbers: vendored code no longer counts as yours, and self-hosted workspaces index again
New
- A dedicated Test tab. Coverage used to be a single reachability percentage tucked inside Quality — the least informative thing the graph knows about a suite, because reachability is generous by design. The tab now splits that number into the three groups it hides: code a test calls directly and therefore actually asserts on, code reached only through a chain that would break without any test going red, and code nothing touches. It adds coverage per language, the test frameworks in use, untested public surface ranked first, and where the gaps cluster.
- A governance lookup that takes a file path. Asking what rules constrain a piece of code previously required an internal identifier that nothing ever handed you, which made the feature unreachable in practice. Pass a repository and a file path — what every search result already gives you.
Fixed
- Self-hosted workspaces connected to a hosted database now index. Sign-in, seat enrolment and the connection check all reported success while indexing quietly wrote nothing, because the part of the product that builds the graph could not open a secure connection at all. Everything that reports health could. A local database hid the problem completely, so it only ever appeared on real deployments.
- Vendored dependencies are no longer graded as your own code. Libraries checked into a vendor folder were being read, parsed and scored as first-party source — on one project that was almost two gigabytes of someone else's database engine, supplying 17% of the detected API surface. It inflated the totals every quality score divides by, added foreign code with no local caller to the dead-code count, and shipped duplicate copies of the same contract, which made the linker discard real connections as ambiguous. Scores that looked like a verdict on your code were partly a verdict on your dependencies.
- A workspace repairs itself when the rules about what to index change. Upgrading to a version that excludes something new used to leave every existing workspace holding the old records until someone rebuilt the index by hand. Those records are now dropped the next time the graph is read.
- Trace density no longer reads zero on a graph full of connections, and neither do the readings derived from it.
- Hovering a node shows its name, kind and file path again. The card had gone missing on the default renderer.
- Clicking a community focuses it in the graph instead of appearing to do nothing.
- An indexing job reports that it finished. A run that completed successfully could sit at ninety-nine percent forever, which is indistinguishable from being stuck — and was reported as being stuck, twice, when the work had actually finished.
- Clearing stale records completes on a large repository. It used to get slower the better your search pattern matched, so a pattern that matched a whole folder never returned at all.
- Replaying an episode accepts the shortened identifier the interface displays. The only identifier you could see was one the lookup rejected, so a perfectly healthy episode reported itself as missing.
- A repository identifier is checked before use. A client that sent an empty value could create a phantom repository holding twenty thousand entries that could only be removed by deleting the whole thing.
- An episode that was not fully written is no longer counted as saved, so a partial write is visible instead of silently reported as success.
- The decision-memory sidecar explains itself instead of failing with an unhelpful system error, and stops retrying a start that cannot succeed.
- Identifiers returned by decision memory survive a round trip through JavaScript. They were large enough to lose precision silently, and the rounded value looked valid — so follow-up questions answered honestly about a decision that was never actually found.
- A run whose indexing failed no longer ends by reporting a complete, successful bootstrap.
- A failed connection to the database explains why it failed instead of reporting only that it did.
- Publishing a release no longer fails when the hosting provider takes a moment to catch up with itself.
- Decision records show up again in a workspace that holds more than one repository. Governance would only answer for whichever repository happened to sit at the root of your workspace; asking about any other one beside it was refused outright, so the Governance view came back empty for most people who keep several projects in one folder. Requests are now accepted for any repository inside the workspace, and still refused for anything outside it.
- A busy decision sidecar is no longer reported as a missing one. Every governance request had to finish within the same fraction of a second allowed for noticing that the sidecar is not running — but answering one means opening and classifying every governance document in the repository, which takes longer than that on any real project. The result was an error saying the sidecar was not running while it was in fact working. Detecting an absent sidecar is still immediate; the work it was asked to do now gets time proportional to the size of the job.
- GPU diagnostics now name every missing CUDA prerequisite. Running CUDA needs two separate pieces: the execution provider Memtrace ships, and NVIDIA's cuDNN 9. When both were absent the warning mentioned only cuDNN, so people installed it, saw no change, and concluded the GPU support was broken — the piece Memtrace can install for you was never mentioned. The warning now lists everything that is missing, with the right remedy for each, and no longer suggests a 400 MB download that would not have helped.
Install
npm install -g memtrace