Skip to content
This repository was archived by the owner on Jun 18, 2026. It is now read-only.

Releases: sauravbhattacharya001/GraphVisual

v2.63.0 — Agentic Advisors, Performance Hot-Loops & Build Hardening

Choose a tag to compare

@sauravbhattacharya001 sauravbhattacharya001 released this 19 May 00:57

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 tests
  • GraphInfluenceSeedAdvisor — SPREAD/CONTAINMENT seed-selection advisor (238 tests)
  • GraphPrivacyExposureAuditor — autonomous re-identification risk auditor
  • GraphAdversaryForecaster — adversarial-intent modeler
  • GraphSynchronizationEngine — autonomous Kuramoto oscillator simulation
  • GraphFairnessAuditEngine — autonomous network equity analyzer
  • GraphInformationDiffusionEngine — autonomous cascade simulation
  • GraphSpectralClusteringEngine — autonomous spectral partitioning
  • GraphNetworkControllabilityEngine — structural controllability analysis
  • GraphPercolationEngine — 7-engine percolation analysis with health scoring & HTML dashboard (46 tests)
  • GraphInfluenceCampaignPlanner — strategic influence maximization
  • GraphAutonomousRepairEngine — structural weakness detection & repair planning
  • GraphOpinionDynamicsEngine — autonomous opinion formation simulation
  • GraphTemporalDynamicsEngine — autonomous temporal network analysis
  • GraphGameTheoryEngine — 6 engines (Shapley, Nash, coalitions, bargaining power, strategic position) + 28 tests
  • GraphKnowledgeExtractor — autonomous knowledge extraction & link prediction
  • GraphTopologyHypothesisTester — structural classification
  • NetworkImmunizationPlanner — autonomous epidemic containment
  • GraphSentinel — autonomous structural drift detector
  • GraphEvolutionSimulator — 5 growth models + tipping-point detection
  • GraphAutoPilot — 6 weakness diagnostics, 5 action types, health scoring, impact simulation (28 tests)
  • GraphIntelligenceAdvisor — proactive recommendations via structural fingerprinting

🚀 Performance

  • EdgePersistenceAnalyzer — memoize classify() to eliminate O(W·E) re-scans (#168)
  • NMI/ARI — O(n) contingency tables; replaced O(k_A·k_B) set-copy intersections
  • IndependentSetAnalyzer — eliminate dead loop, drop to O(Σ|MIS|) accumulation, adjacency-backed IS check
  • GraphGameTheoryEngine — cache coalition values in greedy merge
  • NetworkImmunizationPlanner — O(|infected|) SIR simulation (was O(V) per step); precompute centrality rankings once
  • GraphKnowledgeExtractor — cache edgeSet at construction
  • InfluenceSpreadSimulator — eliminate per-edge String allocation in Monte Carlo hot loops
  • IndependentSetAnalyzer — adjacency-backed IS check
  • LT diffusion — incremental active-neighbor tracking
  • EdgeBetweennessAnalyzer — O(1) edge lookup via pre-built index
  • NodeSimilarityAnalyzer — O(V·Δ²) 2-hop pair enumeration
  • GraphColoringAnalyzer — O(1) adjacency and degree lookups
  • GraphDrawingQualityAnalyzer — AABB early rejection for edge-crossing detection
  • Dijkstra PQ — replaced String[]/parseDouble entries with typed DijkstraEntry

🔒 Security / correctness

  • HTML-escape user-controlled vertex names in HTML reports (CWE-79)
  • computeNormalizedCut — use intValue() for Integer comparison (#166)
  • Replaced broken QR with Colt EigenvalueDecomposition (#169)
  • RandomWalkAnalyzer — guard against null getNeighbors (NPE on isolated vertices)
  • Intervention planner — partner selection + coupling sweep reproducibility
  • GraphComplementAnalyzer — fix wrong Edge constructor argument order

🧰 Refactor

  • IndexedGraph — extract subset-aware constructor; dedupe in WienerIndexCalculator
  • GraphSentinel — hoist degree/hub computation out of sub-methods
  • GraphProductCalculator.strongProduct — rewrite via edge iteration + tests
  • GraphSparsificationAnalyzer — extract newEmptyShell + addEdgeCopy
  • Shared GraphUtils — deduplicate buildAdjacency + BFS

🧹 Cleanup

  • Remove 83 lines of dead/unreachable private methods + unused imports
  • Remove 15 unused imports and 4 redundant escapeHtml wrappers across 15 files
  • Remove 9 stale duplicate test files under src/test/gvisual (–2,345 LoC)
  • Replace remaining zalenix string refs with sauravbhattacharya001
  • @author Javadoc and vendor metadata normalized

🛠 Build / CI

  • Repair main javac and pom test exclude; bump CI to Java 11
  • Repair two illegal Javadoc escapes blocking mvn compile
  • Harden CI build; add QuadTree/EdgeType tests
  • Harden CodeQL config; add ThresholdConfig and AnalysisResult tests
  • 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 coverage
  • coverage.yml + codecov.yml configured
  • 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

Choose a tag to compare

@sauravbhattacharya001 sauravbhattacharya001 released this 25 Apr 19:34

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

Choose a tag to compare

@sauravbhattacharya001 sauravbhattacharya001 released this 25 Apr 06:24

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

Choose a tag to compare

@sauravbhattacharya001 sauravbhattacharya001 released this 24 Apr 08:56

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

Choose a tag to compare

@sauravbhattacharya001 sauravbhattacharya001 released this 24 Apr 01:19

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

Choose a tag to compare

@sauravbhattacharya001 sauravbhattacharya001 released this 23 Apr 19:32

What's Changed

Performance

  • GraphPartitioner KL refinement optimization — Two significant improvements to
    efineKLPair:
    1. 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
    2. 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

Choose a tag to compare

@sauravbhattacharya001 sauravbhattacharya001 released this 23 Apr 02:55

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

Choose a tag to compare

@sauravbhattacharya001 sauravbhattacharya001 released this 23 Apr 00:24

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

Choose a tag to compare

@sauravbhattacharya001 sauravbhattacharya001 released this 22 Apr 18:26

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

Choose a tag to compare

@sauravbhattacharya001 sauravbhattacharya001 released this 22 Apr 05:48

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