Safi
f6dd049cb0
Add .docx and .xlsx support via optional [office] extra
...
python-docx converts .docx to markdown (headings, lists, tables).
openpyxl converts .xlsx sheets to markdown tables. Both are
pre-converted to .md sidecars in graphify-out/converted/ before
semantic extraction - no skill changes needed. Graceful fallback
if [office] not installed: file is skipped with an install hint.
v0.3.5
2026-04-07 12:38:03 +01:00
Safi
a06313a0f9
Fix UnicodeDecodeError on Windows GBK locale: add encoding=utf-8 to all read_text/write_text calls
v0.3.4
2026-04-07 11:54:54 +01:00
Safi
db2d297296
Add Windows support: skill-windows.md with PowerShell-compatible commands
...
graphify install now auto-detects Windows and installs the Windows skill
variant. skill-windows.md replaces bash-specific commands (which, head, tr,
rm -f, mkdir -p) with PowerShell equivalents. Bumps to v0.3.3.
v0.3.3
2026-04-07 11:30:08 +01:00
Safi
abd55cca9a
Add GitHub Sponsors badge to README
2026-04-07 10:50:59 +01:00
Safi
e5e93c8180
Add GitHub Sponsors funding config
2026-04-07 10:46:36 +01:00
Safi
1a109afdce
Add star history chart to README
2026-04-07 10:33:31 +01:00
Safi
d7230a24c3
bump version to 0.3.2
v0.3.2
2026-04-07 09:59:01 +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
b079c6713a
Add Factory Droid platform support
2026-04-07 09:34:28 +01:00
Safi
8c1d5e8114
Update SECURITY.md: supported versions, SSRF and YAML injection mitigations
2026-04-06 22:38:02 +01:00
Safi
808cd98395
Fix YAML injection in webpage title and query frontmatter
2026-04-06 22:35:19 +01:00
Safi
e7bd4f38ee
bump version to 0.3.1
v0.3.1
2026-04-06 22:24:21 +01:00
Safi
c529e2217f
Fix 8 bugs: SSRF in tweet fetch, Cypher injection, XSS in community labels, graph_diff edge ordering, cache key collision, hook uninstall correctness, watch mode set, rebuild word count
2026-04-06 22:23:55 +01:00
Safi
4e844ea907
Update README: git hook failure behavior
2026-04-06 22:23:55 +01:00
Safi
148e247662
Fix 6 bugs: hook exit code, token budget, file node detection, duplicate function, atomic cache writes, deleted file tracking
2026-04-06 22:23:55 +01:00
Safi
9eda1558c2
feat: Lua language support
2026-04-06 21:59:38 +01:00
Safi
79b8d8d9b2
docs: add Simplified Chinese README
...
Add a Chinese README translation and link it from the main README for easier language discovery.
2026-04-06 21:59:38 +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
404674a24a
security: SSRF private IP blocking and Neo4j Cypher injection fix
...
Two targeted security hardening changes:
1. SSRF: validate_url() now resolves hostnames and blocks private/reserved
IP ranges (127.x, 10.x, 169.254.x, etc.) and cloud metadata endpoints.
Prevents SSRF attacks in cloud environments where a URL like
http://169.254.169.254/latest/meta-data/ could leak instance credentials.
2. Neo4j Cypher injection: Node labels (file_type) are now sanitized to
alphanumeric + underscore before interpolation into Cypher queries.
Previously, attacker-controlled file_type metadata could inject
arbitrary Cypher in team/shared graph scenarios.
Both changes are zero-impact on normal UX - no new config, no new flags,
no behavioral changes for legitimate use.
2026-04-06 21:59:38 +01:00
Safi
934957cbfd
update worked example READMEs for v3 multi-platform
2026-04-06 16:20:13 +01:00
Safi
e11d04f8c2
explain always-on vs explicit trigger in README
2026-04-06 16:15:51 +01:00
Safi
1a54f16b80
feat: always-on hooks and README updates for all platforms
2026-04-06 16:06:31 +01:00
Safi
aed4a981a1
v3: MIT license, multi-platform packaging and CI
2026-04-06 16:06:31 +01:00
Safi
3694822040
document node deduplication strategy in build.py
2026-04-06 16:06:31 +01:00
Safi
5461feb7e8
refactor extract.py: LanguageConfig + _extract_generic replaces 10 copy-pasted extractors (2527 → 1588 lines)
2026-04-06 16:06:31 +01:00
Safi
6570488658
fix build() dropping hyperedges when merging multiple extractions
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
07de9d5c22
fix: use correct Python interpreter for pipx installs
2026-04-06 16:06:31 +01:00
Safi
c1bf6c90dc
fix graspologic optional, fall back to networkx louvain, add privacy section
2026-04-06 16:06:31 +01:00
Safi
4ba8198c7c
v2.1: PyPI release and CI for v2 branch
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
0ee77c0b6a
bump version to 0.2.0
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
3f8169c807
README: highlight multimodal capability upfront
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
63d80200c5
README: clarify any folder works, clean up usage section
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
21e443e201
Add reproducible worked example with 7 input files and README
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
92ab83ea38
Use graph.json for follow-up questions; bump to 0.1.6
2026-04-06 16:06:31 +01:00
Safi
cb4ec5d39d
fix: HTML always generated by default in Step 6, not flag-gated
2026-04-06 16:06:31 +01:00
Safi
010583674e
release: 0.1.5
2026-04-06 16:06:31 +01:00
Safi
d8b1e82079
fix: 5 skill gaps - graphml usage, manifest timing, graph existence checks, no-viz clarity
...
- Add --graphml to Usage table (was implemented but undocumented there)
- Remove early manifest save from --update merge step (Step 9 owns it; saving early meant failed pipelines left manifest ahead of graph)
- query/path/explain now check graph.json exists before running, with clear "run /graphify first" message
- --no-viz: clarify it skips both Obsidian vault and HTML (was contradictory)
2026-04-06 16:06:31 +01:00
Safi
ef8c2fef50
perf: larger chunks + code-only fast path + timing estimates
...
- Semantic extraction chunks: 12-15 → 20-25 files (fewer subagent round trips)
- Code-only corpora skip semantic dispatch entirely (AST covers it)
- Print estimated time before extraction so the wait feels intentional
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