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
Add `rememberViewModelStoreNavEntryDecorator` to the list of decorators for `NavEntry` instances. This enables support for `ViewModel` instances within the navigation component.
This commit refactors the navigation implementation by renaming all `...Route` classes to `...NavKey`. This change provides more descriptive and consistent naming for navigation keys across the codebase.
Key changes include:
* Renamed `BookmarksRoute` to `BookmarksNavKey`
* Renamed `ForYouRoute` to `ForYouNavKey`
* Renamed `InterestsRoute` to `InterestsNavKey`
* Renamed `TopicRoute` to `TopicNavKey`
* Renamed `SearchRoute` to `SearchNavKey`
* Updated all associated feature modules, tests, and UI components to use the new `NavKey` names.
* Removed obsolete test utilities and mock providers related to the old navigation setup.
* Deleted outdated dependency graph images and their corresponding `README.md` files from feature modules.
This commit refactors the navigation state management by renaming `NiaNavigatorState` to `NavigationState` to make it more generic.
Specific changes include:
- Renamed `NiaNavigatorState` to `NavigationState`.
- Renamed `NiaNavigatorProvider` to `NavigationStateProvider`.
- Updated all usages of the renamed classes, including `NiaNavigator`, `NiaBackStackViewModel`, and various tests.
- Replaced the `getEntries()` extension function with `toEntries()`.
- Added numerous TODOs to identify areas for future improvement, such as removing dependencies on `SavedStateHandle` for navigation state, simplifying event handling in ViewModels, and documenting the new navigation components.
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.
- Upgrades to a newer version of compose bom that pulls in newer
versions of lint checks that work with AGP 8.12.2
- Bump the minSdk to 23 because compose now requires minSdk 23
- Update Navigation_fontScale2.png due to compose upgrade
- Clean up BuildConfig set up since we already use Gradle 9.0.0
Test: ./gradlew build
Gradle 9.0.0 has the new enforcement that Test task runs that
have sources but no tests run should fail. Without this change we get
Execution failed for task ':core:analytics:testDemoDebugUnitTest'.
> There are test sources present and no filters are applied, but the test task did not discover any tests to execute. This is likely due to a misconfiguration. Please check your test configuration. If this is not a misconfiguration, this error can be disabled by setting the 'failOnNoDiscoveredTests' property to false.
We get this because before this change AndroidCompose was always setting
isIncludeAndroidResources = true which generates a source to the test
task and in the case of :core:analytics it is the only source.
Instead of setting isIncludeAndroidResources in AndroidCompose move to
setting it in relevant build.gradle.kts files (most already had it)