Google's OSS Licenses plugin flags its task as
notCompatibleWithConfigurationCache(), which causes the entire
configuration cache to be discarded on each build that triggers it.
The plugin also does not support edge-to-edge and uses old AppCompat UI.
This replaces the plugin with cashapp/licensee, which:
- Is configuration-cache compatible
- Has no runtime dependency (build-time only Gradle plugin)
- Enables a Compose-based licenses screen with Material 3 support
- Adds license validation via an allow-list
Changes:
- Replace oss-licenses-plugin with cashapp/licensee in Gradle config
- Remove play-services-oss-licenses runtime dependency
- Remove OssLicensesMenuActivity/OssLicensesActivity declarations
- Add licensee configuration with allowed SPDX licenses
- Add Gradle task to copy licensee artifacts.json to app assets
- Create Compose LicensesScreen to display license data
- Update SettingsDialog to navigate to new LicensesScreen
Fixes#1022
Test: ./gradlew installDemoDebug, manual verification of licenses screen
* Apply spotless by default
- Upgrades to spotless 8.2.1
- Moves spotless setup from an init.gradle.kts to build-logic
- Narrows down the scope of `target` in spotless configuration to
be more precise to workaround https://github.com/diffplug/spotless/issues/2717
- Updates all references to init.gradle.kts
Ran gradle-profiler ./gradlew build --dry-run to validate performance
impact.
Before PR:
Mean 10,527.96 ms with 289.01 ms std dev
After PR:
Mean 11,251.78 ms with 530.29 ms std dev
Regression is there, but quite minor.
Test: ./gradlew spotlessCheck
* Address comments from AI overlords
* Fix usage of rootProject
* Enable spotless for build-logic via root project
```
[Hilt] Provided Metadata instance has version 2.3.0, while maximum supported version is 2.2.0. To support newer versions, update the kotlin-metadata-jvm library.: java.lang.IllegalArgumentException: Provided Metadata instance has version 2.3.0, while maximum supported version is 2.2.0. To support newer versions, update the kotlin-metadata-jvm library.
```
The `feature:settings:api` module has been renamed to `feature:settings:impl` to better reflect its role as an implementation module.
This change includes:
* Updating module paths and namespaces.
* Moving all related files, including source code, resources, and tests, to the new `impl` directory.
* Updating dependencies and project configurations in Gradle scripts and README files to point to the new module path.
* Renaming string resources to include the `_impl` suffix for clarity.
* Updating the AndroidX Lifecycle dependency to version 2.10.0.
Made NiaNavigator a stateless class only responsibly for navigating and pop (modifying backStack).
Navigation state now lives in a new class called NiaNavigatorState.
The state of this class is saved and restored by ViewModel.