Skip to content

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 23 Sep 11:17
53f5207

CsMesh 0.7.0

Breaking: graph format v14

Existing indexes are rejected with exit 4 until you rebuild them:

csmesh index --full

csmesh review baselines built by 0.6.x need one csmesh review --accept after the
upgrade.

Where is this written?

blast-radius --writes answers "who writes this property or field" instead of "who
touches it":

csmesh blast-radius Order.Status --writes --budget 800

Member-access edges now carry a role: Read, Write, Read|Write (compound
assignment, ++/--, ref arguments) or Subscribe (event +=/-=). Writes are
recorded for simple and compound assignment, object initializers, with expressions,
out and ref arguments, deconstruction targets, constructor writes to readonly
fields and init-only properties, and indexer setters. Bare field writes such as
_total = x, which produced no edge at all before, are now recorded.

  • A write through an interface-typed receiver shows up on the implementation with
    [via-interface]. It is one reverse hop, so it can include writers bound to another
    implementation of the same interface member.
  • Events and indexers are graph nodes now. --writes on an event returns no rows and
    points you to blast-radius <event> for its subscribers.
  • Not recorded: writes to members declared only in referenced assemblies, and attribute
    named arguments.

Roles live on the existing call edge, so default changes and review output does not
fill up with write findings after the upgrade. --calls does show a method that moved
from reading a member to writing it.

review: no more false exit 5 on a clean tree

The base revision used to be indexed in a checkout with no bin/. Package types went
unbound, edges dropped out, and review reported structural changes that did not
exist. The base is now compiled against the working tree's reference set.

  • The base-graph cache is keyed on that reference set, so a stale thin base is rebuilt
    instead of reused.
  • When a .csproj, .props, .targets, Directory.Packages.props,
    packages.lock.json, global.json or solution file changed in the reviewed range,
    review prints a warning (reference_inputs_changed in JSON). The exit code does not
    change.

Agent skill

The skill text teaches --writes, drops a repeated paragraph and uses a generic
nested-type example. Refresh installed copies with:

csmesh skill --install

Upgrade

dotnet tool update -g CsMesh
npm install -g @nrafinia/csmesh

then csmesh index --full in each indexed repository.