- Fix: the Obsidian export (
--obsidian/to_obsidian) no longer overwrites a user's own notes or.obsidian/config when pointed at an existing vault (#1506). It wrote one note per node straight into the target dir and unconditionally replaced.obsidian/graph.json, so--obsidian-dir ~/my-vaultcould clobber a same-named note (Database.md) and the user's graph-view settings — silently, no backup. graphify now records the files it owns in a.graphify_obsidian_manifest.jsonand refuses to overwrite any pre-existing file it didn't create (skipping it with one aggregated warning); a re-run still updates graphify's own notes. The defaultgraphify-out/obsidianoutput is unchanged. - Fix: Java enum and annotation (
@interface) declarations are now emitted as type nodes (#1512, thanks @oleksii-tumanov), so a field typed as an enum or a class annotated with a project annotation resolves to a real node instead of a dangling reference. - Fix: Java generic parent relationships are no longer dropped (#1510, thanks @oleksii-tumanov) —
class Foo extends Bar<T>/implements List<T>now emit theinherits/implementsedge to the base type, with the type arguments asgeneric_argreferences. - Fix: the
claude-clibackend no longer crashes withUnicodeDecodeErroron Windows systems whereclaude.cmdemits GBK/cp936 bytes (#1505, thanks @nuthalapativarun) — both subprocess calls decode witherrors="replace". - Fix:
graphify explainandgraphify affectednow resolve a query given as a source-file path even when the graph has multiple nodes from that file (#1503, thanks @behavio1). A path likeapp/api/route.tstokenized to terms that matched no node, so explain returned "No node matching"; source-file paths are now indexed and matched exactly, and when several nodes share the file the lookup prefers the file-level node (theL1node whose name matches the file). Trailing-separator handling is aligned between the two commands. - Docs: clearer install/PATH guidance for
uv tool install graphifyyon macOS (#1471, thanks @Patsch36). Two expected uv behaviors read as bugs: (1) afteruv tool install, thegraphifycommand lands in uv's tool bin dir (~/.local/bin), which a fresh macOS/zsh shell often doesn't have onPATH— the README now points touv tool update-shellinstead of implying uv always wiresPATH; (2)uvx graphify …/uv tool run graphify …resolve the first word as a package and fail, because the package isgraphifyyandgraphifyis only its console script — the docs now showuvx --from graphifyy graphify install. README install note + Troubleshooting only; no code change. - Fix: imported type stubs with the same label no longer falsely merge across files when there is no project definition to rewire onto (#1462, thanks @jiangyq9). Two files that both
from pathlib import Pathand usePathas a type previously collapsed into one node; the referencing file is now kept as an internal disambiguator (origin_file) used only when splitting colliding ids, whilesource_filestays empty so a real project definition can still be rewired onto (the #1402 path is unaffected). - Feat: resolve C# cross-file type references and extract
enum/struct/recorddeclarations (#1466, thanks @TheFedaikin). A new_resolve_csharp_type_references(the C# counterpart to the Java resolver) re-points danglinginherits/implements/referencesedges from no-source "shadow" stubs to their real definitions, disambiguating same-named types in different namespaces via the referencing file'susingdirectives and enclosing namespace; ambiguous matches are refused rather than guessed.enum/struct/recordtypes are now extracted as definitions so those references resolve too. Advances #1318 for C#. - Fix: the Go AST extractor no longer creates phantom duplicate nodes for cross-file type references — the Go copy of
ensure_named_nodestill used the older sourced-stub fallback; it now emits a sourceless stub like the other extractors, extending the #1402 fix to Go (#1500, thanks @TPAteeq).