Skip to content

[BUILD] Sync package versions via xtask + scaffold CHANGELOG#357

Open
justin13888 wants to merge 1 commit into
masterfrom
build/version-sync-xtask
Open

[BUILD] Sync package versions via xtask + scaffold CHANGELOG#357
justin13888 wants to merge 1 commit into
masterfrom
build/version-sync-xtask

Conversation

@justin13888

Copy link
Copy Markdown
Collaborator

Description

Second PR in the release-automation stack for #18 (stacked on #356). Establishes one repo-wide version with a single patchable source of truth per package, plus a tested tool that writes a new version into all of them at once.

Review after #356 — base is ci/convco-mise.

Version SSoT consolidation

  • capsule-media/Cargo.tomlversion = "0.1.0"version.workspace = true, so root Cargo.toml's [workspace.package] version is now the sole SSoT for every Rust crate.
  • gradle.properties — new capsule.versionName / capsule.versionCode; capsule-android/build.gradle.kts now reads them (providers.gradleProperty(...)).
  • capsule-swift/Project.swiftMARKETING_VERSION (+ CURRENT_PROJECT_VERSION) added to the shared baseSettings; the iOS app had no declared version before.
  • Unified the baseline to 0.1.0 everywhere (docs package.json was 0.0.1; Android was 1.0).

xtask crate (new workspace member, publish = false)

  • xtask set-version <X.Y.Z> writes the version into every SSoT: root Cargo.toml + pyproject.toml (toml_edit, formatting/comments preserved), both package.json (surgical regex, formatting preserved), gradle.properties (name set, code incremented — it's a monotonic Android build number), and Project.swift (MARKETING_VERSION).
  • Each per-format editor is a pure &str -> Result<String> function with unit tests (CLAUDE.md testability). Covered by the existing cargo test --workspace.

Wiring

  • justfilejust set-version <X.Y.Z> and just changelog (release group).
  • CHANGELOG.md — minimal generated-by-convco stub (the first release populates it; markdownlint-ignored). Note: a full convco changelog here would dump 452 lines of pre-Conventional-Commits history under "Unreleased" since there are no tags yet — the stub is the cleaner baseline.
  • ci.ymlxtask/** added to the rust paths-filter.

Verification (local)

  • cargo test -p xtask → 7/7 (editors + error paths). cargo clippy -p xtask with CI flags → clean. cargo fmt --check → clean.
  • just set-version 0.2.0 then 0.1.0 → every SSoT updated in lockstep; cargo metadata confirms capsule-media/xtask inherit the workspace version; cargo build -p capsule-media builds at 0.1.0.
  • Full-workspace just lint-check-rust + just format-check-rust → clean.
  • markdownlint → 0 errors (CHANGELOG ignored).
  • Kotlin/iOS: Gradle can't run locally (known) and Swift manifest needs Tuist — both validated by CI (kotlin job, build-ios.yml's tuist generate).

Related Issues

Part of #18 (stack 2/3).

Contributor Checklist

  • I have signed the Contributor License Agreement.
  • My code follows the project's style guidelines according to CONTRIBUTING.md.
  • Tests pass (xtask unit tests + workspace clippy/fmt)
  • No sensitive info / secrets
  • Docs updated if needed

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jun 11, 2026

Copy link
Copy Markdown

Deploying capsule with  Cloudflare Pages  Cloudflare Pages

Latest commit: 36db49a
Status: ✅  Deploy successful!
Preview URL: https://37e7cbc8.capsule-22k.pages.dev
Branch Preview URL: https://build-version-sync-xtask.capsule-22k.pages.dev

View logs

@justin13888 justin13888 force-pushed the build/version-sync-xtask branch from 1acf085 to 36db49a Compare June 11, 2026 06:13
Base automatically changed from ci/convco-mise to master June 11, 2026 06:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant