Skip to content

fix(release): unblock the release push and stop spurious major bumps - #235

Merged
V3RON merged 2 commits into
mainfrom
fix/release-workflow-push-hooks
Jul 28, 2026
Merged

fix(release): unblock the release push and stop spurious major bumps#235
V3RON merged 2 commits into
mainfrom
fix/release-workflow-push-hooks

Conversation

@V3RON

@V3RON V3RON commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

What is this?

The Release workflow cannot currently publish. Its first run failed while pushing the release commit, leaving the version bump and build completed but nothing pushed, tagged, or published. Separately, the release it was attempting was numbered 3.0.0 when the pending version plans only justify a minor bump to 2.2.0. This fixes both.

How does it work?

Installing dependencies runs the root prepare script, lefthook install, which arms the repository's pre-push hooks inside the CI checkout. Pushing the release commit therefore ran the native test suites, neither of which can pass on the Linux release runner: the Swift suite needs xcodebuild, and the Kotlin suite builds example/android, a git-ignored directory generated by expo prebuild. Both hooks fired because their guard compares against origin/main, and the release commit changes the client packages' versions. The release job now sets LEFTHOOK: 0 and passes --no-verify on both pushes. These suites already gate main through required CI checks, and the release commit only layers version and changelog changes on top of a commit that passed them.

The version number came from a second, independent problem. Changesets promotes any package that peer-depends on a released package to a major bump, and it does so even for a * range that can never fall out of range. The CLI declared @use-voltra/android and @use-voltra/ios as optional peers, and both sit in the fixed group in .changeset/config.json, so they are bumped on every release. That made the CLI major on every release, and the fixed group then propagated that major to all twelve published packages — meaning 3.0.0, then 4.0.0, and so on, regardless of content. Removing the two declarations restores the intended bump.

Those declarations carried no weight. packages/cli/src/dependencies/platformPackages.ts resolves both packages through createRequire rooted at the consuming app's package.json, not the CLI's own dependency tree, so peer hoisting never affected whether the CLI works. The CLI already reports both packages as missing with an actionable message, and @use-voltra/android-client, @use-voltra/ios-client, and @use-voltra/metro are resolved the same way without ever being declared as peers.

Why is this useful?

Releases can be cut again, and they carry the version number their changesets describe instead of consuming a major on every publish.

V3RON added 2 commits July 28, 2026 12:58
The release job installs dependencies, which runs `lefthook install` and
arms the repository's pre-push hooks inside the CI checkout. Pushing the
release commit then ran the native test suites, which cannot pass on the
Linux release runner: the Swift suite needs xcodebuild and the Kotlin
suite needs an `expo prebuild` Android project. Disable lefthook for the
job so the push succeeds; CI already gates these suites on main.

Also drop the `@use-voltra/android` and `@use-voltra/ios` peer
dependencies from the CLI. Changesets bumps peer dependents by major, and
because both packages sit in the `fixed` group they are bumped on every
release, so every release resolved to a major version. The declarations
were inert regardless: the CLI resolves both packages from the consuming
app's project root, not from its own dependency tree.
Removing the peer dependencies left the lockfile out of sync, which broke
`pnpm install --frozen-lockfile`. `autoInstallPeers` had resolved both
bare `*` peers to published 1.4.1 tarballs rather than workspace links,
so this prunes those importer entries along with the package and snapshot
records that only they referenced.
@V3RON
V3RON merged commit 9448b26 into main Jul 28, 2026
14 checks passed
@V3RON
V3RON deleted the fix/release-workflow-push-hooks branch July 28, 2026 12:16
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