0.8.27
- Feat: standalone CLI now auto-names communities with the configured backend instead of leaving
Community Nplaceholders — community labeling was previously an agent-only step (skill.md Step 5), so bare-CLI runs never got semantic names.cluster-onlynow auto-labels when no.graphify_labels.jsonexists, newgraphify label <path>subcommand (re)generates names on demand,--no-labelopts out,--backend=<name>overrides auto-detection. One batched LLM call with per-community placeholder fallback and graceful degradation on missing backend/API error; works with all built-in and custom OpenAI-compatible backends (#1097) - Fix: AST file-level node IDs now match the skill.md
{parent_dir}_{stem}spec — they were derived from the full relative path plus extension (match_script_pipeline_step_py) while semantic subagents usescript_pipeline_step, splitting every file into two disconnected ghost nodes. Fixed at the single relative-path remap chokepoint so file nodes and all import/dependency edge endpoints (Python, TS, Lua, C, bash) convert together (#1033) - Fix: symbol-level node IDs for root-level files now match the spec too — the #1033 remap relativized file nodes but symbols still embedded the absolute parent-dir name (
<rootdir>_main_runvs specmain_run), splitting every top-level file's symbols into AST/semantic ghost pairs. The remap now canonicalizes symbol stems andraw_callscaller IDs, gated bysource_file(#1096) - Fix: TypeScript
interface A extends Band same-fileclass X extends Ynow produceinherits/implementsedges — the walker only inspectedclass_heritage(missing the interfaceextends_type_clausenode) and the resolver only consulted the import table (missing same-file bases); both gaps closed (#1095) - Fix:
graphify export obsidianno longer crashes withOSError ENAMETOOLONGon long node labels —to_obsidian/to_canvasnow cap filenames on UTF-8 bytes (not chars, so multibyte/CJK labels are handled) with an 8-char hash suffix on truncation to keep distinct long-prefix labels from colliding; also fixes the previously-uncapped_COMMUNITY_notes (#1094) - Fix:
graph.jsonis now deterministic across runs —detect()sorts file traversal lexicographically (os.walkorder is filesystem-dependent), which had made first-writer-wins node-ID decisions and Leiden community counts vary between identical runs (#1090) - Fix: Windows consoles no longer crash with
UnicodeEncodeErroron non-UTF-8 code pages —main()reconfigures stdout/stderr to UTF-8 at startup and→/—in print statements replaced with ASCII (#992)