feat(http): add version_expr support and Tera templating#7723
Conversation
Adds support for Tera expressions like {{ os() }} and {{ arch() }} in
HTTP backend URL templates. This allows a single URL template to work
across all platforms instead of requiring platform-specific sections.
Example:
url = "https://example.com/{version}/tool-{{ os() }}-{{ arch() }}.tar.gz"
Available functions: os(), arch(), os_family(), num_cpus()
Also updates Dart to use this simpler URL template format as an example.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add expr-lang integration for version list parsing via version_expr option
- Support Tera templating in URLs with {{ version }}, {{ os() }}, {{ arch() }}
- Update Flutter registry entry to use Tera-templated URLs
- Update Dart registry entry with proper Tera URL templating
- Add comprehensive tests for version_expr functionality
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR adds expression-based version parsing and Tera templating support to the HTTP backend, enabling more flexible version extraction and URL construction for tool registries.
Changes:
- Adds
version_exprparameter using expr-lang for extracting versions from HTTP responses - Extends
template_string()to support Tera syntax (e.g.,{{ version }},{{ os() }},{{ arch() }}) alongside legacy{version}placeholders - Updates Dart and Flutter registry entries to use the new HTTP backend with Tera-templated URLs
Reviewed changes
Copilot reviewed 6 out of 7 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| src/backend/version_list.rs | Adds version_expr parameter and expr-lang integration for expression-based version parsing |
| src/backend/static_helpers.rs | Enhances template_string() to support Tera templating alongside legacy placeholder replacement |
| src/backend/s3.rs | Updates S3 backend to pass version_expr to version list parser |
| src/backend/http.rs | Updates HTTP backend to pass version_expr to version fetcher |
| registry.toml | Updates Dart entry to use HTTP backend with Tera templates, and Flutter entry to use Tera syntax |
| Cargo.toml | Adds expr-lang dependency |
Comments suppressed due to low confidence (1)
src/backend/version_list.rs:1
- Missing match expression wrapper. The function body should be
match value { Value::String(s) => Some(s.clone()), Value::Number(n) => Some(n.to_string()), _ => None, }
/// Version list parsing utilities for fetching remote versions from URLs.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
src/backend/version_list.rs
Outdated
| if let Ok(extracted) = eval_version_expr(expr_str, trimmed) { | ||
| versions = extracted; |
There was a problem hiding this comment.
Silent fallthrough on expr evaluation failure may hide configuration errors. Consider logging a warning when expr evaluation fails so users are aware their expression isn't working as expected.
| if let Ok(extracted) = eval_version_expr(expr_str, trimmed) { | |
| versions = extracted; | |
| match eval_version_expr(expr_str, trimmed) { | |
| Ok(extracted) => { | |
| versions = extracted; | |
| } | |
| Err(err) => { | |
| eprintln!( | |
| "Warning: failed to evaluate version_expr '{}': {}", | |
| expr_str, | |
| err | |
| ); | |
| } |
src/backend/static_helpers.rs
Outdated
| match crate::tera::get_tera(None).render_str(template, &ctx) { | ||
| Ok(rendered) => rendered, | ||
| Err(e) => { | ||
| warn!("Failed to render template '{}': {}", template, e); |
There was a problem hiding this comment.
The error message could be more helpful by suggesting the user check their template syntax or providing guidance on valid Tera syntax.
| warn!("Failed to render template '{}': {}", template, e); | |
| warn!( | |
| "Failed to render template '{}': {}. This may indicate invalid Tera syntax; \ | |
| please double-check your template against valid Tera syntax.", | |
| template, | |
| e | |
| ); |
- Update all registry.toml entries to use {{ version }} instead of {version}
- Remove legacy {version} fallback from template_string()
- Update template_string_for_target() to use Tera directly
Affected tools: claude, dome, flyway, zprint
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update documentation for HTTP, S3, GitHub, GitLab, and Forgejo backends
to use {{ version }} Tera syntax instead of legacy {version}.
Also corrected bin_path documentation - removed undocumented {name} and
{ext} placeholders, documented actual available variables.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.
- Add deprecated_at! macro that only emits warnings when mise version >= target
- Re-add legacy {version} support in template_string() and template_string_for_target()
- Deprecation warnings will appear starting in 2026.3.0
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Document the new version_expr option that allows using expr-lang expressions for complex version extraction from HTTP responses. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 3 potential issues.
Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.
Hyperfine Performance
|
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.1.3 x -- echo |
20.9 ± 0.5 | 19.6 | 24.0 | 1.00 |
mise x -- echo |
21.3 ± 0.7 | 19.7 | 27.8 | 1.02 ± 0.04 |
mise env
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.1.3 env |
20.2 ± 0.7 | 19.0 | 28.2 | 1.00 |
mise env |
20.9 ± 0.6 | 19.4 | 22.9 | 1.03 ± 0.05 |
mise hook-env
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.1.3 hook-env |
20.5 ± 0.5 | 19.2 | 22.1 | 1.00 |
mise hook-env |
21.0 ± 0.7 | 19.4 | 28.0 | 1.02 ± 0.04 |
mise ls
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.1.3 ls |
18.8 ± 0.7 | 17.7 | 24.9 | 1.00 |
mise ls |
19.3 ± 0.6 | 17.8 | 21.6 | 1.03 ± 0.05 |
xtasks/test/perf
| Command | mise-2026.1.3 | mise | Variance |
|---|---|---|---|
| install (cached) | 114ms | 114ms | +0% |
| ls (cached) | 70ms | 70ms | +0% |
| bin-paths (cached) | 74ms | 75ms | -1% |
| task-ls (cached) | 287ms | 302ms | -4% |
1. Fix legacy template detection to check all placeholders ({version}, {os},
{arch}, {darwin_os}, {amd64_arch}, {x86_64_arch}, {gnu_arch}), not just
{version}. This fixes bosh-backup-and-restore, cluster-api-provider-aws,
k3k, and opam which use other placeholders.
2. Make version_expr fail hard on evaluation errors instead of silently
falling through to text parsing.
3. Add version_expr to install_time_option_keys() in http.rs and s3.rs
to ensure proper cache invalidation when the option changes.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
### 🚀 Features - **(conda)** add dependency locking for reproducible installations by @jdx in [#7708](#7708) - **(http)** add JSON filter syntax for version extraction by @jdx in [#7707](#7707) - **(http)** add version_expr support and Tera templating by @jdx in [#7723](#7723) - **(task)** add [monorepo].config_roots for explicit config root listing by @jdx in [#7705](#7705) - **(task)** support env vars in task dependencies by @jdx in [#7724](#7724) ### 🐛 Bug Fixes - **(conda)** fix hardcoded library paths in conda packages by @jdx in [#7713](#7713) - **(env)** avoid venv/go backend deadlock during env resolution by @stk0vrfl0w in [#7696](#7696) - **(python)** sort CPython versions at end of ls-remote output by @jdx in [#7721](#7721) - **(task)** resolve remote task files before display and validation commands by @yannrouillard in [#7681](#7681) - **(task)** support monorepo paths in `mise tasks deps` by @chadxz in [#7699](#7699) - **(task)** resolve all monorepo path hints in deps by @chadxz in [#7698](#7698) ### 📚 Documentation - remove outdated roadmap page by @jdx in [#7726](#7726) ### ⚡ Performance - **(task)** fix task-ls cached performance regression by @jdx in [#7716](#7716) ### 📦️ Dependency Updates - replace dependency @tsconfig/node22 with @tsconfig/node24 by @renovate[bot] in [#7618](#7618) ### 📦 Registry - add aqua backend for smithy by @jdx in [#7661](#7661) - remove low-usage asdf plugins by @jdx in [#7701](#7701) - disable mirrord test by @jdx in [#7703](#7703) - use vfox-dotnet as default backend by @jdx in [#7704](#7704) - use vfox-lua as default lua backend by @jdx in [#7706](#7706) - add vfox backend for redis by @jdx in [#7709](#7709) - use vfox-postgres as default postgres backend by @jdx in [#7710](#7710) - use github backend for kotlin by @jdx in [#7711](#7711) - add vfox backend for leiningen by @jdx in [#7714](#7714) - use pipx backend for meson by @jdx in [#7712](#7712) - use github backend for crystal by @jdx in [#7715](#7715) - use conda backend for sqlite by @jdx in [#7718](#7718) - use conda backend for make by @jdx in [#7719](#7719) - swift-package-list use github backend by @jdx in [#7720](#7720) ### Chore - increase macos release build timeout to 90 minutes by @jdx in [#7725](#7725) ### New Contributors - @yannrouillard made their first contribution in [#7681](#7681) - @stk0vrfl0w made their first contribution in [#7696](#7696) ## 📦 Aqua Registry Updates #### New Packages (4) - [`chevdor/tera-cli`](https://github.com/chevdor/tera-cli) - [`goforj/wire`](https://github.com/goforj/wire) - [`gravitational/teleport`](https://github.com/gravitational/teleport) - [`jackchuka/mdschema`](https://github.com/jackchuka/mdschema) #### Updated Packages (2) - [`ollama/ollama`](https://github.com/ollama/ollama) - [`twpayne/chezmoi`](https://github.com/twpayne/chezmoi)
## [2026.1.5](https://github.com/jdx/mise/compare/v2026.1.4..v2026.1.5) - 2026-01-19 ### 🚀 Features - **(complete)** add PowerShell completion support by @jdx in [#7746](jdx/mise#7746) - **(release)** add LLM-generated prose summary to release notes by @jdx in [#7737](jdx/mise#7737) - **(vfox)** add semver Lua module for version sorting by @jdx in [#7739](jdx/mise#7739) - **(vfox)** add rolling release support with checksum tracking by @jdx in [#7757](jdx/mise#7757) - dry filetask parsing and validation by @makp0 in [#7738](jdx/mise#7738) ### 🐛 Bug Fixes - **(completions)** bump usage-cli to 2.13.1 for PowerShell support by @jdx in [#7756](jdx/mise#7756) - schema missing env required string variant by @vadimpiven in [#7734](jdx/mise#7734) - validate unknown fields in filetask headers by @makp0 in [#7733](jdx/mise#7733) - disable schemacrawler test by @jdx in [#7743](jdx/mise#7743) - replace double forward slash with single slash in get_task_lists by @collinstevens in [#7744](jdx/mise#7744) - require LLM for release notes and include aqua section by @jdx in [#7745](jdx/mise#7745) - preserve {{ version }} in tool options during config load by @jdx in [#7755](jdx/mise#7755) ### 📚 Documentation - add documentation URL structure guidance to CLAUDE.md by @jdx in [#7740](jdx/mise#7740) - add pitchfork promotion by @jdx in [#7747](jdx/mise#7747) ### 📦️ Dependency Updates - relax version constraints and update dependencies by @jdx in [#7736](jdx/mise#7736) - lock file maintenance by @renovate[bot] in [#7749](jdx/mise#7749) ### Chore - bump xx to 2.3.1 by @jdx in [#7753](jdx/mise#7753) ### New Contributors - @collinstevens made their first contribution in [#7744](jdx/mise#7744) - @makp0 made their first contribution in [#7738](jdx/mise#7738) - @vadimpiven made their first contribution in [#7734](jdx/mise#7734) ## [2026.1.4](https://github.com/jdx/mise/compare/v2026.1.3..v2026.1.4) - 2026-01-17 ### 🚀 Features - **(conda)** add dependency locking for reproducible installations by @jdx in [#7708](jdx/mise#7708) - **(http)** add JSON filter syntax for version extraction by @jdx in [#7707](jdx/mise#7707) - **(http)** add version_expr support and Tera templating by @jdx in [#7723](jdx/mise#7723) - **(task)** add [monorepo].config_roots for explicit config root listing by @jdx in [#7705](jdx/mise#7705) - **(task)** support env vars in task dependencies by @jdx in [#7724](jdx/mise#7724) ### 🐛 Bug Fixes - **(conda)** fix hardcoded library paths in conda packages by @jdx in [#7713](jdx/mise#7713) - **(env)** avoid venv/go backend deadlock during env resolution by @stk0vrfl0w in [#7696](jdx/mise#7696) - **(locked)** exempt tool stubs from lockfile requirements by @jdx in [#7729](jdx/mise#7729) - **(python)** sort CPython versions at end of ls-remote output by @jdx in [#7721](jdx/mise#7721) - **(task)** resolve remote task files before display and validation commands by @yannrouillard in [#7681](jdx/mise#7681) - **(task)** support monorepo paths in `mise tasks deps` by @chadxz in [#7699](jdx/mise#7699) - **(task)** resolve all monorepo path hints in deps by @chadxz in [#7698](jdx/mise#7698) ### 📚 Documentation - remove outdated roadmap page by @jdx in [#7726](jdx/mise#7726) ### ⚡ Performance - **(task)** fix task-ls cached performance regression by @jdx in [#7716](jdx/mise#7716) ### 📦️ Dependency Updates - replace dependency @tsconfig/node22 with @tsconfig/node24 by @renovate[bot] in [#7618](jdx/mise#7618) ### 📦 Registry - add aqua backend for smithy by @jdx in [#7661](jdx/mise#7661) - remove low-usage asdf plugins by @jdx in [#7701](jdx/mise#7701) - disable mirrord test by @jdx in [#7703](jdx/mise#7703) - use vfox-dotnet as default backend by @jdx in [#7704](jdx/mise#7704) - use vfox-lua as default lua backend by @jdx in [#7706](jdx/mise#7706) - add vfox backend for redis by @jdx in [#7709](jdx/mise#7709) - use vfox-postgres as default postgres backend by @jdx in [#7710](jdx/mise#7710) - use github backend for kotlin by @jdx in [#7711](jdx/mise#7711) - add vfox backend for leiningen by @jdx in [#7714](jdx/mise#7714) - use pipx backend for meson by @jdx in [#7712](jdx/mise#7712) - use github backend for crystal by @jdx in [#7715](jdx/mise#7715) - use conda backend for sqlite by @jdx in [#7718](jdx/mise#7718) - use conda backend for make by @jdx in [#7719](jdx/mise#7719) - swift-package-list use github backend by @jdx in [#7720](jdx/mise#7720) ### Chore - increase macos release build timeout to 90 minutes by @jdx in [#7725](jdx/mise#7725) ### New Contributors - @yannrouillard made their first contribution in [#7681](jdx/mise#7681) - @stk0vrfl0w made their first contribution in [#7696](jdx/mise#7696) ## [2026.1.3](https://github.com/jdx/mise/compare/v2026.1.2..v2026.1.3) - 2026-01-16 ### 🚀 Features - **(s3)** add S3 backend for private artifact storage by @jdx in [#7668](jdx/mise#7668) - **(upgrade)** use installed_tool completer for mise upgrade by @jdx in [#7670](jdx/mise#7670) - **(upgrade)** add --exclude flag to mise upgrade command by @jdx in [#7669](jdx/mise#7669) - add no hooks and no env flags by @aacebedo in [#7560](jdx/mise#7560) ### 🐛 Bug Fixes - **(backend)** allow upgrading vfox backend tools with symlinked installations by @TyceHerrman in [#7012](jdx/mise#7012) - **(backend)** reject architecture mismatches in asset selection by @jdx in [#7672](jdx/mise#7672) - **(backend)** canonicalize symlink target before installs check by @jdx in [#7671](jdx/mise#7671) - **(npm)** avoid circular dependency when npm is in dependencies by @AprilNEA in [#7644](jdx/mise#7644) - **(self-update)** skip update when already at latest version by @jdx in [#7666](jdx/mise#7666) - fall back to GITHUB_TOKEN for github.com by @subdigital in [#7667](jdx/mise#7667) - GitHub token fallback by @subdigital in [#7673](jdx/mise#7673) - inherit tasks from parent configs in monorepos by @chadxz in [#7643](jdx/mise#7643) ### 📚 Documentation - **(contributing)** update registry examples by @scop in [#7660](jdx/mise#7660) - **(contributing)** update registry PR title rule by @scop in [#7663](jdx/mise#7663) - remove 404 link from contributing by @opswole in [#7692](jdx/mise#7692) - clarify that backend plugins should sort the version list by @ofalvai in [#7680](jdx/mise#7680) ### 📦️ Dependency Updates - update ghcr.io/jdx/mise:alpine docker digest to 11f659e by @renovate[bot] in [#7685](jdx/mise#7685) - update ghcr.io/jdx/mise:copr docker digest to 3adaea4 by @renovate[bot] in [#7686](jdx/mise#7686) - update ghcr.io/jdx/mise:deb docker digest to 8bbca53 by @renovate[bot] in [#7687](jdx/mise#7687) - update ghcr.io/jdx/mise:rpm docker digest to de81415 by @renovate[bot] in [#7688](jdx/mise#7688) - update mcr.microsoft.com/devcontainers/rust:1 docker digest to 282e805 by @renovate[bot] in [#7690](jdx/mise#7690) - update rust docker digest to bed2d7f by @renovate[bot] in [#7691](jdx/mise#7691) ### 📦 Registry - add oh-my-posh by @scop in [#7659](jdx/mise#7659) - add bibtex-tidy (npm:bibtex-tidy) by @3w36zj6 in [#7677](jdx/mise#7677) - remove misconfigured bin_path option from kscript by @risu729 in [#7693](jdx/mise#7693) ### New Contributors - @AprilNEA made their first contribution in [#7644](jdx/mise#7644) - @opswole made their first contribution in [#7692](jdx/mise#7692) - @subdigital made their first contribution in [#7673](jdx/mise#7673) - @aacebedo made their first contribution in [#7560](jdx/mise#7560)
## [2026.1.5](https://github.com/jdx/mise/compare/v2026.1.4..v2026.1.5) - 2026-01-19 ### 🚀 Features - **(complete)** add PowerShell completion support by @jdx in [#7746](jdx/mise#7746) - **(release)** add LLM-generated prose summary to release notes by @jdx in [#7737](jdx/mise#7737) - **(vfox)** add semver Lua module for version sorting by @jdx in [#7739](jdx/mise#7739) - **(vfox)** add rolling release support with checksum tracking by @jdx in [#7757](jdx/mise#7757) - dry filetask parsing and validation by @makp0 in [#7738](jdx/mise#7738) ### 🐛 Bug Fixes - **(completions)** bump usage-cli to 2.13.1 for PowerShell support by @jdx in [#7756](jdx/mise#7756) - schema missing env required string variant by @vadimpiven in [#7734](jdx/mise#7734) - validate unknown fields in filetask headers by @makp0 in [#7733](jdx/mise#7733) - disable schemacrawler test by @jdx in [#7743](jdx/mise#7743) - replace double forward slash with single slash in get_task_lists by @collinstevens in [#7744](jdx/mise#7744) - require LLM for release notes and include aqua section by @jdx in [#7745](jdx/mise#7745) - preserve {{ version }} in tool options during config load by @jdx in [#7755](jdx/mise#7755) ### 📚 Documentation - add documentation URL structure guidance to CLAUDE.md by @jdx in [#7740](jdx/mise#7740) - add pitchfork promotion by @jdx in [#7747](jdx/mise#7747) ### 📦️ Dependency Updates - relax version constraints and update dependencies by @jdx in [#7736](jdx/mise#7736) - lock file maintenance by @renovate[bot] in [#7749](jdx/mise#7749) ### Chore - bump xx to 2.3.1 by @jdx in [#7753](jdx/mise#7753) ### New Contributors - @collinstevens made their first contribution in [#7744](jdx/mise#7744) - @makp0 made their first contribution in [#7738](jdx/mise#7738) - @vadimpiven made their first contribution in [#7734](jdx/mise#7734) ## [2026.1.4](https://github.com/jdx/mise/compare/v2026.1.3..v2026.1.4) - 2026-01-17 ### 🚀 Features - **(conda)** add dependency locking for reproducible installations by @jdx in [#7708](jdx/mise#7708) - **(http)** add JSON filter syntax for version extraction by @jdx in [#7707](jdx/mise#7707) - **(http)** add version_expr support and Tera templating by @jdx in [#7723](jdx/mise#7723) - **(task)** add [monorepo].config_roots for explicit config root listing by @jdx in [#7705](jdx/mise#7705) - **(task)** support env vars in task dependencies by @jdx in [#7724](jdx/mise#7724) ### 🐛 Bug Fixes - **(conda)** fix hardcoded library paths in conda packages by @jdx in [#7713](jdx/mise#7713) - **(env)** avoid venv/go backend deadlock during env resolution by @stk0vrfl0w in [#7696](jdx/mise#7696) - **(locked)** exempt tool stubs from lockfile requirements by @jdx in [#7729](jdx/mise#7729) - **(python)** sort CPython versions at end of ls-remote output by @jdx in [#7721](jdx/mise#7721) - **(task)** resolve remote task files before display and validation commands by @yannrouillard in [#7681](jdx/mise#7681) - **(task)** support monorepo paths in `mise tasks deps` by @chadxz in [#7699](jdx/mise#7699) - **(task)** resolve all monorepo path hints in deps by @chadxz in [#7698](jdx/mise#7698) ### 📚 Documentation - remove outdated roadmap page by @jdx in [#7726](jdx/mise#7726) ### ⚡ Performance - **(task)** fix task-ls cached performance regression by @jdx in [#7716](jdx/mise#7716) ### 📦️ Dependency Updates - replace dependency @tsconfig/node22 with @tsconfig/node24 by @renovate[bot] in [#7618](jdx/mise#7618) ### 📦 Registry - add aqua backend for smithy by @jdx in [#7661](jdx/mise#7661) - remove low-usage asdf plugins by @jdx in [#7701](jdx/mise#7701) - disable mirrord test by @jdx in [#7703](jdx/mise#7703) - use vfox-dotnet as default backend by @jdx in [#7704](jdx/mise#7704) - use vfox-lua as default lua backend by @jdx in [#7706](jdx/mise#7706) - add vfox backend for redis by @jdx in [#7709](jdx/mise#7709) - use vfox-postgres as default postgres backend by @jdx in [#7710](jdx/mise#7710) - use github backend for kotlin by @jdx in [#7711](jdx/mise#7711) - add vfox backend for leiningen by @jdx in [#7714](jdx/mise#7714) - use pipx backend for meson by @jdx in [#7712](jdx/mise#7712) - use github backend for crystal by @jdx in [#7715](jdx/mise#7715) - use conda backend for sqlite by @jdx in [#7718](jdx/mise#7718) - use conda backend for make by @jdx in [#7719](jdx/mise#7719) - swift-package-list use github backend by @jdx in [#7720](jdx/mise#7720) ### Chore - increase macos release build timeout to 90 minutes by @jdx in [#7725](jdx/mise#7725) ### New Contributors - @yannrouillard made their first contribution in [#7681](jdx/mise#7681) - @stk0vrfl0w made their first contribution in [#7696](jdx/mise#7696) ## [2026.1.3](https://github.com/jdx/mise/compare/v2026.1.2..v2026.1.3) - 2026-01-16 ### 🚀 Features - **(s3)** add S3 backend for private artifact storage by @jdx in [#7668](jdx/mise#7668) - **(upgrade)** use installed_tool completer for mise upgrade by @jdx in [#7670](jdx/mise#7670) - **(upgrade)** add --exclude flag to mise upgrade command by @jdx in [#7669](jdx/mise#7669) - add no hooks and no env flags by @aacebedo in [#7560](jdx/mise#7560) ### 🐛 Bug Fixes - **(backend)** allow upgrading vfox backend tools with symlinked installations by @TyceHerrman in [#7012](jdx/mise#7012) - **(backend)** reject architecture mismatches in asset selection by @jdx in [#7672](jdx/mise#7672) - **(backend)** canonicalize symlink target before installs check by @jdx in [#7671](jdx/mise#7671) - **(npm)** avoid circular dependency when npm is in dependencies by @AprilNEA in [#7644](jdx/mise#7644) - **(self-update)** skip update when already at latest version by @jdx in [#7666](jdx/mise#7666) - fall back to GITHUB_TOKEN for github.com by @subdigital in [#7667](jdx/mise#7667) - GitHub token fallback by @subdigital in [#7673](jdx/mise#7673) - inherit tasks from parent configs in monorepos by @chadxz in [#7643](jdx/mise#7643) ### 📚 Documentation - **(contributing)** update registry examples by @scop in [#7660](jdx/mise#7660) - **(contributing)** update registry PR title rule by @scop in [#7663](jdx/mise#7663) - remove 404 link from contributing by @opswole in [#7692](jdx/mise#7692) - clarify that backend plugins should sort the version list by @ofalvai in [#7680](jdx/mise#7680) ### 📦️ Dependency Updates - update ghcr.io/jdx/mise:alpine docker digest to 11f659e by @renovate[bot] in [#7685](jdx/mise#7685) - update ghcr.io/jdx/mise:copr docker digest to 3adaea4 by @renovate[bot] in [#7686](jdx/mise#7686) - update ghcr.io/jdx/mise:deb docker digest to 8bbca53 by @renovate[bot] in [#7687](jdx/mise#7687) - update ghcr.io/jdx/mise:rpm docker digest to de81415 by @renovate[bot] in [#7688](jdx/mise#7688) - update mcr.microsoft.com/devcontainers/rust:1 docker digest to 282e805 by @renovate[bot] in [#7690](jdx/mise#7690) - update rust docker digest to bed2d7f by @renovate[bot] in [#7691](jdx/mise#7691) ### 📦 Registry - add oh-my-posh by @scop in [#7659](jdx/mise#7659) - add bibtex-tidy (npm:bibtex-tidy) by @3w36zj6 in [#7677](jdx/mise#7677) - remove misconfigured bin_path option from kscript by @risu729 in [#7693](jdx/mise#7693) ### New Contributors - @AprilNEA made their first contribution in [#7644](jdx/mise#7644) - @opswole made their first contribution in [#7692](jdx/mise#7692) - @subdigital made their first contribution in [#7673](jdx/mise#7673) - @aacebedo made their first contribution in [#7560](jdx/mise#7560)
Summary
version_exproption for HTTP backend using the expr-lang crate to evaluate expressions for extracting version lists{{ version }},{{ os() }},{{ arch() }}Changes
src/backend/version_list.rs: Addedversion_exprparameter and expr-lang integration for expression-based version parsingsrc/backend/static_helpers.rs: Enhancedtemplate_string()to support Tera syntax alongside legacy{version}src/backend/http.rsandsrc/backend/s3.rs: Updated to passversion_exprto version list functionsregistry.toml: Updated Flutter entry to use{{ version }}Tera syntaxTest plan
cargo test backend::version_list- all 20 tests passmise ls-remote dart- verified version listing worksmise ls-remote flutter- verified version listing worksmise tool dartandmise tool flutter- verified HTTP backend is used🤖 Generated with Claude Code
Note
Enables more flexible version discovery and standardized templating across backends.
version_exprusingexpr-langwith plumbing inhttp.rs,s3.rs, andversion_list.rs(includes tests and new install-time option){...}support gated bydeprecated_at!macrodeprecated_at!macro to schedule deprecation warnings; apply to legacy template placeholders{{ ... }}and documentversion_exprregistry.tomlentries (e.g., Dart, Flutter, Claude, Flyway, zprint) to new templating; add Dart HTTP backendexpr-langdependency inCargo.toml/lockfileWritten by Cursor Bugbot for commit 7de4b67. This will update automatically on new commits. Configure here.