|
2 | 2 |
|
3 | 3 | All SwiftFloris release history is consolidated here. This replaces the former root-level `RELEASE_NOTES_v*.md` file-per-release pattern. |
4 | 4 |
|
| 5 | +<a id="v1.8.180"></a> |
| 6 | +## v1.8.180 |
| 7 | + |
| 8 | +Released: 2026-05-25 |
| 9 | + |
| 10 | +### Version catalog hygiene (RESEARCH_FEATURE_PLAN.md F34; F33 investigated and rejected) |
| 11 | + |
| 12 | +The 2026-05-25 build/CI reconnaissance pass flagged three hardcoded `testImplementation` coordinate strings in [`app/build.gradle.kts`](app/build.gradle.kts) lines 498–500 (`"androidx.compose.ui:ui-test-junit4"`, `"androidx.test:runner:1.7.0"`, `"junit:junit:4.13.2"`). Hardcoded strings bypass the version catalog, which means Dependabot's grouped Android-runtime / Android-test-tooling update rules (`.github/dependabot.yml`) skip them, and bumps require hand-editing the `.kts` file instead of a single catalog entry. |
| 13 | + |
| 14 | +The same pass also claimed `coil` and `material-kolor` were dead catalog pins (F33). Verification on this run found both are actively consumed by sibling library modules: `lib/snygg/build.gradle.kts:103-104` uses `libs.coil.compose` + `libs.coil.gif`, and `lib/color/build.gradle.kts:60` uses `libs.material.kolor`. The "dead pin" claim came from grepping only `app/`, which missed the sibling modules. F33 is therefore rejected and the catalog entries remain. |
| 15 | + |
| 16 | +### Changes |
| 17 | + |
| 18 | +- **`gradle/libs.versions.toml`** — added three new entries: |
| 19 | + - `[versions] androidx-test-runner = "1.7.0"` |
| 20 | + - `[versions] junit4 = "4.13.2"` |
| 21 | + - `[libraries] androidx-test-runner = { module = "androidx.test:runner", version.ref = "androidx-test-runner" }` |
| 22 | + - `[libraries] androidx-compose-ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4" }` (no `version.ref` — coordinate is managed by the existing `androidx-compose-bom`) |
| 23 | + - `[libraries] junit4 = { module = "junit:junit", version.ref = "junit4" }` |
| 24 | +- **`app/build.gradle.kts:498-500`** — replaced the three hardcoded coordinate strings with their new catalog accessors: |
| 25 | + - `testImplementation("androidx.compose.ui:ui-test-junit4")` → `testImplementation(libs.androidx.compose.ui.test.junit4)` |
| 26 | + - `testImplementation("androidx.test:runner:1.7.0")` → `testImplementation(libs.androidx.test.runner)` |
| 27 | + - `testImplementation("junit:junit:4.13.2")` → `testImplementation(libs.junit4)` |
| 28 | + |
| 29 | +### Why JUnit 4 is still pinned |
| 30 | + |
| 31 | +JUnit 4 is **not** a primary test framework here — the project's main test runner is Kotest 6 on JUnit Platform (`useJUnitPlatform()` per the existing `tasks.withType<Test>` block). The JUnit-4 transitive surface stays because Robolectric's `@RunWith(RobolectricTestRunner::class)` rule and Compose's `createComposeRule()` ship as JUnit-4 rules, and `junit-vintage-engine` bridges them onto the JUnit-Platform runner. Pinning `junit:junit:4.13.2` (the last stable JUnit 4) keeps the bridge deterministic. JUnit 5 / JUnit Platform stays the primary runner for new tests. |
| 32 | + |
| 33 | +### Verification |
| 34 | + |
| 35 | +- `bash scripts/check-repo-hygiene.sh` → OK. |
| 36 | +- `bash scripts/check-fastlane-metadata.sh` → OK (versionCode 1980). |
| 37 | +- `git diff gradle/libs.versions.toml` shows only the three additive entries; no edits to existing live pins. |
| 38 | +- `grep -E "implementation\(\"[a-z.]+:[a-z-]+" app/build.gradle.kts` returns no remaining hardcoded coordinate strings. |
| 39 | +- Sibling-module usage confirmed: `grep -rn "libs\.coil\|libs\.material\.kolor" lib/` returns the expected matches in `lib/snygg/build.gradle.kts` and `lib/color/build.gradle.kts`. |
| 40 | +- Gradle compile + Dependabot grouping verification deferred to maintainer host per `CLAUDE.md`. |
| 41 | + |
| 42 | +### Files Touched |
| 43 | + |
| 44 | +- `gradle/libs.versions.toml` |
| 45 | +- `app/build.gradle.kts` |
| 46 | +- `fastlane/metadata/android/en-US/changelogs/1980.txt` (new) |
| 47 | +- `gradle.properties` (versionCode 1979→1980, versionName 1.8.179→1.8.180) |
| 48 | +- `README.md` (version badge) |
| 49 | +- `CHANGELOG.md` (this section) |
| 50 | +- `RESEARCH_FEATURE_PLAN.md` (tick F34, mark F33 rejected with reason) |
| 51 | + |
5 | 52 | <a id="v1.8.179"></a> |
6 | 53 | ## v1.8.179 |
7 | 54 |
|
|
0 commit comments