Skip to content

0.2.0: Visual Intelligence — Charts, Color Output, Progress Feedback #2

@farhan-syah

Description

@farhan-syah

Overview

FluxBench 0.1.x built the engine: crash isolation, bootstrap statistics, algebraic verification, baseline comparison. 0.2.0 makes that engine legible — to humans scanning a terminal, reviewing a PR, or opening a dashboard.

The theme is "Visual Intelligence": every chart, color-coded terminal line, and polished summary serves one goal — making performance regressions impossible to miss.

New visualization capabilities are feature-gated. The default build (cargo add fluxbench) stays lean. Users opt in to what they need.


Feature Flags

[dependencies]
fluxbench = "0.2"                                         # Core — includes progress lines, GitHub summary polish
fluxbench = { version = "0.2", features = ["charts"] }    # + plotr for PNG/SVG/HTML charts
fluxbench = { version = "0.2", features = ["color"] }     # + colored terminal output
fluxbench = { version = "0.2", features = ["full"] }      # Everything
Feature Pulls in What it enables
charts plotr PNG/SVG/HTML chart generation, HTML dashboard
color TBD (minimal) Colored terminal output (green/red/yellow)
full All of the above Everything enabled

Without any feature flags, 0.2.0 ships: progress lines, GitHub summary enhancements, and --format github-action output. Zero new dependencies.


charts — Chart Generation (plotr)

Feature flag: charts

Standalone chart rendering via the plotr crate. The model follows matplotlib/pyplot: generate image files that work anywhere, not just inside HTML.

Output Formats

  • --chart-format svg — Vector graphics for GitHub summary markdown, docs, web embedding
  • --chart-format png — Raster images for CI artifacts, Slack, email reports
  • --chart-format html — Interactive charts with hover tooltips, zoom, pan
  • --chart-dir target/fluxbench/charts/ — Configurable output directory
  • Charts also embedded inline when --output html is used

Chart Types

  • Distribution plots — Histogram + violin overlay per benchmark (sample distribution, outlier bands, bootstrap CI shading)
  • Comparison charts — Grouped bar charts for comparison groups with error bars from bootstrap CIs
  • Series plots — Line charts for scaling studies (args = [64, 128, 256, ...]) with parameter on x-axis
  • Baseline delta view — Side-by-side distribution overlay (old vs new) with regression probability
  • Scatter timeline — Metric drift over time across multiple runs (commit axis)

HTML Dashboard

When --output html (requires charts), charts compose into a full dashboard:

  • Single-file HTML (embedded CSS + SVG, zero external dependencies)
  • Synthetic metric KPI cards, verification status strip
  • Dark mode (prefers-color-scheme + toggle)
  • Responsive layout

GitHub Actions Usage

- run: cargo fluxbench --chart-format svg
- run: echo '![Distribution](target/fluxbench/charts/distribution.svg)' >> $GITHUB_STEP_SUMMARY

Blocked on: plotr crate readiness


color — Colored Terminal Output

Feature flag: color

Scannable at a glance:

  • Green — improvements, passing verifications
  • Red — regressions, failing verifications
  • Yellow — within-noise, warnings
  • Bold — benchmark names, section headers
  • Dim — metadata (commit, timestamp)
  • Respects $NO_COLOR, $FORCE_COLOR, isatty() detection
  • Graceful fallback to plain text when unsupported or feature disabled

Without the color feature, output is identical to 0.1.x (plain text).


Progress Lines (no feature flag)

Simple, zero-dependency progress output during execution:

  • [3/12] matmul_1024... — shows current benchmark and progress
  • 12 benchmarks completed in 4m 32s — summary on completion
  • Active worker count when --jobs N > 1

No progress bars, no ETA, no indicatif. Just print lines.


GitHub Summary Enhancements (no feature flag)

Zero-dependency improvements to the existing markdown output:

  • Collapsible sections<details> for per-benchmark distribution stats to keep summary scannable
  • Verification badge5/5 passed or 3/5 passed, 2 FAILED at the top
  • Sparkline trends — Inline ASCII sparkline per benchmark (last N runs, if historical baselines available)

--format github-action (no feature flag, shipped in 0.1.3)

Compatible with github-action-benchmark for historical performance tracking on GitHub Pages:

cargo fluxbench --format github-action -o output.json
- uses: benchmark-action/github-action-benchmark@v1
  with:
    tool: 'customSmallerIsBetter'
    output-file-path: output.json

Workstreams

Area Feature flag Blocked on Scope
Chart generation (PNG/SVG/HTML) charts plotr fluxbench-report
Colored terminal output color Nothing fluxbench-cli
Progress lines None (default) Nothing fluxbench-cli
GitHub summary polish None (default) Nothing fluxbench-report
github-action-benchmark format None (default) Done (0.1.3) fluxbench-report

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions