Skip to content

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

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions