japgolly/clear-config
66.6
Adequate · 20 September 2026
1.7k
lines of production code
Scala
primary language
1
measurement over time
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.