Skip to content

Argus 1.0.0

Latest

Choose a tag to compare

@rlaope rlaope released this 08 Apr 05:37
· 50 commits to master since this release
9fd3f4d

Argus v1.0.0

50 CLI commands. Production-ready JVM diagnostics.

Killer Features

Command Description
argus doctor <pid> One-click JVM health diagnosis with 8-rule engine + tuning recommendations
argus gclog <file> GC log analysis with pause distribution + tuning (GCEasy alternative)
argus flame <pid> One-shot flame graph β†’ HTML β†’ browser open
argus watch <pid> Real-time terminal dashboard (htop for JVM)
argus tui [pid] k9s-style interactive terminal UI β€” browse all 50 commands
argus ci <pid> CI/CD health gate with GitHub annotations + exit codes
argus suggest <pid> JVM flag optimization by workload (web/batch/streaming)
argus compare <pid1> <pid2> Side-by-side JVM comparison with delta %
argus slowlog <pid> Real-time slow method detection via JFR streaming

Architecture

  • DiagnosticCommand SPI β€” ServiceLoader-based pluggable command system
  • CommandRegistry β€” auto-discovery, zero registration code
  • RouteTable β€” declarative HTTP routing for dashboard
  • JLine3 β€” proper terminal handling for TUI

Critical Fixes (since v0.9.0)

  • doctor/suggest/watch now properly diagnose target PID via jcmd (was diagnosing self)
  • jcmd errors propagated to user with helpful messages (was silently swallowed)
  • GC log parser: streaming (handles multi-GB), ZGC + Shenandoah support
  • suggest: classpath-based framework detection (was 3 if-statements)
  • watch: shutdown hook for terminal restore, Windows safety
  • TUI: arrow key handling fixed
  • VERSION read from JAR manifest (never drifts)

Infrastructure

  • Docker: docker run --pid=host ghcr.io/rlaope/argus doctor
  • GitHub Action: CI/CD JVM health checks with --format=github-annotations
  • 125 unit tests passing

Breaking Changes

  • CLI requires Java 21+ to run (diagnoses any JVM 11+)
  • Version numbering: 0.8.0 β†’ 1.0.0 (no intermediate releases)

What's Changed

  • refactor: introduce DiagnosticCommand SPI for pluggable command architecture by @rlaope in #55
  • refactor: migrate legacy commands to SPI + RouteTable by @rlaope in #56
  • refactor: bridge CLI commands with core CommandGroup SPI by @rlaope in #57
  • feat: argus doctor β€” one-click JVM health diagnosis with recommendations by @rlaope in #65
  • feat: argus gclog β€” GC log analysis with tuning recommendations by @rlaope in #66
  • feat: argus flame β€” one-shot flame graph with browser open by @rlaope in #67
  • feat: argus watch β€” real-time terminal dashboard (htop for JVM) by @rlaope in #68
  • feat: argus suggest β€” JVM flag optimization by @rlaope in #69
  • fix: code review fixes (deprecated API, resource leak) by @rlaope in #70
  • fix: code review round 2 (CRITICAL sparkline bug, HIGH injection fix) by @rlaope in #71
  • docs: sync to 47 commands + killer features in README by @rlaope in #72
  • docs: detailed documentation for doctor, gclog, flame, watch, suggest by @rlaope in #73
  • feat: HTML export + on-demand profiling API by @rlaope in #74
  • fix(critical): doctor/suggest/watch now diagnose target PID by @rlaope in #89
  • fix(high): GcLogParser streaming + ZGC/Shenandoah support by @rlaope in #90
  • fix(high): suggest workload detection β€” classpath-based framework detection by @rlaope in #91
  • fix(high): watch terminal β€” shutdown hook + Windows safety by @rlaope in #93
  • feat: argus tui β€” k9s-style interactive terminal UI by @rlaope in #94
  • feat: argus ci β€” CI/CD health gate with exit codes by @rlaope in #95
  • feat: argus compare β€” side-by-side JVM comparison by @rlaope in #96
  • feat: argus slowlog β€” real-time slow method detection by @rlaope in #97
  • feat: Dockerfile + GitHub Actions for Docker image by @rlaope in #98
  • feat: GitHub Action for CI/CD JVM health checks by @rlaope in #99
  • docs: final overhaul β€” 50 commands, Docker, CI/CD by @rlaope in #100
  • test+fix: 30+ tests for core features + hardened doctor rules by @rlaope in #101
  • fix: critical UX fixes for v1.0.0 by @rlaope in #102

Full Changelog: v0.9.0...v1.0.0