Skip to content
CAI
Software that uses CAICheck a score

console-rs/indicatif

68.4

Adequate · 30 September 2026

6.2k

lines of production code

Rust

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a Rust library for rendering progress indicators in terminal applications, supporting single and multi-progress bars with async integration. It provides features for tracking file downloads, wrapping external processes, and displaying human-readable metrics like bytes and durations. The library includes utilities for custom styling, high-performance updates, and deterministic testing via an in-memory terminal simulator.

Features

New human-readable formatters and in-memory terminal for testing

Added new formatting types (\HumanBytes\, \DecimalBytes\, \BinaryBytes\, \HumanCount\, \HumanFloatCount\, \HumanDuration\) to display progress metrics in a human-readable way, including SI/ISO prefixes and comma-separated counts. Introduced \InMemoryTerm\ to simulate terminal behavior, enabling deterministic testing of progress bar rendering without a real TTY.

src · high confidence

Removals

Removal of internal terminal abstraction layer

The internal \src/term\ module, which previously provided a custom \Term\ struct for managing stdout/stderr buffering and cursor control, has been removed. This change eliminates the local implementation of terminal size detection and ANSI escape sequence handling (such as cursor movement and clearing) that was specific to Unix systems, indicating a shift in how terminal interactions are managed within the application.

src/term · high confidence

Behavioural changes

Refreshed and expanded example suite

The examples directory has been completely rewritten to demonstrate current library capabilities. The legacy \basic.rs\ example using the deprecated \Multiplexer\ has been removed. It is replaced by a comprehensive set of new examples: \single.rs\ for basic usage, \multi.rs\ and \multi-tree.rs\ for \MultiProgress\ management, \finebars.rs\ for custom styling, \iterator.rs\ for the \ProgressIterator\ trait, and \log.rs\ for logging above bars. New \download.rs\, \download-speed.rs\, and \download-continued.rs\ examples showcase progress tracking for file transfers, including custom templates and ETA handling. The \cargo.rs\ example mimics the \cargo build\ output, while \cargowrap.rs\ demonstrates wrapping an external process. Additional examples include \fastbar.rs\ for high-performance updates, \long-spinner.rs\ for custom tick strings, \morebars.rs\ for dynamic bar insertion, \tokio.rs\ for async integration, and \yarnish.rs\ for a complex, styled terminal interface.

examples · high confidence

Test coverage

Added integration tests for MultiProgress lifecycle, rendering, and CJK width handling

Added new integration tests in \tests/multi-autodrop.rs\, \tests/render.rs\, and \tests/width\_cjk.rs\ to verify specific library behaviors. The \multi-autodrop\ test ensures that \ProgressBar\ instances remain usable after their parent \MultiProgress\ is dropped. The \render\ test suite validates visual output correctness for single and multi-progress bars, including edge cases like progress bars with no length, precise percentage formatting, and finish behaviors (\AndLeave\ vs default). The \width\_cjk\ test verifies that the \Width::set\_default\_cjk\ configuration correctly adjusts character width calculations for ambiguous-width (CJK) characters in progress bar messages.

tests · high confidence

Dependencies

Upgrade to version 0.18.6 with updated dependencies and MSRV

The library has been updated to version 0.18.6, raising the Minimum Supported Rust Version (MSRV) to 1.85. Key dependency updates include bumping \console\ to 0.16.6, \portable-atomic\ to 1.12.0, and \unit-prefix\ to 0.5.1, while \unicode-width\ is now an optional dependency at version 0.2. The \parking\_lot\ dependency has been removed in favor of \portable-atomic\ for atomic operations, and the \console\ crate is now configured with the \ansi-parsing\ feature enabled by default.

(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

Score

  • CAI 69 → 68 (-0.8)
  • Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 94 → 94 (+0.1)
  • Architecture 100 → 100 (+0.0)
  • Maturity 51 → 47 (-3.6)
  • Readiness 73 → 79 (+5.6)
  • Security 95 → 97 (+2.1)

Resolved (2)

  • Hotspot: src/style.rs (src/style.rs)
  • Orphaned files with no living knowledge

Changes since last survey

  • 7 commits — 6 feature/other, 1 fixes

By area

  • (root) — 2 commits
  • src/draw_target.rs — 2 commits
  • src/format.rs — 1 commit
  • src/lib.rs — 1 commit
  • src/style.rs — 1 commit

Notable commits

  • fix: Fix HumanFloatCount printing "-0" for values that round to zero
  • change: Bump console from 0.16.4 to 0.16.6
  • change: Bump rand from 0.10.2 to 0.10.3
  • change: Introduce Width::set_default_cjk
  • change: Introduce Width
  • change: expose MultiProgress.state and MultiState (#837)
  • change: multi: use newtypes to distinguish between opaque index and 'visual' index on screen

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

Survey your own repository

console-rs/indicatif 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 30 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 53cf51c6da16789f9a29a7a1cfdf8e364dcb0868 — the exact code this score is about.
  • Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-505904ce13c1.