mikepenz/AboutLibraries
61.8
Adequate · 25 September 2026
13.8k
lines of production code
Kotlin
primary language
5
measurements over time
What this system is
This system is a Kotlin Multiplatform library and Gradle plugin ecosystem designed to automate the collection, parsing, and display of third-party dependency metadata. It provides a core data model and JSON parsing logic that feeds into a suite of Compose UI components, enabling developers to render customizable library lists and license dialogs across Android, iOS, Desktop, and Wear OS. The accompanying Gradle plugin handles the heavy lifting of dependency resolution, license detection, and metadata export, ensuring accurate and compliant open-source attribution reports.
How it got here
2014–2021 — Kotlin Multiplatform migration and plugin modernization
23 changes.
The project transitioned its core library and Gradle plugin to Kotlin Multiplatform, introducing dedicated Compose UI modules for Material 2, Material 3, and Wear OS. The plugin was refactored for configuration-cache compatibility, shifting output to reproducible JSON and adding robust compliance reporting, deduplication, and remote GitHub data fetching. Supporting tooling was enhanced with new generators for library metadata and improved SPDX license detection.
2023–2025 — Compose UI modernization and multi-platform expansion
22 changes.
The project introduced comprehensive Material 2 and Material 3 Compose UI modules with granular variant theming, styling APIs, and platform-specific license dialogs. This effort expanded support to new targets including iOS, Desktop, and Wear OS, while establishing stable public API contracts and binary compatibility for the core and Compose libraries.
2026 — Compose UI variants and testing
9 changes.
This period focused on expanding the AboutLibraries Compose UI with a new variant system supporting traditional and refined layouts, alongside configurable styling and accessibility improvements. Significant effort was also dedicated to enhancing test coverage, including automated screenshot tests, recomposition stability checks, and validation of Gradle plugin compatibility with modern isolation and configuration cache features.
Features
Add LibsXMLGenerator script for library metadata scaffolding
A new Python tool, LibsXMLGenerator.py, has been added to the DEV/tools directory. When executed with a library name and version as arguments, it generates a skeleton XML resource file (library\_\<name\>\_strings.xml) containing predefined string placeholders for author details, library description, website, version, open-source status, repository link, and license ID, streamlining the creation of library information files.
DEV/tools · high confidence
Add definition-file-builder tool for generating AboutLibraries XML definitions
Introduces a new web-based tool in the DEV/definition-file-builder directory that allows users to generate XML definition files for the AboutLibraries library. The tool provides a form to input library metadata (name, ID, author, version, license, repository, description, and class path) and includes functionality to auto-fill the library ID based on the library name, as well as download the resulting XML file.
DEV/definition-file-builder · high confidence
Added Android app documentation and ProGuard configuration
The app module now includes a README explaining how to generate dependency information using Gradle tasks for both general and Android-specific builds, and adds a proguard-rules.pro file to support code obfuscation and optimization for the Android application.
app · high confidence
Added CSS styles for the Definition File Builder UI and code highlighting
This change introduces the visual styling for the new Definition File Builder component. It adds \component.css\ to define the layout and interactive states for form elements, including custom drop-downs, text inputs, and icon-based toggles using the 'nlicons' font set. It also includes \default.css\ for general page structure, typography (Lato font), and navigation styling, as well as \prism.css\ to provide syntax highlighting for code blocks within the builder interface.
DEV/definition-file-builder/css · high confidence
Android-specific library loading API introduced
A new Android-specific Composable API, \produceLibraries\, has been added to load library data from the Android context. This function creates a reactive \State\<Libs?\>\ by asynchronously building the \Libs\ object using either a custom block or a raw resource ID, ensuring the operation runs on the IO dispatcher. This provides a dedicated mechanism for Android apps to access library metadata within Compose UIs.
aboutlibraries-compose/src/androidMain · high confidence
Initial public API dump for aboutlibraries-core
This change introduces the initial API signature dumps (\.api\ and \.klib.api\ files) for the \aboutlibraries-core\ module, covering the JVM, Android, and Klib targets. These files define the stable public contract for the library's core entities, including \Libs\, \Library\, \Developer\, \Funding\, \License\, and \Organization\, along with their Kotlinx serialization serializers. This establishes the baseline for binary compatibility checks for the core data model.
aboutlibraries-core/api · high confidence
Introduce Material 3 Compose UI module with variant theming and platform-specific license dialogs
This change adds a new \aboutlibraries-compose-m3\ module that provides a Material 3-based UI for displaying library information. It introduces a variant system (Traditional and Refined) allowing users to switch between a full layout with large icons and a compact, space-efficient design. The module features theme-aware license badges that automatically adjust colors for dark and light modes, ensuring WCAG AA contrast compliance, and uses an accent-derived hue resolver so badge colors shift with the app's primary color. A new \LibraryDetailSheet\ component offers an edge-to-edge bottom sheet with dynamic corner rounding that squares off as the sheet expands. Platform-specific implementations for Android, JVM, JS, Native, and Wasm ensure the license dialog body renders correctly, using annotated HTML on Android and plain text on other platforms. The UI is highly customizable via \LibrariesStyle\, allowing control over colors, text styles, padding, dimensions, and shapes.
aboutlibraries-compose-m3/src · high confidence
Material 2 UI variant and API surface exposed
The public API for the Compose Material 2 (M2) library variant is now exposed, introducing convenience factories like \m2LibrariesStyle\ and dedicated token classes (\m2VariantColors\, \m2VariantTextStyles\) that mirror the M3 API. This allows users to configure the M2-specific look and feel, including license dialog styling and badge colors, while the \LibrariesContainer\ signature now accepts structured \LibraryBadges\ and \LibraryActionBadges\ objects instead of individual boolean flags, simplifying customization of library display options.
aboutlibraries-compose-m2/api/jvm · high confidence
New 'Traditional' UI variant for AboutLibraries Compose
This change introduces a new 'Traditional' UI variant for the AboutLibraries Compose library, providing a theme-agnostic, Material 3-style list interface. The new variant includes a TraditionalHeader component that displays the app icon, title, tagline, version chip, and search field, and a TraditionalRow component that renders library details including name, version, author, description, and license badges. The implementation enforces single-line constraints for headers and version chips, supports high-contrast settings for license badges, and includes animations for row expansion and chevron rotation.
aboutlibraries-compose/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/variant/refined, aboutlibraries-compose/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/variant/traditional · high confidence
New CLI export and compliance tasks for dependency reporting
The plugin now registers dedicated tasks to export dependency metadata outside of Android resource generation. \exportLibraries\ prints library names, artifact IDs, and licenses to the console in CSV format, while \exportComplianceLibraries\ writes a structured compliance report (CSV, TXT, and a \dependencies/\ folder containing the actual \.aar\, \.jar\, and \.pom\ files) to a configurable path. Additionally, \exportFunding\ exports funding options for dependencies to a JSON file, and \findLibraries\ prints library IDs for scripting. These tasks are registered globally and per-variant (for Android and Kotlin Multiplatform), providing a consistent way to audit licenses and artifacts without relying on the Android-specific resource generation pipeline.
plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin · high confidence
New Definition File Builder tool for generating Android library XML resources
A new client-side web application has been added to the \DEV/definition-file-builder/js\ directory, allowing users to generate Android library definition XML files. The tool collects metadata such as library ID, author, description, version, license, and class path, then constructs an XML resource file with standardized string keys (e.g., \library\_\<id\>\_author\). The generated XML can be viewed in a syntax-highlighted preview pane using Prism.js or downloaded directly as a \.xml\ file. Library IDs and filenames are automatically normalized to lowercase with spaces and hyphens replaced by underscores to ensure valid Android resource naming conventions.
DEV/definition-file-builder/js · high confidence
New Material 3 Compose UI for Wear OS
This change introduces a new \aboutlibraries-compose-wear-m3\ module that provides a Wear OS-optimized interface for displaying library information using Material 3 Compose components. It includes a \LibrariesContainer\ composable that renders a scrollable list of libraries with customizable details (name, version, author, description, licenses) and a \WearLibrariesScaffold\ for the underlying list structure. The module also adds default UI components for rendering library items and a dialog for license details, along with debug preview utilities for visual testing on Wear devices.
aboutlibraries-compose-wear-m3 · high confidence
New entity models for library metadata in AboutLibraries core
The AboutLibraries core module now includes new serializable data classes (Developer, Funding, Library, License, Organization, Scm) to represent dependency metadata. This enables the library to expose detailed information such as developer details, funding opportunities, and source control links for dependencies, allowing consumers to access richer metadata about the libraries they use.
aboutlibraries-core/src/commonMain/kotlin/com/mikepenz/aboutlibraries/entity · high confidence
New extension properties for HTML formatting and author display in AboutLibraries Compose
Added new Kotlin extension properties in the common Compose utility module to simplify UI rendering. \Library.author\ provides a formatted string of developer names or the organization name, while \Library.htmlReadyLicenseContent\ and \License.htmlReadyLicenseContent\ convert license text into HTML format with line breaks, and their corresponding \stripped\ variants convert HTML back to plain text. These helpers support the dialog UI across platforms by handling content formatting without requiring manual string manipulation in views.
aboutlibraries-compose/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/util · high confidence
New iOS sample app structure and configuration
The sample directory now includes a complete iOS application setup, featuring an Xcode project (\iosApp.xcodeproj\), Swift source files (\ContentView.swift\, \iOSApp.swift\), and asset catalogs. This configuration integrates the shared Kotlin Multiplatform module (\ComposeApp\) via a \UIViewControllerRepresentable\ wrapper, allowing the sample to run on iOS devices. The entry also adds a \Config.xcconfig\ for bundle identification and a \proguard-rules.pro\ file for Android-specific obfuscation settings, alongside a new \README.md\ documenting build and run instructions for Android, Desktop, Web, and iOS targets.
sample · high confidence
New standalone AboutLibraries sample for Desktop
A new Desktop sample application has been added, providing a standalone entry point to view library information. This includes a new JVM main function that launches a Compose window and a generated aboutlibraries.json resource file containing dependency metadata, allowing users to run the sample directly on desktop environments.
sample/desktop · high confidence
New variant system for library list rendering and detail presentation
The library list UI now supports a configurable variant system that allows users to choose between a Traditional vertical Material 3 list and a dense Refined table-like row layout. This change introduces new configuration options for detail presentation (Inline expansion, Sheet, or Dialog), action affordance styles (Chips, Icons, or Links), and row density (Cozy or Compact). The \Libraries\ composable in the variant package serves as the theme-agnostic entry point, dispatching to the chosen variant's row implementation and managing inline detail expansion or sheet/dialog requests, providing a more flexible and customizable user experience for displaying library information.
aboutlibraries-compose/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/variant · high confidence
Sample app redesign with variant system and accent theming
The sample application has been redesigned to support a new variant system, allowing users to switch between Material 2 and Material 3 styles, adjust library density, and customize header positioning (fixed, in-list, or sticky). A new settings panel enables configuration of accent colors, high contrast modes, and license filter visibility, while a new LicenseFilterBar component provides a horizontal scrollable list of license tabs with hue-based coloring.
shared · high confidence
Sample app redesigned with Material 2/3 switcher, accent theming, and new settings controls
The shared sample application has been completely rewritten to support switching between Material 2 and Material 3 themes, along with light and dark modes. The UI now features a neutral palette with a configurable lime accent color that dynamically updates the color scheme. New settings controls allow users to toggle the header position, variant style, and other display options via a bottom sheet. The app also includes a license filter bar, search functionality, and improved accessibility with high-contrast settings for license badges.
sample/shared · high confidence
Support for custom library metadata, funding, and license configuration via JSON files
The plugin now reads custom library definitions, funding information, and license details from JSON files in the configuration directory. Users can define custom libraries with fields such as unique ID, name, description, website, developers, organization, SCM, licenses, funding URLs, tags, and Kotlin targets. Funding data is parsed from a \funding.json\ file to support caching and rate-limit avoidance. Custom licenses can be defined with name, URL, year, content, SPDX ID, and hash. This allows users to override or extend library metadata directly through configuration files.
plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/util/parser · high confidence
Support for fetching remote licenses and project funding from GitHub
The plugin now integrates with the GitHub API to automatically retrieve license text and project funding links (e.g., GitHub Sponsors, Open Collective) for repositories hosted on GitHub. This enhances the generated AboutLibraries data by supplementing pom.xml metadata with remote information, while also introducing an offline mode that uses a no-op API implementation to bypass network calls when a GitHub token is unavailable or rate limits are exhausted.
plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/api · high confidence
Removals
Removal of bundled third-party library metadata and core classes
The \src/main\ directory no longer includes the core \Libs\ and \Library\ classes or the \AndroidManifest.xml\ file that previously managed the AboutLibraries module. Additionally, all resource files containing metadata (names, authors, versions, licenses) for bundled third-party libraries such as ActionBarSherlock, ActiveAndroid, Joda-Time, and NineOldAndroids have been deleted, effectively removing the static library list and configuration from this module.
src/main · high confidence
API
Compose API surface updated with new theming and variant configuration types
The public API for the Compose UI module has been updated to expose a comprehensive set of configuration classes for theming and layout variants. This includes new interfaces and default implementations for \ChipColors\, \LibraryColors\, \LibraryDimensions\, \LibraryPadding\, \LibraryShapes\, and \LibraryTextStyles\, allowing users to customize the appearance of library items, chips, and dialogs. Additionally, the API introduces \VariantColors\, \VariantDimensions\, \VariantPadding\, and \VariantShapes\ to support configurable UI variants, along with \ContrastLevel\ for accessibility adjustments. The \ExtensionsKt\ class now exposes \produceLibraries\ functions, and icon resources are available via \Material\symbols\\*\ utilities.
aboutlibraries-compose/api/jvm · high confidence
New Material 3 Compose API surface for styling and customization
The \aboutlibraries-compose-m3\ module now exposes a public API dump (\aboutlibraries-compose-m3.klib.api\) that includes new style definitions (\DarkM3LicensePalette\, \LightM3LicensePalette\, \DefaultM3LicenseHueResolver\) and helper functions (\m3LibrariesStyle\, \m3VariantColors\, \m3VariantTextStyles\, \m3LicenseHueResolver\) for customizing the appearance of library lists and badges. It also exposes the \LibrariesContainer\ composable with expanded parameters for variant colors, text styles, and custom item rendering, as well as \LibraryDetailSheet\ with support for \SheetState\ and \LibraryChip\ for granular UI control.
aboutlibraries-compose-m3/api · high confidence
Published binary compatibility API for AboutLibraries Compose components
The public API surface for the AboutLibraries Compose UI components is now explicitly defined and published for both Material 2 and Material 3 variants. This establishes the stable contract for \LibrariesContainer\, \LicenseDialog\, and related styling defaults (colors, padding, dimensions, text styles) that developers rely on when integrating the library, ensuring binary compatibility across updates.
aboutlibraries-compose-m2/api/android, aboutlibraries-compose-m3/api/android · high confidence
Updated JVM API surface for AboutLibraries Compose M3
The public API for the \aboutlibraries-compose-m3\ library on the JVM platform has been updated to reflect recent structural changes. The \LibrariesContainer\ composable now accepts new parameters for \LibraryBadges\, \LibraryActionBadges\, \LibrariesVariant\, \LibrariesDensity\, \LibraryDetailMode\, \LibraryActionMode\, \VariantColors\, and \VariantTextStyles\, enabling more granular control over the library list's appearance and behavior. New convenience factories \m3LibrariesStyle\ and \m2LibrariesStyle\ have been exposed to simplify style configuration. Additionally, the \LicenseDialogBody\ is now available as a distinct composable for non-Android platforms, and the \LibraryDetailSheet\ exposes its \SheetState\ for better integration with edge-to-edge layouts.
aboutlibraries-compose-m3/api/jvm · high confidence
Architecture
Introduces multiplatform JSON parsing abstraction for library data
The AboutLibraries core module now uses a platform-specific parsing implementation via the \expect fun parseData\ declaration in \Parser.kt\. This change enables the core library to be fully multiplatform capable by deferring the actual JSON parsing logic to platform-specific \actual\ implementations, allowing the same core logic to run on JVM, Native, and other supported targets without hardcoding a specific JSON library.
aboutlibraries-core/src/commonMain/kotlin/com/mikepenz/aboutlibraries/util · high confidence
Behavioural changes
Added Compose compiler stability configuration and relocated ProGuard rules
The aboutlibraries-core module now includes a compose\_compiler\_config.conf file that explicitly defines stability for core library entities (such as Library, License, and Developer) to ensure consistent Compose compiler behavior. Additionally, the proguard-rules.txt file has been moved into the aboutlibraries-core directory, and a .gitignore entry has been added to exclude the local build folder.
aboutlibraries-core · high confidence
Added Foojay JVM toolchain resolver configuration
A new \gradle-daemon-jvm.properties\ file has been added to configure the Gradle JVM toolchain to use the Foojay Disco API for downloading JDK distributions. This ensures that the build can automatically resolve and install JDK 21 across various operating systems (Linux, macOS, Windows, FreeBSD) and architectures (AARCH64, X86\_64) without requiring manual JDK installation by the user.
gradle · high confidence
Android library data loading and parsing implementation
The Android module now provides platform-specific extensions to load library definition data from Android resources (res/raw/aboutlibraries.json) or raw byte arrays, including documentation on resource shrinking configuration. It also implements the JSON parsing logic for Android using the org.json library, supporting fields such as uniqueId, funding, targets, and tags, ensuring consistent behavior with the multiplatform parser.
aboutlibraries-core/src/androidMain · high confidence
Android sample app restructured with modern UI and adaptive icons
The Android sample application has been updated to use a modern architecture, migrating the main activity to a Compose-based implementation with edge-to-edge display support. The app's visual presentation now utilizes the Material Light NoActionBar theme, and the launcher icon has been replaced with adaptive icons to ensure proper rendering on newer Android versions.
sample/android/src/main · high confidence
Compose UI styling and layout APIs expanded
The AboutLibraries Compose API now exposes granular control over the library list and dialog appearance. Users can customize license badge colors via the new \licenseBadgeContainer\ and \licenseBadgeContent\ properties in \VariantColors\, adjust the maximum width of the license detail dialog through \licenseDialogMaxWidth\ in \VariantDimensions\, and modify row spacing using the new \rowPaddingCompact\ and \rowPaddingCozy\ options in \VariantPadding\. These additions allow for more precise theming and layout adjustments across different density and variant configurations.
aboutlibraries-compose/api · high confidence
Improved SPDX license detection and matching accuracy
The plugin now uses a comprehensive, code-defined enum of SPDX licenses to replace previous mapping methods, significantly improving the accuracy of license detection in compliance reports. This change introduces custom URL matching for specific licenses (such as EPL 2.0) and expands discovery for others (like BSD), ensuring that the generated JSON output correctly identifies licenses that were previously missed or misidentified.
plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/mapping · high confidence
Introduces configurable license color palettes and high-contrast styling
The library now replaces the previous HSV hash fallback with curated, WCAG-compliant color palettes for license badges, ensuring consistent and readable colors for both light and dark surfaces at normal and high contrast levels. This change introduces new style tokens (VariantColors, VariantTokens) that allow developers to customize license badge containers and content colors, as well as overall UI variants, improving accessibility and visual consistency across the AboutLibraries Compose UI.
aboutlibraries-compose/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/style · high confidence
Library deduplication, merging, and configuration-cache compatibility
The plugin now handles duplicate libraries by grouping them based on configurable rules (group, simple, or exact) and either merging their metadata (licenses, funding, targets) into a single entry or linking them as associated siblings, controlled by the new \duplicationMode\ and \duplicationRule\ settings. This logic is implemented in the \LibraryPostProcessor\ and \LibraryUtil\ utilities, which also introduce a build-time \includeLicenses\ filter to exclude libraries that do not match specified license identifiers. To support these changes and improve stability, the plugin now uses lazy provider APIs and replaces custom parsing with Gradle's model builder, ensuring full compatibility with the Gradle configuration cache and project isolation features.
plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/util · high confidence
Libs class now sorts libraries alphabetically by default
The Libs class, which serves as the main access point for generated dependency data, now automatically sorts the list of libraries in case-insensitive alphabetical order by name. This change ensures a consistent and predictable presentation of library information for users without requiring manual sorting logic.
aboutlibraries-core/src/commonMain/kotlin/com/mikepenz/aboutlibraries · high confidence
Material 2 Compose UI overhaul with variant theming and cross-platform license dialog
The Material 2 Compose module has been restructured to support a new variant-based theming system, introducing \m2LibrariesStyle\, \m2VariantColors\, and \m2VariantTextStyles\ for granular control over typography, colors, and layout dimensions. The \LibrariesContainer\ API now accepts \LibraryBadges\ and \LibraryActionBadges\ structs instead of boolean flags, and renders library metadata (version, license, funding) as configurable chips. On Android, the license dialog body now renders HTML-annotated text for richer formatting, while JS, JVM, Native, and Wasm targets fall back to a plain-text default. A new \LibraryChip\ component and default implementations for library rows (name, version, author, description, license, funding) provide a consistent, customizable UI surface across all platforms.
aboutlibraries-compose-m2/src · high confidence
New configuration defaults and library loading API in Compose UI
The Compose UI module now exposes a new \LibraryDefaults\ object that allows users to configure padding, dimensions, text styles, shapes, and colors for library items and chips, replacing previous hardcoded values with customizable options. Additionally, a new \produceLibraries\ composable function has been introduced to load library data asynchronously, providing a modern alternative to the previous \rememberLibraries\ approach for fetching and managing library state.
aboutlibraries-compose/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose · high confidence
Plugin refactored for configuration-cache compatibility with new data models and JSON output
The plugin has been restructured to fully support Gradle's configuration cache and project isolation, moving dependency resolution logic to execution time to avoid retaining project references. This change introduces new Kotlin data models (Library, License, Developer, Funding, etc.) and shifts the output format to a sorted, reproducible JSON file, replacing the previous XML resource generation. Users benefit from faster, cache-friendly builds and more consistent metadata exports, while gaining new configuration options to exclude specific fields from the generated JSON and control platform artifact inclusion.
plugin · high confidence
Sample app launches with a new Compose-based UI
The sample application now starts with a Compose-based activity instead of the legacy View-based UI. This new entry point, ComposeActivity, utilizes the updated LibraryBadges API to display library information and includes a settings drawer that allows users to toggle the visibility of author names, descriptions, versions, license badges, and headers.
app/src/main/kotlin · high confidence
Updated Android Compose API surface with new styling and library production functions
The public API for the Android Compose module has been updated to include new styling interfaces (ChipColors, LibraryColors, LibraryDimensions, LibraryPadding, LibraryShapes, LibraryTextStyles) and their default implementations, allowing for more granular customization of the library list appearance. Additionally, the ExtensionsKt class now exposes both the existing rememberLibraries functions and new produceLibraries functions for loading library data, alongside utility functions for processing license content.
aboutlibraries-compose/api/android · high confidence
Updated M2 Compose library API surface with new styling and customization options
The public API for the AboutLibraries Compose M2 library has been updated to expose new styling capabilities. Users can now customize variant text styles and license badge container colors via \m2VariantTextStyles\ and \m2VariantColors\ in \LibraryDefaults\. Additionally, the \LibrariesContainer\ component now accepts \VariantTextStyles\ and \VariantColors\ parameters, allowing for more granular control over the appearance of library lists and badges.
aboutlibraries-compose-m2/api · high confidence
Test coverage
Added Compose recomposition stability tests for library list and row components; Added JVM library parsing validation test; Added M2 snapshot tests for library UI variants; Added M3 screenshot tests for LibrariesContainer variants; Added automated screenshot tests for Compose previews; Added debug-time Compose previews and fake data for the AboutLibraries UI; Added test coverage for plugin configuration cache, project isolation, and AGP 10 compatibility; Added tests for library duplicate processing logic.
Dependencies
Introduce dedicated Compose UI modules for Material 2, Material 3, and Wear OS
The project now provides separate, publishable Compose libraries for different UI themes: \aboutlibraries-compose\ (core), \aboutlibraries-compose-m2\ (Material 2), \aboutlibraries-compose-m3\ (Material 3), and \aboutlibraries-compose-wear-m3\ (Wear OS). These modules are configured as Kotlin Multiplatform libraries that depend on the \aboutlibraries-core\ and each other where appropriate, while explicitly excluding legacy AndroidX AppCompat and Material Design dependencies to keep the Compose footprint clean. The sample app has been updated to consume these new modules, and the build configuration pins specific npm package versions to address security vulnerabilities in the Kotlin/JS toolchain.
(dependencies) · high confidence
Upgrade Gradle wrapper to version 9.7.1
The project's Gradle wrapper has been updated to use Gradle 9.7.1. This change ensures that builds will automatically download and use this specific version of the Gradle distribution, aligning with the recent dependency updates to v9.7.0 and fixing compatibility issues associated with the newer Gradle versions.
gradle/wrapper · high confidence
Upgraded Gradle wrapper to version 9.7.1 and configured JVM toolchain
The plugin-build environment now uses Gradle 9.7.1, replacing the previous wrapper version. This update includes a new \gradle-daemon-jvm.properties\ file that configures the project to use Java 21 and integrates the Foojay Resolver for automatic JDK provisioning across various operating systems and architectures. The standard Gradle wrapper scripts (\gradlew\ and \gradlew.bat\) have been updated to support this new version, and a \.gitignore\ file has been added to the plugin directory to exclude common IDE and build artifacts.
plugin-build · high confidence
Housekeeping
Initial repository scaffolding and documentation
The repository has been initialized with core documentation and configuration files, including a comprehensive README.md outlining the Kotlin Multiplatform library's features and setup, a MIGRATION.md detailing upgrade paths from previous versions, and a CLAUDE.md providing AI coding assistant guidance. A .gitignore file has been added to exclude build artifacts and IDE-specific files, and a SECURITY.md policy has been established for vulnerability reporting.
(repo-wide) · 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 42 → 62 (+20.3)
- Rubric changed (rubric-2026.08.15 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 67 → 93 (+25.9)
- Architecture 96 → 99 (+3.3)
- Maturity 44 → 65 (+20.8)
- Readiness 23 → 83 (+59.6)
- Security 68 → 88 (+19.6)
- Accessibility 45 (new)
Resolved (78)
- Coverage not measured — test suite did not build
- Critical CVE: [GHSA redacted] (kotlin-js-store/yarn.lock)
- Critical CVE: [GHSA redacted] (kotlin-js-store/yarn.lock)
- Dimension evaluation failed
- Duplicated block (10 lines × 2) (sample/android/src/debug/kotlin/com/mikepenz/aboutlibraries/screenshot/VariantPreviews.kt)
- Duplicated block (10 lines × 2) (sample/android/src/debug/kotlin/com/mikepenz/aboutlibraries/screenshot/VariantPreviews.kt)
- Duplicated block (11 lines × 2) (sample/android/src/debug/kotlin/com/mikepenz/aboutlibraries/screenshot/SampleAppPreviews.kt)
- Duplicated block (12 lines × 2) (plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/AboutLibrariesPluginAndroidExtension.kt)
- Duplicated block (13 lines × 2) (sample/android/src/debug/kotlin/com/mikepenz/aboutlibraries/screenshot/VariantPreviews.kt)
- Duplicated block (14 lines × 2) (sample/android/src/debug/kotlin/com/mikepenz/aboutlibraries/screenshot/VariantPreviews.kt)
- Duplicated block (14 lines × 2) (sample/android/src/debug/kotlin/com/mikepenz/aboutlibraries/screenshot/VariantPreviews.kt)
- Duplicated block (15 lines × 2) (sample/android/src/debug/kotlin/com/mikepenz/aboutlibraries/screenshot/SampleAppPreviews.kt)
- Duplicated block (16 lines × 2) (aboutlibraries-compose/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/variant/refined/RefinedHeader.kt)
- Duplicated block (16 lines × 2) (sample/android/src/debug/kotlin/com/mikepenz/aboutlibraries/screenshot/SampleAppPreviews.kt)
- Duplicated block (16 lines × 2) (sample/shared/src/commonMain/kotlin/com/mikepenz/aboutlibraries/sample/App.kt)
- Duplicated block (18 lines × 2) (sample/android/src/debug/kotlin/com/mikepenz/aboutlibraries/screenshot/VariantPreviews.kt)
- Duplicated block (19 lines × 2) (sample/android/src/debug/kotlin/com/mikepenz/aboutlibraries/screenshot/VariantPreviews.kt)
- Duplicated block (8 lines × 2) (sample/android/src/debug/kotlin/com/mikepenz/aboutlibraries/screenshot/VariantPreviews.kt)
- Duplicated block (9 lines × 2) (sample/shared/src/commonMain/kotlin/com/mikepenz/aboutlibraries/sample/App.kt)
- High CVE: [GHSA redacted] (kotlin-js-store/yarn.lock)
- …and 58 more
New (57)
- (anonymous) (cognitive 18) (DEV/definition-file-builder/js/nlform.js)
- (anonymous) (cyclomatic 16) (DEV/definition-file-builder/js/nlform.js)
- AboutLibrariesExportComplianceTask.action (cognitive 34) (plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/AboutLibrariesExportComplianceTask.kt)
- AboutLibrariesExportComplianceTask.action (cyclomatic 18) (plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/AboutLibrariesExportComplianceTask.kt)
- AboutLibrariesTask.action (cognitive 43) (plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/AboutLibrariesTask.kt)
- AboutLibrariesTask.action (cyclomatic 19) (plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/AboutLibrariesTask.kt)
- BaseAboutLibrariesTask.configure (cognitive 21) (plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/BaseAboutLibrariesTask.kt)
- Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
- DependencyCollector.loadDependencyCoordinates (cognitive 19) (plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/util/DependencyCollector.kt)
- Duplicated block (10 lines × 2) (aboutlibraries-compose-m2/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/SharedLibraries.kt)
- Duplicated block (10 lines × 2) (sample/android/src/debug/kotlin/com/mikepenz/aboutlibraries/screenshot/SampleAppPreviews.kt)
- Duplicated block (10 lines × 3) (aboutlibraries-compose-m2/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/SharedLibraries.kt)
- Duplicated block (10 lines × 3) (plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/AboutLibrariesPluginAndroidExtension.kt)
- Duplicated block (11 lines × 2) (sample/android/src/debug/kotlin/com/mikepenz/aboutlibraries/screenshot/SampleAppPreviews.kt)
- Duplicated block (11 lines × 2) (sample/android/src/debug/kotlin/com/mikepenz/aboutlibraries/screenshot/VariantPreviews.kt)
- Duplicated block (12 lines × 2) (sample/shared/src/commonMain/kotlin/com/mikepenz/aboutlibraries/sample/App.kt)
- Duplicated block (12 lines × 3) (aboutlibraries-compose-m2/src/androidMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/SharedLibraries.android.kt)
- Duplicated block (13 lines × 2) (sample/android/src/debug/kotlin/com/mikepenz/aboutlibraries/screenshot/SampleAppPreviews.kt)
- Duplicated block (14 lines × 2) (aboutlibraries-compose-m2/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/component/LibrariesChip.kt)
- Duplicated block (14 lines × 2) (plugin-build/plugin/src/main/kotlin/com/mikepenz/aboutlibraries/plugin/AboutLibrariesExportComplianceTask.kt)
- …and 37 more
Changes since last survey
- 58 commits — 44 feature/other, 14 fixes
By area
- (repo) — 18 commits
- plugin-build/plugin — 14 commits
- (root) — 13 commits
- .github/workflows — 6 commits
- sample/android — 4 commits
- app-test/files — 1 commit
- gradle/libs.versions.toml — 1 commit
- gradle/wrapper — 1 commit
Notable commits
- fix: Merge pull request #1448 from mikepenz/fix/merge-platform-artifacts-native-targets
- fix: Merge pull request #1452 from mikepenz/fix/duplicate-merge-sibling-modules
- fix: Merge pull request #1453 from mikepenz/fix/link-mode-associated
- fix: Merge pull request #1454 from mikepenz/fix/platform-suffix-allowlist
- fix: Revert "docs: point README images at the review branch [REVERT BEFORE MERGE]"
- fix: fix(deps): update dependency com.squareup.okhttp3:okhttp to v5.5.0
- fix: fix(plugin): DuplicateMode.LINK associated itself instead of its siblings
- fix: fix(plugin): create funding output directory before writing
- fix: fix(plugin): don't merge sibling modules sharing POM name and description
- fix: fix(plugin): keep the KMP root module when mergePlatformArtifacts merges
- fix: fix(plugin): only merge suffixes that name a Kotlin target
- fix: fix(plugin): report no targets for single-target projects
- fix: fix(plugin): stabilize variants provenance for overrides and split classpaths
- fix: fix(sample): drop the accent tint from the surface family
- change: - [release] v15.1.0
- change: - [release] v15.1.0-b01
- change: - [release] v15.1.0-b02
- change: - [release] v15.1.1
- change: - [release] v15.2.0
- change: Merge pull request #1436 from mikepenz/feat/isolated-projects-test-coverage
- …and 38 more
Architecture
- Containers 0 added · 0 removed · contexts 5 added · 0 removed · edges 5 added · 0 removed
Added bounded contexts (5)
- aboutlibraries-compose
- aboutlibraries-compose-m3
- aboutlibraries-core
- plugin
- shared
Added dependency edges (5)
- aboutlibraries-compose → aboutlibraries-core (coupling)
- aboutlibraries-compose-m3 → aboutlibraries-compose (coupling)
- aboutlibraries-compose-m3 → aboutlibraries-core (coupling)
- shared → aboutlibraries-compose (coupling)
- shared → aboutlibraries-core (coupling)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
mikepenz/AboutLibraries 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 25 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 6bb0166138b2f2673e5adce77ba643dc9a9ed006 — 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-dd72cc24c749.