Safi
699e9960ce
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
2c21bc0488
Fix CI: mock lazy anthropic import via sys.modules instead of module attribute
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-10 15:48:54 +01:00
Safi
79acb7e46a
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
863100cb06
fix MCP server path validation security issue (0.3.26)
2026-04-10 01:08:15 +01:00
Safi
1cbcee539f
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
dcc402e140
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
f770712704
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
b7fd5acc38
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
3501605242
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
29c639d97d
Apply PRs #82 #93 #102 #109 : extension drift, click detection, skill coverage, .graphify_python persistence
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-09 08:22:01 +01:00
Safi
dd8235e0b5
v0.3.17: Julia support, smarter chunking, tree-sitter pin, progress output
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-08 22:54:18 +01:00
azizur100389
8a0dd45711
fix: suppress graspologic ANSI output that corrupts PowerShell scroll buffer
...
* fix: suppress graspologic ANSI output that breaks PowerShell scrolling
graspologic's leiden() emits ANSI escape sequences (progress bars,
colored warnings) that corrupt PowerShell 5.1's scroll buffer on
Windows, disabling vertical scrolling. Redirect stdout/stderr to
StringIO during leiden() calls to prevent any escape codes from
reaching the terminal.
Add 2 tests verifying cluster() produces no stdout/stderr output.
Fixes #19
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* docs: add PowerShell troubleshooting section to Windows skill
Document the PowerShell 5.1 scrolling issue and provide 4
workarounds: upgrade graphify, use Windows Terminal, reset
terminal, or uninstall graspologic to use Louvain fallback.
Fixes #19
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-08 19:40:10 +01:00
Safi
bd24ddb1d6
fix: hook JSON format, Go pkg scoping, xcassets PDF, cross-file guard, skill file paths ( #83 , #85 , #52 , #81 )
2026-04-08 19:20:48 +01:00
Safi
92b70ce5f4
fix: sanitize_label double-encoding and --wiki missing from skill ( #66 , #55 )
2026-04-08 09:40:21 +01:00
Safi
a78d25d4fc
Add ObjC support, C# inheritance, CLI query, symlink support, bug fixes (v0.3.7-0.3.9)
...
- Add Objective-C extractor (.m/.mm) with @interface, @implementation, @protocol, imports, calls
- Add C# inheritance extraction via base_list nodes (inherits edges)
- Add --obsidian-dir flag to skill.md and skill-windows.md
- Add graphify query CLI command with --dfs, --budget, --graph flags
- Add follow_symlinks parameter to detect() and collect_files() with cycle detection
- Fix semantic cache relative path resolution (was saving only 4/17 files)
- Fix validate.py missing rationale file_type causing 75 warnings per run
- Add tree-sitter-objc dependency
- Update README with .m/.mm extensions, --obsidian-dir usage, Codex $ skill trigger
- 367 tests passing
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-07 20:20:49 +01:00
Safi
3d5da6039a
Add Elixir language support (.ex/.exs)
...
Extracts defmodule, def/defp, alias/import/require/use, and call graph.
Follows same custom-walk pattern as Zig and PowerShell extractors.
2026-04-07 12:54:12 +01:00
Safi
9d998cc810
Add Zig and PowerShell language support
2026-04-07 09:56:53 +01:00
Safi
f2423bc114
Add .graphifyignore support for excluding files and directories
2026-04-07 09:41:01 +01:00
Safi
477465ae0d
feat: Swift language support
...
* feat: add Swift language support
Add tree-sitter-swift extractor for classes, structs, protocols,
functions, imports, and call graph edges. Includes 8 passing tests.
* feat: full Swift AST support — enums, extensions, actors, conformance
- Enums: extract enum types, methods, and cases (case_of edges)
- Extensions: methods attach to the original type (no duplicate nodes)
- Actors: recognized via unified class_declaration node type
- Conformance/inheritance: inherits edges from : Protocol syntax
- deinit/subscript: name resolution for nameless declarations
- 12 new tests (110 total, all passing)
2026-04-06 21:59:38 +01:00
Safi
1a54f16b80
feat: always-on hooks and README updates for all platforms
2026-04-06 16:06:31 +01:00
Safi
38d967fc63
feat: multi-platform skill files and install routing (Codex, OpenCode, OpenClaw)
2026-04-06 16:06:31 +01:00
Safi
c46a4ebb68
README: fix CI badge to v2, update curl URL, add how it works, graphify claude install section
2026-04-06 16:06:31 +01:00
Safi
317d73f8f7
v2: confidence scores, hyperedges, rationale extraction, git hooks, Claude Code hooks
...
- confidence_score required on every edge (INFERRED: 0.4-0.9, EXTRACTED: 1.0, AMBIGUOUS: 0.1-0.3)
- semantically_similar_to edges for non-obvious cross-file conceptual links
- hyperedges for 3+ node group relationships - fixed cache and merge pipeline that was silently dropping them
- check_semantic_cache returns 4-tuple including cached_hyperedges
- extract.py: mine the "why" - module/class/function docstrings and rationale comments (# NOTE: # IMPORTANT: # HACK: # WHY: # RATIONALE: # TODO: # FIXME:) as rationale_for nodes
- skill.md: rationale_for in relation schema, doc files extract design rationale
- obsidian output opt-in (--obsidian flag) - default output is graph.html + graph.json + GRAPH_REPORT.md only
- hooks.py: post-checkout hook added alongside post-commit - graph rebuilds on branch switch
- claude install: writes .claude/settings.json PreToolUse hook on Glob/Grep - Claude checks graph before searching raw files
- README updated with all v2 features
2026-04-06 16:06:31 +01:00
Safi
3a117c93e8
v2: hypergraph support - hyperedges in graph.json, shaded regions in HTML, report section
2026-04-06 16:06:31 +01:00
Safi
6fa4c7e662
v2: semantic similarity edges, scored higher in surprising connections
2026-04-06 16:06:31 +01:00
Safi
dafe6c9f03
v2: confidence scores on INFERRED edges, avg shown in report
2026-04-06 16:06:31 +01:00
Safi
7e3da961a9
v2: fast --update for code-only changes, parallel AST+semantic, graphify claude install
2026-04-06 16:06:31 +01:00
Safi
66f1f40de8
add git commit hook - auto-rebuilds graph after every commit
2026-04-06 16:06:31 +01:00
Safi
e2fd4f944e
watch: auto-rebuild graph on code changes without LLM, notify on doc/image changes
2026-04-06 16:06:31 +01:00
Safi
d213c03adf
Add --wiki export: agent-crawlable knowledge wiki from graph
2026-04-06 16:06:31 +01:00
Safi
0f4de8e47f
test: add end-to-end pipeline integration test
...
Covers detect → extract → build → cluster → analyze → report → export
using existing fixtures. AST-only (no LLM calls), catches regressions
in how modules connect, not just individual module behaviour.
2026-04-06 16:06:31 +01:00
Safi
d4b24d8609
feat: vis.js HTML graph, token reduction benchmark, repo cleanup
...
- Replace pyvis with custom vis.js renderer: node size by degree,
click-to-inspect panel with clickable neighbors, search box,
community filter, physics clustering by community
- HTML graph generated by default on every run (no --html flag needed)
- Token reduction benchmark auto-runs after every /graphify on corpora >5k words
- Fix 292 edge warnings: silently skip stdlib/external edges in build.py
- Fix build() to merge extractions before building (cross-extraction edges were dropped)
- Add 5 HTML renderer tests (223 total)
- Remove unnecessary files: lib/, tests/eval_attention.py, misplaced eval reports
- Add graphify-out/ and .graphify_*.json to .gitignore
- Bump version to 0.1.4, remove pyvis dependency
- README: token reduction as top-level selling point, vis.js in tech stack,
graph.html in output listing, correct test count and install command
2026-04-06 16:06:31 +01:00
Safi
5db8f7ce39
docs: update surprising connections description, test count
...
style: replace all em dashes with hyphens
fix: explain hidden .graphify/ folder in skill output and README
fix: rename .graphify/ to graphify-out/ so output is visible by default
2026-04-06 16:06:31 +01:00
Safi
693d2ba991
feat: composite surprise score — cross-type, cross-repo, community distance, peripheral→hub
2026-04-06 16:06:31 +01:00
Safi
7e82212304
feat: GraphML export (--graphml flag) for Gephi and yEd
2026-04-06 16:06:31 +01:00
Safi
81a43f028f
feat: 13-language AST support and token benchmark
...
Java, C, C++, Ruby, C#, Kotlin, Scala, PHP via tree-sitter (13 total)
benchmark.py measures BFS subgraph tokens vs corpus tokens
5 skill bug fixes (cohesion crash, dead step, missing MCP tool)
2026-04-04 18:56:38 +01:00
Safi
41e4e3576a
security: SSRF protection, HTML escaping, path guards, encoding hardening
...
- graphify/security.py (new): centralised security module
- validate_url(): blocks file://, ftp://, data:, any non-http/https scheme
- _NoFileRedirectHandler: re-validates redirect targets, blocks file:// redirects
- safe_fetch(): streams response, 50MB hard cap, non-2xx raises, timeout
- safe_fetch_text(): safe_fetch + UTF-8 decode with errors=replace
- validate_graph_path(): resolves path, requires inside .graphify/, base must exist
- sanitize_label(): strip control chars, cap 256, html.escape() — mirrors
code-review-graph's _sanitize_name pattern
- graphify/ingest.py: _fetch_html() and _download_binary() now use safe_fetch*;
ingest() validates URL scheme and wraps network calls in try/except;
YAML frontmatter: newlines stripped from question before embedding
- graphify/extract.py: all 33 bare .decode() → .decode("utf-8", errors="replace")
— non-UTF-8 source files degrade gracefully instead of crashing extraction
- graphify/export.py: sanitize_label() on all node labels and edge titles
before pyvis embeds them in HTML output
- graphify/serve.py: _load_graph() validates graph_path via validate_graph_path()
and wraps JSONDecodeError with recovery message; sanitize_label() on MCP
text output
- graphify/detect.py: os.walk(..., followlinks=False) made explicit
- SECURITY.md (new): threat model, mitigations table, reporting process
- tests/test_security.py (new): 20 tests covering all security.py functions
2026-04-04 18:56:38 +01:00
Safi
0b7460a9e3
perf+fix: parallel extraction, faster imports, bug fixes
...
45x faster cluster import, 135x faster detect, parallel subagent extraction,
auto-exclude venvs/caches, suggest_questions fix, manifest fix, install CLI
2026-04-04 18:56:38 +01:00
Safi
e7a03a0539
feat: cache, multi-language extraction, MCP, memory feedback
...
call-graph INFERRED edges, multi-language semantic extraction, SHA256 cache,
MCP stdio server with shortest_path, Q&A memory feedback loop
2026-04-04 18:56:38 +01:00
Safi
ce47198be1
feat: Claude Code skill, Obsidian vault, install, tests
...
skill.md with full pipeline steps, Obsidian as default output (canvas, tags,
dataview, graph colors), two-command install, 71 tests, .gitignore, deps
2026-04-04 18:53:43 +01:00
Safi
77966a7622
feat: core pipeline
...
detect, extract (AST + call-graph), build, cluster, analyze, report, export
PDF extraction, tree-sitter AST, pyvis HTML, schema validation
2026-04-04 18:52:44 +01:00