Skip to content
CAI
Software that uses CAICheck a score

JustAman62/progress_bar

66.0

Adequate · 18 September 2026

491

lines of production code

Elixir

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is an Elixir library that provides command-line progress bars, indeterminate animations, and spinners for terminal applications. It allows developers to render determinate progress with customizable formats and byte suffixes, as well as animated feedback for long-running tasks. The library handles terminal width detection and supports various spinner themes, ensuring consistent visual output across different environments.

Features

Initial release of ProgressBar for Elixir

This change introduces the ProgressBar library, providing command-line progress bars, indeterminate progress bars, and spinners for Elixir applications. Users can now render standard progress bars with customizable formats, colors, and suffixes (such as byte counts), as well as use indeterminate bars that animate automatically during function execution. The package includes a new \.formatter.exs\ for code formatting, a \.travis.yml\ for CI integration with Elixir 1.3, 1.4, and 1.7, and comprehensive documentation in the README.

(repo-wide) · high confidence

Introduces ProgressBar API for determinate, indeterminate, and spinner rendering

The library now exposes a \ProgressBar\ module that delegates to specific sub-modules for different progress visualization modes. Users can render determinate progress bars using \render/2\ or \render/3\ (with a custom format), display indeterminate progress using \render\_indeterminate/1\ or \render\_indeterminate/2\, and show spinning indicators using \render\_spinner/1\ or \render\_spinner/2\. This change consolidates the progress bar functionality into a single entry point while supporting custom formats and distinct rendering behaviors for each mode.

lib · high confidence

New example scripts demonstrating progress bar features

Added a suite of numbered example scripts (00-gif through 06-spinner) and an all.exs runner to demonstrate various ProgressBar capabilities, including default rendering, custom colors and formats, byte suffixes, indeterminate bars, and spinners with different frame styles like :strokes, :braille, and :bars.

examples · high confidence

Behavioural changes

Migrate from Mix.Config to Config module

The application configuration has been updated to use the standard Elixir \Config\ module instead of the deprecated \Mix.Config\ module. This change aligns the codebase with modern Elixir standards (Elixir 1.9+) and resolves warnings associated with the legacy configuration approach.

config · high confidence

Progress bar library refactored with new animation and spinner capabilities

The progress bar library has been significantly restructured to support indeterminate animations and spinners alongside the existing determinate progress bar. A new AnimationServer handles the timing and rendering loops for both indeterminate bars and spinners, allowing users to display animated feedback during long-running tasks. The library now includes a Spinner module with multiple built-in themes (strokes, braille, bars) and customizable text, as well as an Indeterminate module for generic animated bars. Determinate progress bars retain their functionality but are now backed by a new BarFormatter and Bytes formatter for consistent, width-aware output. Terminal width detection is now handled automatically via :io.columns, ensuring bars fit the current terminal size.

_lib/progress\bar · high confidence

Test coverage

Initial test suite for progress bar components

Added comprehensive ExUnit tests covering the library's core rendering capabilities. The new test files verify byte formatting logic (including KB/MB conversion and decimal precision), determinate progress bar rendering (including width scaling, ANSI sequence handling, and custom formats), indeterminate bar animation, spinner animation (including custom frames, named themes, and the \[done: :remove\] flag), and utility functions for stripping invisible characters. A custom assertion macro was also introduced to simplify bar output comparisons.

test · high confidence

Dependencies

Upgrade to Elixir 1.9+ and add documentation dependencies

The project now requires Elixir 1.9 or later, dropping support for older versions. It introduces \ex\_doc\ as a development dependency for generating documentation and updates the application configuration to use \extra\_applications\ instead of the deprecated \applications\ key. The \mix.lock\ file now tracks specific versions for documentation-related libraries including \ex\_doc\, \earmark\_parser\, \makeup\, \makeup\_elixir\, \makeup\_erlang\, and \nimble\_parsec\.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 66.

Lenses

  • Code Health 100
  • Architecture 69
  • Maturity 59
  • Readiness 67
  • Security 80

Changes since last survey

  • 184 commits — 170 feature/other, 14 fixes

By area

  • (root) — 111 commits
  • lib/progress_bar — 37 commits
  • (repo) — 12 commits
  • test/indeterminate_test.exs — 5 commits
  • lib/progress_bar.ex — 3 commits
  • test/progress_bar_test.exs — 3 commits
  • examples/06-spinner.exs — 2 commits
  • examples/custom_format.exs — 2 commits
  • test/determinate_test.exs — 2 commits
  • test/spinner_test.exs — 2 commits
  • examples/01-default.exs — 1 commit
  • examples/02-color.exs — 1 commit
  • examples/bytes.exs — 1 commit
  • examples/default.exs — 1 commit
  • examples/format.exs — 1 commit

Notable commits

  • fix: Fix Mix.Config warning, dropping Elixir <1.9
  • fix: Fix compatibility with newer versions of decimal library
  • fix: Fix looping infinitely when progress is over 100%
  • fix: Fix mix.exs deprecation
  • fix: Merge pull request #14 from eproxus/fix-overshooting
  • fix: Merge pull request #22 from tsutsu/fix-warnings-from-new-decimal
  • fix: README: Fix mix dependency format
  • fix: README: Fix styling in table code block
  • fix: README: Oops, fix ToC after rename
  • fix: README: fix bytes example
  • fix: Revert "Try building on Elixir 1.2 dev"
  • fix: Switch logger to extra_applications to fix compilation warnings
  • fix: Update README with credits, fix badges
  • fix: fix cycling over empty enum
  • change: Add Elixir 1.2 to Travis runs
  • change: Add GH CI actions
  • change: Add percentage
  • change: Add support for spinners
  • change: Add travis.yml
  • change: Adding the count suffix
  • …and 164 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

JustAman62/progress_bar was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 18 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 23cc754aac3b5616c475a7365f539976a634d32a — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-5d04157a340d.