* 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
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
Update Compose BOM to 2024.11.00 and update other dependencies, such as Robolectric and Roborazzi.
Also, update Screenshot Tests with sdk version 35 for better screenshot testing.
* Overall build
* Enable nightly builds
* Enable Startup Profile generation for release builds
* Skip BP generation for regular Builds
* Test baseline profiles for all variants
* Cleanup
* Remove stale baseline-prof.txt
* Add generated profiles to .gitignore
* GMD
* Setup GMD in separate step
* Add GMD setup to all workflows
* Lower GMD specs
* Update GMD and Android SDK setup
* Add options test options for GMD startup
* Ensure only one device is used for bp / benchmark
* Apply guidance from issuetracker b/287312019
* Add new metrics for baseline profile measurement
Added custom metrics to better understand how effective a baseline
profile is. These TraceSectionMetrics keep track of JIT compilations
as well as class initializations which should go down when a BP is
properly applied to the app.
* Configure baseline profiles in the baselineProfile lambda
* This is the correct and easiest way to set up baseline profiles correctly.
* See b/313428246 for more context.
* Handle empty topics during baseline profile generation
* Revert to API 33 GMD and fail empty screen tests
* Rename withChildren to noChildren for better legibility
* Remove unused log tags
* Update benchmark and metrics versions
* 🤖 Updates baselines for Dependency Guard
---------
Co-authored-by: Tomáš Mlynarič <mlykotom@google.com>
Co-authored-by: Jaehwa Noh <shwoghk14@gmail.com>