-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Comparing changes
Open a pull request
base repository: jdx/mise
base: v2026.2.7
head repository: jdx/mise
compare: v2026.2.8
- 12 commits
- 609 files changed
- 6 contributors
Commits on Feb 8, 2026
-
feat(ruby): graduate precompiled ruby from experimental (gradual roll…
…out) (#8052) ## Summary - Allow `ruby.compile=false` to enable precompiled binaries without requiring `experimental=true` - Show a warning during Ruby install when `ruby.compile` is unset, notifying users that precompiled will become the default in 2026.8.0 - Remove `[experimental]` prefix from Ruby precompiled settings documentation - Add `debug_assert` to block debug compilation when 2026.8.0 arrives as a reminder to complete the migration - Use `self.should_try_precompiled()` in `security_info()` to avoid duplicating logic ### Behavior matrix | `ruby.compile` | `experimental` | Result | |---|---|---| | `true` | any | Compile from source, no warning | | `false` | any | Try precompiled (new: works without experimental) | | unset | `true` | Try precompiled (existing behavior preserved) | | unset | `false` | Compile from source + show warning about 2026.8.0 | ## Test plan - [x] `mise run build` — confirms it compiles - [x] `mise run lint-fix` — confirms lint passes - [x] Existing e2e tests (`test_ruby_precompiled`, `test_ruby_github_attestations`) still pass since they use `MISE_EXPERIMENTAL=1` - [x] With `ruby.compile` unset and `experimental` off: `mise install ruby@3.3.0` should compile from source and show the 2026.8.0 warning - [x] With `ruby.compile=false`: should use precompiled, no warning - [x] With `ruby.compile=true`: should compile from source, no warning 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Changes Ruby installation path selection (precompiled vs source) and attestation reporting logic, which can affect install behavior across environments; rollout is guarded by explicit `compile=false` or `experimental` + unset. > > **Overview** > **Ruby precompiled binaries are no longer gated behind `experimental`.** Setting `ruby.compile=false` (or `MISE_RUBY_COMPILE=false`) now opts into precompiled Ruby even when `experimental` is off, while `compile` unset continues to compile by default unless `experimental` is enabled. > > Adds a one-time install warning when `ruby.compile` is unset (and `experimental` is off) to announce that precompiled will become the default in `2026.8.0`, centralizes the precompiled decision logic via `should_try_precompiled()` (reused by `security_info()`), and updates schema/settings docs and e2e tests to reflect the new `ruby.compile` behavior and remove the `[experimental]` labeling. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit db46d91. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 422a54e - Browse repository at this point
Copy the full SHA 422a54eView commit details -
registry: add quicktype (npm:quicktype) (#8054)
[quicktype](https://quicktype.io) - Generate types and converters from JSON, Schema, and GraphQL.
Configuration menu - View commit details
-
Copy full SHA for 8e64b92 - Browse repository at this point
Copy the full SHA 8e64b92View commit details -
registry: use inline table for test definitions (#8056)
## Summary - Changes registry test format from positional array to named inline table fields - Before: `test = ["bat --version", "bat {{version}}"]` - After: `test = { cmd = "bat --version", expected = "bat {{version}}" }` - Updates `build.rs` to parse the new table format - Updates `schema/mise-registry-tool.json` to match ## Test plan - [x] All 510 registry TOML files validated with Python `tomllib` - [x] `cargo check` passes - [x] All pre-commit lints pass (taplo, cargo-check, etc.) - [x] CI passes 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Large-scale data-format change across many registry entries; any missed conversion or downstream expectation of the old array shape could break registry validation or generated code. > > **Overview** > Standardizes registry `test` definitions by migrating from positional arrays (e.g. `[cmd, expected]`) to an inline TOML table `{ cmd = ..., expected = ... }` across the registry files. > > Updates `build.rs` registry code generation to parse the new table format, and updates `schema/mise-registry-tool.json` to validate the new `test` object shape (required `cmd`/`expected`, no extra fields). > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 64d6cb5. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>Configuration menu - View commit details
-
Copy full SHA for 41ac58d - Browse repository at this point
Copy the full SHA 41ac58dView commit details -
fix: accept key=value format in set/add subcommands (#8053)
## Summary - `mise settings set key=value`, `mise settings add key=value`, `mise config set key=value`, and `mise shell-alias set alias=command` now all work - Previously only parent commands (like `mise settings`) split on `=`, so subcommands like `mise settings set ruby.compile=false` would fail with a missing `<VALUE>` argument - Makes `value` optional in each subcommand and splits the first arg on `=` when no separate value is provided ## Changed files - `src/cli/settings/set.rs` — `SettingsSet.value` now `Option<String>` - `src/cli/settings/add.rs` — `SettingsAdd.value` now `Option<String>` - `src/cli/config/set.rs` — `ConfigSet.value` now `Option<String>` - `src/cli/shell_alias/set.rs` — `ShellAliasSet.command` now `Option<String>` - `src/cli/settings/mod.rs` — wrap value in `Some(...)` at construction sites ## Test plan - [x] `mise settings set ruby.compile=true` — succeeds - [x] `mise settings set ruby.compile true` — still works - [x] `mise settings set ruby.compile` — errors with usage hint - [x] `mise settings add disable_hints=python_multi` — succeeds - [x] `mise settings add disable_hints python_multi` — still works - [x] `mise shell-alias set ll="ls -la"` — succeeds - [x] `mise shell-alias set ll` — errors with usage hint - [x] Lint passes 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Small, localized CLI argument-parsing change with added e2e coverage and doc/spec updates; main risk is minor behavior differences around edge cases in `=` parsing. > > **Overview** > `mise config set`, `mise settings set`, `mise settings add`, and `mise shell-alias set` now accept a single `KEY=VALUE`/`ALIAS=COMMAND` argument in addition to the existing two-argument form by making the value parameter optional and splitting on `=` when omitted (with clearer usage errors when neither is provided). > > Updates the CLI spec (`mise.usage.kdl`), generated docs/manpage, Fig completion metadata, and adds e2e coverage for the new shorthand plus failure cases when no value is supplied. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 5e28b08. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for b2727a0 - Browse repository at this point
Copy the full SHA b2727a0View commit details -
chore(deps): upgrade toml to 0.9 and toml_edit to 0.24 (TOML 1.1) (#8057
) ## Summary - Upgrades `toml` from 0.8 (spec 1.0) to 0.9 (spec 1.1) - Upgrades `toml_edit` from 0.22 to 0.24 - Updates all call sites for breaking API changes: - `FromStr for Value` now parses single values instead of documents; switched to `toml::de::from_str` for document parsing - `Deserializer::new` deprecated; switched to `Deserializer::parse` ## TOML 1.1 features now available in `mise.toml` This upgrade enables TOML 1.1 syntax in all mise configuration files: - **Newlines in inline tables** — spread inline tables across multiple lines for readability: ```toml [tools] rust = { version = "1.82", profile = "minimal", components = ["rust-src", "llvm-tools"] } ``` - **Trailing commas in inline tables and arrays** — no more editing the last line when adding entries: ```toml [env] _.path = [ "./node_modules/.bin", "./bin", ] ``` - **`\xHH` escape sequences** — hex escapes for codepoints ≤ 255 in quoted strings: ```toml [env] SEPARATOR = "\x1F" ``` - **`\e` escape** — shorthand for the escape character (`\x1B`): ```toml [env] RED = "\e[31m" ``` - **Optional seconds in datetime/time values**: ```toml # Seconds are now optional created = 2026-02-07T12:00 ``` ## Test plan - [x] `cargo check --workspace` passes - [x] All pre-commit lints pass - [x] CI passes 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Touches core config parsing paths (including `mise.toml` deserialization) and build-time codegen, so any subtle parsing/serde behavior changes could impact config compatibility despite the changes being largely mechanical. > > **Overview** > Upgrades the Rust `toml` ecosystem to TOML 1.1 support by bumping `toml` to `0.9` and `toml_edit` to `0.24` (including lockfile updates that replace older `toml_*` crates with `toml_parser`/`toml_writer` and newer `serde_spanned`). > > Updates TOML parsing call sites to match the new APIs by switching document parsing from `str::parse()` to `toml::de::from_str()` and replacing `toml::Deserializer::new` with `toml::Deserializer::parse` (affecting `build.rs`, `mise.toml` parsing, `mise config get`, rust toolchain file parsing, task header parsing, and nested tool option lookup). > > Refreshes docs examples to use multi-line inline-table formatting that TOML 1.1 permits (primarily readability changes). > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit d750e9f. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 27dccaa - Browse repository at this point
Copy the full SHA 27dccaaView commit details -
feat(node): support package.json as idiomatic version file (#8059)
## Summary - Read tool versions from `package.json` `devEngines` and `packageManager` fields (closes #7379) - Support `devEngines.runtime` for node/bun version detection - Support `devEngines.packageManager` and `packageManager` field for pnpm/yarn/npm version detection - `devEngines` takes priority over `packageManager` field when both are present - Semver ranges are simplified to mise-compatible prefixes (`>=18.0.0` → `18`, `^20.0.0` → `20`) - Gracefully skip backends when `package.json` doesn't contain their version info (multiple backends claim the same file) ## Test plan - [x] Unit tests for `simplify_semver` covering all range operators, wildcards, and exact versions - [x] Unit tests for `runtime_version` and `package_manager_version` extraction - [x] Unit tests for priority logic (devEngines overrides packageManager field) - [x] Unit tests for missing/empty fields returning None - [x] E2E test `e2e/core/test_package_json` covering node devEngines, pnpm packageManager, and priority - [ ] Manual: create project with `package.json` containing `devEngines`/`packageManager`, verify `mise ls` shows correct versions 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Changes how tool versions are discovered from idiomatic files and adds parsing of `package.json`, which could affect version resolution when multiple tools claim the same file or when semver ranges are simplified. > > **Overview** > Adds support for using `package.json` as an *idiomatic version file* to auto-detect tool versions. > > Introduces a new `PackageJson` parser that extracts versions from `devEngines.runtime` (for runtimes like `node`/`bun`) and from `devEngines.packageManager` or `packageManager` (for package managers like `pnpm`/`yarn`/`npm`), with semver ranges simplified into mise-friendly prefixes. > > Updates core `node`/`bun` plugins and registry-backed package manager tools to include `package.json` in `idiomatic_files`, and changes idiomatic file parsing to *skip* backends that can’t extract a version from the shared file instead of failing. Adds unit coverage for parsing/semver simplification and an e2e test for node+pnpm detection and precedence. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 1f4a630. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 3439a73 - Browse repository at this point
Copy the full SHA 3439a73View commit details -
fix(hooks): resolve 12 community-reported hooks issues (#8058)
## Summary Addresses 12 community-reported issues with the hooks system, fixing the most commonly encountered problems with global hooks, hook execution order, error handling, and shell integration. ## What's fixed ### Global hooks now work (#5264, #5293, #4875) Hooks defined in `~/.config/mise/config.toml` were silently ignored. Global hooks now fire correctly for all hook types (enter, leave, cd, preinstall, postinstall) across all projects. ### Hook execution order corrected (#4583) When changing from directory A to directory B, leave hooks now fire before enter hooks. Previously the order was reversed. ### Hooks no longer loop infinitely in fish (#4378) Running `mise run` from inside a hook (e.g. `enter = "mise run setup"`) could cause infinite recursion when using fish shell, because fish sources its config on subshell startup which re-activates mise. Hooks now set `MISE_NO_HOOKS=1` in their subprocess environment to prevent this. ### `mise use -g` no longer triggers project hooks (#7183) Running `mise use -g` from a project directory incorrectly fired that project's preinstall/postinstall hooks. Non-global hooks now only fire when you're inside the project that defines them. ### Postinstall hooks can find all installed tools (#6323, #7489) Postinstall hooks now run with the full resolved toolset on PATH, so commands from previously-installed tools (like `lefthook`, `pnpm`, etc.) are available. ### `tools=true` env vars no longer evaluated during preinstall (#6162) Environment variables with `tools = true` (e.g. `AN_ENV_VAR = { value = "{{env.ANDROID_HOME}}", tools = true }`) were being resolved during preinstall hooks, before the tools providing those variables were installed. Preinstall hooks now skip tool-dependent env var resolution. ### Shell hooks receive environment variables (#4013, #6054) Shell hooks (with `shell = "bash"` etc.) now receive `MISE_PROJECT_ROOT`, `MISE_CONFIG_ROOT`, `MISE_ORIGINAL_CWD`, `MISE_PREVIOUS_DIR`, and `MISE_INSTALLED_TOOLS` as exported variables. ### PowerShell `$Error` no longer polluted (#5481) The `_mise_hook` function in PowerShell was adding errors to `$Error` on every prompt because it called `Invoke-Expression` with empty output. Now checks for non-empty output first. ### Hook errors no longer crash or get swallowed - Failing hooks warn with context (hook type, config directory, error) and continue running remaining hooks - Invalid hook definitions produce proper errors instead of panics - `MISE_CONFIG_ROOT` is now available in hook environments ### Serde-based hook parsing Hook definitions now use serde deserialization instead of manual TOML parsing, giving better error messages for malformed configs. ## Not actionable (investigated) - #5001 — Already fixed in a prior release - #6347 — Likely fixed by prior `starts_with` direction fix - #7792 — By design (`hook-env` runs on prompt, can't update shell mid-command) - #7255 — By design (use `MISE_INSTALLED_TOOLS` JSON or tool-level `[tools.X.postinstall]`) - #6581 — Not a bug (mise inherits local env vars) ## Test plan - [x] All linters pass - [x] 447 unit tests pass - [x] All 10 hooks e2e tests pass including 3 new ones (global hooks, shell env vars, error handling) 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Touches core hook execution and environment construction paths (including install-time hooks and shell integrations), so regressions could affect when/where hooks fire or what env they see across projects and shells. > > **Overview** > Fixes hook execution across config scopes by **treating hooks from global configs as truly global** (skipping per-project directory matching) while tightening non-global pre/postinstall hooks to only run when the current working directory is under that config’s root. > > Refactors hook parsing to a serde-driven `HookDef` (string/table/array) and removes panic paths; hook failures now **warn with hook type + root and continue** rather than crashing or silently swallowing errors. Shell hook output now includes exported `MISE_PROJECT_ROOT`/`MISE_CONFIG_ROOT` (plus other hook context), hook subprocesses set `MISE_NO_HOOKS=1` to avoid recursion, and preinstall hooks run with an env that skips `tools=true` directives. > > Improves install-time behavior by running `postinstall` hooks with a fully resolved toolset on `PATH`, adjusts hook scheduling order on dir changes, and tweaks PowerShell activation to only `Invoke-Expression` when `hook-env` returns non-empty output. Adds new e2e coverage for global hooks, shell env exports, and error handling. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit cf3ab75. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for 98cecef - Browse repository at this point
Copy the full SHA 98cecefView commit details -
fix(core): respect MISE_ARCH override in bun and erlang plugins (#8062)
## Summary - Replace compile-time `cfg!(target_arch)` checks with `Settings::get().arch()` in bun and erlang core plugins so that `MISE_ARCH` environment variable overrides are respected at runtime - This enables Windows ARM64 users to opt into x64 bun builds under Prism emulation (ref: #7155) - Also replaces `cfg!(target_os)` / hardcoded OS constants with `Settings::get().os()` for consistency with other plugins (node, python, java, ruby, rust, swift) ## Test plan - [x] `mise run lint-fix` passes - [x] `mise run build` compiles successfully (via cargo-check in lint) - [x] `mise run test:unit` — all 461 tests pass - [ ] Manual verification: set `MISE_ARCH=x64` on an ARM64 system and confirm bun installs the x64-baseline variant 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Changes alter platform/variant string construction that directly controls which prebuilt archives are downloaded and written into lockfiles; incorrect mapping could break installs on specific OS/arch combinations, especially Windows/ARM64 and musl/baseline variants. > > **Overview** > **Bun and Erlang installs now respect runtime arch/OS overrides.** The Bun plugin replaces compile-time `cfg!(target_arch)`/static `ARCH`/`OS` usage with `Settings::get().arch()` and `Settings::get().os()` when building download URLs and platform keys, while still using runtime AVX2 and compile-time musl detection for bun variant selection. > > **Improves cross-arch behavior on Windows ARM64.** Bun’s arch resolution now explicitly falls back to `x64-baseline` when `Settings` reports `arm64` on Windows (to support x64-under-emulation), and Erlang’s precompiled asset naming now maps `Settings` arch/OS values to the expected release artifact names and removes the old hardcoded `ARCH`/`OS` constants. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 026c4f6. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for c671053 - Browse repository at this point
Copy the full SHA c671053View commit details -
feat: add --dry-run-code flag to exit non-zero when there is work to …
…do (#8063) ## Summary - Adds a `--dry-run-code` flag to `install`, `upgrade`, `prune`, `uninstall`, and `use` commands - When used, behaves like `--dry-run` (shows what would happen without making changes) but additionally exits with code 1 when there are pending operations - Exits 0 when everything is already up-to-date - Enables scripting patterns like: ```bash if ! mise install --dry-run-code --quiet; then echo "Installing stuff using mise" mise install fi ``` Closes #8060 ## Test plan - [x] `mise run test:e2e test_install_dry_run` — install dry-run tests including `--dry-run-code` - [x] `mise run test:e2e test_use_dry_run` — use dry-run tests including `--dry-run-code` - [x] `cargo test` — all 461 unit tests pass (including CLI flag sort test) - [x] `mise run lint-fix` — all linters pass 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Changes CLI exit-code behavior for multiple core commands, which may affect automation that relies on previous dry-run semantics, though the changes are localized and covered by updated e2e tests. > > **Overview** > Adds a new `--dry-run-code` flag to `install`, `use`, `upgrade`, `prune`, and `uninstall` that behaves like `--dry-run` but exits with status `1` when there is work to do (and `0` when no changes are needed). > > Refactors these commands to treat `--dry-run` and `--dry-run-code` consistently via shared `is_dry_run()` checks, skipping side effects (config writes, deletions, shim rebuilds) while optionally computing whether any operations would occur before deciding to exit non-zero. > > Updates generated CLI docs/manpages, the `mise.usage.kdl` spec, Fig completions, and expands e2e coverage (including a new `assert_fail_contains`) to validate the new exit-code semantics. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 2a305c7. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for 0fb325f - Browse repository at this point
Copy the full SHA 0fb325fView commit details -
docs: bump action versions in GitHub Actions examples (#8065)
Also bumps action versions in the workflow generated by `mise generate github-action`.
Configuration menu - View commit details
-
Copy full SHA for 8d0b1e3 - Browse repository at this point
Copy the full SHA 8d0b1e3View commit details -
docs: add opengraph meta tags (#8066)
## Summary - Add og:site_name, og:type, og:image, and twitter:card meta tags for better social media link previews ## Test plan - [ ] Verify OG tags appear in page source after build - [ ] Test link preview on social media/Slack/Discord 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Static documentation config change only; no runtime logic, auth, or data-handling impact. > > **Overview** > Adds global OpenGraph/Twitter meta tags to the VitePress docs site via `docs/.vitepress/config.ts` (`og:site_name`, `og:type`, `og:image`, plus `twitter:card`/`twitter:image`) to improve link previews when pages are shared. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 306f012. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 03bbcaa - Browse repository at this point
Copy the full SHA 03bbcaaView commit details
Commits on Feb 9, 2026
-
chore: release 2026.2.8 (#8055)
### 🚀 Features - **(node)** support package.json as idiomatic version file by @jdx in [#8059](#8059) - **(ruby)** graduate precompiled ruby from experimental (gradual rollout) by @jdx in [#8052](#8052) - add --dry-run-code flag to exit non-zero when there is work to do by @jdx in [#8063](#8063) ### 🐛 Bug Fixes - **(core)** respect MISE_ARCH override in bun and erlang plugins by @jdx in [#8062](#8062) - **(hooks)** resolve 12 community-reported hooks issues by @jdx in [#8058](#8058) - accept key=value format in set/add subcommands by @jdx in [#8053](#8053) ### 📚 Documentation - bump action versions in GitHub Actions examples by @muzimuzhi in [#8065](#8065) - add opengraph meta tags by @jdx in [#8066](#8066) ### 📦️ Dependency Updates - upgrade toml to 0.9 and toml_edit to 0.24 (TOML 1.1) by @jdx in [#8057](#8057) ### 📦 Registry - add quicktype (npm:quicktype) by @zdunecki in [#8054](#8054) - use inline table for test definitions by @jdx in [#8056](#8056)
Configuration menu - View commit details
-
Copy full SHA for 67b504b - Browse repository at this point
Copy the full SHA 67b504bView commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff v2026.2.7...v2026.2.8