From 0572b0091cf02e96a7d9063c1d47694fcbee07b4 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Tue, 16 Jun 2026 14:38:13 -0400 Subject: [PATCH] v1.12.0 --- .claude/skills/android-expert/SKILL.md | 2 +- .claude/skills/gradle-expert/SKILL.md | 2 +- .../references/dependency-graph.md | 2 +- .claude/skills/quartz-integration/SKILL.md | 6 ++-- .../references/gradle-setup.md | 8 ++--- .../actions/assert-stable-release/action.yml | 2 +- .github/workflows/create-release.yml | 2 +- BUILDING.md | 22 ++++++------ amethyst/build.gradle.kts | 6 ++-- .../com/vitorpamplona/geode/RelayInfo.kt | 2 +- gradle/libs.versions.toml | 2 +- quartz/build.gradle.kts | 35 ++++++++++++------- 12 files changed, 51 insertions(+), 40 deletions(-) diff --git a/.claude/skills/android-expert/SKILL.md b/.claude/skills/android-expert/SKILL.md index 02b33e8158..bf4f49affe 100644 --- a/.claude/skills/android-expert/SKILL.md +++ b/.claude/skills/android-expert/SKILL.md @@ -750,7 +750,7 @@ android { applicationId = "com.vitorpamplona.amethyst" minSdk = 26 // Android 8.0 (Oreo) targetSdk = 37 // android-targetSdk in libs.versions.toml - versionCode = 447 + versionCode = 448 versionName = generateVersionName(libs.versions.app.get(), rootDir) vectorDrawables { diff --git a/.claude/skills/gradle-expert/SKILL.md b/.claude/skills/gradle-expert/SKILL.md index 04f67cf403..cd806eeff6 100644 --- a/.claude/skills/gradle-expert/SKILL.md +++ b/.claude/skills/gradle-expert/SKILL.md @@ -167,7 +167,7 @@ implementation(libs.jna) **Current project config** (always re-check `gradle/libs.versions.toml` — these drift): ```toml -composeMultiplatform = "1.11.0" # Plugin + runtime +composeMultiplatform = "1.12.0" # Plugin + runtime composeBom = "2026.05.01" # AndroidX Compose BOM kotlin = "2.3.21" ``` diff --git a/.claude/skills/gradle-expert/references/dependency-graph.md b/.claude/skills/gradle-expert/references/dependency-graph.md index 8b07e1bced..95d5c8817b 100644 --- a/.claude/skills/gradle-expert/references/dependency-graph.md +++ b/.claude/skills/gradle-expert/references/dependency-graph.md @@ -212,7 +212,7 @@ implementation(compose.ui) // Compose Multiplatform BOM implementation(compose.material3) // Version catalog alignment (re-check libs.versions.toml — these drift) -composeMultiplatform = "1.11.0" +composeMultiplatform = "1.12.0" composeBom = "2026.05.01" // AndroidX Compose ``` **Why:** Two Compose ecosystems (Multiplatform + AndroidX) must align diff --git a/.claude/skills/quartz-integration/SKILL.md b/.claude/skills/quartz-integration/SKILL.md index 3c1293679f..dd50e7fc98 100644 --- a/.claude/skills/quartz-integration/SKILL.md +++ b/.claude/skills/quartz-integration/SKILL.md @@ -7,7 +7,7 @@ description: Integration guide for using the Quartz Nostr KMP library in externa Reference for integrating `com.vitorpamplona.quartz:quartz` into external Nostr KMP projects. -**Published artifact**: `com.vitorpamplona.quartz:quartz:1.11.0` (Maven Central) +**Published artifact**: `com.vitorpamplona.quartz:quartz:1.12.0` (Maven Central) **Targets**: JVM 21+, Android (minSdk 21+), iOS (XCFramework `quartz-kmpKit`) **License**: MIT @@ -19,7 +19,7 @@ Reference for integrating `com.vitorpamplona.quartz:quartz` into external Nostr ```toml [versions] -quartz = "1.11.0" +quartz = "1.12.0" [libraries] quartz = { module = "com.vitorpamplona.quartz:quartz", version.ref = "quartz" } @@ -41,7 +41,7 @@ kotlin { ```kotlin dependencies { - implementation("com.vitorpamplona.quartz:quartz:1.11.0") + implementation("com.vitorpamplona.quartz:quartz:1.12.0") } ``` diff --git a/.claude/skills/quartz-integration/references/gradle-setup.md b/.claude/skills/quartz-integration/references/gradle-setup.md index 2e9a737a4a..428096a69f 100644 --- a/.claude/skills/quartz-integration/references/gradle-setup.md +++ b/.claude/skills/quartz-integration/references/gradle-setup.md @@ -3,7 +3,7 @@ ## Current version ``` -com.vitorpamplona.quartz:quartz:1.11.0 +com.vitorpamplona.quartz:quartz:1.12.0 ``` Check latest: https://central.sonatype.com/artifact/com.vitorpamplona.quartz/quartz @@ -16,7 +16,7 @@ Check latest: https://central.sonatype.com/artifact/com.vitorpamplona.quartz/qua ```toml [versions] -quartz = "1.11.0" +quartz = "1.12.0" [libraries] quartz = { module = "com.vitorpamplona.quartz:quartz", version.ref = "quartz" } @@ -55,7 +55,7 @@ kotlin { ```kotlin // build.gradle.kts (app module) dependencies { - implementation("com.vitorpamplona.quartz:quartz:1.11.0") + implementation("com.vitorpamplona.quartz:quartz:1.12.0") } ``` @@ -70,7 +70,7 @@ plugins { } dependencies { - implementation("com.vitorpamplona.quartz:quartz:1.11.0") + implementation("com.vitorpamplona.quartz:quartz:1.12.0") // JNA needed for libsodium (NIP-44) on JVM implementation("net.java.dev.jna:jna:5.18.1") } diff --git a/.github/actions/assert-stable-release/action.yml b/.github/actions/assert-stable-release/action.yml index 9d754a4476..14ef6ad8a6 100644 --- a/.github/actions/assert-stable-release/action.yml +++ b/.github/actions/assert-stable-release/action.yml @@ -6,7 +6,7 @@ description: >- inputs: tag: - description: "Tag to validate (e.g. v1.08.0)" + description: "Tag to validate (e.g. vX.YY.Z)" required: true is_prerelease: description: "Whether the release is marked as prerelease (empty string treated as false)" diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index a6be60a4f8..83547b56e1 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -11,7 +11,7 @@ on: type: boolean default: false test_tag: - description: 'Synthetic tag name for dry-run (e.g. v1.08.0-dryrun); ignored on tag push' + description: 'Synthetic tag name for dry-run (e.g. vX.YY.Z-dryrun); ignored on tag push' type: string default: 'v0.0.0-dryrun' diff --git a/BUILDING.md b/BUILDING.md index 71c59e60aa..3b60ed105a 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -113,7 +113,7 @@ Where: | Field | Values | |---|---------------------------------------------------------| -| `` | Tag stripped of leading `v` (e.g. `1.11.0`) | +| `` | Tag stripped of leading `v` (e.g. `1.12.0`) | | `` | `macos`, `windows`, `linux` | | `` | `x64`, `arm64` | | `` | `dmg`, `msi`, `zip`, `deb`, `rpm`, `AppImage`, `tar.gz` | @@ -124,10 +124,10 @@ any change is a breaking contract. Examples: -- `amethyst-desktop-1.11.0-macos-x64.dmg` -- `amethyst-desktop-1.11.0-macos-arm64.dmg` -- `amethyst-desktop-1.11.0-windows-x64.msi` -- `amethyst-desktop-1.11.0-linux-x64.AppImage` +- `amethyst-desktop-1.12.0-macos-x64.dmg` +- `amethyst-desktop-1.12.0-macos-arm64.dmg` +- `amethyst-desktop-1.12.0-windows-x64.msi` +- `amethyst-desktop-1.12.0-linux-x64.AppImage` --- @@ -147,15 +147,15 @@ Quartz library in one pipeline. must increment even for same `versionName`): ```groovy - versionCode = 447 + versionCode = 448 versionName = generateVersionName(libs.versions.app.get()) ``` 3. **Commit + tag + push**: ```bash - git commit -am "chore(release): 1.08.1" - git tag -s v1.08.1 -m "Release 1.08.1" + git commit -am "chore(release): 1.12.0" + git tag -s v1.12.0 -m "Release 1.12.0" git push && git push --tags ``` @@ -223,8 +223,8 @@ or equivalent issue tracker. On rotation, paste new token and run ```bash brew bump-cask-pr amethyst-nostr \ - --version 1.11.0 \ - --url "https://github.com/vitorpamplona/amethyst/releases/download/v1.11.0/amethyst-desktop-1.11.0-macos-arm64.dmg" + --version 1.12.0 \ + --url "https://github.com/vitorpamplona/amethyst/releases/download/v1.12.0/amethyst-desktop-1.12.0-macos-arm64.dmg" ``` The cask filename is `amethyst-nostr` (not `amethyst` — that's taken by a @@ -235,7 +235,7 @@ auto-submits new version bumps on each stable release. ```bash wingetcreate new \ - https://github.com/vitorpamplona/amethyst/releases/download/v1.11.0/amethyst-desktop-1.11.0-windows-x64.msi + https://github.com/vitorpamplona/amethyst/releases/download/v1.12.0/amethyst-desktop-1.12.0-windows-x64.msi ``` Set `PackageIdentifier = VitorPamplona.Amethyst`. After the first manifest is diff --git a/amethyst/build.gradle.kts b/amethyst/build.gradle.kts index 47db3d09d8..f0e6dc09e2 100644 --- a/amethyst/build.gradle.kts +++ b/amethyst/build.gradle.kts @@ -76,9 +76,9 @@ android { libs.versions.android.targetSdk .get() .toInt() - versionCode = 447 + versionCode = 448 versionName = generateVersionName(libs.versions.app.get(), rootDir) - buildConfigField("String", "RELEASE_NOTES_ID", "\"8ec0d94550b5538115226c6858159b1115713c9c6ed942173bd4fd5d292d8ba6\"") + buildConfigField("String", "RELEASE_NOTES_ID", "\"40e817712e397c07ba31784a92fa474aa095896a828c0e2dea0d09c60d49ee1e\"") testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { @@ -282,7 +282,7 @@ android { unitTests.all { test -> test.systemProperty( "java.library.path", - "${projectDir}/src/test/native-libs/x86_64-linux", + "$projectDir/src/test/native-libs/x86_64-linux", ) project .findProperty("amethyst.arti.integration") diff --git a/geode/src/main/kotlin/com/vitorpamplona/geode/RelayInfo.kt b/geode/src/main/kotlin/com/vitorpamplona/geode/RelayInfo.kt index 9d06be9264..5ee2e5d772 100644 --- a/geode/src/main/kotlin/com/vitorpamplona/geode/RelayInfo.kt +++ b/geode/src/main/kotlin/com/vitorpamplona/geode/RelayInfo.kt @@ -41,7 +41,7 @@ data class RelayInfo( const val NAME = "geode" const val DESCRIPTION = "Embedded Nostr relay from the Amethyst quartz library." const val SOFTWARE = "https://github.com/vitorpamplona/amethyst/tree/main/geode" - const val VERSION = "1.11.0" + const val VERSION = "1.12.0" /** * NIPs this relay implements out of the box. Single source of diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 2841552c22..37e80fa957 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,7 +2,7 @@ # Amethyst app version — single source of truth consumed by both Android (amethyst/) # and Desktop (desktopApp/). Android versionCode is bumped independently in # amethyst/build.gradle because it must be a monotonic integer. -app = "1.11.0" +app = "1.12.0" accompanistAdaptive = "0.37.3" cachemapVersion = "0.2.4" composeMultiplatform = "1.11.1" diff --git a/quartz/build.gradle.kts b/quartz/build.gradle.kts index 9652b8df67..cb70a4f5df 100644 --- a/quartz/build.gradle.kts +++ b/quartz/build.gradle.kts @@ -372,16 +372,26 @@ val verifyKmpPurity by tasks.registering { description = "Fails if iOS-targeted source sets import JVM-only deps." val checkedDirs = listOf( - "src/commonMain", "src/commonTest", - "src/appleMain", "src/appleTest", - "src/nativeMain", "src/nativeTest", - "src/iosMain", "src/iosTest", - "src/iosArm64Main", "src/iosArm64Test", - "src/iosSimulatorArm64Main", "src/iosSimulatorArm64Test", - "src/linuxMain", "src/linuxTest", - "src/linuxX64Main", "src/linuxX64Test", - "src/macosMain", "src/macosTest", - "src/macosArm64Main", "src/macosArm64Test", + "src/commonMain", + "src/commonTest", + "src/appleMain", + "src/appleTest", + "src/nativeMain", + "src/nativeTest", + "src/iosMain", + "src/iosTest", + "src/iosArm64Main", + "src/iosArm64Test", + "src/iosSimulatorArm64Main", + "src/iosSimulatorArm64Test", + "src/linuxMain", + "src/linuxTest", + "src/linuxX64Main", + "src/linuxX64Test", + "src/macosMain", + "src/macosTest", + "src/macosArm64Main", + "src/macosArm64Test", ).map { layout.projectDirectory.dir(it).asFile } .filter { it.exists() } inputs.files(checkedDirs) @@ -400,7 +410,8 @@ val verifyKmpPurity by tasks.registering { ) val offenders = checkedDirs.flatMap { dir -> - dir.walkTopDown() + dir + .walkTopDown() .filter { it.isFile && it.extension == "kt" } .flatMap { file -> file.readLines().withIndex().mapNotNull { (idx, line) -> @@ -438,7 +449,7 @@ mavenPublishing { coordinates( groupId = "com.vitorpamplona.quartz", artifactId = "quartz", - version = "1.11.0", + version = "1.12.0", ) // Configure publishing to Maven Central