Safi
64f38acf3e
implement #488 #482 #472 #490 : legacy schema canonicalization, Java inheritance, aggregated HTML viz, check-update subcommand
2026-04-22 23:28:09 +01:00
Safi
4bc20527c3
fix #513 #514 : skip head -1 on .exe hook binary, fix to_canvas() hardcoded obsidian path
2026-04-22 23:01:53 +01:00
Safi
52ad45bd27
fix #504 : export PYTHONUTF8=1 in Step 1 to prevent garbled CJK output on Windows
2026-04-22 09:28:26 +01:00
Safi
86d6d9317f
fix #498 : opencode config to .opencode/opencode.json, fix skill temp file paths, add --wiki step
2026-04-22 09:19:53 +01:00
Safi
d9b2928da1
fix: deterministic GRAPH_REPORT on large graphs, stable edge node IDs, correct common-root inference
...
- analyze.py: add seed=42 to betweenness_centrality() — eliminates non-deterministic GRAPH_REPORT.md diffs on graphs >1000 nodes (#499 )
- extract.py: fix common-root inference to stop at first diverging segment not sum of all matches (#502 )
- extract.py: resolve root to absolute path; post-process file node IDs to project-relative after extraction so graph.json edge endpoints are stable across machines (#502 )
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-22 09:04:38 +01:00
Safi
f8fd8f8479
fix: wiki encoding+collisions, hook rebase guard, detect path resolve, readme gitignore docs
...
- wiki.py: add encoding="utf-8" to all write_text() calls (fixes Windows cp1252 crash #496 )
- wiki.py: deduplicate filenames with _unique_slug() to prevent silent article overwrites (#497 )
- hooks.py: skip post-commit/post-checkout during rebase/merge/cherry-pick (#485 )
- detect.py: resolve root path at detect() entry so .graphifyignore patterns match consistently (#495 )
- README.md: document manifest.json, cost.json gitignore and .graphifyignore platform file examples (#369 )
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-22 06:26:15 +01:00
Safi
7cb639ae5d
fix(report): complete empty-community fix — hubs, summary count, thin-community gaps; add graph-query CLI rules to install sections
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-21 22:42:53 +01:00
Safi
dbde78ca03
Fix four bugs from community PRs
...
- cache: skip directory source_file in save_cached to prevent IsADirectoryError (#444 )
- report: skip structural-only communities with no real nodes (#443 )
- hooks: allow @ in python path allowlist for Homebrew paths (#474 )
- watch: keep source_file paths project-relative after rebuild (#434 )
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-21 22:26:17 +01:00
Safi
9c3d0fa517
Fix chunk temp files not cleaned up after graph build
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-21 22:21:37 +01:00
Safi
4738e88aaf
fix #453 antigravity install uses .agents not .agent, fix #436 _is_sensitive false positives on directory names, fix #433 update command writes absolute paths in artifacts
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-21 21:33:33 +01:00
Safi
81b6e7d7b4
fix #455 #448 IsADirectoryError in file_hash and save_semantic_cache, fix #454 sanitize_label crash on None source_file
2026-04-21 21:25:13 +01:00
Safi
f0ebd07fd5
Improve packaging: uv tool install support, fix interpreter detection on Mac/Linux
2026-04-21 21:11:27 +01:00
Safi
9c2275ad82
fix #432 to_html crash on large graphs, fix #431 Go import node ID collision
2026-04-18 10:54:39 +01:00
Safi
d67436c065
v0.4.23: fix #178 stale version stamp, fix #260 add .html to DOC_EXTENSIONS
2026-04-18 10:47:37 +01:00
Safi
c24cde9d9e
v0.4.22: fix #429 AST cache root, fix #428 add .mdx to DOC_EXTENSIONS
2026-04-18 09:47:06 +01:00
Safi
8666c6994c
v0.4.21: fix #422 cluster-only KeyError total_files, fix #423 --update drops existing nodes
2026-04-17 20:33:06 +01:00
Safi
a507c97822
v0.4.20: fix #414 JS imports_from path normalisation, fix #418 graph.html missing from CLI
2026-04-17 15:47:56 +01:00
Safi
8a474eb1b3
v0.4.19: fix #390 #298 #410 #401 #385 , team workflow docs, Windows/pipx tips
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-17 12:46:42 +01:00
Safi
b2523fcdec
v0.4.16: fix watch NameError, .mjs dispatch, exclude llm.py from wheel
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-16 07:01:04 +01:00
Safi
429e46a665
v0.4.15: VS Code Copilot Chat, OpenCode/Gemini Windows fixes, .mjs/.ejs, macOS watch, god_nodes degree rename
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-15 23:08:43 +01:00
Safi
01fb51ba78
Fix 9 issues: kiro package data, betweenness perf, wiki step, opencode plugin, cache root, PHP missing edges, Windows stability, cross-file calls
...
- #352 : add skill-kiro.md to pyproject.toml package-data
- #341 : guard edge_betweenness at >5000 nodes; use approximate k=100 for suggest_questions on large graphs
- #354/#229: add Step 6b in skill.md to call to_wiki() when --wiki given (before Step 9 cleanup)
- #356 : call _install_opencode_plugin() from install --platform opencode path
- #350 : add cache_root param to extract() so subdirectory runs keep cache at ./graphify-out/cache/
- #230 : PHP class_constant_access_expression emits references_constant edges
- #232 : PHP scoped_call_expression (static method calls) emits calls edges
- #287 : os.replace fallback for Windows WinError 5; graphify update exits 1 on failure; templates use graphify update . instead of python3 -c
- #348 : cross-file call resolution for all languages via raw_calls + global label map pass in extract()
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-15 00:26:11 +01:00
Safi
b85184002c
v0.4.13: Verilog support, HiDPI hyperedge fix, null label guards, AGENTS.md python3 fix
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 09:28:01 +01:00
Safi
2993cce8b2
v0.4.12: add Kiro IDE/CLI support, fix cache portability across machines
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-13 22:46:13 +01:00
Safi
b00813bcb2
v0.4.11: fix query crash on MultiGraph, NoneType in serve.py, MCP CWD path bug, .graphifyignore subfolder patterns; v0.4.10: Dart, Hermes, 6 CLI commands, PHP improvements
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-13 12:48:47 +01:00
Safi
1fbcaf840f
release: v0.4.9 — PHP extractor improvements, Dart, diacritics, Hermes, fixes
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-13 08:39:28 +01:00
Safi
1dd4c41413
Remove Claude-specific language from platform skill files (0.4.8)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-12 21:18:20 +01:00
Safi
4210de270f
Fix watch edge key, claw path, Blade support, WSL MCP docs (0.4.7)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-12 20:49:24 +01:00
Safi
f8c91a987f
Add Google Antigravity platform support (0.4.6)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-12 19:16:49 +01:00
Safi
6724350665
fix MCP ValidationError on blank stdin lines and bump to 0.4.5
...
Some MCP clients send blank lines between JSON messages. The stdio
transport tried to parse every line as JSONRPCMessage, crashing with
a Pydantic ValidationError. _filter_blank_stdin() installs an OS-level
pipe that relays stdin while silently dropping blank-only lines.
Closes #201
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-12 18:48:29 +01:00
Safi
5ab8eb34c5
fix #261 , #249 , #266 and bump to 0.4.4
...
- watch.py: preserve INFERRED/AMBIGUOUS edges (code<->doc) across rebuilds (#261 )
- __main__.py: fix Codex hook - use additionalContext instead of permissionDecision:allow (#249 )
- detect.py: skip common lockfiles (package-lock.json, yarn.lock, Cargo.lock etc.) (#266 )
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-12 18:37:54 +01:00
Safi
d1808bab8c
fix bugs #256 , #253 , #244 , #226 , #254 and bump to 0.4.3
...
- extract.py: resolve relative JS/TS imports to full-path IDs (fixes 0 import edges on TS codebases) (#256 )
- extract.py: resolve relative Python imports to full-path IDs (#256 )
- watch.py: merge fresh AST with existing semantic nodes instead of overwriting (#253 )
- hooks.py: add python fallback after python3 for Windows; exit 0 if neither found (#244 )
- analyze.py: guard stale _src/_tgt hints with node membership check (#226 )
- detect.py + extract.py: add .vue and .svelte to CODE_EXTENSIONS and _DISPATCH (#254 )
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-12 12:59:15 +01:00
Safi
8c17230586
cherry-pick PRs #212 , #220 , #204 , #221 into 0.4.2
...
- build/validate: accept NetworkX <=3.1 "links" key alongside "edges" (#212 )
- __main__: skip version check during install/uninstall, deduplicate paths (#220 )
- all file IO: explicit encoding="utf-8" to prevent crashes on Windows CJK locales (#204 )
- hooks: add newline="\n" on write to prevent CRLF shebang breakage on Windows (#204 )
- export: strip trailing .md from safe_name so "CLAUDE.md" doesn't become "CLAUDE.md.md" (#221 )
- report: add Community Hubs navigation block so Obsidian vault stays connected (#221 )
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-11 21:07:39 +01:00
Safi
1cb882a156
fix bugs #211 , #216 , #217 , #222 and bump to 0.4.2
...
- extract.py: use str(path) for node IDs to prevent same-basename collision (#211 )
- build.py: normalize from/to edge keys before KeyError (#216 )
- export.py: guard ZeroDivisionError when graph has no edges (#217 )
- hooks.py: remove stale CODE_EXTS filter, rebuild on any changed file (#222 )
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-11 20:53:08 +01:00
Safi
cede5b6ca6
Fix #188 : collect_files() now respects .graphifyignore; fix #195 : skill.md requires general-purpose subagent type for extraction dispatch
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-10 18:41:48 +01:00
Safi
74cb9ce197
Security: fix YAML injection in ingest.py, </script> injection in export.py, bound collision loop
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-10 16:07:51 +01:00
Safi
2a7d2f4fdc
Remove Anthropic API call from transcribe.py - agent generates Whisper prompt itself
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-10 15:55:22 +01:00
Safi
cf5d721bee
Add video/audio corpus support with yt-dlp download and Whisper transcription
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-10 15:40:18 +01:00
Safi
e3adc0417a
fix hook reinstall, CRLF labels, skill-windows missing commands (0.3.28)
2026-04-10 10:07:11 +01:00
Safi
6b6d90ac0f
fix gemini install missing skill file copy (0.3.27)
2026-04-10 01:28:19 +01:00
Safi
6d39432058
fix MCP server path validation security issue (0.3.26)
2026-04-10 01:08:15 +01:00
Safi
9c829d7a2e
release 0.3.25: Aider + Copilot CLI, directed graphs, frontmatter cache, graphifyignore parent discovery, MCP fixes
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-10 00:56:22 +01:00
Safi
f18ea01530
Fix codex/opencode install idempotency — always run hook step ( #153 )
2026-04-09 17:59:16 +01:00
Safi
df26f85648
Add Gemini CLI support and sponsor nudge at pipeline completion ( #105 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-09 17:40:45 +01:00
Safi
df77d5f8ce
Add Cursor support, fix _rebuild_code KeyError and node_link_data crash ( #137 , #148 , #149 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-09 17:19:40 +01:00
Safi
45e407db35
Fix Codex hook JSON schema ( #138 ) and use #!/bin/sh for Windows git hooks ( #140 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-09 14:12:36 +01:00
Safi
95f6c104d4
Pin tree-sitter>=0.23.0, add version guard, confidence=EXTRACTED for AST calls
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-09 09:36:32 +01:00
Safi
ca842472e5
Fix AST call edges confidence: INFERRED/0.8 -> EXTRACTED/1.0 ( #127 )
...
Tree-sitter resolves call targets directly from source — marking them
INFERRED was incorrect. Cross-file class-level uses edges remain INFERRED.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-09 09:22:12 +01:00
Safi
bb2049cec1
Fix XSS in HTML viz: escape node labels, types, source files, and edge relations in innerHTML (#sec)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-09 09:06:02 +01:00
Safi
e5760e6b03
Add OpenCode tool.execute.before plugin via graphify opencode install ( #71 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-09 08:55:07 +01:00
Safi
be2058d5d5
Fix install step: try plain pip before --break-system-packages ( #126 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-09 08:40:17 +01:00