Güvenlik
- .tool-versions içindeki inline tool seçenekleri artık trust gerektiriyor. Bu değişiklik, 2026.9.18 sürümünde mise.toml için yapılan düzeltmenin .tool-versions karşılığıdır. Güvenilmeyen bir proje, [api_url=...] gibi inline seçeneklere sahip bir github: girdisini başka bir host’a yönlendirebiliyordu. mise ls, env, current, outdated ve latest gibi komutlar daha önce trust istemeden GITHUB_TOKEN değerinizi bu host’a gönderebiliyordu. Artık tool adında [ bulunan tüm girdiler, Tera template’lerinde olduğu gibi trust gerektiriyor. node 20.0.0 gibi düz satırlar trust olmadan yüklenmeye devam ediyor ve yorum satırındaki [ karakteri yok sayılıyor. Güvendiğiniz projelerde mise trust çalıştırın. MISE_SAFE=1 trust kontrollerini atlamaya devam ediyor.
- Keyless cosign doğrulaması artık kimin imzaladığını da kontrol ediyor. Daha önce aqua backend yalnızca bundle’ın Sigstore Fulcio CA zincirine bağlı olup olmadığını kontrol ediyordu. Herhangi bir repository’deki herhangi bir GitHub Actions workflow’u böyle bir sertifika alabildiği için yanlış workflow tarafından imzalanan bundle da doğrulamadan geçebiliyordu. mise artık registry’deki --certificate-identity[-regexp], --certificate-oidc-issuer[-regexp] ve --certificate-github-workflow-{repository,ref,name,trigger,sha} seçeneklerini imzalama sertifikasına uyguluyor. Bu kontrol hem güncel hem de legacy bundle’lar için geçerli. Keyless doğrulama artık sabitlenmiş bir identity gerektiriyor; bilinmeyen veya boş bir --certificate-* seçeneği hata olarak kabul ediliyor. Key tabanlı doğrulama (--key) değişmedi. vfox için kullanılanlar gibi RE2 \Q…\E quoted literal desenleri destekleniyor.
- GitHub attestation signer workflow eşleştirmesi artık anchor’lı. Beklenen signer_workflow, sertifikanın workflow path’inin sonunda tam path segment’leri olarak eşleşmek zorunda. Daha önce tüm identity içinde substring eşleşmesi yapıldığı için release.yml.evil.yml gibi daha uzun workflow dosya adları veya beklenen path’i içeren bir ref doğrulamadan geçebiliyordu. Boş signer_workflow artık doğrulamayı başarısız kılıyor. Hem çıplak biçim (.github/workflows/release.yml) hem de repository-qualified biçim (owner/repo/.github/workflows/release.yml) desteklenmeye devam ediyor.
Eklenenler
- Cask başına ayrı app directory desteği. Bir brew-cask: bootstrap paketi kendi appdir değerini belirleyebiliyor. Bu değer global MISE_BREW_CASK_OPT_APPDIR ayarını geçersiz kılıyor, ~/ ifadesini genişletiyor ve cask bağımlılıklarına da uygulanıyor.
[bootstrap.packages] "brew-cask:1password" = { appdir = "/Applications" }
Bu ayar yalnızca kurulum ve yükseltme işlemlerinde geçerli. Zaten kurulu olan uygulamalar taşınmıyor. Yeni bir appdir içine yapılan ilk kurulum, adopt = true ayarlanmadıkça mise tarafından sahiplenilmeyen mevcut bir uygulamanın üzerine yazmıyor. Diğer package manager’lar appdir değerini yok sayıyor ve uyarı gösteriyor.- Aqua tool’ları için slsa_signer_identity ve slsa_signer_issuer seçenekleri. Bunlar github backend’deki karşılıklarıyla aynı şekilde çalışıyor. Böylece mise lock, registry girdisinde signer bulunmayan aqua:google/osv-scanner gibi paketlerin SLSA provenance bilgisini doğrulayıp kaydedebiliyor. Her iki seçeneğin de boş olmayan string olarak ayarlanması gerekiyor ve birlikte kullanıldıklarında version override’lar dahil registry’deki mevcut signer bilgisini geçersiz kılıyorlar.
- Registry: Cloudflare’ın beta durumundaki cf CLI aracı olan cloudflare-cf eklendi. npm:cf üzerinden kuruluyor ve cf ile cloudflare binary’lerini sağlıyor. Şimdilik mise use [email protected] gibi belirli bir beta sürümünü sabitleyin. Sürüm belirtilmeden yapılan kurulum şu anda ilgisiz eski bir 0.x sürümüne çözülüyor.
- Dokümantasyon: Dokümanlardaki About bölümü altına yeni bir Releases sayfası eklendi. Bu sayfa release boyutlarının timeline’ını, her sürümün çözdüğü issue’ları ve genişletilebilir release note’ları gösteriyor.
Düzeltmeler
- Kilitli SLSA kurulumları registry signer olmadan yeniden çalışıyor. 2026.9.17’den beri checksum ve SLSA provenance kaydeden bir lockfile, aqua:google/osv-scanner ve aqua:fluxcd/flux2 gibi tool’larda "Aqua registry metadata has no signer_identity and signer_issuer" hatasıyla başarısız oluyordu. Artık checksum ve kaydedilmiş provenance içeren lock girdileri SLSA için de güvenilir kabul ediliyor. Kurulum yalnızca artifact digest’i kontrol ediyor; diğer provenance türlerinde zaten bu şekilde çalışıyordu. locked_verify_provenance veya paranoid mode yeniden doğrulama yapmaya devam ediyor ve yine signer gerektiriyor.
- musl host’larda aqua desteği düzeltildi. Alpine ve diğer musl host’larda registry girdisinde yalnızca glibc build’i bulunan bir aqua tool’u, örneğin zizmor, "no asset found: ...-unknown-linux-musl..." hatasıyla başarısız oluyordu. mise artık registry’de belirtilen asset’i kuruyor. Binary’nin çalışabilmesi için yine glibc veya gcompat gerekiyor. linux-x64-musl için mise lock da aynı asset’i kaydediyor.
- mise backends switch eski lock girdilerini artık işleyebiliyor. Bazı durumlarda mise install, bir tool’un vfox:jdx/vfox-clojure yerine asdf:clojure gibi değiştirilmiş bir backend’e kilitlendiği konusunda uyarıyor ancak mise backends switch değiştirilecek bir şey olmadığını söylüyordu. Bunun nedeni config sürümünün lock girdisiyle artık eşleşmemesiydi. Komut artık bu girdileri de değiştiriyor. Config’in artık çözümleyemediği sürümlerdeki girdiler, config sürümüne göre yeniden lock ediliyor ve replacing stale <tool>@<version> olarak raporlanıyor.
- Ctrl-C artık status 130 ile çıkıyor. mise install, upgrade, exec ve benzeri komutları yarıda kesmek daha önce sıradan bir hata gibi 1 ile çıkıyordu. Artık mise run ile uyumlu şekilde 130 (128 + SIGINT) ile çıkıyor. Böylece shell ve script’ler kullanıcı tarafından yapılan kesintileri normal hatalardan ayırt edebiliyor. mise run sırasında tekrar Ctrl-C yapılması da 130 ile çıkıyor. Bu davranış Unix ve Windows için geçerli.
- Trust istemi reddedildiğinde config o çalıştırma için atlanıyor. Daha önce reddetmek mevcut komutun "not trusted" hatasıyla başarısız olmasına neden oluyordu.
- Eski latest runtime directory’leri için kullanılan tek seferlik startup migration kaldırıldı. Bu migration’ın süresi bu sürümde doluyordu ve normal kurulumları engelleyebilirdi. mise install, eski bir latest directory’yi hâlâ onarıyor ancak mise ls gibi pasif komutlar artık buna dokunmuyor.
- Eski dotfile history watcher’ları artık teşhis ediliyor. Eski bir mise sürümünde başlatılmış history watcher, exclude gibi yeni ayarlardaki bilinmeyen field’lar nedeniyle her capture işleminde hata verebiliyordu. mise doctor ve mise dot status artık watcher’ın güncel olmadığını bildiriyor ve yeniden başlatmak için mise bootstrap services apply komutunu öneriyor.
- Java: Eksik metadata hatası artık hedef platformu da belirtiyor. Örneğin: no metadata found for version zulu-8 on windows-arm64.
Geriye Dönük Uyumluluğu Bozan Değişiklikler
- mise bootstrap içinden --from-git kaldırıldı. mise bootstrap --from-git ve mise bootstrap remote --from-git artık unexpected-argument hatası veriyor. Bunun yerine 2026.9.3’ten beri belgelenmiş olan --adopt seçeneğini kullanın:
mise bootstrap --adopt [email protected]:me/dotfiles.git- Keyless cosign kullanan vfox tool plugin’leri artık identity sabitlemek zorunda. Bir PreInstall attestation, cosign_public_key_path olmadan cosign_sig_or_bundle_path ayarlıyorsa ayrıca cosign_certificate_identity veya cosign_certificate_identity_regexp de ayarlamalı. İsteğe bağlı olarak cosign_certificate_oidc_issuer da belirtilebilir. Identity olmadan attestation reddediliyor. Aqua CLI ile zaten çalışan registry girdileri bundan etkilenmiyor.
- Alpine/musl: Bir registry girdisi gnu asset belirtiyorsa ancak release aynı zamanda musl build de sunuyorsa mise artık gnu build’i kuruyor. Daha önce otomatik olarak musl build’e geçiyordu. Musl build’i kullanmaya devam etmek için ilgili tool’da libc = "musl" ayarlayın.
- Ctrl-C çıkış kodu: Kesinti sonrasında exit status 1 kontrol eden script’lerin artık 130 kontrol etmesi gerekiyor.
Yeni Katkıda Bulunanlar
- @jsiu93 ilk katkısını yaptı.
Güvenlik
- Satır içi araç seçenekleri artık güven gerektiriyor. Bu değişiklikten önce, güvenilmeyen bir dizindeki mise.toml dosyası araç anahtarlarının içine seçenek gizleyebiliyordu. Örneğin bir github: araç anahtarı, [api_url=...] ile başka bir host’a yönlendirilebiliyordu. Değer düz bir sürüm dizesi olduğu için mise dosyayı güven kontrolü olmadan yüklüyordu. Ardından mise ls, env, current, outdated, upgrade --dry-run ve latest gibi komutlar GITHUB_TOKEN değerini bu api_url adresine gönderebiliyordu. Artık [ içeren tüm araç anahtarları, { ... } seçenek tablolarında olduğu gibi güven gerektiriyor. node veya "cargo:eza" gibi düz anahtarlar güven olmadan yüklenmeye devam ediyor. Henüz güven vermediğiniz bir projede satır içi seçenekler kullanıyorsanız mise trust komutunu çalıştırın. MISE_SAFE=1 güven kontrollerini tamamen atlamaya devam ediyor.
Eklenenler
include = [
- Git veya OCI üzerinden paylaşılan config dahil edilebiliyor. Kuruluşlar araç sürümlerini, environment değişkenlerini ve hook’ları tek yerde tutup tüm repo’lara dahil edebiliyor:
"git::<repo-url>//mise.toml?ref=main",
"oci::ghcr.io/myorg/platform-config@sha256:0f1e2d3c...",
]
[tools]
node = "22" # Dosyanın kendi girdileri dahil edilenlerin üzerine yazar
git:: include bir repository içindeki .toml dosyasını işaret eder. oci:: include ise kökünde mise.toml bulunan bir artifact’i işaret eder. Dahil edilen dosya, onu dahil eden dosyanın altına birleştirilir ve daha sonra gelen include daha öncekini geçersiz kılar. Dahil edilen dosyanın kendi trust, config root ve lockfile ayarları kullanılır. Bir fragment [tools], [tool_alias], [env], [vars], [hooks], [alias], [shell_alias], [plugins], [wrappers] ve min_version içerebilir. Nested include, [settings], task’lar, [dotfiles] ve [daemons] dahil olmak üzere diğer girdiler hata oluşturur.
[task_config]
- Güvenilmeyen config hiçbir zaman veri çekmez; safe mode da project config için fetch işlemi yapmaz.
- Paranoid mode tam commit SHA veya OCI digest gerektirir.
- Fragment’lar MISE_CACHE_DIR/config-includes altında önbelleğe alınır. Sabitlenmiş ref’ler yeniden çekilmez. Branch ve tag’ler fetch_remote_versions_cache süresi dolduktan sonra yenilenir ve yalnızca install, up ve use gibi remote version kontrolü yapan komutlar tarafından güncellenir. Yenileme başarısız olursa önbellekteki kopya uyarıyla kullanılmaya devam eder.
- OCI task katalogları. task_config.includes artık git:: yanında oci:: referanslarını da kabul ediyor. Artifact çekiliyor, digest değerlerine göre doğrulanıyor, MISE_CACHE_DIR/remote-oci-tasks-cache altında önbelleğe alınıyor ve yerel bir task dizini gibi yükleniyor. Kimlik bilgileri docker login veya podman login üzerinden alınıyor. Symlink veya özel dosya içeren artifact’ler reddediliyor. İmzalar doğrulanmadığı için içeriğin değişmemesini istiyorsanız @sha256: ile sabitleyin.
includes = ["oci::ghcr.io/myorg/shared-tasks:1.0.0"]
oras push ghcr.io/myorg/shared-tasks:1.0.0 build.toml scripts/deploy
mise bootstrap --from 'git::<repo-url>?ref=v1'
- mise bootstrap --from artık ?ref= kabul ediyor. Böylece branch, tag veya commit seçilebiliyor:
git:: öneki isteğe bağlı. --update ile mise ref’i origin üzerinden yeniden çözümler ve branch’leri fast-forward eder. Upstream’de silinmiş bir ref hata oluşturur.
[tools]
- Belirli bir registry’den gem yükleme desteği eklendi. Yeni source seçeneği yalnızca ilgili gem’in version lookup ve install işlemlerini belirtilen registry’ye gönderiyor; makinenin gem sources ayarı değiştirilmiyor. URL içindeki kimlik bilgileri log ve install metadata içinde gizleniyor.
"gem:internal-tool" = { version = "latest", source = "<registry-url>" }
Kimlik bilgisi içermeyen bir GitHub Packages kaynağı (rubygems.pkg.github.com), artık mise’in zaten çözdüğü GitHub token’ını kullanıyor. Token’ın readackages iznine sahip olması gerekiyor. GitHub Packages bir versions API sunmadığı için burada tam sürüm sabitlemeniz gerekiyor.
- mise lock --sidecars artık mise.lock ile birlikte commit edilmesi gereken native dependency sidecar dizinlerini listeliyor; npm için aube, Python için uv. Komut hiçbir şeyi çözümlemiyor, yüklemiyor veya yazmıyor. Eksik sidecar’ları işaretliyor, symlink’li lockfile’ları takip ediyor ve Renovate gibi araçlar için --json desteği sunuyor.
- Daemon preset’leri artık adlandırılmış portlarını environment değişkenleri olarak dışa aktarıyor. Örneğin crdb adındaki bir cockroachdb daemon’u için CRDB_HTTP_PORT, authz adındaki bir spicedb daemon’u için AUTHZ_HTTP_PORT ve AUTHZ_METRICS_PORT kullanılabiliyor. Değerler port = "auto" kaynaklı worktree offset’lerini ve tüm ports.* override’larını içeriyor. Böylece portu kendiniz hesaplamadan [env] içinde kullanabilirsiniz.
- Daemon’lar için proxy_idle_timeout artık dokümante edildi, JSON schema içinde tanımlandı ve doğrulanıyor. Proxy tarafından başlatılan bir daemon’u ve ardından bağımlılıklarını, belirli bir süre trafik gelmemesi durumunda durdurmak için "30m" gibi bir süre belirleyebilirsiniz. Devre dışı bırakmak için false kullanabilirsiniz. mise; true, çıplak sayılar ve süre formatına benzemeyen değerleri reddediyor ve hata mesajında daemon’un adını belirtiyor. Bu özellik pitchfork 2.27.0 gerektiriyor.
- Registry: LocalStack’in eski CLI’ının yerini alan lstk eklendi. localstack kurulumu artık deprecated olduğu konusunda uyarıyor ve mise use lstk kullanılmasını öneriyor. Registry girdileri artık deprecated mesajı tanımlayabiliyor.
Düzeltmeler
- mise generate install-script artık --version kullanılsa da kullanılmasa da panic vermiyor. Oluşturulan wrapper artık sabitlenmiş sürümünü installer’a iletiyor. Önceden belirli bir sürüm adına sahip wrapper daha eski bir sürümü kurup onu çalıştırmaya devam edebiliyordu. --version kullanılmazsa pin değeri, mise self-update komutunun seçeceği sürüm oluyor.
- mise oci build, push ve run, proje [oci.env] içinde değer verilmiş bir required environment değişkeni nedeniyle artık başarısız olmuyor. Böylece yalnızca runtime sırasında mevcut olan bir secret için placeholder kullanılabiliyor. Diğer komutlar değişkeni zorunlu tutmaya devam ediyor.
- mise lock, bir aracı atlarken artık nedenini de içeren bir uyarı gösteriyor. Örneğin GitHub rate limit nedeniyle atlandıysa yalnızca skipped olarak saymak yerine sebebi gösteriliyor. Araç başına tek uyarı veriliyor.
- Daemon’lar:
- mise daemons start|stop|restart --all artık çalışıyor ve geçerli projedeki tüm daemon’lara uygulanıyor. Önceden pitchfork komutu reddediyordu. --all, daemon adları veya --group ile birlikte kullanılamıyor.
- İlk mise daemons start veya restart artık preset’in aracını yüklüyor. Önceden yanlış bir “requires ... but [tools] selects ...” hatasıyla başarısız oluyordu. Yalnızca istenen daemon’ların ve bağımlılıklarının araçları yükleniyor.
- Açık bir [daemons_settings] namespace tanımlanmamış projelerde gösterilen URL’ler artık 404 döndürmek yerine pitchfork proxy üzerinden yönlendiriliyor. Bunun için config add --label desteğine sahip bir pitchfork gerekiyor. mise bu flag’i kendisi kontrol ediyor ve pitchfork yükseltildiğinde otomatik olarak kullanıyor.
- Otomatik olarak ayrılan bir daemon portu zaten kullanılıyorsa mise artık mise.local.toml içinde farklı bir portun nasıl sabitleneceğini açıklıyor. mise, pitchfork mesajından sonra kendi ek hata satırlarını eklemiyor ve pitchfork’un çıkış kodunu kullanıyor.
- Dotfiles:
- mise dot ve mise’in dahili Git çağrılarını kullanan diğer komutlar Git for Windows 2.56 ile yeniden çalışıyor.
- Güncelleme sonrasında history watcher artık mise binary’sinin değiştirildiğini algılıyor, bekleyen düzenlemeleri kaydediyor ve service manager’ın yeni sürümle yeniden başlatabilmesi için çıkıyor. mise dot watch ile elle başlatılan watcher’ın yeniden manuel olarak başlatılması gerekiyor. mise dot status artık capture işlemleri başarısız olduğunda bunu belirtiyor.
Değiştirilenler
- Kendi kendine güncelleme ve kurulumlarda minimum sürüm yaşı bekleniyor. Herhangi bir sürüm sabitlenmemişse mise self-update, otomatik güncellemeler, güncelleme bildirimleri ve mise.run yükleyicisi artık en az 24 saat önce yayımlanmış en yeni kararlı sürümü seçiyor. Açıkça belirtilmiş sürümler bu bekleme süresini atlıyor. Sabitlenmemiş bir güncelleme, --force kullanılsa bile daha yeni bir kurulumu eski sürüme düşürmüyor. Sürüm yaşı sırasıyla --minimum-release-age, self_update.minimum_release_age, genel minimum_release_age ayarı ve ardından 24h değerinden alınıyor. Sürümleri anında almak için 0s kullanabilirsiniz.
[settings]
self_update.minimum_release_age = "7d"
mise self-update --minimum-release-age 0s
curl -fsSL https://mise.run | MISE_SELF_UPDATE_MINIMUM_RELEASE_AGE=7d sh
Yükleyici yalnızca ortam değişkenlerini (MISE_SELF_UPDATE_MINIMUM_RELEASE_AGE, MISE_MINIMUM_RELEASE_AGE) okuyor ve tamsayı olarak s/m/h/d/w sürelerini kabul ediyor. Kaydedilmiş bir yükleyici kopyası artık varsayılan bir sürümü sabitlemiyor; tekrarlanabilir kurulumlara ihtiyacınız varsa MISE_VERSION ayarlayın.- Kendi kendine güncelleme artık imzalı packslip'leri doğruluyor. v2026.9.3 ve sonraki sürümlerde mise self-update, zaten kontrol ettiği gömülü arşiv imzasına ek olarak geçerli bir imzalı packslip de gerektiriyor. mise; arşiv özeti ve boyutunu, sürümü, release workflow'unu ve transparency log zaman damgasını kontrol ediyor. Güven, mise'ın GitHub depo kimliğine (586920414) sabitlenmiş durumda. Bu nedenle depo yeniden adlandırılsa veya başka bir organizasyona taşınsa bile çalışmaya devam ediyor; ancak aynı adı devralan farklı bir depo reddediliyor. Manifest eksik veya geçersizse mise duruyor ve mevcut binary'yi yerinde bırakıyor. 2026.9.2 ve daha eski sürümler yalnızca imza kontrolüyle güncellenmeye devam ediyor. Özel mirror'lar özgün imzalı manifest'leri ve arşivleri sunmak zorunda.
- mise self-update artık indirmeleri mise'ın kendi HTTP istemcisi ve ilerleme göstergesiyle yapıyor, doğrulanan arşivden yalnızca beklenen çalıştırılabilir dosyayı çıkarıyor. Kendi kendine güncelleme sırasında eklenti güncelleme hataları artık yalnızca uyarı olarak gösteriliyor ve komutun başarısız olmasına neden olmuyor.
- Registry: timoni (0.35.0+) ve worktrunk (0.80.0+) artık completions ve skills içeren imzalı packslip'lerden kuruluyor. Eski sürümler mevcut backend'leri üzerinden kurulmaya devam ediyor ve bunları mise ls-remote aqua:stefanprodan/timoni veya mise ls-remote aqua:max-sixty/worktrunk ile listeleyebilirsiniz.
Eklenenler
- Makineye özel global miserc. ~/.config/mise/miserc.local.toml, herhangi bir dizinden geçerli oluyor ve paylaşılan global miserc.toml içindeki alanların üzerine yazıyor. Böylece paylaşılan dosyaları düzenlemeden yalnızca belirli bir makinede kullanılacak ortamı seçebilirsiniz. Proje miserc dosyaları, MISE_ENV ve -E hâlâ bunun üzerinde önceliğe sahip.
~/.config/mise/miserc.local.toml
env = ["work"]- Command-not-found, yapılandırmadığınız araçları kurabiliyor (isteğe bağlı). not_found_auto_install_registry = true kullanıldığında bilinmeyen bir komut çalıştırmak, o komutu sağlayan registry aracını latest sürümünde kuruyor ve global yapılandırmanıza ekliyor. Bu yalnızca komutu tam olarak tek bir registry aracı sağladığında gerçekleşiyor. Birden fazla sağlayıcı varsa, araç devre dışıysa veya işletim sisteminiz desteklenmiyorsa mise işlemi atlıyor. Varsayılan değer false.
[settings]
not_found_auto_install_registry = true- Her kurulumda çalışan postinstall. when = "always" ile bir aracın postinstall komutu, ilgili sürüm zaten kurulu olsa bile aracı seçen her mise install işleminde çalışıyor. Dry run işlemlerinde atlanıyor. Düz string biçimi ve when içermeyen tablolar ise yalnızca yeni kurulumda veya onarımda çalışmaya devam ediyor.
[tools]
node = { version = "26", postinstall = { run = "npm install -g corepack", when = "always" } }- Eski lockfile biçimleri için uyarılar. Bir lockfile biçimi altı aydan uzun süre önce değiştirilmişse mise, mise install, mise exec ve görev çalıştırmaları gibi komutlarda dosya başına bir kez uyarı gösteriyor. Uyarıda düzeltmek için kullanılacak komut da belirtiliyor: mise lock --upgrade veya global yapılandırmalar için mise lock --global --upgrade.
- Dotfiles geçmişi commit'leri için makineye özel e-posta. Yeni [history].git_email ayarı commit e-postasını belirliyor ve her commit oluşturulurken {hostname} dolduruluyor. Böylece checkpoint'i hangi makinenin kaydettiğini görebilirsiniz. Ayar yoksa commit'ler yine mise@localhost kullanıyor.
[history]
git_email = "mise@{hostname}"Düzeltmeler
- Paranoid mod: --yes, MISE_YES=1 ve CI otomatik onayı artık yeni veya düzenlenmiş yapılandırma dosyalarına güven verilmesini otomatik olarak onaylamıyor. Gözetimsiz çalıştırmalar, dosya mise trust ile veya etkileşimli bir istemde onaylanana kadar başarısız oluyor.
- pnpm 12 ile npm: mise artık minimum_release_age değerini pnpm'e --config.minimum-release-age olarak iletiyor. pnpm 12, camelCase yazımı sessizce yok saydığı için sınır transitif bağımlılıklara uygulanmıyordu. Yeni yazım pnpm 10.16+ ve 11 sürümlerinde de çalışıyor.
- mise upgrade --bump, artık tam sürüm isteğini aynı öneke sahip en yeni sürüme güncelliyor; örneğin 29.1 → 29.1.1. Önceden eski sürüm korunuyordu.
- latest değerini bir sürüme çözümleyen go: kurulumları, başarısızlıktan sonra artık v öneki olmadan yeniden denemiyor. Bu ek deneme eskiden Go'nun asıl hata mesajını gizliyordu. Açıkça öneksiz verilen sürümler için yeniden deneme hâlâ yapılıyor ve her iki deneme de başarısız olursa artık iki hata da gösteriliyor.
- Homebrew formula derlemeleri:
- Pathname#write ile dosya yazan formüller artık derleme sonrasında super: no superclass method 'write' hatasıyla başarısız olmuyor. Bu sorun oluşturulan completions dosyalarını ve inreplace kullanımını etkiliyordu.
- Homebrew'un Language::* mixin'lerini kullanan formüller artık mise tarafından okunurken NameError vermiyor. mise'ın desteklemediği kurulum zamanı yardımcıları artık anlaşılır bir hata mesajı gösteriyor.
- URL'sinde dosya uzantısı bulunmayan kaynak arşivleri, örneğin GitHub codeload tarball'ları, artık içeriklerine göre algılanıp açılıyor. Önceden çıkarılmadan doğrudan derleme dizinine kopyalanıyordu. Bu davranış cask'ler için de geçerli.
Dokümantasyon
- Açılış sayfasına mise'ı tanıtan yedi dakikalık bir showreel eklendi ve mise run müzik videosu tema şarkısının yerini aldı.
Yeni Katkıda Bulunanlar
- @ryoikarashi ilk katkısını yaptı.
Eklenenler
- Aqua araçları için araç başına libc seçimi. glibc kullanan Linux sistemlerde mise, aqua kayıt defteri musl derlemesini adlandırsa bile bir sürümün GNU derlemesini tercih ediyordu. Bu durum, aqua:domcyrus/rustnet gibi musl derlemesi tamamen statik olan araçlarda sorun çıkarıyordu. Artık genel libc ayarını değiştirmeden yalnızca belirli bir araç için kullanılacak derlemeyi seçebilirsiniz.
[tools]
"aqua:domcyrus/rustnet" = { version = "latest", libc = "musl" }
Seçenek glibc (veya gnu) ile musl değerlerini kabul eder. mise, bu araç için diğer libc türüne geri dönüş yapmaz. Seçim; kurulum, mise lock, checksum, imza ve provenance sorgularında uygulanır ve lockfile içindeki araç seçeneklerine kaydedilir. Platform zaten bir libc tanımlıyorsa — örneğin musl kullanan bir ana sistem veya linux-*-musl lockfile platformu — bu değer öncelikli olur. Önceden kurulmuş bir sürüm, mise install --force çalıştırılana kadar mevcut derlemesini kullanmaya devam eder. mise ls-remote ise ana sistemin libc türünü kullanmaya devam eder. Bir registry şablonunda libc adlı değişken kullanılıyorsa bunu vars.libc olarak ayarlayın.- Monorepo görevleri için yol takma adları. Derin klasörlerde bulunan yapılandırma köklerine artık kısa adlar verebilirsiniz.
monorepo_root = true
[monorepo]
config_roots = ["foo/bar/baz/abc/123"]
[monorepo.path_aliases]
"123" = "foo/bar/baz/abc/123"
mise run //123:build, //foo/bar/baz/abc/123:build görevini çalıştırır. Takma adlar görev bağımlılıklarında, //123:* gibi kalıplarda ve //123/sub:build gibi alt yollarda da kullanılabilir. Her takma ad tek bir yol bileşeni olmalı, yapılandırılmış bir köke işaret etmeli ve mevcut bir kök yolu ile çakışmamalıdır. Görevin tam yolu yine kanonik adı olarak kalır.- Packslip araçları, depo yeniden adlandırıldıktan sonra da kurulmaya devam ediyor. mise artık GitHub ve GitLab packslip projelerini yalnızca ada göre değil, imzalama sertifikasında kayıtlı depo kimliğine göre sabitliyor. old/tool, aynı sahip altında new/tool olarak yeniden adlandırılırsa packslip:github.com/old/tool kurulmaya devam eder ve yapılandırmayı güncellemenizi isteyen bir uyarıyı yalnızca bir kez gösterir. mise packslip forget çalıştırmanız gerekmez. Farklı bir sahibe yapılan depo aktarımı reddedilir. Aynı sabitlenmiş ada farklı bir depo gelirse — silinip yeniden oluşturulmuş bir depo gibi — bu da reddedilir. Bunlardan birini kabul etmek için eski ad üzerinde mise packslip forget çalıştırın; yeniden oluşturulan bir depo söz konusuysa ayrıca aracın mise.lock girdilerini kaldırın.
Lockfile revizyon 3'te kimlikler şu şekilde saklanır:
[tools.hk."platforms.linux-x64"]
repository_ids = { repository = "922514152", owner = "216188" }- mise dot track --allow-plaintext. Kimlik bilgisine benzer bir ada sahip dosyayı doğrudan izlemek — örneğin ~/commit-mossy-token.md — daha önce başarılı görünüyor ancak geçmiş kaydı sırasında dosya sessizce atlanıyordu. mise dot track artık dosyanın düz metin olarak kaydedilip kaydedilmeyeceğini soruyor ve varsayılan yanıt Hayır. Etkileşimsiz kullanımda --allow-plaintext parametresini kullanın. --yes, düz metin kaydını onaylamaz. Seçim, [dotfiles] girdisine allow_plaintext = true olarak kaydedilir. Gerçek kimlik bilgileri için --encrypt kullanın.
- Registry: mise use mbx artık mr-boxington olarak çözümleniyor.
Düzeltilenler
- mise outdated ve yükseltme uyarıları artık kurulu sürümün başında v veya V olduğunda daha eski bir sürümü güncelleme olarak önermiyor. Örneğin v2.1.280 → 2.1.278 daha önce güncelleme olarak gösterilebiliyordu. Yalnızca build metadata açısından farklı olan sürümler — örneğin 1.36.4+k3s1 ve 1.36.4+k3s2 — artık eşit kabul ediliyor.
- mise run --no-cache ve mise tasks run --no-cache, uzak git:: görev include'larını yeniden klonluyor ve bağımlılık olarak çalışan uzak görevleri tekrar indiriyor. Önceden her iki komut da önbelleğe alınmış kopyayı kullanıyordu.
- mise run --no-timings, artık yalnızca toplam süreyi değil her görevin "Finished in …" satırını da gizliyor. Ayrıca MISE_TASK_TIMINGS=1 ayarını geçersiz kılıyor. Bu davranış v2025.11.2 sürümünde bozulmuştu.
- rust = "nightly" kullanıldığında cargo +nightly yeniden çalışıyor. mise, 2026.8.6'dan beri tarih sabitlenmiş nightly sürümleri kurduğu için rustup içinde nightly adlı toolchain bulunmuyordu. rustup'ın otomatik kurulum ayarına bağlı olarak cargo +nightly ya hata veriyor ya da ikinci ve sabitlenmemiş bir nightly indiriyordu. mise artık sabitlenmiş nightly sürümünden nightly-<host> toolchain'ini de reflink veya hardlink kullanarak oluşturuyor. Daha yeni olan veya ek bileşen/target içeren bir rustup nightly kurulumu değiştirilmez. nightly-2026-08-13 gibi açıkça tarih belirtilmiş istekler de bundan etkilenmez. Mevcut kurulumlar bunu bir sonraki nightly kurulumunda veya mise install -f rust çalıştırıldığında alır.
- Zaten izlenmekte olan bir yol üzerinde mise dot track tekrar çalıştırıldığında artık "already tracked" bildirimi gösteriliyor. Komut yeniden soru sormuyor, yapılandırmayı tekrar yazmıyor ve boş checkpoint oluşturmuyor. Dosya içeriği değişmişse veya --no-autosave gibi bildirimi değiştiren parametreler kullanılmışsa değişiklikler yine kaydediliyor.
- Uzak önbellekten yapılan blob-pack indirmeleri artık geçici stream hatalarında yeniden deneniyor. Tekil blob indirmelerinde zaten aynı davranış vardı.
Güvenlik
- SLSA provenance, beklenen imzalayıcıdan gelmek zorunda. Önceden ilgisiz bir workflow'dan gelen herhangi bir geçerli Sigstore imzası SLSA doğrulamasından geçebiliyordu. mise artık sertifikadaki URI kimliğini ve OIDC sağlayıcısını araç için yapılandırılmış değerlerle karşılaştırıyor:
- aqua registry girdileri: slsa_provenance altındaki signer_identity ve signer_issuer
- github: araçları: slsa_signer_identity ve slsa_signer_issuer seçenekleri (slsa_signer_identity, {{version}} şablonlamasını destekler)
- vfox eklentileri: PreInstall tarafından döndürülen slsa_signer_identity ve slsa_signer_issuer
Bir araçta iki değer de tanımlı değilse mise SLSA kontrolünü atlar ve kullanılabilir diğer doğrulama yöntemlerini kullanır. Şimdilik bu durum, SLSA meta verisine sahip ancak imzalayıcı alanları bulunmayan paketlenmiş aqua paketleri için geçerlidir. SLSA lock girdileri, checksum mevcut olsa bile her kurulumda yeniden kontrol edilir.- Aqua ve vfox doğrulamasında kullanılan public-key DSSE paketleri artık indirilen artifact ile eşleşen SHA-256 subject digest değerine sahip olmak zorunda. Önceden geçerli bir paket farklı bir indirmeyi doğrulamak için yeniden kullanılabiliyordu.
Performans
- rust, başka araçlarla birlikte yapılandırıldığında shim'ler artık rustup kontrollerini çalıştırmıyor. Otomatik kurulum devre dışıyken mise exec için de aynı durum geçerli. Bir ölçümde, yapılandırmada rust varken go shim'inin yaklaşık 31 ms, rust olmadan ise 12 ms sürdüğü bildirildi. mise install ve otomatik kurulum açıkken kullanılan mise exec, eksik rustup bileşenlerini algılamaya ve onarmaya devam ediyor.
- Yapılandırma yükleme ve fuzzy sürüm çözümleme — örneğin node = "24" — artık daha az işlem yapıyor. Eklenti kısayolları her registry aracının backend'ini kontrol etmeden oluşturuluyor, global yapılandırma kontrolleri her araç için symlink çözümlemeyi bırakıyor ve fuzzy eşleştirme artık regex derlemiyor.
Dokümantasyon
- Görev dokümantasyonu artık doğru varsayılan iş sayısını gösteriyor: 8. Varsayılan çıktı modu da doğru şekilde açıklanıyor: görevler paralel çalıştığında prefix, sıralı çalıştığında interleave.
Uyumluluğu Bozan Değişiklikler
- Lockfile revizyon 3. Yeni ve boş mise.lock dosyaları artık lockfile_version = 3 olarak yazılıyor ve eski mise sürümleri bunları reddediyor. Mevcut lockfile'lar mise tarafından yazıldığında mevcut revizyonlarını koruyor. Revizyon 2 lockfile'a packslip depo kimlikleri eklenmesi gerektiğinde mise uyarı gösteriyor ve bunları dosyaya yazmıyor. Kaydetmek için lockfile'ı paylaşan herkes bu sürüme geçtikten sonra bir kez mise lock --upgrade çalıştırın.
- Kilitlenmiş araçlarda SLSA kontrolleri. SLSA gerektiren bir lockfile girdisi, araç için beklenen imzalayıcı tanımlı değilse artık açıklayıcı bir hata ile başarısız oluyor. Çözmek için imzalayıcıyı yapılandırın veya girdiyi mise lock ile yenileyin.
- Makineler arasında paylaşılan dotfiles geçmişi. Eski mise sürümleri allow_plaintext içeren enrollment meta verilerini okuyamaz. --allow-plaintext kullanmadan önce geçmişi paylaşan tüm makineleri bu sürüme yükseltin.