Skip to content
CAI
Software that uses CAICheck a score

japgolly/clear-config

66.6

Adequate · 20 September 2026

1.7k

lines of production code

Scala

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

ClearConfig is a Scala configuration library that provides a unified API for defining and resolving configuration requirements across JVM and JavaScript environments. It supports multiple configuration sources, including environment variables, system properties, and classpath resources, while offering detailed reporting and validation capabilities. The system allows users to define configuration schemas, parse values, and generate reports that highlight missing or unused keys, with features like credential obscuring and flexible filtering.

Features

Add JavaScript environment variable support to configuration store

The JavaScript platform implementation now reads environment variables from \process.env\ (Node.js) into the configuration store. This allows users to access runtime environment variables directly via the standard configuration API on JS targets, with a fallback to an empty store if the environment is unavailable.

core/js · high confidence

ClearConfig 3.3.0: Enhanced config report filtering and new migration tooling

This release introduces granular filtering capabilities for config reports, allowing users to filter keys and sources using \filterKeysAndSource\, \filterKeysAndSourceNot\, and \withoutKeys\ (version 3.3.0). It also includes a new \migrate.sh\ script to automate renaming legacy types like \Config\ to \ConfigDef\ and \Source\ to \ConfigSource\, alongside updated documentation and license files.

(repo-wide) · high confidence

JVM-specific configuration sources and logback scanning

The JVM module now provides platform-specific configuration capabilities, including loading Java properties files from the classpath or the local file system via \ConfigSource.propFileOnClasspath\ and \ConfigSource.propFile\. It also introduces \ConfigDef.logbackXmlOnClasspath\, which scans logback XML files for environment variable references to ensure they appear in configuration reports. Additionally, the JVM \Store\ implementation now exposes the system environment variables through the standard \Store.environment\ interface.

core/jvm · high confidence

Behavioural changes

Config library restructured around Cats and new ConfigDef API

The configuration library has been restructured to replace Scalaz with Cats, introducing a new \ConfigDef\ API for defining configuration requirements. This change brings several behavioral updates: credentials are now obscured by default in reports, color output is optional and defaults to off, and blank values are quoted for clarity. New capabilities include case-insensitive source support, the ability to treat key dots as underscores, and expanded value parsing for types like UUID, Regex, URL, and URI. The report system now supports filtering by key and source, and configuration definitions offer new methods like \.whenFullySpecified\ and \.external\ to control how keys are reported and validated.

core/shared/src/main · high confidence

Test coverage

Added test coverage for ConfigValueParser and ConfigSource; Added tests for config report generation and definition resolution.

Dependencies

Build system upgraded to Scala 3 and SBT 1.11.7

The project's build configuration has been updated to support Scala 3 (version 3.3.7) alongside Scala 2.13 (version 2.13.18), replacing the previous Scala 2.12 support. The build tool itself has been upgraded to SBT 1.11.7, and the Scala.js plugin has been updated to version 1.20.2. Additionally, the dependency on Scalaz has been replaced with Cats (version 2.13.0), and various build plugins such as sbt-scalafix and sbt-ci-release have been updated to their latest versions.

project · high confidence

Initial SBT build configuration for ClearConfig

The project now includes a build.sbt file that defines the root build settings, including the organization (com.github.japgolly.clearconfig), homepage, license (Apache-2.0), and version scheme (early-semver). It also declares the initial module structure with root, coreJVM, and coreJS projects.

(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 67.

Lenses

  • Code Health 99
  • Architecture 100
  • Maturity 54
  • Readiness 76
  • Security 70

Changes since last survey

  • 300 commits — 286 feature/other, 14 fixes

By area

  • (root) — 101 commits
  • config/shared — 44 commits
  • core/shared — 37 commits
  • (repo) — 31 commits
  • project/Build.scala — 21 commits
  • recursion/shared — 13 commits
  • stdlib-ext/shared — 12 commits
  • project/plugins.sbt — 11 commits
  • .github/workflows — 6 commits
  • project/build.properties — 4 commits
  • adt-macros/shared — 3 commits
  • core/jvm — 3 commits
  • macro-utils/shared — 3 commits
  • recursion/README.md — 2 commits
  • test-util/shared — 2 commits
  • utils/shared — 2 commits
  • .github/FUNDING.yml — 1 commit
  • .github/dependabot.yml — 1 commit
  • core/js — 1 commit
  • nonempty/shared — 1 commit

Notable commits

  • fix: Fix & test ValueReaders
  • fix: Fix JS test
  • fix: Fix Travis button
  • fix: Fix coelgot to short-circuit computationally
  • fix: Fix compilation under Scala 2.13
  • fix: Fix crawlADT for cases where abstract class > trait
  • fix: Fix for Scala 2.12
  • fix: Fix latest version bullet
  • fix: Fix release settings
  • fix: Fix tests
  • fix: Fix valuesForAdt
  • fix: SBT fix
  • fix: [config] Fix ConfigReports wrt query mapping
  • fix: config: fix source composition
  • change: .travis.yml
  • change: Add .apply to Source{,Name} objects
  • change: Add .github/FUNDING.yml
  • change: Add AtomOrComposite
  • change: Add Config#option
  • change: Add Config.choose{,Attempt}
  • …and 280 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

japgolly/clear-config 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 20 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 f93bdba485f81a55d1f0d4ef1a17503bc20b7dc0 — 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-b51f968c9b10.