{"full_name":"jdx/mise","owner":"jdx","name":"mise","url":"https://github.com/jdx/mise","description":"dev tools, env vars, task runner","homepage":"https://mise.jdx.dev","topics":[],"language":"Rust","license":"MIT","avatar":"https://avatars.githubusercontent.com/u/216188?u=6659f502cebaf7b75fd5e20ceba4bdb3f68ef67a&v=4","created_at":"2023-01-09T14:44:21Z","pushed_at":"2026-11-10T09:36:09Z","metrics":{"stars":35994,"forks":1528,"watchers":46,"issues":1857,"prs":9965,"releases":673,"issues_open":null,"issues_closed":null,"prs_open":null,"prs_closed":null,"prs_merged":null,"discussions":3540},"growth":{"day":{"stars":31,"forks":0,"base_day":"2026-11-09"}},"history":{"dates":["2026-11-09","2026-11-10"],"stars":[35963,35994],"forks":[1528,1528],"watchers":[46,46],"issues_open":[null,null],"prs_open":[null,null]},"boards":{},"same_owner":[],"issues":[{"number":15467,"title":"Release asset downloads return 504 for most versions (breaks Railway/Railpack builds)","comments":2,"created_at":"2026-11-08T10:23:45Z"},{"number":15471,"title":"brew-cask tap evaluator rejects `zap :not_required`","comments":1,"created_at":"2026-11-08T15:32:19Z"},{"number":15459,"title":"`cargo:` tools fail to install when `minimum_release_age` resolves `rust@stable` to a dated version","comments":1,"created_at":"2026-11-08T01:25:18Z"},{"number":15472,"title":"UI: Keep task prefixes and prompt options readable on light terminals","comments":0,"created_at":"2026-11-08T16:04:47Z"},{"number":15470,"title":"Regression: WinGet restriction removes minimum_release_age from mise updates","comments":0,"created_at":"2026-11-08T15:11:56Z"},{"number":15469,"title":"Packslip cannot discover or install existing releases in a busy monorepo","comments":0,"created_at":"2026-11-08T13:43:04Z"},{"number":15466,"title":"Task `sources` and `outputs` read directories whose files can never be selected","comments":0,"created_at":"2026-11-08T07:51:41Z"},{"number":15463,"title":"MISE_ORIGINAL_CWD reports the --cd target rather than the caller’s directory","comments":0,"created_at":"2026-11-08T03:04:36Z"}],"discussions":[{"number":15474,"title":"Task: Add 'mise select' to pick several tasks from a menu","comments":0,"category":"Show and tell","created_at":"2026-11-08T16:15:48Z"},{"number":15473,"title":"feat(dot): add --lock-wait for a running history operation","comments":0,"category":"Ideas","created_at":"2026-11-08T16:08:14Z"},{"number":15462,"title":"One TOML task whose usage fails to load breaks completion of every task","comments":1,"category":"Troubleshooting and bug reports","created_at":"2026-11-08T02:42:54Z"},{"number":15458,"title":"npm backend: install from a tarball URL (pkg.pr.new previews)","comments":3,"category":"Ideas","created_at":"2026-11-07T21:57:13Z"},{"number":15457,"title":"Support non-prefix matching for task-name completion","comments":0,"category":"Ideas","created_at":"2026-11-07T16:45:49Z"},{"number":15452,"title":"Add support for filtering out specific variables when `show_env` is enabled","comments":1,"category":"Ideas","created_at":"2026-11-07T14:00:10Z"},{"number":15448,"title":"Embedded Aube for project package management and shared storage","comments":1,"category":"Ideas","created_at":"2026-11-06T23:13:58Z"},{"number":15444,"title":"Could not read from remote repository","comments":2,"category":"Troubleshooting and bug reports","created_at":"2026-11-06T11:47:11Z"}],"latest_release":{"name":"v2026.11.4: zip:: includes for config and tasks","tag":"v2026.11.4","published_at":"2026-11-07T16:27:30Z","body":"Config and task includes can now load from `zip::` archives over HTTP(S). This release also fixes shim tab completion, `[tool_alias]` handling in `enable_tools`/`disable_tools` and `mise prune`, `mise dot sync` conflicts, and ufw firewall rule matching in `mise bootstrap`.\n\n## Added\n\n- **`zip::` includes for config and tasks.** Before, `include` and `task_config.includes` accepted local paths, `git::` and `oci::` sources. They now also accept a zip archive served over HTTP or HTTPS. mise downloads and unpacks the archive, then loads it the same way as an `oci::` artifact. For `task_config.includes` it loads executable file tasks and `.toml` task files. For `include` it loads the `mise.toml` at the archive root. Zip entries don't reliably carry file permissions, so mise makes non-TOML files that start with a shebang executable. [#15439](https://github.com/jdx/mise/pull/15439) (@jdx)\n  - Only HTTP and HTTPS URLs are accepted. Any other scheme fails with an error.\n  - Task includes are still experimental, like the other remote sources.\n  - A URL doesn't pin specific contents. mise refreshes a zip config include the way it refreshes a branch (`fetch_remote_versions_cache`), and paranoid mode rejects zip config includes.\n\n  ```toml\n  # replace <URL> with the archive's HTTP(S) URL\n  include = [\"zip::<URL of platform-config.zip>\"]\n\n  [task_config]\n  includes = [\"zip::<URL of shared-tasks-1.0.0.zip>\"]\n  ```\n\n## Fixed\n\n- **Tab completion through shims.** Completing a command for a tool run through a mise shim (such as `aube` or `pitchfork`) showed mise's own subcommands instead of the tool's. mise now answers completion requests only when it is invoked as `mise`. Under a shim name, the request goes to the real tool. mise also skips version resolution, auto-install and auto-update while answering these requests. [#15429](https://github.com/jdx/mise/pull/15429) (@jdx)\n- **Tool aliases in `enable_tools` and `disable_tools`.** If a tool was declared by its full backend ID, filtering by its `[tool_alias]` name did the wrong thing. `MISE_ENABLE_TOOLS=myjq` excluded the tool instead of selecting it, and `MISE_DISABLE_TOOLS=myjq` had no effect. An alias now matches the same tool as its full ID in both filters, including aliases with inline options. An explicit enable list still overrides `disable_tools`. If you disable an aliased python, `_.python.venv` is turned off too. Based on a fix by @zeitlinger. [#15437](https://github.com/jdx/mise/pull/15437) (@jdx)\n- **`mise prune` and project tool aliases.** When run from another directory, `mise prune` resolved a tracked project's `[tools]` entries against the current directory's config. Tools named through the project's own `[tool_alias]` caused \"not found in mise tool registry\" warnings, and mise couldn't tell whether those installs were still in use. These entries now resolve through the project's aliases, as well as the aliases in its parent and global configs. [#15438](https://github.com/jdx/mise/pull/15438) (@jdx)\n- **`mise dot sync` with exclusions added on two machines.** When two machines each added their own `mise dot exclude` globs, sync failed with \"enrollment conflict in exclusions\". mise now merges the lists in this order: the shared base, then this machine's additions, then the other machine's. The same applies to an enrolled path's own `exclude` and `include` lists. A removal or a `!glob` added on both sides is still a conflict, because glob order matters. The error message now says how to recover. [#15449](https://github.com/jdx/mise/pull/15449) (@jdx)\n- **ufw rules with a source or destination CIDR.** A `[[bootstrap.linux.firewall.rules]]` entry with a `source` or `destination` CIDR and no port never converged. mise read `10.42.0.0/16` as a port and a protocol, so `mise bootstrap plan --detailed-exitcode` kept reporting the rule. Firewall commands also now run with `LC_ALL=C`, so inspection no longer fails under non-English locales such as `de_DE.UTF-8`. [#15450](https://github.com"},"readme":true,"readme_zh":false,"news":[],"stale":false,"snapshot_at":"2026-11-10T09:35:25Z","history_start":"2026-09-06"}