Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 66 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
name: Validation

on:
pull_request:
workflow_dispatch:

permissions:
contents: read

concurrency:
group: validation-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
validate:
runs-on: ubuntu-latest
timeout-minutes: 90

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '17'

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4

- name: Setup Android SDK
uses: android-actions/setup-android@v3

- name: Install Android SDK packages
run: |
sdkmanager --install \
"platforms;android-36" \
"build-tools;36.0.0"

- name: Run ktlint (Spotless)
run: ./gradlew --no-daemon --stacktrace spotlessCheck

- name: Run tests and assemble validations
run: |
./gradlew --no-daemon --stacktrace \
:way-gradle-plugin:assemble \
:way-gradle-plugin:test \
:way:jvmTest \
:sample-compose:core:ui:assembleDebug \
:sample-compose:core:routing:assembleDebug \
:sample-compose:main:ui:assembleDebug \
:sample-compose:login:ui:assembleDebug \
:sample-compose:app:assembleDebug \
:sample-compose:app:routing:assembleDebug \
:sample-compose:main:routing:assembleDebug \
:sample-compose:permissions:domain:assembleDebug \
:sample-compose:permissions:ui:assembleDebug \
:sample-compose:login:domain:assembleDebug \
:sample-compose:main-parallel:routing:assembleDebug \
:sample-compose:categories:ui:assembleDebug \
:sample-compose:login:routing:assembleDebug \
:way-compose:assembleDebug \
:sample-compose:main-parallel:ui:assembleDebug \
:sample-compose:categories:routing:assembleDebug \
:sample-compose:permissions:routing:assembleDebug
43 changes: 43 additions & 0 deletions .github/workflows/release-plugin.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Publish Plugin to Portal

on:
push:
tags:
- '*'

permissions:
contents: read
packages: write

jobs:
gradle:
runs-on: ubuntu-latest
environment: release

env:
GRADLE_PUBLISH_KEY: ${{ secrets.GRADLE_PUBLISH_KEY }}
GRADLE_PUBLISH_SECRET: ${{ secrets.GRADLE_PUBLISH_SECRET }}
if: ${{ !contains(github.event.head_commit.message, 'ci skip') }}
steps:
- name: Checkout Repo
uses: actions/checkout@v2
- name: Cache Gradle Caches
uses: actions/cache@v3
with:
path: ~/.gradle/caches/
key: cache-gradle-cache
- name: Cache Gradle Wrapper
uses: actions/cache@v3
with:
path: ~/.gradle/wrapper/
key: cache-gradle-wrapper
- name: Setup java
uses: actions/setup-java@v3
with:
distribution: 'corretto'
java-version: '17'
- name: Publish on Plugin Portal
run: ./gradlew --project-dir plugin-build setupPluginUploadFromEnvironment publishPlugins
if: success()
- name: Stop Gradle
run: ./gradlew --stop
82 changes: 82 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
name: Release Libraries

on:
push:
tags:
- '*'

permissions:
contents: read
packages: write

jobs:
publish-libraries:
runs-on: ubuntu-latest
environment: release

steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '17'

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4

- name: Setup Android SDK
uses: android-actions/setup-android@v3

- name: Install Android SDK packages
run: |
sdkmanager --install \
"platforms;android-36" \
"build-tools;36.0.0"
- name: Prepare publishing credentials
env:
NEXUS_USERTOKEN_NAME: ${{ secrets.NEXUS_USERTOKEN_NAME }}
NEXUS_USERTOKEN_PASSWORD: ${{ secrets.NEXUS_USERTOKEN_PASSWORD }}
SIGNING_KEY_ID: ${{ secrets.SIGNING_KEY_ID }}
SIGNING_PASSWORD: ${{ secrets.SIGNING_PASSWORD }}
SIGNING_SECRET_KEY_RING_FILE_BASE64: ${{ secrets.SIGNING_SECRET_KEY_RING_FILE_BASE64 }}
run: |
required_vars=(
NEXUS_USERTOKEN_NAME
NEXUS_USERTOKEN_PASSWORD
SIGNING_KEY_ID
SIGNING_PASSWORD
SIGNING_SECRET_KEY_RING_FILE_BASE64
)

for var in "${required_vars[@]}"; do
if [ -z "${!var}" ]; then
echo "Missing required secret: ${var}"
exit 1
fi
done

keyring_file="${RUNNER_TEMP}/signing-secring.gpg"
echo "${SIGNING_SECRET_KEY_RING_FILE_BASE64}" | base64 --decode > "${keyring_file}"
chmod 600 "${keyring_file}"

mkdir -p "${HOME}/.gradle"
{
echo "mavenCentralUsername=${NEXUS_USERTOKEN_NAME}"
echo "mavenCentralPassword=${NEXUS_USERTOKEN_PASSWORD}"
echo "NEXUS_USERTOKEN_NAME=${NEXUS_USERTOKEN_NAME}"
echo "NEXUS_USERTOKEN_PASSWORD=${NEXUS_USERTOKEN_PASSWORD}"
echo "signing.keyId=${SIGNING_KEY_ID}"
echo "signing.password=${SIGNING_PASSWORD}"
echo "signing.secretKeyRingFile=${keyring_file}"
} >> "${HOME}/.gradle/gradle.properties"

- name: Publish libraries
run: |
./gradlew --no-daemon --stacktrace \
:way:publishAndReleaseToMavenCentral \
:way-compose:publishAndReleaseToMavenCentral
24 changes: 23 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,28 @@
# Changelog

## 0.9.6 - 2026-03-26

* Rework `way-gradle-plugin` Android source wiring to use typed Gradle/AGP APIs instead of reflection-based source set registration
* Fix generated Way classes visibility for AGP 8.x/9.x Android modules by registering generated sources in Kotlin `main` source set when variant Kotlin sources are unavailable
* Ensure routing/debug modules no longer fail with unresolved generated `*Schema`/`*NodeBuilder` classes in consuming projects
* Add regression tests for source resolution and generated directory registration in plugin test suite

## 0.9.5 - 2026-03-26

* Pin `way-gradle-plugin` compilation/publication to Java 11 (`org.gradle.jvm.version=11`) to keep compatibility with Java 11/17 consuming builds
* Fix `NavigationServiceTest` setup for `Stay` consumption by wiring screen transitions explicitly
* Regenerate and update `way-gradle-plugin` golden snapshots to match the current generator contract

## 0.9.4 - 2026-03-26

* Update build stack and dependencies: Gradle 9.4.1, Kotlin 2.3.20, AGP 9.0.1, Compose 1.10.6, Dokka 2.1.0, KSP 2.3.6, and related libs
* Rework `way-gradle-plugin` code generation wiring for new Gradle/Kotlin APIs and KSP task integration
* Add configuration cache support for code generation tasks
* Migrate Dokka integration to V2 mode and exclude ANTLR generated sources from Javadoc
* Add GitHub Actions workflows for CI validation and tag-based release automation
* Fix formatting and lint issues after Spotless/ktlint updates
* Migrate `way` and `way-compose` publication to `com.vanniktech.maven.publish` and remove legacy root publication wiring

## 0.9.3 - 2026-01-12

* Hotfix release with fixed file stream leak
Expand Down Expand Up @@ -74,4 +97,3 @@
## 0.8.0 - 2023-02-28

* Initial release

Loading
Loading