Skip to content

chore: release 2026.4.23#9396

Merged
jdx merged 1 commit intomainfrom
release
Apr 26, 2026
Merged

chore: release 2026.4.23#9396
jdx merged 1 commit intomainfrom
release

Conversation

@mise-en-dev
Copy link
Copy Markdown
Collaborator

@mise-en-dev mise-en-dev commented Apr 25, 2026

🚀 Features

  • (backend) add global libc preference by @jdx in #9404
  • opt-in to pre-release versions for github and aqua backends by @jakedgy in #9329

🐛 Bug Fixes

  • (backend) allow unresolved latest opt-in by @jdx in #9401
  • (install) stop rewriting healthy runtime symlinks by @jdx in #9410
  • (node) route musl tarball URLs to unofficial-builds by @jdx in #9409
  • (prune) skip remote version resolution for tracked configs by @jdx in #9406
  • (schema) allow array values in tool additionalProperties by @JP-Ellis in #9400

📦️ Dependency Updates

📦 Registry

Chore

  • (ci) improve pr-closer workflow by @jdx in #9403
  • (docs) switch canonical domain to mise.en.dev by @jdx in #9411
  • (release) stop appending sponsor blurb when communique succeeds by @jdx in #9395

New Contributors

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Apr 25, 2026

Greptile Summary

Standard release PR bumping mise from 2026.4.22 to 2026.4.23 across all packaging manifests (Cargo.toml, default.nix, RPM spec, snapcraft.yaml) and completion scripts. The mise.lock also corrects several musl platform entries (aube, communique, hk, stylua) that previously pointed to glibc GNU tarballs — both the URLs and checksums are now updated to their corresponding musl builds.

Confidence Score: 4/5

Safe to merge; all version bumps are consistent and the musl lock fixes are well-formed, though the pre-existing Node.js musl checksum issue flagged in the prior review remains open.

All packaging version strings are consistently updated to 2026.4.23. The mise.lock musl corrections (URL + matching checksum) for aube, communique, hk, and stylua look correct. The only known outstanding issue (Node.js musl stale checksums) was flagged in a previous review cycle and is not introduced by this PR.

mise.lock — Node.js musl platform entries still carry stale checksums from a prior release (flagged in previous review, not introduced here)

Important Files Changed

Filename Overview
CHANGELOG.md New version entry for 2026.4.23 prepended with full feature/fix/dependency notes
Cargo.toml Version bumped from 2026.4.22 to 2026.4.23
Cargo.lock mise package version updated to 2026.4.23 in lock file
mise.lock Fixes musl platform URLs and checksums for aube, communique, hk, and stylua; Node.js musl entries remain unaddressed (flagged in prior review)
completions/_mise Spec file cache name updated to include new version 2026_4_23
completions/mise.bash Spec file cache name updated to include new version 2026_4_23
completions/mise.fish Spec file cache name updated to include new version 2026_4_23
completions/mise.ps1 Spec file cache name updated to include new version 2026_4_23
default.nix Version bumped to 2026.4.23 for Nix packaging
packaging/rpm/mise.spec RPM spec version bumped to 2026.4.23
snapcraft.yaml Snap package version bumped to 2026.4.23
README.md Version string in CLI output example updated to 2026.4.23 (2026-04-26)

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[release 2026.4.23] --> B[Version bumps]
    A --> C[mise.lock musl fixes]
    B --> B1[Cargo.toml / Cargo.lock]
    B --> B2[default.nix]
    B --> B3[packaging/rpm/mise.spec]
    B --> B4[snapcraft.yaml]
    B --> B5[README.md]
    B --> B6[completions - 4 shells]
    C --> C1[aube linux-x64-musl-baseline: gnu to musl URL + new checksum]
    C --> C2[communique linux-x64-musl-baseline: gnu to musl URL + new checksum]
    C --> C3[hk linux-arm64-musl / x64-musl / x64-musl-baseline: gnu to musl URLs + new checksums]
    C --> C4[stylua linux-arm64-musl: gnu to musl URL + new checksum]
Loading

Reviews (13): Last reviewed commit: "chore: release 2026.4.23" | Re-trigger Greptile

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the version of mise from 2026.4.22 to 2026.4.23 across multiple files, including Cargo.toml, Cargo.lock, documentation, shell completion scripts, and packaging configurations. It also adds a changelog entry noting that the sponsor blurb will no longer be appended when communique succeeds. I have no feedback to provide.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 25, 2026

Hyperfine Performance

mise x -- echo

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.4.22 x -- echo 23.7 ± 0.3 23.1 25.1 1.00
mise x -- echo 24.6 ± 2.2 23.4 71.5 1.04 ± 0.09

mise env

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.4.22 env 23.3 ± 0.4 22.6 28.2 1.00
mise env 23.6 ± 1.0 22.7 38.6 1.01 ± 0.04

mise hook-env

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.4.22 hook-env 23.9 ± 0.5 23.1 27.7 1.00
mise hook-env 24.6 ± 0.4 23.6 26.6 1.03 ± 0.03

mise ls

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.4.22 ls 23.9 ± 0.3 23.3 25.3 1.00
mise ls 24.6 ± 0.3 24.1 28.0 1.03 ± 0.02

xtasks/test/perf

