Fix Ukrainian README typo, Unicode vocab regex, add migration note for Java extends->inherits
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
238702b697
commit
a4a615da97
@@ -2,6 +2,16 @@
|
|||||||
|
|
||||||
Full release notes with details on each version: [GitHub Releases](https://github.com/safishamsi/graphify/releases)
|
Full release notes with details on each version: [GitHub Releases](https://github.com/safishamsi/graphify/releases)
|
||||||
|
|
||||||
|
## 0.8.18 (2026-05-24)
|
||||||
|
|
||||||
|
- Fix: post-commit hook now updates graph after delete-only commits — shrink-guard is bypassed when `changed_paths` contains explicit deletions, preventing stale nodes from accumulating indefinitely (#1000)
|
||||||
|
- Fix: `graphify export` (html/obsidian/wiki/svg/graphml/neo4j) no longer collapses to "Single community" when `.graphify_analysis.json` is absent — falls back to per-node `community` attribute already present in `graph.json` (#1001)
|
||||||
|
- Fix: Ukrainian README translation updated to v8 — all new sections, correct badges, 31 languages (#995)
|
||||||
|
- Feat: semantic context tags on `references` edges for Python/JS/TS/C#/Java — `parameter_type`, `return_type`, `generic_arg`, `attribute`, `field`; C#/Java split `inherits`/`implements`; dedup key now includes context (#996)
|
||||||
|
- **Breaking:** Java `extends` edges are now emitted as `inherits` — queries filtering on `relation="extends"` for Java nodes must be updated to `relation="inherits"`
|
||||||
|
- Feat: constrained query expansion in skill — Step 0 extracts actual graph vocab and forces LLM to pick expansion tokens only from that set, preventing hallucinated expansions; Unicode regex fix captures Cyrillic/CJK labels (#998)
|
||||||
|
- Docs: Ukrainian README updated to v8 with all new sections, correct badges, YC badge, 31 language count (#995)
|
||||||
|
|
||||||
## 0.8.17 (2026-05-23)
|
## 0.8.17 (2026-05-23)
|
||||||
|
|
||||||
- Fix: Case-sensitive call resolution for Go, Rust, and Elixir — resolvers previously lowercased both the label index and the callee name, causing `Authorize` to match `authorize` and produce phantom edges; Ruby/C#/Java/Kotlin/Scala/PHP use the same generic resolver which now splits into case-sensitive (all languages) and case-insensitive (PHP only, where function/class names are genuinely case-insensitive) dicts (#993)
|
- Fix: Case-sensitive call resolution for Go, Rust, and Elixir — resolvers previously lowercased both the label index and the callee name, causing `Authorize` to match `authorize` and produce phantom edges; Ruby/C#/Java/Kotlin/Scala/PHP use the same generic resolver which now splits into case-sensitive (all languages) and case-insensitive (PHP only, where function/class names are genuinely case-insensitive) dicts (#993)
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ graphify install --project --platform codex
|
|||||||
| `openai` | OpenAI / OpenAI-сумісні API | `pip install "graphifyy[openai]"` |
|
| `openai` | OpenAI / OpenAI-сумісні API | `pip install "graphifyy[openai]"` |
|
||||||
| `gemini` | Google Gemini API | `pip install "graphifyy[gemini]"` |
|
| `gemini` | Google Gemini API | `pip install "graphifyy[gemini]"` |
|
||||||
| `bedrock` | AWS Bedrock (використовує IAM, без API-ключа) | `pip install "graphifyy[bedrock]"` |
|
| `bedrock` | AWS Bedrock (використовує IAM, без API-ключа) | `pip install "graphifyy[bedrock]"` |
|
||||||
| `sql` | Вилучення SQL схеит | `pip install "graphifyy[sql]"` |
|
| `sql` | Вилучення SQL схем | `pip install "graphifyy[sql]"` |
|
||||||
| `all` | Все вищезазначене | `pip install "graphifyy[all]"` |
|
| `all` | Все вищезазначене | `pip install "graphifyy[all]"` |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
+3
-2
@@ -979,8 +979,9 @@ from pathlib import Path
|
|||||||
data = json.loads(Path('graphify-out/graph.json').read_text())
|
data = json.loads(Path('graphify-out/graph.json').read_text())
|
||||||
vocab = set()
|
vocab = set()
|
||||||
for n in data['nodes']:
|
for n in data['nodes']:
|
||||||
for c in re.findall(r'[A-Za-z]+', n.get('label','') or ''):
|
for c in re.findall(r'[^\W\d_]+', n.get('label','') or '', re.UNICODE):
|
||||||
for p in re.findall(r'[A-Z]+(?=[A-Z][a-z])|[A-Z]?[a-z]+|[A-Z]+', c):
|
parts = re.findall(r'[A-Z]+(?=[A-Z][a-z])|[A-Z]?[a-z]+|[A-Z]+', c) or [c]
|
||||||
|
for p in parts:
|
||||||
t = p.lower()
|
t = p.lower()
|
||||||
if 3 <= len(t) <= 30:
|
if 3 <= len(t) <= 30:
|
||||||
vocab.add(t)
|
vocab.add(t)
|
||||||
|
|||||||
Reference in New Issue
Block a user