Skip to content

Conversation

@lmirabal
Copy link
Owner

Summary

This PR comprehensively updates the project's technology stack to the latest versions, including Kotlin 2.3.0, JVM 25, and all dependencies. All deprecated APIs have been removed, and the code has been modernized for better compatibility and performance.

Version Updates

Core Platform

  • Kotlin: 1.4.10 → 2.3.0
  • JVM Target: 11 → 25
  • Gradle: 6.7.1 → 9.2.1

Dependencies

  • JUnit Jupiter: 5.7.0 → 6.0.1
  • http4k: 3.284.0 → 6.25.0.0
  • result4k: 1.6.0.0 → 2.23.0.0
  • hamkrest: 1.8.0.1 (already latest)

Detailed Changes

1. Build Configuration Modernization

Commit: ca891c6 - build: update Kotlin to 2.3.0, JVM to 25, and Gradle to 9.2.1

  • Updated Kotlin plugin from 1.4.10 to 2.3.0
  • Updated JVM target from 11 to 25 across all modules
  • Updated Gradle wrapper from 6.7.1 to 9.2.1 (latest stable)

2. CI/CD Updates

Commit: 3179bf8 - ci: update GitHub Actions to use JDK 25

  • Updated GitHub Actions workflow to use JDK 25
  • Updated setup-java action from v1 to v4
  • Added Temurin distribution specification

3. Documentation

Commit: ca2eecd - docs: add CLAUDE.md with project architecture and commands

  • Added comprehensive project documentation for AI assistants
  • Documented hexagonal architecture and testing philosophy
  • Included common build, test, and run commands
  • Explained contract-based testing approach

4. Deprecated API Removal

Commit: d4f0bd6 - build: replace deprecated kotlinOptions with jvmToolchain

  • Replaced deprecated kotlinOptions.jvmTarget with modern kotlin.jvmToolchain(25)
  • Removed redundant JVM target configuration from domain module
  • Enabled Gradle configuration cache for faster builds

5. Testing Framework Update

Commit: 56670bf - build: update JUnit from 5.7.0 to 6.0.1

  • Upgraded JUnit Jupiter to 6.0.1 (major version with Kotlin 2.3.0 support)
  • JUnit 6 includes native Kotlin suspend test support and cancellation API

6. HTTP Framework Update

Commit: b7269ee - build: update http4k from 3.284.0 to 6.25.0.0

  • Upgraded http4k to 6.25.0.0 (major version released Dec 18, 2025)
  • Adapted to WebDriver API changes (findElement no longer returns null)
  • Removed unnecessary extension functions that duplicated native behavior
  • Replaced exception-based control flow with findElements().isNotEmpty() checks
  • Replaced !! operators with .orEmpty() for safer null handling

7. Result Library Update

Commit: 8c03135 - build: update result4k from 1.6.0.0 to 2.23.0.0

  • Upgraded result4k to latest version from forkhandles project

Code Quality Improvements

  • ✅ No deprecated APIs in use
  • ✅ No exception-based control flow
  • ✅ No null-assertion operators (!!)
  • ✅ Modern Kotlin idioms throughout
  • ✅ Configuration cache enabled

Testing

All tests pass across all modules:

  • ✅ Domain module tests
  • ✅ HTTP module tests
  • ✅ Web module tests (including Selenium-based UI tests)
BUILD SUCCESSFUL
15 actionable tasks: all executed/up-to-date

Breaking Changes

None. All changes are internal dependency updates with backward-compatible code modifications.

Additional Notes

  • http4k 6.x includes Kotlin 2.3.0 support and improved APIs
  • JUnit 6.x requires Java 17+ (we're using Java 25)
  • result4k is now maintained under the forkhandles organization
  • hamkrest remains at 1.8.0.1 (stable, no recent updates needed)

🤖 Generated with Claude Code

lmirabal and others added 2 commits December 20, 2025 22:32
- Update Kotlin from 1.4.10 to 2.3.0
- Update JVM target from 11 to 25 across all modules
- Update Gradle wrapper from 6.7.1 to 9.2.1

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
- Update JDK version from 11 to 25
- Update setup-java action from v1 to v4
- Add Temurin distribution specification

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
@lmirabal lmirabal force-pushed the build/update-versions branch from 9b73912 to 6072540 Compare December 20, 2025 22:33
- Document hexagonal architecture and testing philosophy
- Include common build, test, and run commands
- List technology stack with updated versions
- Explain contract-based testing approach

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
@lmirabal lmirabal force-pushed the build/update-versions branch from 6072540 to 7a48a97 Compare December 20, 2025 22:40
lmirabal and others added 4 commits December 20, 2025 22:49
- Replace deprecated kotlinOptions.jvmTarget with kotlin.jvmToolchain(25)
- Remove redundant JVM target configuration from domain module
- Enable Gradle configuration cache for faster builds

This modernizes the Kotlin build configuration to use the
recommended Kotlin 2.x JVM toolchain API instead of the
deprecated kotlinOptions API.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
- Upgrade JUnit Jupiter from 5.7.0 to 6.0.1
- Update across all modules including test fixtures
- All tests passing with JUnit 6

JUnit 6 includes native Kotlin suspend test support, cancellation
API, and performance improvements. Requires Java 17+ (we use Java 25).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
- Upgrade http4k BOM to 6.25.0.0 (latest release)
- Remove getElement/getElements extensions (no longer needed)
- Use findElements + isEmpty check for element existence
- Replace !! operators with orEmpty() for null-safe attribute access
- Update all code to use findElement/findElements directly
- All tests passing

http4k 6.x includes Kotlin 2.3.0 support and improved WebDriver API
where findElement(s) no longer return null.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
- Upgrade result4k to latest version (2.23.0.0)
- All tests passing with updated dependency

result4k is part of the forkhandles foundational libraries for Kotlin.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
@lmirabal lmirabal force-pushed the build/update-versions branch from 7a48a97 to 79d343c Compare December 20, 2025 22:49
@lmirabal lmirabal merged commit 6dc7b6d into main Dec 20, 2025
1 check passed
@lmirabal lmirabal deleted the build/update-versions branch December 20, 2025 22:50
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.

2 participants