perf(versions-host): fetch version lists from static assets#10361
Conversation
📝 WalkthroughWalkthroughThe PR migrates the versions TOML endpoint from ChangesVersion list endpoint migration
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~5 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Comment |
Greptile SummaryThis PR switches the version-list fetch URL from the dynamic
Confidence Score: 5/5Safe to merge — the change is a one-line URL path swap with a clean fallback (404 → Ok(None)) if the server-side path isn't live yet. The diff is minimal: a URL constant changes, a small helper function is introduced, and both a unit test and an e2e guard are updated to match. Error handling, TOML parsing, in-process caching, and rate-limiting are all untouched. The 404 fallback means the client degrades gracefully even if the new No files require special attention. Important Files Changed
Reviews (1): Last reviewed commit: "perf(versions-host): fetch version lists..." | Re-trigger Greptile |
Hyperfine Performance
|
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.6.4 x -- echo |
38.3 ± 10.1 | 22.8 | 82.1 | 1.70 ± 0.46 |
mise x -- echo |
22.6 ± 1.3 | 20.1 | 31.2 | 1.00 |
✅ Performance improvement for x -- echo is 70% |
mise env
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.6.4 env |
21.6 ± 1.2 | 19.3 | 27.8 | 1.00 |
mise env |
25.0 ± 8.1 | 20.4 | 106.3 | 1.16 ± 0.38 |
env measured 16% slower, but hyperfine reported statistical outliers. |
mise hook-env
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.6.4 hook-env |
40.8 ± 13.9 | 21.5 | 97.9 | 1.25 ± 0.67 |
mise hook-env |
32.7 ± 13.5 | 20.7 | 98.9 | 1.00 |
✅ Performance improvement for hook-env is 25% |
mise ls
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.6.4 ls |
18.8 ± 1.4 | 15.6 | 25.8 | 1.00 |
mise ls |
18.9 ± 1.1 | 16.1 | 25.6 | 1.00 ± 0.09 |
xtasks/test/perf
| Command | mise-2026.6.4 | mise | Variance |
|---|---|---|---|
| install (cached) | 274ms | ✅ 233ms | +17% |
| ls (cached) | 138ms | 141ms | -2% |
| bin-paths (cached) | 225ms | ✅ 187ms | +20% |
| task-ls (cached) | 303ms | 275ms | +10% |
✅ Performance improvement: install cached is 17%
✅ Performance improvement: bin-paths cached is 20%
Summary
/data/{tool}.tomlso Cloudflare can serve them as static assetsValidation
cargo fmt --checkcargo test versions_hostmise run test:e2e e2e/cli/test_ls_cachetarget/debug/mise -v ls-remote batloggedGET https://mise-versions.jdx.dev/data/bat.toml 200 OKandversion_list tool=bat outcome=successThis PR was generated by an AI coding assistant.
Note
Low Risk
Narrow URL-path change with a unit test and e2e update; depends on the host serving the same TOML at the new path.
Overview
Version list TOML for mise-versions is now loaded from
/data/{tool}.tomlinstead of/tools/{tool}.toml, via a newversion_list_urlhelper, so lists can be served as static CDN assets while parsing and caching behavior stay the same.GitHub release metadata, attestations, and install tracking still use the existing
/api/...routes. Thetest_ls_cachee2e assertion was updated to expect the new URL when checking thatmise lsdoes not refetch the versions host after cache warming.Reviewed by Cursor Bugbot for commit 56444eb. Bugbot is set up for automated code reviews on this repo. Configure here.
Summary by CodeRabbit
Refactor
Tests