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.
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
cargonot 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. ÖncelikleMISE_CONFIG_DIR, bu tanımlı değilsexdg_config_home+/misekullanılıyor.xdg_config_home’un kullanılabildiği config template’leri,.miserc.tomlve setting path’lerinde kullanılabiliyor. Özellikleconf.diç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 lspiçin semantic highlighting: Editor’lar artıkmise.tomliç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çininitializationOptionsiçerisinde{"semanticTokens": false}kullanılabiliyor.extract_max_ratiosetting’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_hostssetting’i eklendi: Yalnızca global olarak kullanılabiliyor veMISE_GITHUB_ENTERPRISE_HOSTSile de ayarlanabiliyor. GitHub token’ın HTTPS üzerinden/api/v3URL’lerine gönderileceği GitHub Enterprise host’larını belirliyor.- Yeni vfox attestation field’ları eklendi:
slsa_source_repositoryveslsa_source_tagsayesinde plugin’ler SLSA provenance’ın gelmesi gereken repository ve tag’i sabitleyebiliyor.Değişiklikler
lockfile_mode = "generate"artık varsayılan: Install işlemlerimise.lockfile’ı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 nedeniylemise install --lockedişlemini başarısız kılması engelleniyor. Her iki mode da kendi başına lockfile oluşturmuyor; bunun içinmise lockveyalockfile = truekullanılması gerekiyor. Önceki davranışı korumak içinlockfile_mode = "merge"veyaMISE_LOCKFILE_MODE=mergekullanı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 --helpoutput’unu görüntülemek, shim çalıştırmak,mise runbaşlatan hook’lar, MCP call’ları vemise set/unset/tasks addile 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,
.miseadlı clone veya project.miserc.tomlartı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 spminstall_commandişlemlerini; tüm S3 request’lerini; project config tarafından belirtilen host’lara gönderilen forge token ve netrc credential’larını; project template’lerindekienvve filesystem helper’larını engelliyor. Tüm mode’larda project.miserc.tomlfile’ı restricted ve size-limited template language kullanıyor.bin_pathise 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’incdhook üzerinden code çalıştırabilmesi engellendi. Project’inenter,leavevewatch_fileshook’ları artık project root içerisinde başlıyor.mise use,mise upgrade --bumpve 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
cdyapılması artıkhook-enviş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.lockiç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’unSHASUMS256.txt.sigfile’ı 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 aquaattestations_sincedeğ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
workflowpin’leri dahil olmak üzere repository ID üzerinden doğrulanıyor. Backdated GitLabreleased_atdate’leri ve transparency-log time içermeyen bundle’lar artıkminimum_release_agekontrolü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/configfile’ı 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 asdfexec-envreddediliyor.- 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-writeproject dışına yönlendiren project symlink’lerini reddediyor.--deny-netdiğer socket family’lerini,io_uringve x32 syscall’larını da engelliyor. Boşallow_writesandbox’ı kapatmak yerine tüm write işlemlerini engelliyor. macOS her zaman/usr/bin/sandbox-execkullanı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_timeoutile 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
dependscycle’ları error olarak raporlanıyor.- Completion ve hover: Config key’leri, enum veya boolean value’lar;
depends,depends_post,wait_for,run = [{ task = ... }]veextendsiç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_pathgibi deprecated key’leri yerine geçen yeni key’e dönüştürebiliyor. Formatting,mise fmtile aynı output’u veriyor.- Yalnızca mise’ın config olarak yüklediği file’ları (
mise.toml,mise.<env>.toml,conf.d/*.tomlvb.) işliyor.Cargo.toml,pyproject.tomlve 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’larinitializationOptionsüzerindenformatting,hover,completion,definition,referencesveyarenameö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 olarakdependseklenebiliyor. Dependency başarısız olursa, error verirse, skip edilirse veya blocked durumuna geçerse dependent checkblockedolarak raporlanıyor ve command ile hint’i çalıştırılmıyor.blockedsonucu 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ğundanhistory,rollbackveundoçalışmaya devam ediyor.--dry-runile işlem önceden görülebiliyor,--yesile confirmation atlanabiliyor.--backup, eski history’yirefs/mise/purge-backup/altında saklıyor;--keep-objectsise 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
targetdeğeri artık template olabiliyor: Böylece tek bir shared config, farklı machine’lerde farklı location’lara link verebiliyor. Yalnızca varianttargetrender ediliyor. Template’ler standart config context’ine (env,xdg_config_home,config_rootvb.) erişebiliyor ancakexec()vevarskullanı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 --pinresolved version’ları config’e yazıyor:latestveya20gibi request’ler, tool zaten güncel olsa bile24.14.0gibi exact version’a dönüştürülüyor.pinsetting’i (MISE_PIN=1) etkinse normalmise upgrade --bumpda aynı işlemi yapıyor.--dry-runyapılacak değişiklikleri gösteriyor.[bootstrap.hooks]table’ları artık task’lar ve[hooks]gibirun_windowskabul ediyor. Windows’tarunyerine bu değer kullanılıyor. Yalnızcarun_windowsiç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ıgooseolarak kalıyor.Değiştirildi
pinartık normalmise upgrade --bumpcommand’ını da etkiliyor.pinetkinse"22"gibi non-exact request’ler"22.1.0"gibi exact version’lara dönüştürülüyor.pinetkin değilse request precision önceki gibi korunuyor.mise unuse tool@versionartı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ılanmise unuse nodeise 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ğindemise use,mise up -l,mise lock pipx:...vemise lock pythonartık hem bu Python’ı hem de project’in Python’ınımise.lockiçerisinde tutuyor. Önceden entry’lerden biri kayboluyor vemise install --lockedbaşarısız oluyordu.- Nested config’ler farklı version’ları pin ettiğinde
mise install tool@latestartıklockfile contains multiple resolutionserror’ıyla başarısız olmuyor. Hangi version’ın kullanılacağına en yakın lockfile karar veriyor.- Monorepo root config
.config/mise.tomliçerisindeyse shared lockfile artık<root>/mise.lockyerine.config/mise.lockkonumuna yazılıyor.pipx:vepypi:tool’ları içinmise lock, Azure Artifacts gibi PEP 691+htmlcontent 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].postinstallartık yeni install edilen version ile çalışıyor. Öncedenlatestgibi fuzzy request’lerinmise upgradeişlemi sırasındaPATHeski version’ı gösteriyordu.- Bir pypi/pipx tool’un receipt’i mise’ın Python installation’ına
python/3.14gibi minor-version link üzerinden ulaştığındamise pruneartıkpoints to an unknown mise Python installationerror’ıyla durmuyor.MISE_OVERRIDE_TOOL_VERSIONS_FILENAMESayarlanmış olsa bile tracked.tool-versionsfile’ları yüklenmeye devam ediyor. Böylecemise 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+7yerine+101.misePATHüzerinde olmasa bilegem:installation’ları vebundle installartı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_agesınırını geçmiş ancak zaten installed olan bir version için hermise outdatedveyamise upçalıştırıldığında warning göstermiyor.- Kendi
Requirementclass’larını tanımlayan Homebrew tap formula’ları artıkmise bootstrap packages applyişlemini bozmuyor. mise bu requirement’ları enforce etmiyor ve bunlarla ilgili warning log’luyor.rustiçerenmise oci buildimage’ları artık çalışancargoverustciçeriyor.CARGO_HOMEveRUSTUP_HOMEda 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_FILEeksik 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..netrciçerisindegithub.comcredential’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ğingithub/svu) artık paged listing’e fallback yapıyor ve version’ları doğru şekilde bulunabiliyor.
Eklendi
[bootstrap.user].login_shellartı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şlembootstrap.packagesshell’i kurduktan sonra gerçekleşiyor.
ÖncePATHiçerisinde (mise shims directory’si hariç), ardından/opt/homebrew/bin,/usr/local/bin,/home/linuxbrew/.linuxbrew/bin,~/.linuxbrew/bin,/usr/binve/bingibi yaygın package manager konumlarında arama yapılıyor.
Executable bulunamazsamise bootstrap user apply,/etc/shellsveya user account üzerinde değişiklik yapmadan başarısız oluyor vestatus,not installedolarak raporluyor.mise bootstrap user statusbulunan path’i gösteriyor ve--jsonoutput’una yeni birresolvedfield’ı 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çerisindekirun,descriptionvehintartı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.dirrender edilmiyor.
Bir template başarısız olursa yalnızca ilgili checkERRORbildiriyor 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’lerineRUNTIME.cacheDirPatheklendi. 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 clearile silindiğinden plugin’lerin directory’nin bulunmadığı durumu desteklemesi gerekiyor. Cache directory kullanılamıyorsa değerniloluyor.
[*]settings.write_targetsartık relative ve template içeren path’leri kabul ediyor. Önceden yalnızca absolute veya~/path’leri destekleniyordu. Bu nedenle farklıMISE_CONFIG_DIRveyaXDG_CONFIG_HOMEkullanan 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’ınconfig_rootdeğeriyle birleştiriliyor. Global file için bu değer$HOMEolduğ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 vemise use --global, default file’a yazmak yerinemust resolve to an absolute pathhatası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, biraliasestable’ı 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/.../recommendedaltına kuruluyor, tag değiştiğinde takip edilmiyor vemise lsile lockfile’darecommendedolarak görünüyordu.
Artıkghc@recommended,9.10.3olarak çözümleniyor,9.10.3/altına kuruluyor ve lockfile’a9.10.3yazı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ümlerialiasesfield’ı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 lockve version listing artık keyring kullanan PyPI index’leriyle çalışıyor. Azure Artifacts veartifacts-keyringgibi bir index kullanıldığındamise install, uv’nin keyring provider üzerinden password alması sayesinde çalışıyordu ancak mise’in kendi request’leri credentials göndermediği için401 Unauthorizedhatası veriyordu.
Yenipypi.keyring_providersetting’i (disableddefault, ayrıcasubprocess; environment variable:MISE_PYPI_KEYRING_PROVIDER) kullanılabiliyor. Registry URL’sine password olmadan username verildiğinde mise, uv gibikeyring get <url> <username>çalıştırıyor ve version listelerken veyamise lockbir release’inrequires-pythonbilgisini okurken sonucu HTTP Basic credentials olarak gönderiyor.
Password hiçbir zaman lockfile’a veya version cache’e yazılmıyor.keyringexecutable’ınınPATHü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 komutpackslip plugin sources require the vfox plugin typehatasıyla başarısız oluyordu:
Bash:mise plugins install vfox-backend 'packslip/my-backend#1.0.0'
Explicitasdf:veyapackage:prefix’leri hâlâ reddediliyor ve error message artıkvfox or vfox-backenddiyor. Archive,extensions.mise.plugin = "vfox"tanımını kullanmaya devam ediyor.
[*]mise bootstrap packages list,lsile birlikte artıkstatusiçin bir alias olarak kullanılabiliyor.
Değiştirildi
env._.fileiçerisindekifind_upartık config root’tan başlıyor. Config içerisindeki diğer relative path’lerin tümü config root’a göre çözümlenirkenfind_upcurrent directory’den başlıyordu.
Relative birfind_uppath’i artık config root’tan başlayıp parent directory’lerde yukarı doğru arama yapıyor. Bu, root.envfile’ı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’lercwdkullanabiliyor. Dotenv file’larını current directory’den yukarı doğru arayanenv_filesetting’i değişmedi.
Kod:[HEADING=2]~/.config/mise/config.toml[/HEADING] [env] _.file = { path = "{{cwd}}/.env", find_up = true }allow_buildsartık yalnızca listelenen package’lara izin veriyor. Embedded aube installer kullanılırkenallow_builds = ["re2"],dtrace-providergibi 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 = trueve option belirtilmediğindeki default davranış değişmedi. Embedded aube 2.8.0’a güncellendi.
Düzeltildi
[env]value’ları içerisindekiexec()ve mise’in pre-activation environment ile çalıştırdığı diğer command’lar, shellPATHdeğerini deduplicate etse bile activation öncesindePATHüzerinde bulunan bir_.pathdirectory’sindeki command’ları artık bulabiliyor. Örneğin zsh’detypeset -U path PATHkullanıldığında da doğru çalışıyor.
task.source_freshness_hash_contents = truekullanıldığında, bir source file aynı boyuttaki farklı bir content ile değiştirilip eskimtimedeğeri geri yüklense bile task artık yeniden çalıştırılıyor. Bu durum örneğinrsync -a,cp -pveyatouch -rile oluşabiliyor. Unix’te mise artık file’ınctimedeğ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-clibulunduğundapipx: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’inpythonaraması, aws-cli içerisindekiPythonadlı 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 literalerror’ı 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.10verustls-webpki 0.103.16sürümlerine güncellenmesiyle sağlandı. OS trust store kullanan build’lerde ise sorun operating system update’leriyle gideriliyor.
Değiştirildi
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)
- 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.
- 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
[tools]
- 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.
node = "{{ read_json(path='package.json')['volta']['node'] }}"
pulumi = "{{ read_yaml(path='Pulumi.yaml')['requiredPulumiVersion'] }}"
[settings.dotfiles]
- 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.
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.