Command mise-2026.4.22 mise Variance
install (cached) 168ms 165ms +1%
ls (cached) 80ms 83ms -3%
bin-paths (cached) 82ms 84ms -2%
task-ls (cached) 775ms 781ms +0%

@mise-en-dev mise-en-dev force-pushed the release branch 9 times, most recently from 702b503 to d138b2d Compare April 26, 2026 18:17
Comment thread mise.lock Outdated
jdx added a commit that referenced this pull request Apr 26, 2026
## Summary

[PR #9404](#9404) (`feat(backend): add
global libc preference`) taught Node's slug builder to append `-musl`
for musl targets but kept routing through `nodejs.org/dist/`, which does
not host musl tarballs (they live at `unofficial-builds.nodejs.org`).
The visible symptom was in [PR
#9396](#9396 `mise.lock` diff: the
URL gained a `-musl` suffix while the checksum stayed pinned to the
original glibc tarball.

```toml
[tools.node."platforms.linux-x64-musl"]
checksum = "sha256:dbf5b8665..."   # ← still the glibc checksum
url = ".../v24.14.0/node-v24.14.0-linux-x64-musl.tar.gz"   # ← 404, wrong host
```

Mechanically: `resolve_lock_info` builds a 404'ing URL on
`nodejs.org/dist`, fetches the wrong `SHASUMS256.txt` (which doesn't
list `-musl.tar.gz`), gets `None` back, and the lockfile merge preserves
the **stale glibc checksum** alongside the new URL. Anyone running `mise
install` against that lockfile on a musl system would either 404 or hit
a checksum mismatch.

The aqua/github-backed tools in the same release diff updated cleanly
because their checksum source rotates with the artifact. Node is unique
in fetching checksums from a separate `SHASUMS256.txt`.

## Changes

### `src/plugins/core/node.rs`

Add `mirror_url_for(&SettingsNode, filename)` that swaps to
`https://unofficial-builds.nodejs.org/download/release/` when a filename
references a musl artifact and the user has not set a custom
`node.mirror_url`. Wire it into `resolve_lock_info`, `get_tarball_url`,
`BuildOpts::new`, and `shasums_url` so the tarball URL and the matching
`SHASUMS256.txt` always come from the same host. Three unit tests cover
routing (default → glibc, musl → unofficial-builds, custom mirror passes
through unchanged).

### `src/lockfile.rs`

Defense in depth: when merging `PlatformInfo` (both in
`set_platform_info` and `merge_with`), drop the other side's
`checksum`/`size`/`url_api` if URLs disagree — those fields describe a
specific artifact and become stale once the URL changes. The
pre-existing `test_platform_info_merge_prefers_sha256` was asserting
that sha256 should win even across mismatched URLs, which is exactly the
latent bug; updated it to use a shared URL and added
`test_platform_info_merge_drops_stale_checksum_on_url_change`.

### `mise.lock`

Re-ran `mise lock node` to fix the three corrupted node musl entries.
Checksums verified against upstream:

```sh
$ curl -fsSL https://unofficial-builds.nodejs.org/download/release/v24.14.0/SHASUMS256.txt | grep -E "linux-(arm64|x64)-musl\.tar\.gz"
8f81d47b7f...  node-v24.14.0-linux-arm64-musl.tar.gz
bae0f23204...  node-v24.14.0-linux-x64-musl.tar.gz
```

Both match what mise now writes.

## Test plan

- [x] `cargo test` — 778 passed, 0 failed (includes 3 new node tests + 1
new lockfile test, plus an updated test that previously asserted the
latent bug).
- [x] `cargo clippy --all-features --tests` — clean.
- [x] `cargo fmt` — clean.
- [x] `mise lock node` against this branch produces correct URLs +
checksums for all three node musl platform variants.
- [ ] Install on Alpine / musl host: `MISE_LIBC=musl mise install
node@24.14.0` should download from `unofficial-builds.nodejs.org` and
run.
- [ ] Glibc regression: same flow without `MISE_LIBC=musl` should still
hit `nodejs.org/dist`.

*This PR was generated by an AI coding assistant.*

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Medium Risk**
> Changes Node.js download/checksum URL selection and lockfile merge
behavior, which can affect installs and lockfile correctness across
platforms; scope is contained with added tests.
> 
> **Overview**
> Fixes Node.js *musl* installs/lock resolution by routing musl tarball
URLs (and their matching `SHASUMS256.txt`/signature URLs) to
`unofficial-builds.nodejs.org` when using the default mirror, while
still respecting user-configured `node.mirror_url`.
> 
> Hardens lockfile merging so when a platform artifact `url` changes,
stale artifact-bound fields (`checksum`, `size`, `url_api`) from the
other side are dropped instead of preserved, preventing mismatched
URL+checksum pairs.
> 
> Regenerates `mise.lock` Node musl entries to use the unofficial-builds
URLs with updated sha256 checksums, and adds/updates unit tests covering
the new mirror routing and merge semantics.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
dd68707. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@mise-en-dev mise-en-dev force-pushed the release branch 2 times, most recently from 0ef2b6d to a9f4dc3 Compare April 26, 2026 19:37
@jdx jdx enabled auto-merge (squash) April 26, 2026 19:52
@jdx jdx merged commit 9225550 into main Apr 26, 2026
62 checks passed
@jdx jdx disabled auto-merge April 26, 2026 20:42
@jdx jdx deleted the release branch April 26, 2026 20:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants