* feat(export): GRAPHIFY_VIZ_NODE_LIMIT env var to override MAX_NODES_FOR_VIZ
Adds opt-in env var so users with large graphs (>5000 nodes) can either
raise the HTML viz limit or disable viz entirely (set to 0) without
patching the package.
- New _viz_node_limit() helper reads GRAPHIFY_VIZ_NODE_LIMIT, falls back
to MAX_NODES_FOR_VIZ on unset/empty/non-integer values.
- to_html() now uses the helper; ValueError message references both
--no-viz and GRAPHIFY_VIZ_NODE_LIMIT for discoverability.
- 7 new tests in test_export.py covering default, raise/lower, zero,
invalid, empty, and end-to-end to_html behavior.
Addresses option 2 in #541 (env var as default behavior, zero-config
for most users, tunable for large repos.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
EOF
)
* feat(cluster-only): wire --no-viz flag and tolerate ValueError mid-write
Before this change, `graphify cluster-only <path>` called to_html()
unconditionally, so on graphs >5000 nodes the ValueError fired AFTER
graph.json was written but BEFORE the "Done — ..." print, leaving a
stale graph.html on disk and no clear signal in the CLI output.
This mirrors the watch.py rebuild pattern (already merged): try/except
around to_html, delete the stale graph.html when skipping, and emit a
"Done" line that accurately reflects which artifacts landed.
- Parse "--no-viz" from sys.argv (documented as such in skill.md but
previously never wired into the Python CLI).
- Wrap to_html() in try/except so core outputs (graph.json +
GRAPH_REPORT.md) always land.
- Remove stale graph.html when viz is skipped or fails — avoids the
silent desync where graph.html lags behind graph.json by days.
- Update help text under `cluster-only` to advertise --no-viz.
Addresses option 1 in #541 (--no-viz flag, simplest opt-in).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Tayfun Sert,MBA <tayfunsert@hotmail.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>