From 3d3d3abbdfb09401e216224d4814620cd13ae414 Mon Sep 17 00:00:00 2001 From: deymosh Date: Mon, 7 Sep 2026 00:00:55 +0200 Subject: [PATCH] chore: bump to 0.11.0 and derive the Android versionCode - Version 0.10.0 -> 0.11.0 across all six package.json, tauri.conf.json, Cargo.toml and the codedeck-mobile entry in Cargo.lock. Unified versioning: every artifact of a release carries the release's version. - Remove `bundle.android.versionCode` from tauri.conf.json. Tauri derives it from `version` (major*1_000_000 + minor*1_000 + patch), so pinning it turned Android's monotonic-integer guarantee into manual bookkeeping. Verified with a Docker APK build: `aapt2 dump badging` -> versionCode=11000, versionName=0.11.0, package=com.codedeck.plus. - Rewrite cut-release/SKILL.md step 2: the version bump lands in a commit BEFORE the tag so the repo always states its own version; release.yml re-stamps the same number with --allow-same-version, making the CI stamp a no-op safety net rather than the mechanism. Document unified versioning and the derived versionCode. - apps/mobile/README.md: note the versionName/versionCode derivation. `./codedeck check` green. Co-Authored-By: Claude Sonnet 5 --- .claude/skills/cut-release/SKILL.md | 32 +++++++++++++++++++-------- apps/bridge/package.json | 2 +- apps/mobile/README.md | 5 +++++ apps/mobile/package.json | 2 +- apps/mobile/src-tauri/Cargo.lock | 2 +- apps/mobile/src-tauri/Cargo.toml | 2 +- apps/mobile/src-tauri/tauri.conf.json | 7 ++---- package.json | 2 +- packages/core/package.json | 2 +- packages/protocol/package.json | 2 +- packages/testkit/package.json | 2 +- 11 files changed, 38 insertions(+), 22 deletions(-) diff --git a/.claude/skills/cut-release/SKILL.md b/.claude/skills/cut-release/SKILL.md index 3849437..445b734 100644 --- a/.claude/skills/cut-release/SKILL.md +++ b/.claude/skills/cut-release/SKILL.md @@ -39,15 +39,29 @@ Packages write enabled for Actions in repo settings. tagged commit; `ci.yml` does not run on tags, so `master` must already be green. Merge the open PRs that belong in this version. -2. **Pick the version.** Semver. A pre-release gets a hyphen suffix - (`v1.2.0-rc1`) — the workflow publishes it as a GitHub *prerelease* and does - **not** move the `:latest` image tag. - - Version fields in the tree (`apps/bridge/package.json`, - `apps/mobile/src-tauri/tauri.conf.json`) do **not** need a manual bump — the - workflow stamps the tag's number into both before building so the artifacts - self-describe. Bump them in a normal commit only if you want `master` itself - to carry the new number between releases. +2. **Bump the version in the tree — in a commit, before tagging.** One number + for the whole monorepo (unified versioning: every artifact of release N is + version N, even a component unchanged since N-1 — the version is a + compatibility snapshot, not a per-component changelog; wire compatibility is + `protocolVersion`, tracked separately). Set `X.Y.Z` in: + - `package.json` (root), every `apps/*/package.json` and `packages/*/package.json` + - `apps/mobile/src-tauri/tauri.conf.json` `version` + - `apps/mobile/src-tauri/Cargo.toml` `version` + the `codedeck-mobile` entry + in `Cargo.lock` (one line; CI's `cargo test --locked` fails if they disagree) + + The Android `versionCode` is **derived** from `version` + (`major·1_000_000 + minor·1_000 + patch`), so bumping `version` is enough — do + not pin `bundle.android.versionCode` in `tauri.conf.json` (a pin turns the + monotonic-integer guarantee into manual bookkeeping). + + Land this bump on `master` (a small dedicated PR is fine) so the repo always + states its own current version. `release.yml` re-stamps the same number at + build time with `--allow-same-version`, so the CI stamp is a **no-op safety + net** — it only does real work for a `workflow_dispatch` run given an + arbitrary version input, never the mechanism a real tag relies on. + + Semver. A pre-release gets a hyphen suffix (`v1.2.0-rc1`) — published as a + GitHub *prerelease*, and `:latest` does not move. 3. **Verify locally** (see the `verify-changes` skill): diff --git a/apps/bridge/package.json b/apps/bridge/package.json index 7992cf6..18e9d4e 100644 --- a/apps/bridge/package.json +++ b/apps/bridge/package.json @@ -1,6 +1,6 @@ { "name": "@codedeck/bridge", - "version": "0.10.0", + "version": "0.11.0", "type": "module", "bin": { "codedeck-bridge": "./out/main.js" diff --git a/apps/mobile/README.md b/apps/mobile/README.md index 67963a0..718a79e 100644 --- a/apps/mobile/README.md +++ b/apps/mobile/README.md @@ -71,6 +71,11 @@ the Rust `aarch64-linux-android` target. with the repository keystore secrets, and attaches it to the GitHub release. See `.claude/skills/cut-release/SKILL.md`. +The Android `versionName` and `versionCode` both come from `tauri.conf.json` +`version` — Tauri derives `versionCode` as `major·1_000_000 + minor·1_000 + +patch`. Do not pin `bundle.android.versionCode`; bumping `version` is the whole +job. + The mesh engine (`libnostr_vpn_app_core.so`) is cross-compiled from a `nostr-vpn` checkout beside the repo; without it the Gradle task logs a warning and the APK ships without mesh support (mesh is a dev/QA remote-testing feature, diff --git a/apps/mobile/package.json b/apps/mobile/package.json index 66b1fde..924a0b6 100644 --- a/apps/mobile/package.json +++ b/apps/mobile/package.json @@ -1,6 +1,6 @@ { "name": "@codedeck/mobile", - "version": "0.10.0", + "version": "0.11.0", "private": true, "type": "module", "license": "MIT", diff --git a/apps/mobile/src-tauri/Cargo.lock b/apps/mobile/src-tauri/Cargo.lock index ad1eea7..5fadfae 100644 --- a/apps/mobile/src-tauri/Cargo.lock +++ b/apps/mobile/src-tauri/Cargo.lock @@ -665,7 +665,7 @@ dependencies = [ [[package]] name = "codedeck-mobile" -version = "0.10.0" +version = "0.11.0" dependencies = [ "hex", "mdk-core", diff --git a/apps/mobile/src-tauri/Cargo.toml b/apps/mobile/src-tauri/Cargo.toml index 1c6590e..e14d834 100644 --- a/apps/mobile/src-tauri/Cargo.toml +++ b/apps/mobile/src-tauri/Cargo.toml @@ -2,7 +2,7 @@ name = "codedeck-mobile" # Semver per package (plan: the padded/unpadded calendar-version Cargo footgun # is dead). Keep in lockstep with tauri.conf.json `version`. -version = "0.10.0" +version = "0.11.0" description = "CodeDeck — remote-control Claude Code over Nostr (mobile/desktop shell)" edition = "2021" rust-version = "1.77.2" diff --git a/apps/mobile/src-tauri/tauri.conf.json b/apps/mobile/src-tauri/tauri.conf.json index b8cd2d1..89c77fb 100644 --- a/apps/mobile/src-tauri/tauri.conf.json +++ b/apps/mobile/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "CodeDeck+", - "version": "0.10.0", + "version": "0.11.0", "identifier": "com.codedeck.plus", "build": { "frontendDist": "../dist", @@ -48,9 +48,6 @@ "icons/128x128.png", "icons/128x128@2x.png", "icons/icon.png" - ], - "android": { - "versionCode": 6 - } + ] } } diff --git a/package.json b/package.json index 9d5d732..b779694 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "codedeck-plus", "private": true, - "version": "0.10.0", + "version": "0.11.0", "description": "CodeDeck+ community continuation of CodeDeck Next — unified bridge + mobile monorepo with Tor/SOCKS5 transport and NIP-42 relay auth.", "scripts": { "typecheck": "pnpm -r --no-bail run typecheck", diff --git a/packages/core/package.json b/packages/core/package.json index 13fabd0..7a19aca 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@codedeck/core", - "version": "0.10.0", + "version": "0.11.0", "private": true, "type": "module", "main": "src/index.ts", diff --git a/packages/protocol/package.json b/packages/protocol/package.json index 9b520bf..7fad87a 100644 --- a/packages/protocol/package.json +++ b/packages/protocol/package.json @@ -1,6 +1,6 @@ { "name": "@codedeck/protocol", - "version": "0.10.0", + "version": "0.11.0", "private": true, "type": "module", "main": "src/index.ts", diff --git a/packages/testkit/package.json b/packages/testkit/package.json index 552699b..be4d879 100644 --- a/packages/testkit/package.json +++ b/packages/testkit/package.json @@ -1,6 +1,6 @@ { "name": "@codedeck/testkit", - "version": "0.10.0", + "version": "0.11.0", "private": true, "type": "module", "main": "src/index.ts",