console-rs/indicatif
68.4
Adequate · 30 September 2026
6.2k
lines of production code
Rust
primary language
2
measurements over time
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.