- Scala self-type annotations now emit requires edges to the required traits
- Committed .env.example, .env.sample, and .env.template templates are now indexed instead of dropped by the sensitive-file filter
- Obsidian export no longer hides notes whose label starts with a dot, converting dot-prefixed labels appropriately
- The post-commit hook write is now atomic with a protected-graph backup
- Absolute-path and machine-slug node ids are now canonicalized to root-relative node ids to ensure graph.json link endpoints are portable across machines and clones
- The post-commit hook no longer overwrites an existing graph.json when it fails to read it; instead it refuses to write if the graph is over the size cap or unparseable
- The post-commit hook launcher no longer displays a focus-stealing console window on Windows
- False indirect_call edges from JavaScript and TypeScript closure arguments are removed by shadowing closure parameters with outer names
- Rationale node labels are whitespace-normalized before the 80-character truncation to ensure clean labels and well-formed filenames
- Real .env files and templates under a secrets directory remain excluded from indexing
Portability, hook-safety, and resolution-accuracy fixes.
Node-id portability
- Absolute-path / machine-slug node ids no longer leak into edge endpoints (#2231, #2243). Module-top-level
indirect_callsources, bashsource/script-invocation targets, and other producers that minted an id from an absolute path are now canonicalized to the root-relative node id by a general backstop, sograph.jsonlink endpoints are portable across machines and clones.
Hook safety
- The post-commit hook no longer overwrites an existing
graph.jsonit merely failed to read (#2251). If the existing graph is over the size cap or unparseable, the rebuild refuses to write (matching the CLI) instead of replacing it with a code-only extraction; the--no-clusterwrite is now atomic with a protected-graph backup. - The post-commit hook launcher no longer pops a focus-stealing console window on Windows (#2253, thanks @hopstreax).
Resolution / extraction
- False
indirect_calledges from JS/TS closure arguments are gone (#2241, thanks @Yyunozor): a closure parameter now shadows outer names, sorows.map(r => ...)no longer bindsrto a corpus-wide callable of the same name. - Scala
self-type annotations (self: A with B =>) emitrequiresedges to the required traits (#2052, thanks @Yyunozor). - Rationale node labels are whitespace-normalized before the 80-character truncation, so labels are clean and filenames aren't malformed (#2206, thanks @Yyunozor).
Filtering / export
- Committed
.env.example/.env.sample/.env.templatetemplates are indexed instead of dropped by the sensitive-file filter, while real.envfiles (and templates under a secrets directory) stay excluded (#2184, thanks @SyedFahad7). - Obsidian export no longer hides notes whose label starts with a dot (
.env->dot-env; an all-dot label falls back tounnamed) (#2205, thanks @SyedFahad7).