Commit Graph

  • a7f910667d feat: GraphML export (--graphml flag) for Gephi and yEd Safi 2026-04-04 23:18:53 +01:00
  • cf7f42d3e7 docs: lead with Karpathy problem → graphify answer framing Safi 2026-04-04 19:53:05 +01:00
  • 24bcd6d448 docs: CI, architecture guide, worked examples, README fixes - Add GitHub Actions CI workflow (Python 3.10 and 3.12) - Add CI badge to README - Add ARCHITECTURE.md: pipeline overview, module table, schema, how to add a language extractor, security summary - Move eval reports from tests/ to worked/httpx/ and worked/mixed-corpus/ - Fix README: test count 163→212, language table (13 languages via tree-sitter), extract.py description, worked examples links Safi 2026-04-04 18:46:34 +01:00
  • 81a43f028f feat: 13-language AST support and token benchmark Safi 2026-04-04 17:28:35 +01:00
  • 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 Safi 2026-04-04 17:23:05 +01:00
  • 0b7460a9e3 perf+fix: parallel extraction, faster imports, bug fixes Safi 2026-04-04 14:04:39 +01:00
  • e7a03a0539 feat: cache, multi-language extraction, MCP, memory feedback Safi 2026-04-04 13:02:41 +01:00
  • ce47198be1 feat: Claude Code skill, Obsidian vault, install, tests Safi 2026-04-03 23:51:00 +01:00
  • 77966a7622 feat: core pipeline Safi 2026-04-03 18:56:14 +01:00