Skip to content

Phase 1.0a: Migrate to Gradle version catalog - #19

Merged
sjaramillo10 merged 3 commits into
masterfrom
2-10a-migrate-to-gradle-version-catalog-libsversionstoml
May 26, 2026
Merged

sjaramillo10 merged 3 commits into
masterfrom
2-10a-migrate-to-gradle-version-catalog-libsversionstoml

Conversation

@sjaramillo10

Copy link
Copy Markdown
Owner

Linked issue

Closes #2.

What changed

  • gradle/libs.versions.toml (new): centralized [versions], [libraries], [bundles], and [plugins] covering every coordinate previously declared in the root build.gradle's ext.versions / ext.deps maps. Plugin aliases include the full Phase 1.0b set (android-application, android-library, kotlin-android, kotlin-jvm, kotlin-kapt, ksp, compose-compiler, detekt, maven-publish, shot, paparazzi) so the KTS conversion in 1.0b is a syntax-only change.
  • build.gradle (root): ext.versions / ext.deps blocks removed. Buildscript classpaths now read from libs.* (libs.android.gradle.plugin, libs.kotlin.gradle.plugin, libs.shot.plugin, libs.maven.publish.plugin). Top-level plugins {} block uses alias(libs.plugins.*) for detekt, ksp, maven-publish, compose-compiler. Detekt-formatting wired through libs.detekt.formatting.
  • All 14 module build.gradle files: every deps.xxx.yyy reference replaced with the corresponding libs.* accessor. No version changes, no dependency additions, no removals beyond two unused entries in the catalog (espresso and the original 1.1.0 ktx, which had no library declarations consuming them).
  • .gitignore: removed the over-broad gradle/ ignore rule that masked gradle/libs.versions.toml. Wrapper files were already tracked independently so this has no other effect.
  • Added a compose-base bundle for the androidx-activity-compose + compose-foundation + compose-runtime + compose-ui + compose-ui-tooling cluster shared by most modules. Not yet consumed by any module — it's available for cleanup in a future refactor without expanding the scope of 1.0a.

How to validate locally

./gradlew check assembleDebug :showkase-processor:test --stacktrace

Ran locally: green in 3m37s, 762 actionable tasks executed.

CI status

The new ci.yml from PR #18 should run check assembleDebug :showkase-processor:test on JDK 17 against this branch. Expecting the same green signal.

Out-of-scope follow-ups

  • Phase 1.0b (Kotlin DSL conversion) will switch module-level apply plugin: '...' / id '...' strings to alias(libs.plugins.*). The catalog already defines every required alias.
  • Phase 1.1 (drop KAPT) will remove the kotlin-kapt plugin alias from the catalog once no module consumes it.
  • Phase 1.2 (toolchain bump) will update version pins inside libs.versions.toml — that change becomes a single-file diff instead of touching every module.
  • One Gradle deprecation warning surfaced in the run ("Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0"). Not actionable here — these come from AGP 8.9.1 / Paparazzi internals and will resolve in Phase 1.2's AGP 9 upgrade. Documented for completeness.

Establishes operating context for future Claude Code sessions:
repository state, common commands, codegen architecture, build/CI
state, and conventions for the in-flight KMP migration. Includes
explicit rules to keep CLAUDE.md in sync as phases land and to run
the CI-parity gradle command locally before any commit or push.
Introduces gradle/libs.versions.toml as the single source of truth
for dependency coordinates, versions, and plugin IDs. Replaces the
ext.versions / ext.deps Groovy maps that previously lived in the
root build.gradle.

- Catalog covers every coordinate currently consumed: AndroidX,
  Compose 1.6.7, Material 1.4.0, XProcessing, KotlinPoet, KSP,
  Picasso, all test libraries, and the build-script plugin classpaths.
- Defines plugin aliases (android-application, android-library,
  kotlin-android, kotlin-jvm, kotlin-kapt, ksp, compose-compiler,
  detekt, maven-publish, shot, paparazzi) so Phase 1.0b can switch
  to alias(libs.plugins.*) syntax with zero version churn.
- Adds a compose-base bundle for the activity-compose + foundation
  + runtime + ui + ui-tooling cluster shared by most modules.
- Root build.gradle now references libs.* for buildscript classpath
  entries and the top-level plugins block.
- Every module's build.gradle dependency block uses libs.* accessors;
  no behavior or version changes.
- Drops the previously unused 'espresso' and 'ktx' (1.1.0) version
  entries that had no corresponding library reference.
- .gitignore: removes the over-broad 'gradle/' rule (which masked
  libs.versions.toml). Wrapper files were already tracked
  independently.

Local verification: ./gradlew check assembleDebug
:showkase-processor:test --stacktrace passes (3m37s, 762 tasks).

Refs #2
@sjaramillo10 sjaramillo10 linked an issue May 26, 2026 that may be closed by this pull request
@sjaramillo10
sjaramillo10 enabled auto-merge (squash) May 26, 2026 01:46
@sjaramillo10
sjaramillo10 merged commit d7ee582 into master May 26, 2026
1 check passed
@sjaramillo10
sjaramillo10 deleted the 2-10a-migrate-to-gradle-version-catalog-libsversionstoml branch May 26, 2026 01:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1.0a Migrate to Gradle version catalog (libs.versions.toml)

1 participant