Repository navigation
fix(schema): accept [bootstrap.secrets] - #14322
Conversation
Co-authored-by: Taku Kodama <79110363+risu729@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. π βΉοΈ Recent review info
π Walkthrough
Merge Risk: βͺ Minimal Β· up to No actionable merge-blocking risk is identified; the change is ready for normal checks. Pre-merge checks |
|
|
<!-- entire-trail-link-start --> https://entire.io/gh/jdx/mise/trails/640 <!-- entire-trail-link-end --> ### π Features - **(bootstrap)** add apt repositories and PPAs with [bootstrap.apt.sources] by @jdx in [#14306](#14306) - **(bootstrap)** embed apt source signing keys inline in .sources files by @jdx in [#14348](#14348) - **(bootstrap)** render templates in [bootstrap.repos] checkout paths by @jdx in [#14359](#14359) - **(bootstrap)** declare macOS login items by @jdx in [#14354](#14354) - **(bootstrap)** layer dnf packages with rpm-ostree on Fedora Atomic hosts by @jdx in [#14357](#14357) - **(bootstrap)** support run0 and doas for privilege elevation by @jdx in [#14351](#14351) - **(dotfiles)** show tracked entries that no variant selects in status by @jdx in [#14266](#14266) - **(dotfiles)** group mise dot status into sections by @jdx in [#14361](#14361) - **(github)** add oauth_copy_code to copy the device code to the clipboard by @jdx in [#14269](#14269) - **(github)** keep the native OAuth refresh token in a password manager or keychain by @jdx in [#14360](#14360) - **(http)** add libc() and avx2() template functions by @jdx in [#14298](#14298) - **(pypi)** read upload times from PEP 691 simple indexes by @jdx in [#14352](#14352) - **(rust)** download rustup-init from RUSTUP_UPDATE_ROOT by @jdx in [#14356](#14356) ### π Bug Fixes - **(aqua)** warn once for packages with no repo to list versions from by @jdx in [#14336](#14336) - **(backend)** keep decoded download file names inside the download directory by @JamBalaya56562 in [#14274](#14274) - **(bootstrap)** support dnf package groups by @jdx in [#14347](#14347) - **(bootstrap)** don't print a stdin-only helper as a manual command by @jdx in [#14350](#14350) - **(bootstrap)** explain why dnf packages cannot install on ostree hosts by @jdx in [#14353](#14353) - **(brew)** install bottle etc files and run post_install_steps when pouring by @jdx in [#14272](#14272) - **(brew)** refuse to chown a prefix owned by another user by @jdx in [#14345](#14345) - **(brew)** preserve protected post-install copy destinations by @jdx in [#14311](#14311) - **(brew-cask)** support generate completions in evaluated casks by @pmmmwh in [#14255](#14255) - **(docker)** install libatomic1 in the Debian image so Node.js 26 runs by @jdx in [#14303](#14303) - **(dotfiles)** keep existing ciphertext when an encrypted file is unchanged by @jdx in [#14300](#14300) - **(dotfiles)** stop a newly selected profile from deleting its shared file by @jdx in [#14275](#14275) - **(dotfiles)** restore config entries when adopting under a symlinked home by @jdx in [#14315](#14315) - **(dotfiles)** show per-file diffs for directory copy entries in dot diff by @jdx in [#14333](#14333) - **(dotfiles)** apply mise's own config before planning the other entries by @jdx in [#14339](#14339) - **(go)** read an exact go line in go.mod as the toolchain version by @jdx in [#14308](#14308) - **(http)** retry artifact downloads started by mise exec and shims by @jdx in [#14342](#14342) - **(npm)** resolve unlocked latest to the npm version of a graph-locked install by @jdx in [#14307](#14307) - **(npm)** give unlocked requests their own install under the identity layout by @jdx in [#14309](#14309) - **(oci)** ignore host apt hooks when installing apt bootstrap packages by @jdx in [#14296](#14296) - **(packslip)** let a workflow list carry the signer pin across a workflow move by @jdx in [#14338](#14338) - **(packslip)** keep a renamed project's lockfile signer under packslip 1.7 by @jdx in [#14362](#14362) - **(prune)** keep a uv-locked pipx tool's installs for every Python by @jdx in [#14335](#14335) - **(prune)** keep versions of task-scoped tools by @jdx in [#14334](#14334) - **(schema)** accept [bootstrap.secrets] by @JamBalaya56562 in [#14322](#14322) - **(schema)** accept [bootstrap.groups] and [bootstrap.users] by @JamBalaya56562 in [#14340](#14340) - **(schema)** accept table forms for vars._.file and vars._.source by @JamBalaya56562 in [#14383](#14383) - **(shim)** keep other projects' command wrappers on reshim by @jdx in [#14355](#14355) - **(task)** bump gix so remote tasks work in git hooks by @any-victor in [#14316](#14316) - hide the Windows console for the tool-update service by @jdx in [#14344](#14344) ### π Refactor - replace serde_yaml with serde-saphyr by @jdx in [#14328](#14328) ### π Documentation - **(bootstrap)** explain when to use --from versus --adopt by @jdx in [#14301](#14301) - **(bootstrap)** recommend fish = "auto" for fish shell activation by @jdx in [#14304](#14304) - **(dotfiles)** explain when to use sync, pull, and apply by @jdx in [#14343](#14343) - **(shims)** explain how to check whether a tool is installed by @jdx in [#14337](#14337) - switch body text to DM Sans and tighten the releases page by @jdx in [#14302](#14302) - self-host DM Sans and JetBrains Mono so they load on mise.jdx.dev by @jdx in [#14310](#14310) ### π§ͺ Testing - **(bootstrap)** don't depend on bc being absent in the apt sources test by @jdx in [#14371](#14371) ### π¦οΈ Dependency Updates - install Homebrew uses_from_macos dependencies on Linux by @itskyf in [#14288](#14288) - bump packslip to 1.7.0 by @jdx in [#14363](#14363) - lock file maintenance by @renovate[bot] in [#14320](#14320) - update github actions by @renovate[bot] in [#14380](#14380) - update dependency python to v3.14.8 by @renovate[bot] in [#14381](#14381) - update rust crates by @renovate[bot] in [#14382](#14382) - update docker images by @renovate[bot] in [#14379](#14379) ### π¦ Registry - install opencode 2 from npm by @jdx in [#14295](#14295) ### Chore - **(ci)** switch to jactionlint v2 and drop zizmor by @jdx in [#14256](#14256) - fix CI for the aqua registry update and the unsafe-libyaml advisory by @jdx in [#14326](#14326) ### Ci - double the unit-macos job timeout by @jdx in [#14346](#14346) ### Security - **(config)** require trust for path: tool versions by @jdx in [#14358](#14358) ### New Contributors - @pmmmwh made their first contribution in [#14255](#14255) - @itskyf made their first contribution in [#14288](#14288) ## π¦ Aqua Registry Updates ### New Packages (3) - [`Alice39s/xmtr`](https://github.com/Alice39s/xmtr) - [`bufbuild/protoschema-plugins/protoc-gen-jsonschema`](https://github.com/bufbuild/protoschema-plugins) - [`takumin/qemu-bin`](https://github.com/takumin/qemu-bin) ### Updated Packages (3) - [`bootandy/dust`](https://github.com/bootandy/dust) - [`connectrpc/connect-go/protoc-gen-connect-go`](https://github.com/connectrpc/connect-go) - [`sharkdp/hyperfine`](https://github.com/sharkdp/hyperfine)
[bootstrap.secrets]was missing from the JSON schema, so a strict schema checker such as tombi rejected any config that used it, even though mise reads it:The schema now describes it the way
src/system/secrets.rsreads it:.,_or-.env,descriptionandallow_empty.The table form rejects unknown keys. mise silently ignores a misspelled option such as
allow_emty = true, which leavesallow_emptyat its default, so the schema is where that typo can be caught.This takes over #12789 by @risu729, which pr-closer closed after 7 days of failing checks on the fork run. They are credited as co-author. CodeRabbit and Greptile both left the same open thread on #12789: add
additionalProperties: falseto the table form. This PR does that.Validation
e2e/config/test_schema_tombi:mise.tomlfixture now declares both forms above."allow_emty" is not allowed;1BAD:does not match the pattern ^[A-Za-z_][A-Za-z0-9_]*$;bad name:does not match the pattern ^[A-Za-z0-9_.-]+$.main's schema themise.tomlfixture fails, and with this PR's it passes. The three invalid fixtures fail with the messages above.mise bootstrap secrets statusgave these results:allow_emtywithout a word.1BAD(invalid environment variable name) andbad name(invalid bootstrap secret name). These are the same rules the schema now applies.AI-assisted β Tool: Claude Code; model: anthropic/claude-opus-5-5; version: unavailable.
π€ Generated with Claude Code
Summary by CodeRabbit
allow_emptysetting, which defaults tofalse.