From e8455f2c8d69482b9a8d6b98755ec67abd472954 Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Tue, 18 Aug 2026 15:20:30 -0700 Subject: [PATCH] Add a script to bump the version across web, ios, android --- AGENTS.md | 2 +- Dockerfile | 2 +- README.md | 2 +- package.json | 6 ++- pnpm-lock.yaml | Bin 380572 -> 400219 bytes pnpm-workspace.yaml | 3 +- .../build-in-production.sh | 0 build.sh => scripts/build.sh | 0 scripts/bump-version.mjs | 50 ++++++++++++++++++ link_deps => scripts/link-deps.mjs | 0 vite.config.ts | 2 +- 11 files changed, 60 insertions(+), 7 deletions(-) rename build-in-production.sh => scripts/build-in-production.sh (100%) rename build.sh => scripts/build.sh (100%) create mode 100755 scripts/bump-version.mjs rename link_deps => scripts/link-deps.mjs (100%) diff --git a/AGENTS.md b/AGENTS.md index 5a898701..1dff8651 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -206,7 +206,7 @@ pnpm run check # Type check **Welshman Development:** - Clone welshman to parent directory -- Use `./link_deps` script to link local welshman packages +- Use `./scripts/link-deps.mjs` to link local welshman packages - Avoid committing `pnpm.overrides` changes **Git Workflow:** diff --git a/Dockerfile b/Dockerfile index 021a8e27..79880306 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,7 @@ # docker run -p 3000:3000 flotilla # # Pass --build-arg VITE_BUILD_HASH=$(git rev-parse --short HEAD) to stamp the build. -# A .env in the build context is picked up by build.sh for branding config. +# A .env in the build context is picked up by scripts/build.sh for branding config. # https://pnpm.io/docker#example-3-build-on-cicd FROM node:24-slim AS builder diff --git a/README.md b/README.md index 29d5886f..ac843917 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ You can also optionally create an `.env.local` file and populate it with the fol - `VITE_POMADE_SIGNERS` - A comma-separated list of Pomade signer server URLs (3+ required to enable email signup) - `VITE_THUMBNAIL_URL` - URL of the image thumbnail service -These values **won't** be used for a built version. Instead, env variables should be provided to `build.sh` directly or to the built container. +These values **won't** be used for a built version. Instead, env variables should be provided to `scripts/build.sh` directly or to the built container. If you're deploying a custom version of flotilla, be sure to remove the `plausible.coracle.social` script from `app.html`. This sends analytics to a server hosted by the developer. diff --git a/package.json b/package.json index b94f2987..9a19ebb1 100644 --- a/package.json +++ b/package.json @@ -4,10 +4,11 @@ "private": true, "scripts": { "dev": "vite dev", - "build": "./build.sh", + "build": "./scripts/build.sh", "build:server": "vite build --config vite.config.server.ts", "start": "node server.js", - "release:android": "./build.sh && cap build android --androidreleasetype APK --signing-type apksigner", + "release:android": "./scripts/build.sh && cap build android --androidreleasetype APK --signing-type apksigner", + "bump": "node scripts/bump-version.mjs", "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", "lint": "prettier --check src e2e playwright.config.ts && eslint src e2e", @@ -28,6 +29,7 @@ "@types/node": "^25.9.1", "@types/ws": "^8.18.1", "autoprefixer": "^10.4.23", + "capacitor-set-version": "^2.2.0", "classnames": "^2.5.1", "eslint": "^9.39.2", "eslint-config-prettier": "^9.1.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 692fe91ef58f1f45039bc76017a063444815a726..d7f1e9bd3515da5e1ec851fa775a490c317a370e 100644 GIT binary patch delta 20360 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 VGV0?Kn-xMP{~P3=SE>L2 delta 7569 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 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index f86777f4..4e47c019 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,4 +1,4 @@ -# Allow link_deps to change stuff in the working tree +# Allow link-deps.mjs to change stuff in the working tree verifyDepsBeforeRun: warn allowBuilds: @@ -7,6 +7,7 @@ allowBuilds: esbuild: false sharp: true nostr-signer-capacitor-plugin@https://codeload.github.com/coracle-social/nostr-signer-capacitor-plugin/tar.gz/436adec9ed1e71569748cd56aa697f361e7a8d47: true + yarn: false minimumReleaseAgeExclude: - '@pomade/core' - '@welshman/app' diff --git a/build-in-production.sh b/scripts/build-in-production.sh similarity index 100% rename from build-in-production.sh rename to scripts/build-in-production.sh diff --git a/build.sh b/scripts/build.sh similarity index 100% rename from build.sh rename to scripts/build.sh diff --git a/scripts/bump-version.mjs b/scripts/bump-version.mjs new file mode 100755 index 00000000..4e958cd9 --- /dev/null +++ b/scripts/bump-version.mjs @@ -0,0 +1,50 @@ +#!/usr/bin/env node +// Bumps the version in package.json and syncs it to android and ios via +// capacitor-set-version. Android and iOS build numbers have diverged +// historically, so each platform keeps its own counter, incremented only when +// its marketing version actually changes (re-running with the same version is +// a no-op). +import {readFileSync, writeFileSync} from "node:fs" +import {setAndroidVersionAndBuild} from "capacitor-set-version/dist/common/utils-android.js" +import {setIOSVersionAndBuild} from "capacitor-set-version/dist/common/utils-ios.js" + +const arg = process.argv[2] || "patch" + +const pkg = JSON.parse(readFileSync("package.json", "utf-8")) + +let version +if (/^\d+\.\d+\.\d+$/.test(arg)) { + version = arg +} else { + const [major, minor, patch] = pkg.version.split(".").map(Number) + if (arg === "major") { + version = `${major + 1}.0.0` + } else if (arg === "minor") { + version = `${major}.${minor + 1}.0` + } else if (arg === "patch") { + version = `${major}.${minor}.${patch + 1}` + } else { + console.error(`Usage: pnpm bump [major|minor|patch|x.y.z] (got "${arg}")`) + process.exit(1) + } +} + +const gradle = readFileSync("android/app/build.gradle", "utf-8") +const pbxproj = readFileSync("ios/App/App.xcodeproj/project.pbxproj", "utf-8") + +const androidVersion = gradle.match(/versionName "(.+)"/)[1] +const androidBuild = Number(gradle.match(/versionCode (\d+)/)[1]) +const iosVersion = pbxproj.match(/MARKETING_VERSION = (.+);/)[1] +const iosBuild = Number(pbxproj.match(/CURRENT_PROJECT_VERSION = (\d+);/)[1]) + +pkg.version = version +writeFileSync("package.json", JSON.stringify(pkg, null, 2) + "\n") + +const nextAndroidBuild = version === androidVersion ? androidBuild : androidBuild + 1 +const nextIosBuild = version === iosVersion ? iosBuild : iosBuild + 1 + +setAndroidVersionAndBuild(".", version, nextAndroidBuild) +setIOSVersionAndBuild(".", version, nextIosBuild) + +console.log(`android: ${version} (${nextAndroidBuild})`) +console.log(`ios: ${version} (${nextIosBuild})`) diff --git a/link_deps b/scripts/link-deps.mjs similarity index 100% rename from link_deps rename to scripts/link-deps.mjs diff --git a/vite.config.ts b/vite.config.ts index 81434ad6..cf592a0a 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -9,7 +9,7 @@ config({path: ".env"}) export default defineConfig({ // @welshman/editor takes tiptap as peer dependencies, so an installed copy resolves them from - // here and there is one prosemirror. link_deps symlinks its source instead, and that directory + // here and there is one prosemirror. link-deps.mjs symlinks its source instead, and that directory // carries node_modules from welshman's own install — a second prosemirror, whose Plugin and // PluginKey classes tiptap refuses to mix with ours ("Adding different instances of a keyed // plugin"). Deduping resolves these to this project's copy wherever they are imported from, and