Eklenenler

  • mise tasks set, mise tasks rm ve mise tasks add için yeni seçenekler: add, set ve rm, yazılacak dosyanın seçilebilmesi için mise use ile aynı --env, --global ve --path seçeneklerini destekliyor.
  • add ve set komutlarına --env-var, --tools, --usage ve --confirm task alanları eklendi.
  • set, yalnızca belirtilen alanları değiştiriyor ve yorumlar dâhil dosyanın geri kalanını koruyor. --unset FIELD ile bir alan kaldırılabiliyor. Task mevcut değilse işlem başarısız oluyor.
  • rm (remove alias'ı), TOML task'ının tablosunu veya file task'ın script'ini siliyor. --yes kullanılmadığı sürece kullanıcıdan onay isteniyor. package.json üzerinden algılanan veya include edilen dosyalarda tanımlanan task'ların silinmesine izin verilmiyor.
  • Üç komut da --json ve --dry-run seçeneklerini destekliyor. Bir task birden fazla yüklenmiş dosyada tanımlanmışsa set ve rm işlemi durdurularak kullanıcının seçim yapabilmesi için ilgili dosyalar listeleniyor.
  • add veya set, yazdığı config root'una güven verdiğinde bu durum artık stderr üzerinden bildiriliyor.
    Kod:
    mise tasks add --env local deploy --env-var STAGE=prod --tools node@24 --confirm "Deploy now?" -- ./deploy.sh
    mise tasks set build --description "Build for release" -- cargo build --release
    mise tasks rm --env local --yes scratch
  • mise watch --once: mise, izlenen kaynaklarda bir değişiklik oluşmasını bekliyor, task'ları mise run ile bir kez çalıştırıyor ve ardından task'ların exit status'u ile kapanıyor. Normal watch ile aynı filtreler kullanılıyor ve başlangıçta hiçbir şey çalıştırılmadığından --postpone otomatik olarak uygulanıyor.
Sürüm: 2026.10.24
Düzeltmeler

  • mise uninstall ruby 3.4.1 komutu, 3.4.1 kurulu olmadığında artık [email protected] sürümünü kaldırmıyor. Bir sürüm artık yalnızca sorguyla tamamen eşleştiğinde veya sorgunun ardından ., - ya da + karakterlerinden biriyle devam ettiğinde eşleşiyor. Böylece mise'nin diğer bölümlerindeki sürüm eşleştirme davranışıyla tutarlılık sağlandı.
  • mise ls, henüz kurulmamış lazy araçları artık kırmızı (missing) yerine soluk (lazy) olarak gösteriyor. Parametresiz çalıştırılan mise upgrade da artık bu araçları çözümlenen araçlar arasında listelemiyor. mise ls --json hâlâ "installed": false olarak bildiriyor ve mise ls --missing bu araçları listelemeye devam ediyor.
  • Checksum içeren bir packageManager girdisinin (örneğin [email protected]+sha512...) kurulması, aynı aracın sonraki tüm kurulumlarını artık npm backend'ini kullanmaya zorlamıyor. Önceki bir sürüm tarafından bu backend'e sabitlenmiş kurulumlar, bir sonraki kurulumlarında otomatik olarak düzeltiliyor.
  • [wrappers] girdisi üzerinden çalıştırılan bir komut artık diğer wrapper'lardan da geçiyor. Örneğin wrapper uygulanmış bir pnpm içinden çalıştırılan node, artık node wrapper'ının args ve env değerlerini alıyor. Bir wrapper yalnızca kendi iç içe çağrılarında atlanıyor ve bu durum __MISE_ACTIVE_WRAPPERS içinde takip ediliyor.
  • ~/.config/mise/conf.d/dotfiles -> ~/dotfiles gibi global yapılandırmaya bağlanan bir dotfiles checkout'u içindeki kilitli kurulumların "No lockfile URL found" hatasıyla başarısız olması düzeltildi. Checkout içindeki mise.lock artık global yapılandırmanın bir parçası olarak güvenilir kabul ediliyor. Bununla birlikte, global yapılandırmaya symlink veren bir proje mise.toml dosyası hâlâ projenin lockfile'ına güven sağlayamıyor.
  • ~/.config/mise bir dotfiles repository'sine symlink olduğunda mise lock --global, npm ve Python sidecar dosyalarını yeniden .mise/locks/ yerine locks/ dizinine yazıyor. Mevcut pointer'lar bir sonraki lock işleminde yeniden yazılıyor. Eski .mise/locks/ dizini manuel olarak silinebilir.
  • Bir backend (cargo, go, gem, pipx vb.) PATH üzerinde bulunmayan bir programı çalıştırmaya çalıştığında hata mesajı artık programın adını belirtiyor. Örneğin cargo not found mesajı gösteriliyor. Önceden yalnızca "No such file or directory" mesajı gösteriliyordu.
  • MSYS2, Git Bash ve Cygwin altında bash, zsh ve fish için mise activate, MANPATH değerini artık POSIX biçiminde dışa aktarıyor. Böylece man bu yolları kullanabiliyor. Boş girdiler korunarak man komutunun varsayılan yollarını kullanmaya devam etmesi sağlanıyor.
  • Windows'ta mise self-update, antivirüs yazılımının mise.exe dosyasını kısa süreliğine kilitlemesi durumunda yaklaşık 6 saniye boyunca işlemi yeniden deniyor. Eski binary kenara taşındıktan sonra yeni binary'nin yerine yerleştirilmesi başarısız olursa mise yeni binary'yi hedef konuma kopyalıyor. Böylece kurulum dizininin mise.exe olmadan kalması önleniyor.
    Değişiklikler
  • mise dot status ve mise dot sync artık takip edilen her dosya için ayrı bir Git işlemi başlatmıyor. Yaklaşık 860 takip edilen dosyanın bulunduğu bir testte sıcak mise dot status çalışma süresi yaklaşık 7 saniyeden 1,4 saniyeye düştü. Çıktıda herhangi bir değişiklik bulunmuyor.
  • README baştan yazıldı. Artık başlangıçta eksiksiz bir mise.toml örneği, güncellenmiş hızlı başlangıç bölümü, günlük kullanılan komutları içeren bir tablo ve mise bootstrap bölümü bulunuyor.
    Güvenlik
  • Projelerin kişisel fnox anahtarlarını kendi kendilerine kullanma izni vermesi engellendi. fnox'un global yapılandırmasında veya $HOME dizininde ya da bunun üstündeki bir fnox.toml dosyasında tanımlanan anahtarlar artık projeye değil kullanıcıya ait kabul ediliyor.
  • Bir görevin secrets listesi veya {{ secrets.NAME }} referansı bu tür bir anahtarı belirtirse herhangi bir secret çözümlenmeden önce görev başarısız oluyor. Hata mesajında anahtarın tanımlandığı dosya belirtiliyor.
  • --secrets-all artık bu anahtarları dâhil etmiyor. Ancak mise run --secrets NAME ve mise x --secrets NAME komutları, kullanıcı anahtarı açıkça belirttiği için bu anahtarları aktarmaya devam ediyor.
  • mise secrets ls ve mise tasks validate, bu izinleri personal türünde sorunlar olarak bildiriyor.
  • Bir anahtarı projeye vermek için anahtarın projenin kendi fnox.toml dosyasında tanımlanması gerekiyor.
  • Bu davranış, her anahtarın nerede tanımlandığını bildiren bir fnox sürümü gerektiriyor. Eski fnox sürümlerinde mevcut davranış değişmiyor.
  • mise secrets özelliği hâlen deneyseldir.
Eklenenler

  • mise bootstrap --from komutuna --config-dir <path> seçeneği eklendi. Bu seçenek, mise yapılandırma dizinini (~/.config/mise veya XDG_CONFIG_HOME/MISE_CONFIG_DIR tarafından belirtilen konumu) dotfiles deposundaki belirtilen yola bağlayarak doğrudan bu yapılandırmadan bootstrap işlemi yapılmasını sağlıyor.
    Kod:
    mise bootstrap --from <dotfiles-git-url> --from-dir ~/.dotfiles --config-dir .config/mise
  • Depodaki config.toml, config.<env>.toml, conf.d/ ve miserc.toml dosyaları ilk çalıştırmadan itibaren genel yapılandırma olarak kullanılabiliyor. Sonraki güncellemelerde git -C ~/.dotfiles pull && mise bootstrap komutu yeterli oluyor. mise use -g ve mise dot add işlemleri de doğrudan checkout içindeki yapılandırmaya yazılıyor.
  • --config-dir ile belirtilen yolun checkout içerisinde bulunması gerekiyor. Mevcut yapılandırma dizininin bulunmaması, boş olması veya zaten ilgili bağlantıyı göstermesi gerekiyor. Aksi durumda mise işlemi reddediyor ve mevcut dizini değiştirmiyor. --dry-run kullanıldığında bağlantı oluşturulmuyor.
  • Belgelerde artık yalnızca config.toml yerine tüm yapılandırma dizininin izlenmesi için mise dot track ~/.config/mise kullanılması öneriliyor. .local.toml ile biten dosyalar ise yalnızca ilgili makinede kalıyor.
  • Stow paketleri için artık [dotfile_groups] tabloları zorunlu değil. [bootstrap] dotfile_groups içindeki bir adın eşleşen tablosu yoksa ancak dotfiles.root altında aynı adlı bir dizin bulunuyorsa mise bunu varsayılan ayarlara sahip bir grup olarak değerlendiriyor ve dizindeki dosyaları tek tek ~ altına dağıtıyor.
    Kod:
    [bootstrap]
    dotfile_groups = ["kitty", "nvim", "zsh"]
  • Aynı ada sahip bir [dotfile_groups] tablosu varsa varsayılan ayarları geçersiz kılmaya devam ediyor. mise dot add --group, mise dot unapply --group ve sahipsiz dosya raporlaması da bu gruplarla çalışıyor.
  • mise bootstrap packages prune --manager brew-cask --force komutu eklendi. Bu seçenek; kendisini güncelleyen uygulamalar, ek kurulum adımları içeren cask'ler ve mise prune meta verilerini kaydetmeden önce yüklenmiş cask'ler gibi normalde değişmediği doğrulanamadığı için atlanan mise tarafından yüklenmiş cask'leri kaldırabiliyor.
  • --force kullanılmadığında prune artık bu seçenek kullanıldığında hangi cask'lerin kaldırılacağını listeliyor. Zorunlu temizleme yalnızca makbuzda kaydedilen öğeleri ve hâlâ mise tarafından yerleştirildikleri konumda bulunanları kaldırıyor. Homebrew tarafından yönetilen cask'ler, mise makbuzu bulunmayanlar, yarıda kalan kurulumlar ve paylaşılan hedefler atlanmaya devam ediyor. İşlem --dry-run ile önceden görüntülenebiliyor.
  • mise dot apply, düzenlenmiş bir şablon hedefinin üzerine yazmadan önce artık uyarı gösteriyor. mise tarafından son yazma işleminden sonra elle değiştirilmiş bir template hedefi varsa üzerine yazılacağı belirtiliyor ve değişikliğin taşınması gereken kaynak gösteriliyor. apply yine dosyanın üzerine yazdığı için gözetimsiz işlemler engellenmiyor.
  • Kayıt defterine tuios (aqua:Gaurav-Gosain/tuios) eklendi.
    Düzeltmeler
    Dotfiles
  • mode = "template" olarak ayarlanmış bir girdide mise dot add artık varsayılan olarak işlemi reddediyor. Önceden oluşturulmuş dosya şablon kaynağının üzerine kopyalanarak şablon kodunu silebiliyor ve exec() ile alınan gizli bilgileri açık metin olarak depoya yazabiliyordu. Oluşturulmuş dosyanın özellikle kaydedilmesi isteniyorsa --force kullanılabiliyor.
  • Stow'dan geçiş sırasında kaynak dosyaların bozulmasına neden olan sorun düzeltildi. Stow'un tüm dizini kaynağa bağladığı durumlarda symlink-each işlemi başarısız oluyor ve önerilen --force seçeneği kaynak dosyaları kendilerine işaret eden bağlantılarla değiştirebiliyordu. apply artık --force gerektirmeden katlanmış bağlantıyı gerçek bir bağlantı diziniyle değiştiriyor.
  • mise bootstrap --adopt --dry-run artık conf.d/, config.<env>.toml ve mevcut makinenin miserc.local.toml dosyası dâhil olmak üzere tüm yapılandırma dizinini önizliyor. Önceden yalnızca config.toml gösteriliyordu.
    Yapılandırma ve Monorepo
  • monorepo.config_roots = [".", "child"] kullanılırken kendi araç geçersiz kılmaları bulunmayan alt projelerin kök yapılandırmadan devraldığı araçları kaybetmesi ve genel sürümlere dönmesi sorunu düzeltildi. Tanımlanan her kök artık tüm yapılandırma hiyerarşisini yüklüyor.
  • Monorepo kökünden MISE_LOCKED=1 ile mise run //app:task çalıştırıldığında app/.node-version gibi sürüm dosyalarının artık kökteki lockfile yerine app/mise.lock içerisinde aranması sağlandı.
  • .nvmrc, .node-version dosyasına sembolik bağlantı olduğunda .node-version dosyasının yeniden okunması sağlandı. mise .nvmrc dosyasını uyarıyla atlamaya devam ediyor ancak bu işlem artık .node-version dosyasının algılanmasını engellemiyor.
    Lockfile
  • mise lock, URL'si kilitli version değerinden farklı bir sürüme işaret eden platform girdilerini artık yeniden çözümlüyor. Böylece örneğin Renovate tarafından mise.lock içindeki sürüm güncellendiğinde eski URL ve checksum değerlerinin kalması engelleniyor.
  • Araç argümanı verilmeden yapılan mise lock taraması, uvx_args veya pipx_args kullanan bir pypi:/pipx: aracıyla karşılaştığında artık tamamen durmuyor. İlgili araç için uyarı gösterilerek yalnızca sürüm bilgisini içeren bir lock girdisi oluşturuluyor. Araç açıkça belirtilirse hata verilmeye devam ediyor.
  • pypi: araçlarında mise lock, çözümlenen uv bağımlılık grafiğinin uv sync --frozen --no-build ile gerçekten kurulabilir olup olmadığını kontrol ediyor. Bir bağımlılığın kullanılan yorumlayıcı için wheel dosyasının bulunmaması gibi durumlarda mise uyarı göstererek yalnızca sürüm bilgisini içeren bir kayıt oluşturuyor.
    Diğer
  • mise doctor, yüklü olmayan lazy = true araçları artık sorun olarak listelemiyor. Araç listesinde bunlar (lazy) olarak işaretleniyor ve --json çıktısına "lazy": true bilgisi ekleniyor.
  • Paylaşımlı CI runner'larında raw.githubusercontent.com adresinden 429 yanıtı alınması nedeniyle packslip: kurulumlarının başarısız olması sorunu giderildi. mise artık deponun bir sürüm listesi yayımlayıp yayımlamadığını mise-versions üzerinden kontrol ediyor ve ayna kullanılamadığında, use_versions_host kapalı olduğunda veya bir url_replacements kuralı uygulandığında GitHub'a geri dönüyor.
  • SmolVM (smol-machines/smolvm) yeniden aqua üzerinden kurulabiliyor. Konuk kök dosya sistemindeki mutlak sembolik bağlantılar, kurulum dizini içerisindeki göreli bağlantılara dönüştürülüyor. Kurulum dizininin dışına çıkan bağlantılar reddedilmeye devam ediyor.

Öne Çıkanlar​


  • Trust kapsamı daraltıldı ve güvenilen file’lara bağlandı: Help output, shim’ler, hook’lar, config write işlemleri ve shell completion artık kullanıcının izni olmadan bir project’e güvenmiyor veya project code’unu çalıştırmıyor. Trust; worktree, symlink ve config directory’lerini de doğru şekilde takip ediyor. Safe mode’daki çeşitli açıklar da kapatıldı.
  • Verification artık fail-closed çalışıyor: Pinned checksum’lar, Node signature’ları, SLSA provenance ve GitHub attestation’ları artık zorunlu olarak doğrulanıyor. Buna SLSA provenance’ın hangi tag’den build edildiğinin kontrolü de dahil. Daha önce 404 response veya eksik file gibi durumlarda mise bu kontrolleri atlayabiliyordu.
  • Hostile input’lar sınırlandırıldı: Archive’lar, asset name’leri, version’lar, lockfile’lar ve HTTP response’ları artık kendi directory’lerinin dışına file yazamıyor, sınırsız memory veya disk kullanamıyor ve prompt’u kilitleyemiyor. Credential’ların install path’lerinde, lockfile’larda, log’larda veya redirect’lerde görünmesi de engellendi.

Eklendi​


  • {{ mise_config_dir }} template variable’ı: mise’ın kullandığı config directory’yi resolve ediyor. Öncelikle MISE_CONFIG_DIR, bu tanımlı değilse xdg_config_home + /mise kullanılıyor. xdg_config_home’un kullanılabildiği config template’leri, .miserc.toml ve setting path’lerinde kullanılabiliyor. Özellikle conf.d içerisine link veren dotfiles variant’ları için kullanışlı.
Kod:
[dotfiles."git-tools"]
source = "git"
mode = "symlink"
variants = [{ default = true, target = "{{ mise_config_dir }}/conf.d/git-tools" }]

  • mise lsp için semantic highlighting: Editor’lar artık mise.toml içerisindeki task name’lerini, tool’ları, environment variable’ları, [vars] key’lerini, _. directive’lerini, {{ }}/{% %}/{# #} template delimiter’larını ve deprecated key’leri renklendirebiliyor. Devre dışı bırakmak için initializationOptions içerisinde {"semanticTokens": false} kullanılabiliyor.
  • extract_max_ratio setting’i eklendi: Yalnızca global olarak kullanılabilen bu setting, archive extraction sırasında archive’ın ne kadar genişleyebileceğini sınırlandırıyor.
  • github.enterprise_hosts setting’i eklendi: Yalnızca global olarak kullanılabiliyor ve MISE_GITHUB_ENTERPRISE_HOSTS ile de ayarlanabiliyor. GitHub token’ın HTTPS üzerinden /api/v3 URL’lerine gönderileceği GitHub Enterprise host’larını belirliyor.
  • Yeni vfox attestation field’ları eklendi: slsa_source_repository ve slsa_source_tag sayesinde plugin’ler SLSA provenance’ın gelmesi gereken repository ve tag’i sabitleyebiliyor.

Değişiklikler​


  • lockfile_mode = "generate" artık varsayılan: Install işlemleri mise.lock file’ını mevcut request’lerden yeniden oluşturuyor, değişmeyen entry’leri yeniden kullanıyor ve diğer platform’ları da lock’luyor. Böylece bir makinede commit edilen lockfile’ın başka bir platformda eksik entry nedeniyle mise install --locked işlemini başarısız kılması engelleniyor. Her iki mode da kendi başına lockfile oluşturmuyor; bunun için mise lock veya lockfile = true kullanılması gerekiyor. Önceki davranışı korumak için lockfile_mode = "merge" veya MISE_LOCKFILE_MODE=merge kullanılabiliyor.

Güvenlik​


Trust ve Safe Mode​


  • Bazı action’lar artık bir project’e güvenmek için kullanıcı onayı olarak değerlendirilmiyor. Bunlara mise run --help/mise watch --help output’unu görüntülemek, shim çalıştırmak, mise run başlatan hook’lar, MCP call’ları ve mise set/unset/tasks add ile config kaydetmek dahil. Config write işlemleri untrusted sibling config’e güvenmeden önce kullanıcıdan onay istiyor. Bir task yalnızca kendisine katkıda bulunan tüm config’ler trusted ise trusted kabul ediliyor. MCP server; untrusted file task’larını, file path’e benzeyen task name’lerini ve inline tool option’larını reddediyor.
  • Trust artık doğrudan güvenilen file’lara bağlı. Forged Git worktree, global config’e yönlendiren symlink, .mise adlı clone veya project .miserc.toml artık başka bir kaynağın trust durumunu kullanamıyor ya da global config’i gizleyemiyor. Paranoid mode’da idiomatic version file’ları, her local task file ve project’e özel aqua registry’leri ayrı ayrı trust gerektiriyor. Commit SHA’ya pin edilen remote Git include’lar tam olarak ilgili commit’i checkout etmek zorunda.
  • Safe mode (MISE_SAFE=1) artık project’in lazy tool’larını, [deps], path: version’larını ve spm install_command işlemlerini; tüm S3 request’lerini; project config tarafından belirtilen host’lara gönderilen forge token ve netrc credential’larını; project template’lerindeki env ve filesystem helper’larını engelliyor. Tüm mode’larda project .miserc.toml file’ı restricted ve size-limited template language kullanıyor. bin_path ise tool’un install directory’sinin içinde kalmak zorunda.
  • TAB tuşuna basılması artık untrusted task code’unu çalıştırmıyor. Dynamic completer’lar yalnızca trusted config için çalışıyor. mise’ın kendi completer’ları yazılan word’leri quote ediyor ve candidate’lardan control character’ları kaldırıyor. fish ve PowerShell quoting sorunları da düzeltildi.
  • Hook command’ları artık load sırasında yalnızca bir kez render ediliyor. Böylece {{ exec(...) }} içeren bir directory name’in cd hook üzerinden code çalıştırabilmesi engellendi. Project’in enter, leave ve watch_files hook’ları artık project root içerisinde başlıyor. mise use, mise upgrade --bump ve diğer writer’lar template syntax içeren version’ları yazmayı reddediyor. Yeniden yazılan option’lar rendered secret yerine {{ env.X }} template’ini koruyor.
  • Hostile bir repository’ye cd yapılması artık hook-env işlemini kilitleyemiyor veya çökeretemiyor ve mise’ın repository dışındaki file’ları yazdırmasına neden olamıyor. Device’lara link veren config’ler, task directory’lerindeki symlink maze’leri, non-UTF-8 path’ler, aşırı büyük file’lar, path içerisindeki glob character’ları ve başka file’a link veren version file’ları gibi durumlar güvenli şekilde ele alınıyor.

Install Verification​


  • mise.lock içerisinde pin edilmiş checksum’lar artık Erlang, npm, spm ve HTTP için değiştirilmek veya atlanmak yerine zorunlu olarak doğrulanıyor. Node’un SHASUMS256.txt.sig file’ı eksikse install başarısız oluyor. Lock entry bulunmadığında Bun ve Deno publisher’ın SHA-256 checksum’unu doğruluyor. Lock edilmiş Node veya spm artifact’i 404 döndürdüğünde artık sessizce source build’e fallback yapılmıyor.
  • SLSA, attestation ve signed-checksum verification’ları artık fail-closed çalışıyor. Provenance file artık artifact’in yerine kullanılamıyor; slsa_signer_* pin’leri provenance gerektiriyor; mise lock, aqua recipe’lerinin tanımladığı cosign, minisign ve SLSA kontrollerini çalıştırıyor; SHA-512 signed checksum file’ları artifact ile karşılaştırılıyor ve aqua attestations_since değerini dikkate alıyor.
  • SLSA signing run’ın workflow repository’sinden veya tool’un kendi repository’sinden gelmesi gerekiyor. Attestation’ların requested repository’yi belirtmesi zorunlu. Rekor entry’si bulunmayan public-good bundle’lar reddediliyor.
  • Farklı bir tag’den build edilmiş SLSA provenance artık reddediliyor. Böylece bir mirror’ın eski bir release’e ait gerçek artifact ve provenance’ı daha yeni bir version olarak sunması engelleniyor.
  • packslip signer pin’leri workflow pin’leri dahil olmak üzere repository ID üzerinden doğrulanıyor. Backdated GitLab released_at date’leri ve transparency-log time içermeyen bundle’lar artık minimum_release_age kontrolünü aşamıyor.

Path’ler, Subprocess’ler ve Resource Limit’leri​


  • Release asset name’lerinin plain filename olması zorunlu hâle getirildi. GitHub, HTTP, aqua, cargo-binstall, packslip ve vfox backend’lerinden gelen archive’lar install directory dışına yönlendiren symlink içeremiyor.
  • Resolved version’lar, plugin name’leri ve task stub name’leri path veya URL segment’ine dönüştürülmeden önce doğrulanıyor. .., quote, $ veya başında - bulunan remote version’lar artık invalid tool version olarak reddediliyor.
  • Git lookup’ları, build tool’ları (ruby-build, python-build, cargo install, gem install) ve npm artık project directory dışında çalıştırılıyor. Böylece repository’nin .git/config file’ı veya diğer project file’ları bu işlemlerin davranışını değiştiremiyor. Untrusted value’lar command-line argument’lardan uzak tutuluyor. Safe mode’da asdf exec-env reddediliyor.
  • Lockfile, tool stub ve remote task cache çevresindeki committed symlink’lerin mise’ın repository dışındaki file’ları okumasına, yazmasına veya silmesine neden olması engellendi. Untrusted lockfile version ve checksum’ları pin etmeye devam edebiliyor ancak tool backend’ini değiştiremiyor, inline option ekleyemiyor veya download URL sağlayamıyor.
  • Task sandbox’taki çeşitli escape yöntemleri kapatıldı. --allow-write project dışına yönlendiren project symlink’lerini reddediyor. --deny-net diğer socket family’lerini, io_uring ve x32 syscall’larını da engelliyor. Boş allow_write sandbox’ı kapatmak yerine tüm write işlemlerini engelliyor. macOS her zaman /usr/bin/sandbox-exec kullanıyor. OCI whiteout’ların yerleştirilmiş symlink’ler üzerinden file silmesi engellendi.
  • HTTP response body’leri 128 MiB ile sınırlandırıldı ve yavaş response body’leri http_download_timeout ile sınırlandırılıyor. Download’lar gönderildikleri hâliyle kaydediliyor. Archive extraction, output hem 256 MiB’ı hem de download size’ın 100 katını (extract_max_ratio) aştığında durduruluyor.

Eklendi​


  • mise lsp, mise config file’ları için bir language server: stdin/stdout üzerinden çalıştığı için LSP client’a sahip herhangi bir editor ile kullanılabiliyor (Neovim, Helix, Emacs, Zed, VS Code vb.). Installed mise sürümünün schema ve formatter’ını kullandığından verdiği sonuçlar kullandığınız version ile uyumlu.
    • Diagnostics: TOML syntax error’ları, did you mean önerisiyle unknown key’ler, yanlış type’taki value’lar ve deprecated key’ler algılanıyor. Var olmayan task’lara yapılan reference’lar için warning gösteriliyor ve depends cycle’ları error olarak raporlanıyor.
    • Completion ve hover: Config key’leri, enum veya boolean value’lar; depends, depends_post, wait_for, run = [{ task = ... }] ve extends içerisindeki task name’leri ile [tools] altında registry’den gelen tool name’leri destekleniyor. Hover, bir tool’un description ve backend’lerini veya bir task’ın description ve command’ını gösteriyor.
    • Navigation ve editing: Bir task’ın definition’ına included file’lar dahil olmak üzere gidilebiliyor, reference’ları bulunabiliyor ve task ile file içerisindeki tüm reference’ları birlikte rename edilebiliyor. Quick fix’ler unknown key veya task name’lerini değiştirebiliyor ve env_path gibi deprecated key’leri yerine geçen yeni key’e dönüştürebiliyor. Formatting, mise fmt ile aynı output’u veriyor.
    • Yalnızca mise’ın config olarak yüklediği file’ları (mise.toml, mise.<env>.toml, conf.d/*.toml vb.) işliyor. Cargo.toml, pyproject.toml ve diğer TOML file’larını yok saydığı için doğrudan TOML filetype’a bağlanabiliyor. Config’ler parse ediliyor ancak render edilmiyor ve network request yapılmıyor; dolayısıyla untrusted bir file açıldığında herhangi bir şey çalıştırılmıyor. Client’lar initializationOptions üzerinden formatting, hover, completion, definition, references veya rename özelliklerini kapatabiliyor.
Kod:
vim.lsp.config("mise", { cmd = { "mise", "lsp" }, filetypes = { "toml" }, root_markers = { "mise.toml" } })
vim.lsp.enable("mise")

  • Doctor check’leri artık diğer check’lere bağlı olabiliyor: [doctor.checks.*] içerisindeki bir check’e tek bir name veya list olarak depends eklenebiliyor. Dependency başarısız olursa, error verirse, skip edilirse veya blocked durumuna geçerse dependent check blocked olarak raporlanıyor ve command ile hint’i çalıştırılmıyor. blocked sonucu tek başına exit code’u değiştirmiyor. Unknown dependency name veya cycle, config error olarak raporlanıyor ve bu durumda hiçbir check çalıştırılmıyor.
Kod:
[doctor.checks."examplectl"]
depends = ["examplectl"]
run = 'test -n "$(examplectl config get project)"'

  • mise dot history purge <path> ile tracked path local dotfiles history’den kaldırılabiliyor: Yanlışlıkla bir secret track edildiğinde kullanılabiliyor. Yalnızca bu path’i değiştiren checkpoint’ler kaldırılıyor. Diğer tüm checkpoint’ler numeric ID, message ve date bilgilerini koruduğundan history, rollback ve undo çalışmaya devam ediyor. --dry-run ile işlem önceden görülebiliyor, --yes ile confirmation atlanabiliyor. --backup, eski history’yi refs/mise/purge-backup/ altında saklıyor; --keep-objects ise pruning işlemini atlıyor. Path’in herhangi bir version’ı origin üzerinden zaten erişilebiliyorsa command işlemi reddediyor; mise hiçbir zaman force-push yapmıyor.
  • Dotfiles variant’larının target değeri artık template olabiliyor: Böylece tek bir shared config, farklı machine’lerde farklı location’lara link verebiliyor. Yalnızca variant target render ediliyor. Template’ler standart config context’ine (env, xdg_config_home, config_root vb.) erişebiliyor ancak exec() ve vars kullanılamıyor. Render edilen path absolute olmalı veya ~/ ile başlamalı.
Kod:
[dotfiles.examplectl]
source = "dotfiles/examplectl"
mode = "symlink"
variants = [{ default = true, target = "{{ xdg_config_home }}/examplectl" }]

  • mise upgrade --bump --pin resolved version’ları config’e yazıyor: latest veya 20 gibi request’ler, tool zaten güncel olsa bile 24.14.0 gibi exact version’a dönüştürülüyor. pin setting’i (MISE_PIN=1) etkinse normal mise upgrade --bump da aynı işlemi yapıyor. --dry-run yapılacak değişiklikleri gösteriyor.
  • [bootstrap.hooks] table’ları artık task’lar ve [hooks] gibi run_windows kabul ediyor. Windows’ta run yerine bu değer kullanılıyor. Yalnızca run_windows içeren bir table diğer platformlarda herhangi bir işlem yapmıyor.
  • Registry: Goose AI agent CLI için goose-agent (aqua/goose) eklendi. Installed binary’nin adı goose olarak kalıyor.

Değiştirildi​


  • pin artık normal mise upgrade --bump command’ını da etkiliyor. pin etkinse "22" gibi non-exact request’ler "22.1.0" gibi exact version’lara dönüştürülüyor. pin etkin değilse request precision önceki gibi korunuyor.
  • mise unuse tool@version artık yalnızca belirtilen version’ı prune ediyor. Önceden tool’un kullanılmayan tüm version’ları prune ediliyordu. Belirtilen version korunuyorsa mise artık nedenini açıklıyor. Örneğin: [email protected] is kept: required by ~/proj/mise.toml. Version belirtilmeden kullanılan mise unuse node ise node’un kullanılmayan tüm version’larını prune etmeye devam ediyor.

Düzeltildi​


Lockfile’lar​


  • Bir pipx tool kendi Python version’ını (python = "3.12") seçtiğinde mise use, mise up -l, mise lock pipx:... ve mise lock python artık hem bu Python’ı hem de project’in Python’ını mise.lock içerisinde tutuyor. Önceden entry’lerden biri kayboluyor ve mise install --locked başarısız oluyordu.
  • Nested config’ler farklı version’ları pin ettiğinde mise install tool@latest artık lockfile contains multiple resolutions error’ıyla başarısız olmuyor. Hangi version’ın kullanılacağına en yakın lockfile karar veriyor.
  • Monorepo root config .config/mise.toml içerisindeyse shared lockfile artık <root>/mise.lock yerine .config/mise.lock konumuna yazılıyor.
  • pipx: ve pypi: tool’ları için mise lock, Azure Artifacts gibi PEP 691 +html content type döndüren PyPI simple index’lerini artık kabul ediyor.
  • Locked conda installation’ları, checksum’u bilinen cached download’ları package’ı yeniden indirmek yerine tekrar kullanıyor.

Install, Upgrade ve Prune​


  • Project-level [hooks].postinstall artık yeni install edilen version ile çalışıyor. Önceden latest gibi fuzzy request’lerin mise upgrade işlemi sırasında PATH eski version’ı gösteriyordu.
  • Bir pypi/pipx tool’un receipt’i mise’ın Python installation’ına python/3.14 gibi minor-version link üzerinden ulaştığında mise prune artık points to an unknown mise Python installation error’ıyla durmuyor.
  • MISE_OVERRIDE_TOOL_VERSIONS_FILENAMES ayarlanmış olsa bile tracked .tool-versions file’ları yüklenmeye devam ediyor. Böylece mise prune’un project’lerin hâlâ kullandığı version’ları kaldırması önleniyor.
  • java = "latest", installed iki version yalnızca + sonrasındaki build değeriyle farklıysa artık en yeni build’i seçiyor. Örneğin +7 yerine +101.
  • mise PATH üzerinde olmasa bile gem: installation’ları ve bundle install artık başarısız olmuyor. Bu düzeltme bu release veya sonrasında install edilen Ruby’ler için geçerli.
  • Packslip tool’lar, minimum_release_age sınırını geçmiş ancak zaten installed olan bir version için her mise outdated veya mise up çalıştırıldığında warning göstermiyor.
  • Kendi Requirement class’larını tanımlayan Homebrew tap formula’ları artık mise bootstrap packages apply işlemini bozmuyor. mise bu requirement’ları enforce etmiyor ve bunlarla ilgili warning log’luyor.
  • rust içeren mise oci build image’ları artık çalışan cargo ve rustc içeriyor. CARGO_HOME ve RUSTUP_HOME da ayarlandığından container’lar ilk kullanımda toolchain’i yeniden indirmiyor. Rust, mise tarafından yönetilmeyen bir rustup’tan geliyorsa build artık başarısız oluyor.

Network ve Backend’ler​


  • Official rustls Linux build’lerinde system CA certificate yüklenemediğinde (örneğin minimal container’larda veya SSL_CERT_FILE eksik bir file’ı gösterdiğinde) mise warning göstererek bundled Mozilla root certificate’larına fallback yapıyor. Başarıyla yüklenen root’lar değiştirilmiyor.
  • .netrc içerisinde github.com credential’ları bulunduğunda GitHub asset’leri artık doğru şekilde indiriliyor. Reachability check artık bu credential’ları göndermediğinden rate-limited API’ye gereksiz fallback yapılmıyor.
  • mise-versions’ın empty release list döndürdüğü github: tool’ları (örneğin github/svu) artık paged listing’e fallback yapıyor ve version’ları doğru şekilde bulunabiliyor.

Eklendi​


  • [bootstrap.user].login_shell artık shell adı kabul ediyor. Makineler arasında paylaşılan bir config’in artık her sistemin shell’i nereye kurduğunu bilmesi gerekmiyor. mise, setting’i kontrol ederken veya uygularken shell adını çözümlüyor. Bu işlem bootstrap.packages shell’i kurduktan sonra gerçekleşiyor.

    Önce PATH içerisinde (mise shims directory’si hariç), ardından /opt/homebrew/bin, /usr/local/bin, /home/linuxbrew/.linuxbrew/bin, ~/.linuxbrew/bin, /usr/bin ve /bin gibi yaygın package manager konumlarında arama yapılıyor.

    Executable bulunamazsa mise bootstrap user apply, /etc/shells veya user account üzerinde değişiklik yapmadan başarısız oluyor ve status, not installed olarak raporluyor. mise bootstrap user status bulunan path’i gösteriyor ve --json output’una yeni bir resolved field’ı eklendi. Absolute path’ler önceki gibi çalışmaya devam ediyor.

    Kod:
    [bootstrap.packages]
    "brew" = "latest"
    
    [bootstrap.user]
    login_shell = "fish"

    []Doctor check’leri template desteği kazandı. [doctor.checks.[/I]] içerisindeki run, description ve hint artık bunları tanımlayan config file’ın template context’iyle, hook’larla aynı şekilde render ediliyor. Böylece bir check, hard-code edilmiş değer yerine [vars] içerisindeki bir değeri kullanabiliyor. dir render edilmiyor.

    Bir template başarısız olursa yalnızca ilgili check ERROR bildiriyor ve diğer check’ler çalışmaya devam ediyor. Bu field’larda {{ veya {% içeren text’ler artık template olarak parse ediliyor.

    Kod:
    [doctor.checks."project-a"]
    description = "project-a has a .env file"
    run = 'test -f {{ vars.repos_dir | quote }}/project-a/.env'
    hint = "cp {{ vars.repos_dir }}/project-a/.env.example {{ vars.repos_dir }}/project-a/.env"

    [*]vfox plugin’lerine RUNTIME.cacheDirPath eklendi. Bu, her plugin için $MISE_CACHE_DIR/plugins/<plugin-name> altında oluşturulan bir cache directory’si. mise herhangi bir hook’u çalıştırmadan önce bu directory’yi oluşturuyor ve plugin’in tüm hook’ları aynı path’i görüyor.

    pluginDirPath’in aksine plugin yeniden kurulduğunda korunuyor. mise cache clear ile silindiğinden plugin’lerin directory’nin bulunmadığı durumu desteklemesi gerekiyor. Cache directory kullanılamıyorsa değer nil oluyor.

    [*]settings.write_targets artık relative ve template içeren path’leri kabul ediyor. Önceden yalnızca absolute veya ~/ path’leri destekleniyordu. Bu nedenle farklı MISE_CONFIG_DIR veya XDG_CONFIG_HOME kullanan makineler arasında paylaşılan dotfile’larda config directory’nin hard-code edilmesi gerekiyordu.

    Artık template’ler render ediliyor ve relative sonuç, setting’i tanımlayan file’ın config_root değeriyle birleştiriliyor. Global file için bu değer $HOME olduğundan portable kullanımda file’ın kendi directory’si kullanılabiliyor.

    Çözümlenen path’in yine mise tarafından yüklenen global bir config file olması gerekiyor. Template render edilemezse mise warning veriyor ve mise use --global, default file’a yazmak yerine must resolve to an absolute path hatasıyla başarısız oluyor.

    Kod:
    [HEADING=2]~/.config/mise/conf.d/settings.toml[/HEADING]
    [settings.write_targets]
    tools = "{{ config_source | dirname }}/tools.toml"

    [*]vfox backend plugin’leri artık version alias’larını raporlayabiliyor. BackendListVersions, bir aliases table’ı döndürebiliyor. Böylece registry’deki hareketli isimler gerçek version’lara çözümlenebiliyor.

    Önceden "mise-ghcup" = "recommended" ifadesi literal olarak plugin’e aktarılıyor, installs/.../recommended altına kuruluyor, tag değiştiğinde takip edilmiyor ve mise ls ile lockfile’da recommended olarak görünüyordu.

    Artık ghc@recommended, 9.10.3 olarak çözümleniyor, 9.10.3/ altına kuruluyor ve lockfile’a 9.10.3 yazılıyor. Config içerisinde tanımlanan alias’lar önceliğini koruyor. Alias’lar version listesi gibi cache’leniyor ve süresi dolmuş cache offline durumda da kullanılabiliyor. Eski mise sürümleri aliases field’ını görmezden geldiğinden plugin’ler bu özelliği hemen kullanmaya başlayabiliyor.

    Kod:
    return {
    versions = { "9.8.4", "9.10.3", "9.14.1" },
    aliases = { recommended = "9.10.3" },
    }

    [*]mise lock ve version listing artık keyring kullanan PyPI index’leriyle çalışıyor. Azure Artifacts ve artifacts-keyring gibi bir index kullanıldığında mise install, uv’nin keyring provider üzerinden password alması sayesinde çalışıyordu ancak mise’in kendi request’leri credentials göndermediği için 401 Unauthorized hatası veriyordu.

    Yeni pypi.keyring_provider setting’i (disabled default, ayrıca subprocess; environment variable: MISE_PYPI_KEYRING_PROVIDER) kullanılabiliyor. Registry URL’sine password olmadan username verildiğinde mise, uv gibi keyring get <url> <username> çalıştırıyor ve version listelerken veya mise lock bir release’in requires-python bilgisini okurken sonucu HTTP Basic credentials olarak gönderiyor.

    Password hiçbir zaman lockfile’a veya version cache’e yazılmıyor. keyring executable’ının PATH üzerinde bulunması gerekiyor. Bulunamazsa veya ilgili entry yoksa request credentials olmadan gönderiliyor.

    Kod:
    [settings.pypi]
    keyring_provider = "subprocess"
    registry_url = "[URL='https://[email protected]/org/project/_packaging/feed/pypi/simple/%7B%7D/']https://[email protected]/org/project/_packaging/feed/pypi/simple/{}/[/URL]"

    [*]vfox-backend: artık packslip plugin source’ları için prefix olarak kullanılabiliyor. Bir vfox backend plugin’i signed packslip archive üzerinden hem CLI’dan hem de [plugins] içerisinde kurulabiliyor.

    Önceden aşağıdaki komut packslip plugin sources require the vfox plugin type hatasıyla başarısız oluyordu:

    Bash:
    mise plugins install vfox-backend 'packslip/my-backend#1.0.0'

    Explicit asdf: veya package: prefix’leri hâlâ reddediliyor ve error message artık vfox or vfox-backend diyor. Archive, extensions.mise.plugin = "vfox" tanımını kullanmaya devam ediyor.

    [*]mise bootstrap packages list, ls ile birlikte artık status için bir alias olarak kullanılabiliyor.


Değiştirildi​


  • env._.file içerisindeki find_up artık config root’tan başlıyor. Config içerisindeki diğer relative path’lerin tümü config root’a göre çözümlenirken find_up current directory’den başlıyordu.

    Relative bir find_up path’i artık config root’tan başlayıp parent directory’lerde yukarı doğru arama yapıyor. Bu, root .env file’ının tüm package’lara uygulandığı monorepo’lar için daha uygun. Absolute path ise kendi directory’sinden başlıyor.

    mise’in çalıştırıldığı konumdan arama yapmak isteyen global config’ler cwd kullanabiliyor. Dotenv file’larını current directory’den yukarı doğru arayan env_file setting’i değişmedi.

    Kod:
    [HEADING=2]~/.config/mise/config.toml[/HEADING]
    [env]
    _.file = { path = "{{cwd}}/.env", find_up = true }
  • allow_builds artık yalnızca listelenen package’lara izin veriyor. Embedded aube installer kullanılırken allow_builds = ["re2"], dtrace-provider gibi aube’un bundled trusted-dependencies listesinde bulunan diğer package’ların install script’lerini de çalıştırıyordu.

    Bir package listesi verildiğinde mise artık bu default listeyi devre dışı bırakıyor ve yalnızca açıkça belirtilen package’ların build edilmesine izin veriyor. allow_builds = true ve option belirtilmediğindeki default davranış değişmedi. Embedded aube 2.8.0’a güncellendi.

Düzeltildi​


  • [env] value’ları içerisindeki exec() ve mise’in pre-activation environment ile çalıştırdığı diğer command’lar, shell PATH değerini deduplicate etse bile activation öncesinde PATH üzerinde bulunan bir _.path directory’sindeki command’ları artık bulabiliyor. Örneğin zsh’de typeset -U path PATH kullanıldığında da doğru çalışıyor.
  • task.source_freshness_hash_contents = true kullanıldığında, bir source file aynı boyuttaki farklı bir content ile değiştirilip eski mtime değeri geri yüklense bile task artık yeniden çalıştırılıyor. Bu durum örneğin rsync -a, cp -p veya touch -r ile oluşabiliyor. Unix’te mise artık file’ın ctime değerini de karşılaştırıyor. Eski sürümlerin oluşturduğu cache entry’leri bir kez yeniden hash’leniyor.
  • macOS’ta toolset içerisinde aqua/aws-cli bulunduğunda pipx: install’larının başarısız olması düzeltildi. macOS filesystem’leri default olarak büyük/küçük harfe duyarsız olduğundan mise’in python araması, aws-cli içerisindeki Python adlı shared library executable’ını eşleştiriyor ve bunu interpreter olarak uv’ye aktarıyordu. Lookup artık tam büyük/küçük harf eşleşmesi gerektiriyor.
  • Unterminated string literal içeren bir aqua registry template’inin takılması düzeltildi. Artık unterminated string literal error’ı veriliyor. Backslash sonrasındaki escaped quote’lar da doğru şekilde algılanıyor.
  • Built-in npm backend artık private key’leri ele geçirilen sekiz eMudhra intermediate CA certificate’ına güvenmiyor. Düzeltme, bundled root certificate’ların webpki-root-certs 1.0.10 ve rustls-webpki 0.103.16 sürümlerine güncellenmesiyle sağlandı. OS trust store kullanan build’lerde ise sorun operating system update’leriyle gideriliyor.

Değiştirildi​

  • Default minimum_release_age artık tüm backend’lere uygulanıyor. Built-in 24 saatlik cooldown daha önce yalnızca release date bildiren backend’leri (aqua, cargo, core, github, npm, pypi ve diğerleri) kapsıyordu. asdf, vfox, conda, dotnet, http: ve s3: tool’larında herhangi bir cutoff bulunmuyordu. Artık tüm backend’ler cooldown’a tabi. Tek version’ı 24 saatten daha yeni olan bir tool, aqua ve github tool’larında olduğu gibi artık "no versions found" sonucunu veriyor. Bir tool’u bunun dışında bırakmak için minimum_release_age_excludes listesine ekleyebilirsiniz. Cooldown’ı tamamen kapatmak için minimum_release_age = "0s" ayarlanabilir.
  • mise, bir version’ın release date’ini kontrol edemediğinde artık uyarı gösteriyor. Date’i bilinmeyen version cutoff’tan geçmeye devam ediyor ancak mise install, mise upgrade ve mise use artık ilgili version’ı belirten tek seferlik bir warning gösteriyor. Kullanıcının kendisinin belirlediği exact pin’ler bu warning’i tetiklemiyor. mise env, mise ls, mise outdated ve mise ls-remote ise warning göstermiyor.
WARN asdf:[email protected] has no release date, so the ... cutoff cannot be checked and it is allowed (exclude it with minimum_release_age_excludes to silence this)
  • Daha fazla backend release date bildiriyor ve böylece cooldown bunlara da uygulanıyor:
    • conda version’larında channel’ın en eski index timestamp’i kullanılıyor.
    • Git tag’lerinden version alan (version_source: github_tag) aqua package’ları artık date bilgisi sağlıyor. Buna aws/aws-cli, docker/cli ve cockroachdb/cockroach gibi package’lar dahil.
    • dotnet date’leri Microsoft’un releases index’inden; deno ve erlang date’leri ise GitHub Releases üzerinden alınıyor.
    • Artık tüm Python version’ları ve çok daha fazla Ruby version’ı date bilgisine sahip. Ruby için ruby-lang.org, JRuby için Maven Central ve TruffleRuby için GitHub kullanılıyor. Rust’ın stable, beta ve nightly channel’ları da date bilgisine sahip. Geçmişe yönelik explicit cutoff kullanıldığında rust@stable, yeterince eski olan en yeni stable release’e; beta ve nightly ise cutoff öncesindeki dated build’e resolve ediliyor.
    • dart, flutter, nim, julia, nomad-pack, sentinel, tfc-agent, android-cli, cursor-agent ve twg registry tool’ları artık date bilgisi bildiriyor.
  • Daha fazla backend’in version listesi mise-versions host üzerinden alınıyor. npm:, pipx:, cargo:, gem:, go:, dotnet: ve spm: tool’ları artık diğer registry tool’ları gibi version’ları kendi source’ları yerine mise-versions üzerinden listeliyor. version_list_url kullanan http/s3 tool’ları da buna dahil. Bir source redirect edilmişse mise doğrudan o source üzerinden listeleme yapmaya devam ediyor. Buna custom npm registry veya npm.shell_out, pypi.registry_url, default olmayan GOPROXY, cargo.registry_name, custom gem source, dotnet.registry_url, S3 endpoint override’ları ve local listing option’ları dahil. conda her zaman kendi channel’ından listeleniyor. Host cache TTL artık tool’un minimum_release_age değerini takip ediyor. Her şeyi doğrudan source üzerinden listelemek için MISE_USE_VERSIONS_HOST=0 kullanılabilir.

Eklendi​

  • Windows için PowerShell installer: Her release ile birlikte install.ps1 olarak yayınlanıyor ve mise.run üzerinde /powershell ve /pwsh path’lerinden sunuluyor; böylece irm ile alınıp iex üzerinden çalıştırılabiliyor. PowerShell 5.1+ ile çalışıyor ve admin yetkisi gerektirmiyor. En az 24 saatlik en yeni release’i veya ayarlanmışsa MISE_VERSION version’ını kuruyor. Download, GitHub Releases’teki SHASUMS256.txt üzerinden doğrulanıyor. mise.exe ve mise-shim.exe, ~\.local\bin içerisine kuruluyor ve bu directory user Path’ine ekleniyor. Installer’ın tekrar çalıştırılması mevcut kurulumu upgrade ediyor. MISE_INSTALL_PATH, MISE_INSTALL_MODIFY_PATH=0, MISE_INSTALL_SHIMS_PATH=1 ve MISE_INSTALL_FROM_GITHUB=1 option’ları destekleniyor.
  • read_json(), read_yaml() ve read_toml() template function’ları: Bir file’ı parse ederek template içerisinde buradaki value’ların kullanılmasını sağlıyor. Böylece package.json veya Pulumi.yaml içerisindeki version’ların manuel olarak mise.toml dosyasına kopyalanması gerekmiyor. Relative path’ler config file’ın directory’sine göre resolve ediliyor. Eksik key, | default(value="...") eklenmediği sürece error oluşturuyor. read_file() gibi bu function’lar da trusted config gerektiriyor ve safe mode, .miserc.toml veya OCI dotfile template’lerinde çalışmıyor.
[tools]
node = "{{ read_json(path='package.json')['volta']['node'] }}"
pulumi = "{{ read_yaml(path='Pulumi.yaml')['requiredPulumiVersion'] }}"
  • dotnet@lts ve dotnet@sts: Microsoft’un release index’i kullanılarak mevcut LTS veya STS channel’ındaki en yeni SDK’ya resolve ediliyor. Preview, go-live ve end-of-life channel’ları atlanıyor. [tool_alias.dotnet.versions] altında tanımlanan custom lts alias’ı önceliğini koruyor. Runtime-only kurulumlarda hâlâ exact version gerekiyor.
  • mise bootstrap --prune-dotfiles: Artık kullanılmayan dotfile’ları mise dot apply --prune ile aynı şekilde kaldırıyor. Böylece mise bootstrap --upgrade --prune-dotfiles tüm işlemleri tek seferde gerçekleştirebiliyor. Prune işlemi dotfiles phase’in sonunda çalışıyor ve --dry-run, --yes ile --skip dotfiles option’larını dikkate alıyor. Kullanıcı tarafından düzenlenmiş copy’ler korunuyor.
  • dotfiles.windows_symlinks: Default değeri false. Etkinleştirildiğinde symlink ve symlink-each, Windows’ta gerçek file symlink’leri oluşturuyor. Windows link oluşturmayı reddederse sessizce copy oluşturmak yerine apply işlemi başarısız oluyor. Symlink oluşturmak için Windows Developer Mode veya elevated shell gerekiyor. Setting tekrar kapatılırsa hâlâ link içeren entry’lerde mise dot unapply için --force gerekiyor.
[settings.dotfiles]
windows_symlinks = true
  • http: tool’ları için release date desteği: Yeni version_date_expr option’ı, version_list_url response’undaki version’ları date’lerle eşleştiriyor. Date’leri farklı bir URL’den almak için version_date_url, paginated listing’leri takip etmek için ise version_date_next_expr kullanılabiliyor. Pagination yalnızca aynı host üzerinde destekleniyor. Date formatı RFC 3339, YYYY-MM-DD veya HTTP date olabilir.
  • vfox plugin’leri release date bildirebiliyor: Available veya BackendListVersions hook’u her version için RFC 3339 formatında created_at döndürebiliyor. Plain version string’leri de desteklenmeye devam ediyor.
  • mise tasks -a, artık mise tasks --all için kısa alias olarak kullanılabiliyor.

Düzeltildi​

  • mise fmt artık multiline inline table’ları (TOML 1.1) bozmuyor. Daha önce comment’leri table dışına çıkarıp indentation’ı kaldırabiliyordu. Artık bu table’lar yazıldıkları biçimde korunuyor.
  • Bir task’ın dir template’i render edilemediğinde diğer task command’ları çalışmaya devam ediyor. Daha önce mise tasks validate dahil tüm command’lar başarısız oluyordu. Artık mise tasks validate, bozuk task’ı invalid-directory-template olarak bildiriyor ve yalnızca ilgili task çalıştırıldığında hata oluşuyor.
  • aqua tool’ları artık fastfetch 2.70.0 gibi macOS universal archive’larında binary’lerini bulabiliyor.
  • npm: allow_builds tarafından onaylanan lifecycle script’leri, ~/.npmrc içerisinde ignore-scripts=true ayarlı olsa bile çalışıyor.
  • npm: mise lock, aube config farklı bir default lockfile (ör. pnpm-lock.yaml) belirlediğinde artık başarısız olmuyor.
  • .7z tool archive’ları, mise data directory path’inde .. bulunduğunda da doğru şekilde extract ediliyor.
  • Windows release’indeki mise-shim.exe artık version tag’ini koruyor. Böylece mise doctor ve mise reshim --force bunu outdated olarak bildirmiyor. Update sonrasında mise reshim --force çalıştırıldığında warning ortadan kalkıyor.
  • Windows’ta symlink-each dotfile message’ları ve dry-run preview’ları artık file’ların symlink yerine copy edildiğini doğru şekilde belirtiyor.
  • Rust: RUSTUP_DIST_SERVER mirror yapılandırılmışken GitHub’a erişilemiyorsa mise artık hata vermek yerine stable, beta ve nightly channel’larını listeliyor. Böylece rust@stable mirror üzerinden kurulabiliyor.
  • Windows’ta büyük archive’ların http: üzerinden kurulumu, antivirus extract edilen file’ları tararken oluşan "Access is denied" hatası nedeniyle artık başarısız olmuyor. mise final move işlemini yaklaşık bir dakikaya kadar yeniden deniyor.

Düzeltildi​

  • GitHub lookup işlemleri artık mise-versions kesintilerinden etkilenmiyor: mise-versions timeout’a uğrarsa, connection kesilirse veya 429 ya da 5xx döndürürse mise, lookup işlemini api.github.com üzerinden yeniden deniyor. GitHub token ayarlanmışsa bu işlemde kullanılıyor. Bu fallback; release’leri, tag’leri, repository content’lerini, attestation’ları ve self-update işlemini kapsıyor. mise-versions tarafından döndürülen 404, 403 veya empty response ise güvenilir kabul edilerek yeniden denenmiyor; böylece normal kullanımda GitHub’ın anonymous rate limit’i tüketilmiyor. Her iki source da başarısız olursa error her iki hatayı da gösteriyor ve daha önce cache’lenmiş version list varsa kullanılmaya devam ediliyor.
  • _.source artık ~/.bashrc dosyasını yüklemiyor: mise’ın stdin’i socket olduğunda ve SHLVL ayarlanmadığında — örneğin VS Code mise extension gibi bir editor extension mise’ı başlattığında — Bash script’ten önce ~/.bashrc dosyasını source ediyordu. Bu durum environment’a istenmeyen variable’ların sızmasına ve script’in PATH entry’lerinin kaybolmasına neden olabiliyordu. Script artık --norc ile çalıştırılıyor.
  • Her version entry artık kendi option’larını kullanıyor: Bir tool için birden fazla version listelendiğinde yalnızca ilk entry’de ayarlanan option’ların sonraki entry’lere sızması engellendi. Örneğin latest entry’sindeki prerelease = true, ayrı bir "1" entry’sinin prerelease version’a resolve edilmesine neden oluyordu.
  • Workspace provider başarısız olduğunda project override’ları artık çalışıyor: Daha önce bir provider manifest’ini okuyamadığında (örneğin malformed bir go.work nedeniyle), mise tasks graph ve mise run --affected tüm repository için başarısız oluyordu. Artık [monorepo.projects] altında ilgili provider namespace’inde bir project tanımlandığında bu tanım provider output’unun yerini alıyor ve error temizleniyor. Herhangi bir project tanımlanmamış provider’lar ise error vermeye devam ediyor.

Eklendi​

  • mise bootstrap --upgrade: Tek bir çalıştırmada eksik olanları install ediyor, ardından mevcut kurulumları upgrade ediyor. Packages aşamasında mise bootstrap packages upgrade ile aynı upgrade işlemi uygulanıyor ve pin’ler korunuyor. Tools aşamasında ise mise upgrade, --bump olmadan çalıştırılıyor; böylece configured version range’ler korunuyor. Her iki işlem de ilgili post hook’lardan ve dependent service’lerden önce gerçekleştiriliyor. --dry-run her iki adımı da önceden gösteriyor, --skip ise önceki gibi çalışıyor. Bu seçenek mise’ın kendisini, repository’leri veya image’ları güncellemiyor ve service’leri restart etmiyor.

    mise self-update --yes && mise bootstrap --upgrade
  • mise env --paths: mise tarafından yönetilen PATH entry’lerini PATH sırasına göre, her satırda bir tane olacak şekilde gösteriyor. Buna tool bin directory’leri, _.path entry’leri ve mise’ın öne taşıdığı ~/.cargo/bin gibi inherited directory’ler dahil. Böylece CI integration’ları PATH üzerinde diff almadan yalnızca mise’ın eklediği path’leri export edebiliyor.

    $ mise env --paths /home/me/.local/share/mise/installs/node/24.11.0/bin /home/me/.cargo/bin
  • Install script artık pinned version’ları mise.jdx.dev üzerinden indiriyor: curl https://mise.run | MISE_VERSION=<version> sh artık önce mise.jdx.dev’i deniyor; download başarısız olursa GitHub Releases’a fallback yapıyor. Pinned version’ların checksum’ları hâlâ yalnızca GitHub’daki SHASUMS256.txt üzerinden alınıyor. Checksum bulunamazsa script installation’ı reddediyor. MISE_INSTALL_FROM_GITHUB=1 kullanıldığında yalnızca GitHub kullanılmaya devam ediyor.
  • Registry: gdal, GDAL/OGR command-line tool’larını artık conda-forge üzerinden (conda:libgdal-core) kuruyor.

Düzeltildi​

  • Parametresiz mise upgrade, daha önce hiç kurulmamış lazy tool’ları artık install etmiyor: Tool adı açıkça belirtilirse installation yine gerçekleştiriliyor. Daha önce bir version’ı kurulmuş lazy tool normal şekilde upgrade ediliyor. Ayrıca upgrade edilen başka bir tool eksik lazy tool’a dependency olarak ihtiyaç duyuyorsa installation yine yapılıyor. mise outdated artık bu tool’ları [MISSING] (lazy) olarak işaretliyor ve parametresiz upgrade sırasında version lookup yapılmıyor.
  • Static musl build’lerde, örneğin Ubuntu 26.04 üzerinde oluşan hatalı stack limit reached error’ları düzeltildi. Bu error’lar aqua version_filter parsing işlemini bozuyor ve kubectl gibi shim’lerin "not a valid shim" error’ı vermesine neden oluyordu.
  • Alpine veya NixOS üzerinde çalıştırılan mise lock --platform ... artık diğer platformlar için Node source build kaydetmiyor. Yalnızca açıkça node.compile veya all_compile = true kullanılması bu target’larda source build’i zorunlu kılıyor.
  • mise upgrade --bump ve manuel olarak düzenlenen version pin’leri artık pipx tool’un locked uv dependency graph’ını kaldırmıyor. Daha önce bu durum fresh checkout sonrasında mise install --locked işleminin başarısız olmasına neden oluyordu.
  • fnox@1 gibi Packslip prefix’leri artık latest ile aynı şekilde mevcut host’un install edemeyeceği release’leri atlıyor. Atlanan her release için warning gösteriliyor; install edilebilir eşleşme bulunamazsa mise açık bir error message veriyor.
  • /bin önünde bulunan bir bash shim artık bash -c 'bash --version' gibi command’lerde hatalı "shim fallback recursion detected" error’ına neden olmuyor. Dokümantasyon da shell’lerin [tools] yerine system package manager ile kurulmasını önerecek şekilde güncellendi.
  • interface içeren Bootstrap UFW rule’ları artık incoming direction’ı doğru şekilde oluşturuyor (ufw allow in on tailscale0 ...). Böylece Invalid token 'on' error’ı giderildi.