Bencher Changelog
v0.6.10
- Add a Y-Axis scale toggle to perf plots with three modes (Auto, Linear, and Log); the Auto default preserves the existing adaptive scaling, Log falls back to Auto when the data includes zero or negative values, and the selection is saved in the plot URL, restored for pinned plots, and can be set with
bencher plot create --y-axisor changed withbencher plot update --y-axis - Selecting a pinned plot from the Plots tab in the Perf explorer now applies the plot’s saved X-Axis and Y-Axis instead of the defaults
- Thin the Branch Version Number x-axis tick labels to fit the plot width; previously every version rendered a label, which overlapped into an unreadable smear on plots with many versions
- Add Bencher MCP, a hosted Model Context Protocol server at
https://mcp.bencher.dev/mcp(/mcpon Self-Hosted); AI agents and assistants can query benchmark data and submit runs with the same permissions as a project API key (bencher_run_*), without needing thebencherCLI installed
v0.6.9
- Add Vitest adapter (
js_vitest) - Add a
database.cache_sizeserver config option for the writer connection page cache in KiB (default 64 MiB) - Update a pinned plot in place with
PATCH /v0/projects/{project}/plots/{plot}, the Perf explorer “Update Pin” button, orbencher plot update - Reject plot dimension UUIDs from other projects with a
404 Not Foundand empty dimension lists with a400 Bad Request - Add the project name and link as the first row of the PR comment report table (Thank you @OmarTawfik)
- Create the GitHub Check with an
in_progressstatus before benchmarks run and complete it with the results once they finish, so reruns no longer show a stale conclusion; ifbencher runexits with an error before the results are posted, the check is marked as failed (Thank you @OmarTawfik) - Add runner update channels via
runner up --update-channel <stable|canary>(default:stable); thecanarychannel tracks a rolling prerelease that is rebuilt whenever the runner changes on a Bencher Cloud deploy, so runner changes are field-tested on Bencher Cloud before a versioned release;canaryrunners report their binary checksum and converge on the published build by content rather than by version - Runner self-update checksum fetch failures no longer drop the WebSocket channel into a reconnect loop; the server now logs the failure, skips the update offer, and retries at the runner’s next
readypoll - BREAKING CHANGE The reports list endpoint (
GET /v0/projects/{project}/reports) now omits theresultsandalertsfor each report by default, drastically reducing response sizes for projects with large reports; set the newexpandquery param totrue(bencher report list --expand) to restore the previous behavior. A newcountsfield summarizes each report with the number of benchmarks and distinct measures per iteration and the total and active alerts. Note that older CLI versions cannot parse the new default list response, so update the CLI before usingbencher report list;bencher runis unaffected
v0.6.8
- BREAKING CHANGE Change the default self-hosted API server port from
61016to the newly IANA-registered6610. Deployments relying on the default now serve the API on6610. Update clients, reverse proxies, and--host/BENCHER_HOSTreferences (Docker Compose, devcontainer, and docs are updated to match). To stay on61016, setserver.bind_addressto0.0.0.0:61016(or runbencher up --api-port 61016). - Mark the remaining user API token REST endpoints (list, view, update, and revoke) as deprecated in the OpenAPI spec and API docs; they continue to work for existing tokens
v0.6.7
- Fix the OCI registry token endpoint for the Docker 29+ containerd image store, which sends multiple
scopequery parameters and anOAuth2POST token exchange (Thank you @travishathaway) - Add user-scoped API keys (
bencher_user_...) that authenticate as the owning user across every endpoint a JWT can reach, includingdocker login; the one exception is key management: a user API key cannot create more keys and can only see, update, or revoke itself, so a leaked key cannot mint credentials that outlive its own revocation, tamper with the user’s other keys, or enumerate them - Add
bencher user key {create,list,view,update,revoke}CLI subcommands and an “API Keys” page in the Console for managing user API keys --key/BENCHER_API_KEYnow accepts either a project-scoped key (bencher_run_*) or a user-scoped key (bencher_user_*); the--projectrequirement applies only to project-scoped keys- DEPRECATED User API tokens are deprecated in favor of user API keys:
POST /v0/users/{user}/tokens(bencher token create) now always fails with a403 Forbiddenerror; existing API tokens continue to work and can still be listed, viewed, renamed, and revoked - Replace the
Tokensentry in the Console account dropdown withKeys, and hide the “API Tokens” page entirely for accounts created after 15 June 2026 bencher run --github-actionsnow always creates aBencher ReportGitHub Check (failing on an active Alert), so it can be used as a required status check in branch protection; the check is created on a best effort basis, so check creation failures are now warnings instead of errors (Thank you @OmarTawfik)- Create the GitHub Check on the pull request head commit (
pull_request.head.shaorworkflow_run.head_sha) instead ofGITHUB_SHA, so the check appears on the pull request - Append the
--ci-idID to the GitHub Check name (ieBencher Report (<ID>)) so multiplebencher runinvocations on the same commit get distinct, stable check names
v0.6.6
- Show context-aware auth hints in API 404 errors: routes that accept project API keys now mention both API tokens and project keys, while token-only routes mention only API tokens
- BREAKING CHANGE Rename
usagetometricsin the organization usage API response and addrunner_minutesfield for bare metal runner minutes usage - Add
--max-retry-afterCLI option to cap exponential backoff between retries (default 30s) and increase default--attemptsfrom 10 to 35 for ~15 minutes of retry coverage
v0.6.5
- Add project scoped API keys
- Add build time and file size tracking support for bare metal runs
- Fix
bencher runhanging on stdin when no command is provided, including for--imageremote bare metal runs (Thank you @sophie-h)
v0.6.4
- Allow a minimum sample size of
1for the Percentage (percentage) Threshold Test (Thank you @teofr) - BREAKING CHANGE Switch runner key format from hex to alphanumeric encoding, reducing key length from 79 to 45 characters; existing runner keys must be rotated
v0.6.3
- Fix sample standard deviation for Z-score, t-test, and Log Normal Thresholds to use Bessel’s correction (divide by
n − 1) (Thank you @ggirol-rc) - Fix t-test Threshold to use the prediction interval (scale the standard deviation by
√(1 + 1/n)) so the boundary tests whether a new Metric is consistent with the historical distribution rather than whether it contains the historical mean (Thank you @ggirol-rc) - Existing Thresholds will produce slightly wider (statistically correct) boundaries; no configuration changes required
- Fix Alert JSON to return the Spec for the Report in which the Alert was generated instead of the Testbed’s current Spec
- BREAKING CHANGE Rename
runner tokentorunner keyacross the API, CLI, and environment variables - Fix race condition where concurrent branch creation could cause a “branch head is null” 500 error (Thank you @vmelamed)
- Self-heal legacy Branches whose
head_idis stillNULLfrom the race condition above so subsequentbencher runsubmissions succeed instead of 500ing (Thank you @vmelamed) - Add API token revocation with
bencher token revokeand Revoke button in the Console
v0.6.2
- Allow unauthenticated
docker pushto unclaimed projects - Fix URL fragment placed before query string per RFC 3986 (Thank you @ricardoboss)
- Fix
--start-point-hashfailure on non-existent hash by falling back to the start point branch’s latest version (Thank you @teofr)
v0.6.1
- Buffer OCI upload network frames into configurable S3 chunks (
registry.data_store.chunk_size, default 5 MB) to reduce S3 operations during Docker push - Add
idempotency_keytobencher runto deduplicate retried submissions - Rename
--poll-intervalto--job-poll-intervalforbencher run(--poll-intervalis still supported as a deprecated alias) - Add
--detachflag tobencher runto skip waiting for remote job completion
v0.6.0
- BREAKING CHANGE Update Bencher Metric Format (BMF) to accept UUID, slug, or name for the Benchmark identifier
- Move to soft deletion for Organizations and Projects with admin-only hard deletion
- Add an OCI compliant image registry API
- Add a bare metal
runner - BREAKING CHANGE Remove the
POST /v0/server/restartendpoint and CLIbencher server restartcommand - BREAKING CHANGE Remove the
PUT /v0/server/configendpoint and CLIbencher server config updatecommand - BREAKING CHANGE Remove the deprecated
--projectflag andBENCHER_PROJECTenvironment variable from CLIbencher threshold createcommand (use the positional project argument instead) - BREAKING CHANGE Remove deprecated support for specifying multiple
--start-pointvalues for CLIbencher run(only a single start point is now accepted) - BREAKING CHANGE Remove language-level adapter options (
rust,cpp,go,java,c_sharp,js,python,ruby,shell,dart) from the CLI and API; use the specific tool adapter (e.g.rust_bench,cpp_google) ormagicinstead - Improve server concurrency with database connection pooling
- Add
[MemoryDiagnoser]support to the C# DotNet Adapter (Thank you @ricardoboss) - Add Dart
benchmark_harnessadapter (dart_benchmark_harness) (Thank you @Louisvranderick)
v0.5.10
- Fix GitHub PR comment exceeding maximum length (Thank you @alexeyr-ci2)
- Improve GitHub API error messages
- Improve developer onboarding docs (Thank you @Xenira)
- Update GitHub Actions docs (Thank you @pgoslatara)
v0.5.9
- Add Single Sign-On (SSO) API (Bencher Plus Enterprise feature)
v0.5.8
- Allow the BenchmarkDotNet
namespaceto be optional (Thank you @ntransw) - Fix Bencher Console for non-Bencher Plus builds (Thank you @flokli)
v0.5.7
- Fix workspace level feature unification for non-Bencher Plus builds (Thank you @flokli)
v0.5.6
- Fix Iai-Callgrind adapter parsing bug (Thank you @gamma0987)
- Add alias for Iai-Callgrind to Gungraun rename, (
rust_iai_callgrind->rust_gungraun)
v0.5.5
- Add
Login with Googleas an authentication option - Allow the
--fileoption to be specified multiple times to track multiple result files
v0.5.4
- Fix fork pull request example (Thank you @ruyadorno)
- Improve database backup to run in the background
- Improve server stats to run in the background
- Add branch head version to the Console UI
- BREAKING CHANGE Creating an on-the-fly project when the
CIenvironment variable is set totruewill now require the--ci-on-the-flyflag (Thank you @jaqx0r)
v0.5.3
- Improve
iai-callgrindadapter (Thank you gamma0987)
v0.5.2
- Fix empty slug validation bug
v0.5.1
- Fix horizontal wiggle in mobile view of the Console UI
- Add daily rate limiting to all resource creation
- Add
plus.rate_limitingsection to the API server configuration
v0.5.0
- Allow
bencher runto create a project if it does not exist for both anonymous and authenticated users - Deprecate the
--no-hashflag forbencher run - Move to
Linux,macOS, andWindowsas the default Testbeds forbencher run - Add log scaling to Perf Images (Thank you @brianheineman)
- Add daily rate limiting for Metrics for Organizations without a Bencher Plus plan
v0.4.37
- Add dimension search in Threshold creation UI
- Add Threshold list to Branch, Testbed, and Measure pages in Console UI
- Add unit abbreviation to Perf Report tables in Console UI and PR comments (Thank you @BD103)
- Add support for GitHub Enterprise Server to
bencherCLI (Thank you @btoic)
v0.4.36
- Fix CORS failures when API server returns an error
- Catch errors when Console WASM fails to load
- Add
--insecure-hostflag tobencherCLI to allow insecure connections to Bencher Self-Hosted API servers - Add
--native-tlsflag tobencherCLI to load TLS certificates from the platform’s native certificate store - Add
--timeoutoption tobencherCLI to set the timeout for all API requests - Add
smtp.insecure_hostoption to Bencher Self-Hosted API server configuration to allow insecure connections to SMTP servers (Thank you @btoic)
v0.4.35
- Add “Dismiss All” Alerts button to Console UI
- Fix infinite progress bar when Perf Plot is not initialized
- Show collapsed key for Pinned Plots
- Show selected Branches, Testbeds, and Benchmarks at the top of their Perf Plot tabs
- Improve Reports table view
- Show “Recent Reports” table for Branches and Testbeds
- Use exponential scaling for Perf Plot y-axis when there is a > 10x relative difference (Thank you @brianheineman)
- Improve new contributor onboarding experience (Thank you @brianheineman)
v0.4.34
- Add
--headoption tobencher branch viewCLI subcommand - Allow selection of up to two Measures in Perf Images
- Fix the Perf Plot Pinned tab
- Add
--build-timeand--file-sizeto PR comment ID - Omit Threshold warning from PR comment when
--ci-only-thresholdsis used - Fix flashing of “No data found” in Perf Plot
v0.4.33
- Fix plot image y-axis labels
- Show correctly scaled units in Perf Plot hover box
- Factor out common dimensions in Perf Plot key
- Allow selection of up to two Measures in Perf Plots
v0.4.32
- Fix benchmark result units in PR comments (Thank you @dklassic)
v0.4.31
- Fix Report measure count bug
- Auto-scale units in Perf Plots, Perf Images, Reports, and PR comments
v0.4.30
- Fix Bencher Self-Hosted Console build bug since
v0.4.24
v0.4.29
- Improve Pinned Plots loading fallback
- Return 404 Not Found for all resource endpoints when checking for both existence and permissions
- Update CLI install scripts to be able to set the
BENCHER_VERSION
v0.4.28
- Remove lazy loading of embedded perf plots due to Safari bug
- Move Pinned Plots out of
iframetags - Fix custom pinned plot window size bug
v0.4.27
- Limit GitHub Action Check to 65,535 characters
- Fix CLI HTML table output bug for Benchmarks with different Measures
v0.4.26
- Fix GitHub Action summary bug (Thank you @dklassic)
v0.4.25
- Add GitHub Action summary when using
--github-actionsoption - Add ability to track build times with the new
--build-timeflag
v0.4.24
- Add GitHub Action Check when not running as a pull request (Thank you @sagudev, @dklassic, and @wusyong)
v0.4.23
- Fix Console Alert Perf Plot button bug
- Fix benchmark.js adapter (
js_benchmark) float parsing bug (Thank you @arv) - Fix Catch2 adapter (
cpp_catch2) long name parse bug - BREAKING CHANGE The Catch2 adapter (
cpp_catch2) now includes the test case name in the benchmark name (ex:Test Case: Benchmark Name) - Fix Benchmark results table x-overflow bug when there were several Measures
v0.4.22
- Remove bloom filter in Perf Query when there is no branch head specified
v0.4.21
- BREAKING CHANGE Update the Branch JSON to include the concept of a Head which now contains the Start Point
- Changing a branch’s start point will now update the branch head instead of creating a new branch and archiving the old one
- Deprecate
--branch-start-point,--branch-start-point-hash, and--branch-resetin favor of--start-point,--start-point-hash, and--start-point-resetforbencher run - Introduce a
max_versionsfor Branch Start Points, default to255 - Add the
--start-point-max-versionsoption tobencher run - Thresholds are no longer cloned based off of a branch start point
- Add the
--start-point-clone-thresholdsflag tobencher run - Add Thresholds to Report JSON
- Add
--threshold-measure,--threshold-test,--threshold-min-sample-size,--threshold-max-sample-size,--threshold-window,--threshold-lower-boundary,--threshold-upper-boundary, and--thresholds-resettobencher run - Fix public plots pages to not require authentication
- Add
--measureoption tobencher mockto mock multiple measures - Add a
bencher archiveandbencher unarchivesubcommand to archive and unarchive dimensions - Fix broken default version tag for
bencher up(Thank you @mwasplund) - Add
--api-portand--console-portoptions tobencher upto set the API and Console UI ports
v0.4.20
- Add public pages for Reports, Branches, Testbeds, Benchmarks, Measures, and Plots
- Add links between all dimension pages
- BREAKING CHANGE Change the Report results format to mirror Bencher Metric Format, from measures owning benchmarks to benchmarks owning measures
- Remove user email from Report results
- Add a table view for Reports in the Console UI
- Update PR comments to be more concise
- Remove deprecated
statisticfield from Threshold in favor ofmodel - Remove deprecated server endpoint
/v0/server/endpointin favor of/v0/server/config/console - Track global bus events for
iai-callgrindadapter (Thank you @OmarTawfik)
v0.4.19
- Add the
--formatoption tobencher run - BREAKING CHANGE Remove the Report JSON from the default
bencher runoutput (now use--format json) - BREAKING CHANGE Remove the
--htmlflag frombencher run(now use--format html) - Standardize all
bencherCLI default values - Allow
--branch-resetto be used with--branch-start-point - Update archived branches renaming scheme
v0.4.18
- Add the concept of
archivedto Branches, Testbeds, Benchmarks, and Measures - Remove Alert stats endpoint
- Fix
+ AddAPI token UI permissions bug - Filter for
archivedresources in the Console UI - Archive and unarchive resources in the Console UI
- Make Start Points for Branches fallible
- Parse results for multiple tools for
iai-callgrindadapter (Thank you @OmarTawfik)
v0.4.17
- Revamp UI for looking at resource details
- Remove cached Organization when logging out
v0.4.16
- Track Branches for pinned Plots across changes in their Start Point
- Update pinned Plots when theme changes
- Remove 15 second timeout for all CLI commands
- Show total number of pages for paginated lists in Console UI
- Add the ability to create and delete Organizations
v0.4.15
- Fix 404 error for dedicated Metric pages in Console
- Create Branch and Testbed, if they do not exist for a Report on the API server
- Remove Branch and Testbed
softcreation - Add Docker daemon check to CLI commands
v0.4.14
- Fix iai-callgrind adapter bug
- Obfuscate user emails in API error messages
- Include Metric UUID in Report and Perf results
- Add a
GETMetric API endpoint and CLI subcommand - Add a dedicated Metric page when clicking on a Metric dot in a Perf Plot
- Enable
busy_timeoutfor SQLite connections to preventdatabase is lockederrors - Add replica settings for disaster recovery
v0.4.13
- Add
Requiredto required query params in docs (Thank you eddyashton) - Auto-log out in Console UI for expired sessions
- Fix wordmark color for default theme initialization
- Add
bencher plotsubcommand to manage pinned plots to CLI - Add
--api-env/--console-envand--api-volume/--console-volumetobencher upCLI command (Thank you ricardaxel) - Add
serviceargument tobencher upandbencher downto only control a single container
v0.4.12
- Fix cross-project query bug
v0.4.11
- Reduce Console navbar, menu, and panel flickering on page load
- Fix
Add,Edit,Deletebutton permissions bug (Thank you eddyashton for reporting this bug) - Add the ability to “pin” Perf Plots to create a dashboard of pinned plots
- Add a button to clear each dimension separately in the Perf Plot
v0.4.10
- Expand
--file-sizeoption forbencher runto be used multiple times to track multiple file sizes - Add dark mode to Bencher Console UI
v0.4.9
- Automatically find the
gitbranch name forbencher runif one is not specified - Add the
--file-sizeoption tobencher runto track file size (ie binary size) - Allow custom Measures in Report results to be created on the fly
- Fix parsing new libtest bench Metrics as floats instead of integers (#390)
v0.4.8
- Add new user onboarding flow
- Fix server stats endpoint bug
- A very special thank you to hamirmahal for their first contribution!
v0.4.7
- Redirect to public Perf Page for Bencher Console links if user is not logged in
- Fix jittering in Perf Plot tabs when loading and changing pages
- Fix PR comment tags when changing branch start points
- Move benchmark results under a
detailstag for HTML comment output - Add an Alert summary table for HTML comment output
- Add a warning if no Thresholds are found for HTML comment output
- Deprecated:
--ci-no-metricsflag no longer effects HTML comment output
v0.4.6
- Add perf plot images as OpenGraph images
- Add GET
/v0/usersendpoint for server admins - Improve perf plot query performance by 120x or more by adding indexes and a materialized view
v0.4.5
- Move Bencher Cloud out of BETA
- Add tab loading progress bar to perf pages
- Add
--branch-start-pointand--branch-start-point-hashoptions tobencher runto track rebasing and other branch changes - Deprecated: The
bencher runoptions and flags--if-branch,--else-if-branch,--else-branch, and--endif-branchhave been deprecated in favor of using--branchand--branch-start-point - BREAKING CHANGE
--if-branchwill now hard fail instead of skipping the run if not specified or if an empty string is provided, and it will always be created even without--else-branchset - BREAKING CHANGE
--else-if-branchwill only use the first branch specified as the start point and it must exist, if it is a non-empty string - Update branch date time plot to use local time and version plot to be discrete along the x-axis
v0.4.4
- Fix resource contention during large Perf queries
- Remove
publicquery param from/v0/projectsendpoint - BREAKING CHANGE Move all CLI commands using
--org,--project, and--userover to positional arguments, exceptbencher runandbencher threshold create - Add a
bencher report createCLI subcommand bencher runnow tries to auto-fill the git commit hash for the report- BREAKING CHANGE Rename
statistictomodeland remove API endpoint - Add “Click to view Threshold” for all boundary limits and add a public view Threshold page
- Add PATCH endpoint for user account settings
- BREAKING CHANGE Remove
/v0/server/pingendpoint - Deprecate
/v0/server/endpointin favor of/v0/server/config/consoleand BREAKING CHANGE removebencher server endpointCLI command
v0.4.3
- BREAKING CHANGE Limit branch names to 256 characters and all slug lengths to 64 characters. Any existing values greater than these new limits are set to their respective UUID.
- Add shortcut URLs for user pages:
/console/users/tokens->/console/users/USER-SLUG/tokens/console/users/tokens/add->/console/users/USER-SLUG/tokens/add/console/users/settings->/console/users/USER-SLUG/settings
- Improve
bencher runerror messages to include the command being run (idea credit to dholroyd: #335) - Prevent pwn requests when using
bencher run - Add an API version check to all Bencher CLI commands that use the backend
v0.4.2
- Fix Perf Plot view reduce bug
- Add a
Viewbutton to Perf Plot for Reports, Branches, Testbeds, and Benchmarks - Add
searchquery param toGETlist endpoints for all named resources - Add search for a named resources in Console UI and Perf Plot dimensions
- Add date based search for Reports in Console UI and Perf Plot
- Add search for public projects
- Move Bencher API server to “distroless” Docker image,
bencher-apithat is 10x smaller - Move Bencher Console UI to “distroless” Docker image,
bencher-consolethat is 1/3 smaller - Fix Console server side rendering bug when using local URLs inside of Docker
- First time contributor JonasWanke added the Iai-Callgrind benchmark harness adapter
v0.4.1
- Add a “Show all”/“Hide all” toggle for perf plot results (idea credit to jerome-benoit)
- Add an
--execflag tobencher runto run commands as executables (no shell) and by default when there is more than one argument - Add new Thresholds: Static, Percentage, Log Normal, Interquartile Range, and Delta Interquartile Range
- Include Iteration number for Report results
- Redirect to newly created resources in Console UI
v0.4.0
- BREAKING CHANGES Remove backwards compatibility for renames:
Metric(lower_bound=>lower_valueandupper_bound=>upper_value)Measure(metric_kind=>measureinReportandThreshold;metric_kinds=>measuresinPerf)Boundary(average=>baseline)
- Add
bencher up,bencher down, andbencher logscommands to CLI to easily run Bencher Self-Hosted - Branches and Testbeds are now created if they do not exit for
bencher runif the value passed is a slug or name (UUIDs are still required to already exist)
v0.3.26
- Add OAuth2 based login for GitHub
- Allow users to accept invitations while logged in
- Run smoke tests on Linux, MacOS, and Windows
- Release Linux, MacOS, and Windows CLI builds for both x86_64 and ARM64
- Add convenience script to install
bencherCLI on Linux, MacOS, and Windows
v0.3.25
- Allow custom CI ID to be an unbounded length
v0.3.24
- Add URL fragment links to all headings 🔗
- Fix browser navigation to replace history for automatic query args, like pagination
- Scroll to top of page when changing paginated pages
- Allow Branch, Testbed, and Measure names to be used in addition to slugs and UUIDs for Report (
GETlist &POST), Threshold (GETlist &POST), and Branch (POSTstart point) endpoints - Validate Branch and Testbed exist before running benchmarks with
bencher run
v0.3.23
- Move CLI over to relaxed response parsing and add
--strictflag to enable strict response parsing - Add
--quietflag tobencher runto enable quite mode and only output the final Report JSON
v0.3.22
- The Boundary Limits object is now optional for Perf query results and Reports
- Update all
POSTAPI endpoints with creation semantics to return a201status code - Update all
PUTandPATCHAPI endpoints with immediate update semantics to return a200status code - Update all
DELETEAPI endpoints to return a204status code and an empty body
v0.3.21
- Add Hyperfine adapter
- Rename
Metric KindtoMeasure
v0.3.20
- Rename
averagetobaselinefor the Boundary Limits
v0.3.19
- Include the
averageused for the Boundary Limits - Remove
--ci-public-linksforbencher runand simply use the project visibility to determine PR links - Replace
--ci-with-metricswith--ci-no-metricsforbencher runand make showing benchmark metrics and boundary limits on PRs the default
v0.3.18
- Add public Alert pages
- Add a
--ci-public-linksoption tobencher runto only post public links to PRs - Add a
--ci-with-metricsoption tobencher runto display benchmark metrics and boundary limits on PRs - Update GitHub Actions PR documentation
v0.3.17
- Fix word break CSS in console UI
- Add status bar for perf plot loading
- Fix perf plot x-axis label
- Improve embedded perf plot layout
v0.3.16
- Improve
bencher_clientergonomics for use inrustls - Fix navbar bug on public pages while logged in
- Add Bencher Learn section to the site
- Set max perf query permutations to
255 - BREAKING CHANGE: Move from single
metric_kindto array ofmetric_kindsfor perf plot query
v0.3.15
- Embedded Perf Plots
- Move default Threshold Boundaries from
0.95to0.98 - Add server statistics collection to Bencher Self-Hosted instances
v0.3.14
- Move default Threshold Boundaries from
0.9to0.95 - Redirect to login for an authorized users in Console UI
- Improve API server error messages
- Fixed the UI y-axis scale issue… again
- Add Bencher Plus licenses
v0.3.13
- Add ability for
bencher runto read output from a file without running a command argument - Improve Report creation error messages
- Add filtering Reports by Branch, Testbed, and start/end time
- Add one month historical default when viewing Reports in the Perf Plot
- Add endpoint
/v0/server/specto view OpenAPI spec JSON - Remove old UI source and scripts
v0.3.12
- Change Metric
lower_boundandupper_boundtolower_valueandupper_valuerespectively - Add ability to visualize
lower_valueandupper_valuein Perf Plot
v0.3.11
- Add strongly typed IDs for database entities
- Remove deprecated configuration keys (
endpoint=>console.urlandsecret_key=>security.secret_key)
v0.3.10
- Add optional error monitoring with Sentry
- Start API error message improvement
- Fix Threshold dimension selection bug in UI
- Display benchmark harness results in realtime via
bencher run - A special thank you to @robertorosmaninho for bug hunting 👾
v0.3.9
- Move UI over to Astro with stronger TypeScript
- Add check for failing Netlify deployments
- Move default Threshold Boundaries from
0.95to0.9
v0.3.8
- Segment PR comments by the combination of Project, Branch, Testbed, and Adapter
- Add a custom PR comment ID argument
--ci-idtobencher runfor complex scenarios - Another special thank you to @GitGab19 for all the feedback
v0.3.7
- Fix slug length validation bug
- A special thank you to @GitGab19 for all the feedback
v0.3.6
- Fix multi-Metric Kind bug for Perf Plot Report selection
- Require minimum and maximum sample sizes to be greater than or equal to two
- Allow system Metric Kinds (ie Latency, Throughput, etc) to be deleted and recreated via a later Report
- Comment on GitHub pull requests using
--github-actionsargument forbencher run - Only post CI integrations when a Threshold is set for a Metric Kind, Branch, and Testbed with
ci-only-thresholds - Only start posting CI integrations when an Alert is generated with
--ci-only-on-alert - Fix Threshold boundary calculation bug when standard deviation is zero
- Add a warning ⚠️ in the Perf Plot UI when a Boundary Limit is not calculated
- A special thank you to @untitaker for all the feedback
v0.3.5
- Visualize Threshold lower and upper boundaries and Alerts in Perf Plot
- Add ability to dismiss and reactivate Alerts
- Add ability to update Thresholds in the UI
- Fix Threshold
PUTbug - Add deletion capabilities to the UI
- Add help page to public UI
v0.3.4
- Revamp Quick Start tutorial
- Add Docker Self-Hosted tutorial
- Fix public perf pages bug
- Add Reports tab to perf pages
- Add ability to clear the perf plot
- Add ability to set Project URL to
null - Add Project permissions API endpoint
- Remove redundant Project API endpoints
- Add ability to update Organizations, Projects, Metric Kinds, Branches, Testbeds, and Benchmarks in UI
v0.3.3
- Move API server config key
endpointtoconsole.url - Change API from
/v0/server/config/endpointto/v0/server/endpointto getconsole.url - Add dedicated
POSTAPI endpoint for Benchmarks - Add
PATCHAPI endpoints for Organizations, Projects, Metric Kinds, Branches, Testbeds, and Benchmarks - Add
PUTAPI endpoint for Thresholds - Add
DELETEAPI endpoint for Metric Kinds, Branches, Testbeds, Benchmarks, and Thresholds - Create two default Thresholds for all new Projects
- Add a Go benchmark example
- Fix Go auxillary data parse error
v0.3.2
- Decrement all proceeding Branch versions after the final Report is deleted for a Branch version
- Add pagination to all GET list API endpoints,
bencherCLI, and console UI - Move all
bencherCLI API calls to using client auto-generated from OpenAPI spec - Improve
bencherCLI error messages
v0.3.1
- Add
--backdateargument tobencher runfor backdating Reports - Add
createdandmodifiedtimestamps as applicable to all entities and their JSON - Add ability to delete a Report
- Add ability to delete a Project
- A special thank you to @wuputah and the Hydra team for all the feedback
v0.3.0
- Add demo video to landing page
- Add
bencher rundocumentation - Refactor Report, Alert, and Perf JSON to be more powerful
- All Report and Perf metrics now show the boundary limits used if a Threshold is set
- Display URL to visualize report in UI after
bencher run - Change
magnitudetopowforbencher mock - A very special thank you to @MichaelScofield for being Bencher’s second community contributor!
v0.2.46
- Update roadmap
- Add Iai benchmark harness adapter
- Move from GitPod over to Dev Containers/GitHub Codespaces
- Fix thresholds with no historical metrics bug
- A very special thank you to @osiewicz for being Bencher’s first community contributor!
v0.2.45
- Add servers to Swagger API docs
- Fix perf view refresh bug
- Add an order of
--magnitudeargument tobencher mockcommand - Add an API endpoint for threshold statistics and a CLI
statisticsubcommand - Upgrade the
bencher perfCLI flag--tableto accept an optional style parameter - Fix long text wrapping in UI deck view, both header and card contents
- Autogenerate TypeScript types from Rust type definitions
- Massive thank you to @vient for all the feedback
v0.2.44
- Fix UI expired token error
- Move the CLI linker over to use Zig in order to pin a specific
glibcversion - Move linker in CI over to
moldfor increased parallelism - Fix cargo workspace
default-features = falsewarnings - Add project stewardship commitments
- Massive thank you to @brainstorm for all the feedback
v0.2.43
- Add a
--tableoption to thebencher perfcommand to display query results as a table - Add the ability to toggle the perf plot x-axis from report date time to branch version number
v0.2.42
- Create and publish Bencher CLI GitHub Action
- Fix both UI and perf image y-axis sizing once and for all… hopefully
v0.2.41
- Move perf plot images from a screenshot to server side rendering
- Add a share mechanism to perf pages with a perf image preview
v0.2.40
- Add an optional
--fileargument tobencher runto read file output - Move perf query API endpoint from a POST to GET
- Add an endpoint to GET a screenshot of a public perf plot
v0.2.39
- Update readme to add Discord invite
- Allow certain benchmarks to be ignored by Threshold checks
- BREAKING CHANGE: Make Project names unique within an organization and delete existing duplicates
- Add paid plans and metered billing for Bencher Cloud
- Change perf pages to use milliseconds as opposed to date/time stamp
v0.2.38
- Fix CLI runtime dependency error over the past five releases
- BREAKING CHANGE: Make Metric Kind, Branch, and Testbed names unique and delete existing duplicates
- Add a soft branch creation option to eliminate race conditions in CI
- Add supported languages to landing page
- Lots of new docs!
v0.2.33
- Add new
averagesetting for adapters to choose between mean/standard deviation and median/interquartile range when possible - Increase CLI default retry to ten attempts three seconds apart (30 second window)
- Add ability to clone thresholds when creating a new branch from a start point and make this the default behavior for
--else-if-branchinbencher runCLI - Moved the plot key to below the plot all the time in preparation for screenshots/embedding
v0.2.32
- Add STARTTLS option for SMTP connections
- Add
throughputas a new default metric kind withoperations / second (ops/s)as units - Add Java JMH, C# BenchmarkDotNet, JavaScript Benchmark.js, JavaScript console.time/timeEnd, Python airspeed velocity, Python pytest-benchmark, and Ruby Benchmark adapters
- Add resend email button to UI auth confirm page
- Change C++ Catch2 adapter to use standard deviation for
lower_boundandupper_bound - Fix table and perf panel formatting for long, single word values
v0.2.31
- Prevent leaking secrets by obfuscating them in the server logs (ie
************) - Move run failure detection to the CLI, adapter parsing will no longer attempt error detection
- New harness specific adapter targets (ie
rust_benchandrust_criterion) - Add additional options to
bencher mock,--failand--flakyto easily test parsing failing and flaky benchmarks respectively - Wrote continuous benchmarking and how to install the CLI pages
- Update server framework, dropshot, and Rust to
1.67.0 - Two new C++ adapters for Google Benchmark and Catch2
- Add an adapter for
go test -bench
v0.2.30
- Added
--if-else-branch,--else-branch, and--endif-branchflags to tobencher runCLI - Wrote a branch management explanation page for using
bencher run - Completely refactored docs UI configuration to make it easier to add new pages, one place instead of three
- Made the Diataxis convention explicit in the docs
- Fixed bounds bug in
bencher mock - Added a
/v0/server/backuproute andbencher server backupCLI command to perform database backups with options to compress, push to a remote data store (currently only AWS S3), and remove the local copy
v0.2.29
- Fixed and refixed Criterion empty benchmark name bug
- Type level checking for benchmark names and metric kind resource IDs
- Added documentation: Quick Start, Prior Art, and GitHub Actions how to
- Prettier and eslint added to CI/CD
- Stubbed out UI tests with
vitestin CI/CD
v0.2.28
- Centralized all validation logic between frontend and backend via Rust + WASM modules
- All pages in the UI now have basic functionality
- Added public project perf pages
v0.2.27
- Fixed the UI y-axis scale cutoff issue! Note to self: RTFD
- Fixed the UI documentation + routing bug! It turns out
SwaggerUIBundlewas the solution. - Added Metric Kind list, add, and view to UI
- In perf queries allowed for both UUIDs and slugs for branches and testbeds
- Added bencher.dev to Google Search Console and Analytics
- Changed API server default URL to always be localhost:3000
- Moved Docker UI build stage into its own
builder.Dockerfile, mirroring the API setup - Created a better default for the UI’s backend API URL, basically
this-host:61016 - Created a walking skeleton of adding Rust + WASM modules to the UI in both dev and CI/CD
- Fixed UI logout + routing “too many redirects” bug
- Changed notifications from state based to URL query param based in the UI
- Refactored how pathname and redirects are handled in the UI to increase encapsulation
- Added the current version to the UI
BETAtag - Created a repo shortcut at bencher.dev/repo