Skip to content

Commit 9a92d5c

Browse files
authored
Release v1.0.0 (#54)
1 parent 6f69030 commit 9a92d5c

File tree

114 files changed

+10645
-495
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

114 files changed

+10645
-495
lines changed

.github/dependabot.yml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: "github-actions"
4+
directory: "/"
5+
schedule:
6+
interval: "weekly"
7+
day: "monday"
8+
time: "06:00"
9+
timezone: "UTC"
10+
open-pull-requests-limit: 5
11+
labels:
12+
- "dependencies"
13+
- "security"
14+
15+
- package-ecosystem: "gradle"
16+
directory: "/"
17+
schedule:
18+
interval: "weekly"
19+
day: "monday"
20+
time: "06:15"
21+
timezone: "UTC"
22+
open-pull-requests-limit: 5
23+
labels:
24+
- "dependencies"
25+
- "security"
26+

.github/workflows/ci.yml

Lines changed: 38 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ on:
66
pull_request:
77
branches: [ main ]
88

9+
permissions:
10+
contents: read
11+
912
jobs:
1013
build-and-test:
1114
runs-on: ubuntu-latest
@@ -16,60 +19,79 @@ jobs:
1619
api-level: [ 29 ]
1720
steps:
1821
- name: Checkout
19-
uses: actions/checkout@v4
22+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
2023
with:
2124
ref: ${{ github.head_ref || github.ref }}
2225
fetch-depth: 0
2326
persist-credentials: false
2427

28+
- name: Validate Gradle Wrapper
29+
uses: gradle/actions/wrapper-validation@d9c87d481d55275bb5441eef3fe0e46805f9ef70
30+
2531
- name: Set up JDK 17
26-
uses: actions/setup-java@v4
32+
uses: actions/setup-java@c1e323688fd81a25caa38c78aa6df2d33d3e20d9
2733
with:
2834
distribution: 'zulu'
2935
java-version: '17'
3036

3137
- name: Setup Gradle
32-
uses: gradle/gradle-build-action@v3
38+
uses: gradle/gradle-build-action@ac2d340dc04d9e1113182899e983b5400c17cda1
3339

3440
- name: Grant execute permission for Gradlew
3541
run: chmod +x gradlew
3642

43+
- name: Warning hygiene gate
44+
run: bash scripts/ci/check-warning-hygiene.sh
45+
46+
- name: Preflight
47+
run: ./gradlew preflight --stacktrace
48+
3749
- name: Build and Test with Coverage
38-
run: ./gradlew clean build --stacktrace
50+
run: ./gradlew clean build :runtime:jvmApiCheck :runtime:klibApiCheck :runtime:verifyCommonMainMeeseeksDatabaseMigration --stacktrace --warning-mode fail
3951

40-
publish:
52+
publish-snapshot:
4153
if: github.event_name == 'push' && github.ref == 'refs/heads/main' && github.repository == 'matt-ramotar/meeseeks'
4254
runs-on: macos-latest
4355
needs: build-and-test
56+
permissions:
57+
contents: read
4458
steps:
4559
- name: Checkout
46-
uses: actions/checkout@v4
60+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
61+
with:
62+
persist-credentials: false
63+
64+
- name: Validate Gradle Wrapper
65+
uses: gradle/actions/wrapper-validation@d9c87d481d55275bb5441eef3fe0e46805f9ef70
4766

4867
- name: Set up JDK 17
49-
uses: actions/setup-java@v4
68+
uses: actions/setup-java@c1e323688fd81a25caa38c78aa6df2d33d3e20d9
5069
with:
5170
distribution: 'zulu'
5271
java-version: '17'
5372

5473
- name: Setup Gradle
55-
uses: gradle/gradle-build-action@v3
74+
uses: gradle/gradle-build-action@ac2d340dc04d9e1113182899e983b5400c17cda1
5675

5776
- name: Grant execute permission for Gradlew
5877
run: chmod +x gradlew
5978

6079
- name: Retrieve Version
80+
id: version
6181
run: |
62-
echo "VERSION_NAME=$(grep -w 'VERSION_NAME' gradle.properties | cut -d'=' -f2)" >> $GITHUB_ENV
82+
VERSION_NAME=$(grep -w 'VERSION_NAME' gradle.properties | cut -d'=' -f2)
83+
echo "VERSION_NAME=${VERSION_NAME}" >> $GITHUB_ENV
84+
echo "version_name=${VERSION_NAME}" >> $GITHUB_OUTPUT
6385
64-
- name: Publish to Maven Central (Central Portal)
86+
- name: Skip snapshot publish for non-SNAPSHOT version
87+
if: ${{ !endsWith(steps.version.outputs.version_name, '-SNAPSHOT') }}
88+
run: echo "Skipping snapshot publish because VERSION_NAME=${{ steps.version.outputs.version_name }}."
89+
90+
- name: Publish SNAPSHOT to Maven Central (Central Portal)
91+
if: ${{ endsWith(steps.version.outputs.version_name, '-SNAPSHOT') }}
6592
env:
6693
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.SONATYPE_USERNAME }}
6794
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.SONATYPE_PASSWORD }}
6895
ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.SIGNING_KEY }}
6996
ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.SIGNING_PASSWORD }}
70-
run: |
71-
if [[ "${VERSION_NAME}" == *-SNAPSHOT ]]; then
72-
./gradlew publishToMavenCentral
73-
else
74-
./gradlew publishAndReleaseToMavenCentral
75-
fi
97+
run: ./gradlew publishToMavenCentral

