Releases: sauravbhattacharya001/GraphVisual
Release list
v2.63.0 — Agentic Advisors, Performance Hot-Loops & Build Hardening
v2.63.0 — Agentic Advisors, Performance Hot-Loops & Build Hardening
This release rolls up 79 commits since v2.62.0, dominated by a new wave of
autonomous "agentic" analysis engines, targeted performance fixes in hot paths,
and a healthier build/CI surface (Java 11, repaired javadoc/javac errors,
tighter CodeQL configuration, expanded test coverage).
✨ New agentic advisors / engines (10+)
GraphCascadingFailureAdvisor— agentic cascading-failure resilience advisor with 240 unit testsGraphInfluenceSeedAdvisor— SPREAD/CONTAINMENT seed-selection advisor (238 tests)GraphPrivacyExposureAuditor— autonomous re-identification risk auditorGraphAdversaryForecaster— adversarial-intent modelerGraphSynchronizationEngine— autonomous Kuramoto oscillator simulationGraphFairnessAuditEngine— autonomous network equity analyzerGraphInformationDiffusionEngine— autonomous cascade simulationGraphSpectralClusteringEngine— autonomous spectral partitioningGraphNetworkControllabilityEngine— structural controllability analysisGraphPercolationEngine— 7-engine percolation analysis with health scoring & HTML dashboard (46 tests)GraphInfluenceCampaignPlanner— strategic influence maximizationGraphAutonomousRepairEngine— structural weakness detection & repair planningGraphOpinionDynamicsEngine— autonomous opinion formation simulationGraphTemporalDynamicsEngine— autonomous temporal network analysisGraphGameTheoryEngine— 6 engines (Shapley, Nash, coalitions, bargaining power, strategic position) + 28 testsGraphKnowledgeExtractor— autonomous knowledge extraction & link predictionGraphTopologyHypothesisTester— structural classificationNetworkImmunizationPlanner— autonomous epidemic containmentGraphSentinel— autonomous structural drift detectorGraphEvolutionSimulator— 5 growth models + tipping-point detectionGraphAutoPilot— 6 weakness diagnostics, 5 action types, health scoring, impact simulation (28 tests)GraphIntelligenceAdvisor— proactive recommendations via structural fingerprinting
🚀 Performance
EdgePersistenceAnalyzer— memoizeclassify()to eliminate O(W·E) re-scans (#168)NMI/ARI— O(n) contingency tables; replaced O(k_A·k_B) set-copy intersectionsIndependentSetAnalyzer— eliminate dead loop, drop to O(Σ|MIS|) accumulation, adjacency-backed IS checkGraphGameTheoryEngine— cache coalition values in greedy mergeNetworkImmunizationPlanner— O(|infected|) SIR simulation (was O(V) per step); precompute centrality rankings onceGraphKnowledgeExtractor— cacheedgeSetat constructionInfluenceSpreadSimulator— eliminate per-edgeStringallocation in Monte Carlo hot loopsIndependentSetAnalyzer— adjacency-backed IS check- LT diffusion — incremental active-neighbor tracking
EdgeBetweennessAnalyzer— O(1) edge lookup via pre-built indexNodeSimilarityAnalyzer— O(V·Δ²) 2-hop pair enumerationGraphColoringAnalyzer— O(1) adjacency and degree lookupsGraphDrawingQualityAnalyzer— AABB early rejection for edge-crossing detection- Dijkstra PQ — replaced
String[]/parseDoubleentries with typedDijkstraEntry
🔒 Security / correctness
- HTML-escape user-controlled vertex names in HTML reports (CWE-79)
computeNormalizedCut— useintValue()forIntegercomparison (#166)- Replaced broken QR with Colt
EigenvalueDecomposition(#169) RandomWalkAnalyzer— guard against nullgetNeighbors(NPE on isolated vertices)- Intervention planner — partner selection + coupling sweep reproducibility
GraphComplementAnalyzer— fix wrongEdgeconstructor argument order
🧰 Refactor
IndexedGraph— extract subset-aware constructor; dedupe inWienerIndexCalculatorGraphSentinel— hoist degree/hub computation out of sub-methodsGraphProductCalculator.strongProduct— rewrite via edge iteration + testsGraphSparsificationAnalyzer— extractnewEmptyShell+addEdgeCopy- Shared
GraphUtils— deduplicatebuildAdjacency+ BFS
🧹 Cleanup
- Remove 83 lines of dead/unreachable private methods + unused imports
- Remove 15 unused imports and 4 redundant
escapeHtmlwrappers across 15 files - Remove 9 stale duplicate test files under
src/test/gvisual(–2,345 LoC) - Replace remaining
zalenixstring refs withsauravbhattacharya001 @authorJavadoc and vendor metadata normalized
🛠 Build / CI
- Repair main
javacandpomtest exclude; bump CI to Java 11 - Repair two illegal Javadoc escapes blocking
mvn compile - Harden CI build; add
QuadTree/EdgeTypetests - Harden CodeQL config; add
ThresholdConfigandAnalysisResulttests - Maven Wrapper added; post-publish verification job in
publish.yml - Cross-platform installer scripts + Scoop manifest
🧪 Tests added / expanded
GraphCascadingFailureAdvisorTest(240),GraphInfluenceSeedAdvisorTest(238)GraphMotifFinderTest(18),GraphDegreeSequenceRandomizerTest(16)GraphComplementAnalyzer,DominatingSetAnalyzer,EdgeType,QuadTree,
NetworkFlowExporter,RandomGraphGenerator,ThresholdConfig,
AnalysisResult— comprehensive coveragecoverage.yml+codecov.ymlconfigured- Auto-discover tests; 3 new test suites
📦 Packaging / release infra
- Issue templates: CI failure + documentation
- Issue auto-triage workflow with content-based labeling
- GHCR / Security Policy / Copilot Ready / Auto Label / Stale Bot badges
- Documentation pages for 19 missing analyzers + Transformation & Special-Classes sections
- Local CI reproduction, benchmarking, and dependency management docs in CONTRIBUTING.md
- Comprehensive CONTRIBUTING.md rewrite with full 147-class module catalog
📈 Stats
- 79 commits since v2.62.0
- 25 feat, 13 perf, 6 fix, 7 refactor, 7 test, 10 docs (plus chore/ci/cleanup/security/deps)
Full diff: v2.62.0...v2.63.0
v2.62.0 — Graph Partitioning Visualizer, GNN Playground & Narrative Generator
What's New
✨ Features
- Interactive Graph Partitioning Visualizer — Kernighan-Lin algorithm with real-time visualization of partition refinement steps
- GNN Playground — interactive Graph Neural Network message-passing visualization for exploring node embeddings and layer propagation
- Graph Narrative Generator — autonomous natural-language report generation from graph structure and metrics
⚡ Performance
- O(1) neighbor index lookups in face-walk dart tracing (planar embedding)
- O(V·Δ²) 4-cycle counting in MotifAnalyzer via 2-path enumeration (previously O(V²·E))
🔧 Refactoring
- Eliminated redundant adjacency map rebuilds in ChordalGraphAnalyzer
- Deduplicated Tarjan bridge-finding into shared \GraphUtils.findBridges\
📚 Documentation
- Comprehensive TESTING.md guide with coverage gap inventory of 40 untested classes
- Updated README testing section
Full Changelog: v2.61.0...v2.62.0
v2.61.0 — Security Hardening, Resilience BFS & Planar Refactor
What's Changed
Security
- HTML-escape vertex names in Swing panel controllers — prevents CWE-79 XSS via malicious vertex names rendered in JLabel HTML (3 controllers patched)
- Pre-read file size check in GraphAnnotationManager — prevents CWE-400 OOM denial-of-service when loading oversized annotation files
Performance
- Single-pass BFS in GraphResilienceAnalyzer — computes component count and largest component size in one traversal instead of separate passes
Refactoring
- Deduplicate PlanarGraphAnalyzer.countComponents — delegates to existing GraphUtils implementation, removing ~30 lines of duplicated BFS code
Full Changelog: v2.60.0...v2.61.0
v2.60.0 — Link Prediction, Chromatic Polynomial Tests & Steiner Tree Performance
What's Changed
Performance
- SteinerTreeAnalyzer: O(1) edge lookup via HashSet + linear-time tree pruning replacing O(V²·E) degree recount loops
- LinkPredictionAnalyzer: 2-hop pair enumeration in predict() and predictEnsemble() — dramatically reduces candidate generation for sparse graphs
Refactoring
- TopologicalSortAnalyzer: Eliminated redundant Kahn's algorithm pass — cycle detection now reuses the primary topological sort traversal instead of running a separate BFS
Testing
- ChromaticPolynomialCalculator: Comprehensive test suite covering deletion-contraction, complete graphs, bipartite graphs, trees, and edge cases
Full Changelog: v2.59.0...v2.60.0
v2.59.0 — Interactive Motif Census with Significance Testing
What's Changed
New Feature
- Interactive Motif Census — Full subgraph pattern analysis tool with statistical significance testing
- Enumerate 6 motif types: triangle, wedge, 3-star, square, diamond, K4
- 8 graph presets: Karate Club, social network, star, ring, random, complete, bipartite, scale-free
- Custom edge list input for user-defined graphs
- Canvas force-directed visualization with motif instance highlighting
- Census bar chart for pattern frequency comparison
- Erdős–Rényi random graph ensemble comparison with z-score significance profiling
- Autonomous proactive insights engine: clustering coefficient analysis, hub detection, network type classification
- Interactive features: drag nodes, pan/zoom, click motif chips to highlight specific instances
Full Changelog: v2.58.0...v2.59.0
v2.58.0 — Graph Partitioner KL Refinement Performance
What's Changed
Performance
- GraphPartitioner KL refinement optimization — Two significant improvements to
efineKLPair:- Pre-built neighbor HashSets: Neighbor sets are now constructed once outside the pass loop instead of being rebuilt per vertex per pass, eliminating O(passes × |A| × avg_degree) redundant allocations and copies
- Removed redundant list mutations: Eliminated O(|A|) + O(|B|) linear-scan \ArrayList.remove(Object)\ calls after each swap — the locked set already prevents swapped vertices from being revisited, making the removals unnecessary. For partitions of size P, this saves O(P²) total work across all swap passes
Full Changelog: v2.57.0...v2.58.0
v2.57.0 — What-If Analyzer, Influence Maximizer, Anomaly Detection Performance
What's New
✨ Graph What-If Analyzer
Interactive hypothetical modification tool — simulate edge/vertex additions and removals to see how graph metrics (centrality, connectivity, community structure) change before committing changes.
✨ Influence Maximizer
Autonomous seed selection for maximum information spread using greedy hill-climbing with marginal gain optimization. Supports multiple diffusion models (Independent Cascade, Linear Threshold).
⚡ Performance: GraphAnomalyDetector adjacency pre-computation
Pre-builds adjacency sets once during \computeRawMetrics()\ and reuses across clustering coefficient, neighbor deviation, and degree computations. Eliminates O(V) redundant JUNG \getNeighbors()\ collection allocations per vertex in the triangle-counting inner loop and removes per-vertex ArrayList + HashSet construction overhead.
Full Changelog: v2.56.0...v2.57.0
v2.56.0 — Graph Symmetry Explorer, Community Evolution & Performance Caching
What's New
✨ Features
- Graph Symmetry Explorer — automorphism detection, orbit computation & symmetry analysis for understanding structural symmetries in graphs
- Community Evolution Tracker — interactive community lifecycle visualization showing how communities form, merge, split, and dissolve over time
⚡ Performance
- GraphSparsificationAnalyzer: cached edge betweenness and bridge computation — eliminates redundant O(V·E) recalculations across repeated sparsification queries
🔧 Refactoring
- IndependentSetAnalyzer: cached adjacency map — eliminated 7+ redundant O(V+E) adjacency map rebuilds across greedy, backtracking, and analysis methods
Full Changelog: v2.55.0...v2.56.0
v2.55.0 — Interactive Visualizers, Perf Overhaul & Refactoring
Highlights
🎮 New Interactive Visualizers
- SCC Finder — Tarjan's algorithm with step-by-step animation, stack visualization, and 6 preset directed graphs
- Crossing Number Game — drag nodes to minimize edge crossings with 8 presets (Petersen, K5, K3,3, Dodecahedron, etc.), auto-solve, timer & rating
- Maximum Clique Finder — Bron-Kerbosch visualizer with R/P/X set coloring, 7 presets, and recursion logging
- Hamiltonian Path & Circuit Finder — backtracking with Warnsdorff heuristic, 8 presets, real-time animation
- Graph Storyteller — autonomous narrative generator analyzing structure and producing multi-section reports (communities, vulnerabilities, forecasts)
⚡ Performance Improvements
- Chordal analyzer: O(V+E) bucket-queue MCS replacing O(V²) linear scan; shared adjacency map eliminates up to 9 redundant rebuilds per analysis
- Chromatic polynomial: pendant vertex stripping + tree detection shortcut; batch pendant stripping + exponentiation by squaring for polynomial powers
- Dominating set: bucket-based priority for O(Δ²) amortized greedy instead of O(V²) per-round scan; incremental k-domination scoring
- Motif detection: shared pre-computed neighbor sets across all detectors; O(1) HashSet lookups replace O(degree) isNeighbor calls
- Link prediction: streaming top-K ensemble (O(K) memory vs O(V²)); allocation-free Jaccard via arithmetic union
- Resilience: bucket-queue degree attack replaces O(V²) linear scan
- Distance report: consolidate 8+ O(V²) passes into single pass
- Anomaly: O(1) node lookup via HashMap index; allocation-free counting
- Network profiler: pre-built neighbor sets for O(k²) triangle checks; reuse maxDegree
- Graph query engine: replace nested stream filters with explicit labeled loops (~2-3x faster)
- Vertex cover: eliminate O(E) string allocations in approx algorithm
🔧 Refactoring
- Slater ranking: replace O(n!) permutation enumeration with branch-and-bound search
- LocationResolver: batch SQL updates with transaction control
- Chordal public API: deduplicate adjacency map construction
- DominatingSetAnalyzer: extract helpers, optimize independence check
- NetworkFlowAnalyzer: remove dead code, cache flow decomposition
- RandomGraphGenerator: fix broken Edge constructor
- GraphSampler: extract 4 shared helpers, -76 lines
- Motif detector: share neighbor sets, deduplicate local clustering
- ShortestPathFinder: deduplicate DijkstraEntry with GraphUtils
🐛 Bug Fixes
- Fix broken \degCV\ field name → \degreeCV\ in network classify()
- Fix broken Edge constructor in RandomGraphGenerator
- Fix path traversal, resource leak, and encoding in resilience CSV export
- Fix stray closing brace in computeFillIn (compilation error)
🧪 Testing
- EdgeBetweennessAnalyzer: 17 comprehensive test cases
- DimacsExporter: 11 test cases covering edge cases and null handling
- GraphPowerCalculator: 20 tests (power computation, caching, error handling)
- PerfectGraphAnalyzer: 15 tests (perfect/imperfect classification, odd holes)
🔄 CI
- Bump actions/checkout v4→v6, stale v9→v10, deploy-pages v4→v5, upload-pages-artifact v4→v5, github-script v7→v9, setup-qemu-action v3→v4
- Updated copilot-instructions.md with accurate project state (272 Java files, 105 test suites)
v2.54.0 — Migration Snapshot Performance
What's Changed
Performance
- Reuse previous snapshot map in getMigrationCounts — avoids rebuilding the community-to-node lookup for the prior snapshot on every call, reducing O(V) redundant work per migration count query
- Single-pass getSummary — combined separate iteration passes into one traversal for computing community summary statistics
Full Changelog: v2.53.0...v2.54.0