Prepare 1.0.0-Beta1 release#188
Conversation
Rename [Unreleased] to [1.0.0-Beta1] - 2026-05-17, add empty [Unreleased] section, add compare-link, restructure Added section by area, and backfill items audited against git log: - Added: enum DSL (#162), CC support (#164), JavaPreferences default (#167), lint detectors (#141, #176, #181), Detekt rules (#142), FlagRegistry codegen (#110), AGP Variant ProGuard auto-wire, E2E test, R8 DCE module (#165), SECURITY.md (#173), GH templates (#175). - Changed: AGP 9.1 / Gradle 9.3 migration (#135), providers/ directory reshuffle (#128). - Removed: BCV plugin (#150), @LocalFlag/@RemoteFlag. - Fixed: Firebase wrap RuntimeException (#151), MIT POM (#174), quickstart artifact IDs (#179). Closes #166.
Release commit for the first Beta of v1.0.0. The publish.yml workflow consumes the tag (v1.0.0-Beta1) as the published version, but ORG_GRADLE_PROJECT_VERSION_NAME falls back to VERSION_NAME for SNAPSHOT pushes — bumping the baseline keeps post-release SNAPSHOT builds on a meaningful track. Refs #156.
bc2d211 to
b585203
Compare
Central Portal (central.sonatype.com) replaced the legacy OSSRH flow; vanniktech 0.36 exposes `publishToMavenCentral` (manual promotion) and `publishAndReleaseToMavenCentral` (auto). The former matches our release process: tag push uploads a bundle to staging, then a human reviews and clicks Publish in the Central Portal UI. - publish.yml: invoke `publishToMavenCentral` instead of the legacy `publishAllPublicationsToMavenCentralRepository`. No build.gradle.kts changes needed: vanniktech 0.36 removed the SonatypeHost parameter — Central Portal is the only API path. CI secrets must be Central Portal User Tokens (central.sonatype.com → Account → Generate User Token), stored as MAVEN_CENTRAL_USERNAME and MAVEN_CENTRAL_PASSWORD. Refs #156.
Both modules publish to Maven Central but were missing from the featured-bom constraints — consumers had to pin their versions manually. Adding them restores the BOM contract: every published Featured artifact is version-managed through featured-bom. Refs #156.
ConfigParam.description collides with the inherited
NSObject.description() ObjC selector, so SKIE was forced to
rename the property to description_ in the generated Swift API
— an ugly first-impression name for the 1.0.0-Beta1 release.
Annotating the Kotlin property with @ObjCName("summary") gives
Swift consumers a clean ConfigParam.summary while keeping the
Kotlin API untouched (description remains the canonical name on
JVM/JS targets).
Refs #156.
Review Summary by QodoPrepare 1.0.0-Beta1 release with Central Portal migration
WalkthroughsDescription• Finalize CHANGELOG for 1.0.0-Beta1 release with comprehensive backfill • Bump VERSION_NAME to 1.0.0-Beta1 for beta release • Switch Maven Central publishing to Central Portal API • Add featured-testing and featured-lint-rules to BOM • Expose ConfigParam.description as .summary in Swift Diagramflowchart LR
A["Release Preparation"] --> B["CHANGELOG Update"]
A --> C["Version Bump"]
A --> D["Publishing Config"]
A --> E["BOM Updates"]
A --> F["Swift API Fix"]
D --> G["Central Portal"]
E --> H["featured-testing"]
E --> I["featured-lint-rules"]
F --> J["ObjCName Annotation"]
File Changes1. CHANGELOG.md
|
Code Review by Qodo
Context used✅ Compliance rules (platform):
7 rules 1. Config cache disabled on main
|
There was a problem hiding this comment.
Pull request overview
Prepares the repository for the 1.0.0-Beta1 release by finalizing release metadata, updating publishing flow, expanding the BOM, and adjusting Swift interop for ConfigParam.
Changes:
- Finalizes
CHANGELOG.mdand bumpsVERSION_NAMEto1.0.0-Beta1. - Switches Maven Central publishing to the Central Portal task.
- Adds missing published modules to the BOM and exposes
ConfigParam.descriptionto Swift as.summary.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
gradle.properties |
Updates the project version baseline for the beta release. |
featured-bom/build.gradle.kts |
Adds featured-testing and featured-lint-rules to managed BOM constraints. |
core/src/commonMain/kotlin/dev/androidbroadcast/featured/ConfigParam.kt |
Adds @ObjCName metadata for Swift-facing property naming. |
CHANGELOG.md |
Converts unreleased notes into the 1.0.0-Beta1 release section. |
.github/workflows/publish.yml |
Updates Maven publishing to use Central Portal publishing. |
Copilot review on PR #188 flagged two stale version mentions in the 1.0.0-Beta1 release notes: - SKIE entry said 0.10.5; libs.versions.toml pins 0.10.10 - Gradle migration entry said 9.3.1; wrapper now ships 9.4.1 (post-#135 dependabot bump) Release notes must match the artifacts users get when checking out the v1.0.0-Beta1 tag — bumping both to actual.
Summary
Prepares the first Beta of v1.0.0 (closes #166, refs #156).
Five atomic commits:
Finalize CHANGELOG for 1.0.0-Beta1 release. Rename
[Unreleased]→[1.0.0-Beta1] - 2026-05-17, add new empty[Unreleased], compare-link[1.0.0-Beta1]: …/releases/tag/v1.0.0-Beta1. Restructure### Addedby area. Backfill items audited againstgit log(enum DSL feat(gradle-plugin): support enum types in Gradle DSL #162, CC support chore: full Configuration Cache support #164, JavaPreferences default feat(platform): replace InMemoryConfigValueProvider with JavaPreferencesConfigValueProvider on JVM #167, lint detectors feat: add :featured-lint-rules Android Lint module with HardcodedFlagValue detector #141/feat(lint): add UncheckedFlagAccess, ExpiredFeatureFlag, and InvalidFlagReference detectors #176/Wire lint detectors into core AAR via lintPublish #181, Detekt rules feat(detekt): add @BehindFlag/@AssumesFlag annotations and InvalidFlagReference/UncheckedFlagAccess rules #142,FlagRegistrycodegen feat(gradle-plugin): auto-generate FlagRegistry initializers per module #110, ProGuard auto-wire, E2E test, R8 DCE module Extract R8 DCE verification into featured-shrinker-tests module #165, SECURITY.md Add SECURITY.md #173, GitHub templates Add GitHub issue templates and PR template #175). Add### Changed(AGP 9.1 + Gradle 9.3 build: migrate to AGP 9.1.0 + Gradle 9.3.1 with full KMP plugin support #135, providers/ reshuffle refactor: move all provider modules under providers/ directory #128) and### Removed(BCV chore: remove binary-compatibility-validator (BCV) #150,@LocalFlag/@RemoteFlag). Backfill### Fixed(Firebase fetch wrapping fix: firebase FetchException wrapping and missing ADR doc #151, MIT POM Fix license mismatch: use MIT in all POM declarations #174, quickstart docs Fix stale artifact IDs in quick-start docs #179).Bump
VERSION_NAMEto1.0.0-Beta1. Release commit;publish.ymlderives the published Maven Central version from thev1.0.0-Beta1tag, butVERSION_NAMEis the SNAPSHOT baseline — keeping it on1.0.0-Beta1makes post-release SNAPSHOT builds (1.0.0-Beta1-SNAPSHOT) meaningful.Switch Maven Central publishing to Central Portal.
publish.ymlnow invokespublishToMavenCentral(manual promotion) instead of the legacypublishAllPublicationsToMavenCentralRepository. vanniktech 0.36 removed the OSSRH path — Central Portal is the only target. No build.gradle.kts changes needed.--no-configuration-cacheadded for release-pipeline debuggability. CI secrets (MAVEN_CENTRAL_USERNAME/MAVEN_CENTRAL_PASSWORD) must be Central Portal User Tokens (central.sonatype.com → Account → Generate User Token).Add featured-lint-rules and featured-testing to BOM. Both modules publish to Maven Central but were missing from the BOM, forcing consumers to pin versions manually. Adding them restores the BOM contract: every published Featured artifact is version-managed through featured-bom.
Expose ConfigParam.description as .summary in Swift via @ObjCName. Avoids SKIE's auto-rename to description_ caused by the NSObject.description() collision. Kotlin API unchanged.
Release flow after merge
Squash and merge(orRebaseto keep five commits — preference of maintainer).v1.0.0-Beta1on the merge commit → triggerspublish.yml(Maven Central staging + XCFramework GitHub release).Test plan
CHANGELOG.md(subsections, links, all PR numbers)gradle.propertiesshowsVERSION_NAME=1.0.0-Beta1publish.ymlstep invokespublishToMavenCentral --no-configuration-cachefeatured-bomPOM contains 15 managed artifacts (was 13)ConfigParam.descriptionaccessible as.summaryin Swift (nodescription_)