.github/workflows/release.yml

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
name: Release
2+
3+
on:
4+
workflow_dispatch:
5+
6+
permissions:
7+
contents: read
8+
9+
concurrency:
10+
group: release-${{ github.ref }}
11+
cancel-in-progress: false
12+
13+
jobs:
14+
release:
15+
if: github.repository == 'matt-ramotar/meeseeks' && github.ref == 'refs/heads/main'
16+
runs-on: macos-latest
17+
environment: release
18+
timeout-minutes: 30
19+
permissions:
20+
contents: read
21+
steps:
22+
- name: Checkout
23+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
24+
with:
25+
persist-credentials: false
26+
27+
- name: Validate Gradle Wrapper
28+
uses: gradle/actions/wrapper-validation@d9c87d481d55275bb5441eef3fe0e46805f9ef70
29+
30+
- name: Set up JDK 17
31+
uses: actions/setup-java@c1e323688fd81a25caa38c78aa6df2d33d3e20d9
32+
with:
33+
distribution: 'zulu'
34+
java-version: '17'
35+
36+
- name: Setup Gradle
37+
uses: gradle/gradle-build-action@ac2d340dc04d9e1113182899e983b5400c17cda1
38+
39+
- name: Grant execute permission for Gradlew
40+
run: chmod +x gradlew
41+
42+
- name: Warning hygiene gate
43+
run: bash scripts/ci/check-warning-hygiene.sh
44+
45+
- name: Retrieve Version
46+
run: |
47+
echo "VERSION_NAME=$(grep -w 'VERSION_NAME' gradle.properties | cut -d'=' -f2)" >> $GITHUB_ENV
48+
49+
- name: Guard release to non-SNAPSHOT only
50+
run: |
51+
if [[ "${VERSION_NAME}" == *-SNAPSHOT ]]; then
52+
echo "Refusing release workflow for SNAPSHOT versions."
53+
echo "Use CI snapshot publish on main for SNAPSHOTs."
54+
exit 1
55+
fi
56+
57+
- name: Verification gate
58+
run: ./gradlew preflight clean build :runtime:jvmApiCheck :runtime:klibApiCheck :runtime:verifyCommonMainMeeseeksDatabaseMigration --stacktrace --warning-mode fail
59+
60+
- name: Publish and Release to Maven Central (Central Portal)
61+
env:
62+
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.SONATYPE_USERNAME }}
63+
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.SONATYPE_PASSWORD }}
64+
ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.SIGNING_KEY }}
65+
ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.SIGNING_PASSWORD }}
66+
run: ./gradlew publishAndReleaseToMavenCentral

CHANGELOG.md

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# Changelog
2+
3+
All notable changes to Meeseeks are documented in this file.
4+
5+
This project follows semantic versioning.
6+
7+
## [Unreleased]
8+
9+
## [1.0.0] - 2026-02-17
10+
11+
### Added
12+
13+
- Enforced KLib ABI validation in `:runtime` via `klibApiCheck`.
14+
- Release workflow verification gate before Maven Central publish.
15+
- Stable API surface and compatibility statement in docs.
16+
17+
### Changed
18+
19+
- `VERSION_NAME` and published coordinates moved from snapshot to `1.0.0`.
20+
- Runtime module now uses strict explicit API mode.
21+
- Preflight checks now validate real Android SDK component availability.
22+
- `CHROME_BIN` preflight behavior is adaptive: warning when unset, hard failure only for invalid explicit paths.
23+
24+
### Fixed
25+
26+
- Removed internal `WorkerRegistration` leakage from public inline API signatures.
27+
- iOS reschedule aggregation no longer forces both network and charging preconditions when only one is required.
28+
- Removed unstable Kotlin compiler flag `-XXLanguage:+ImplicitSignedToUnsignedIntegerConversion`.
29+
- Sample placeholder TODOs replaced with minimal working sample types.
30+
31+
## Release Notes Process
32+
33+
When preparing a release:
34+
35+
1. Move relevant entries from `Unreleased` into a new version section.
36+
2. Keep entries grouped by `Added`, `Changed`, `Fixed`, `Removed`, `Security`.
37+
3. Include concise migration notes when behavior changes are not backward compatible.
38+
4. Link PRs/issues where possible.
39+
40+
Release notes template:
41+
42+
```markdown
43+
## [<version>] - <yyyy-mm-dd>
44+
45+
### Added
46+
- ...
47+
48+
### Changed
49+
- ...
50+
51+
### Fixed
52+
- ...
53+
54+
### Removed
55+
- ...
56+
57+
### Security
58+
- ...
59+
```

0 commit comments

Comments
 (0)