Skip to content

refactor: enforce workspace visibility - #12249

Merged
jdx merged 7 commits into
jdx:mainfrom
risu729:refactor/binary-visibility-lints
Aug 21, 2026
Merged

jdx merged 7 commits into
jdx:mainfrom
risu729:refactor/binary-visibility-lints

Conversation

@risu729

@risu729 risu729 commented Aug 21, 2026 •

Copy link
Copy Markdown
Contributor

AI agents often add pub(crate), but existing code uses pub. This enforces the use of pub(crate).

Why

mise is primarily a CLI, and its internal modules and workspace implementation crates do not need to expose APIs beyond their effective crate boundaries. Bare pub on those items overstates their accessibility and makes it easy for unnecessarily broad visibility to accumulate unnoticed.

What changed

  • narrowed existing internal items to pub(crate), pub(super), or private visibility as appropriate
  • covered normal, test-only, generated, Windows, non-Linux, library, binary, and build-script targets
  • enabled unreachable_pub for every workspace crate target
  • enabled dead_code_pub_in_binary for binary and build-script targets; Rust reports it as inapplicable to libraries
  • updated settings code generation to emit crate-visible types and isolated third-party built output behind one documented lint boundary

This is a visibility-only refactor with no intended behavior change. The lints prevent the same access creep from returning.

Compatibility

dead_code_pub_in_binary is newer than the current MSRV. Binary crate roots allow unknown lint names before denying it, so older supported compilers ignore that lint while newer compilers enforce it. Libraries only configure the long-standing unreachable_pub lint.

Validation

  • mise run lint
  • mise run test:unit — 3,093 passed, 1 ignored
  • cargo test --workspace --all-features — all workspace package and doc tests passed

AI-assisted — Tool: Codex; model: OpenAI/GPT-5; version: unavailable.

@greptile-apps

greptile-apps Bot commented Aug 21, 2026 •

Copy link
Copy Markdown
Contributor

Too many files changed for review (467 files, 100 file limit).

Bypass the limit by tagging @greptile-apps to review.

@coderabbitai

coderabbitai Bot commented Aug 21, 2026 •

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 467 files, which is 167 over the limit of 300.

To get a review, reduce the PR to 300 files or fewer by splitting it into smaller PRs or changing its base branch.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited), Organization UI (inherited)

Review profile: CHILL

Plan: Pro Plus

Run ID: ff4667ab-b334-4a73-8aa2-f3740bfedde3

📥 Commits

Reviewing files that changed from the base of the PR and between 13e05af and 10ee37b.

📒 Files selected for processing (467)
  • build.rs
  • crates/aqua-registry/src/lib.rs
  • crates/aqua-registry/src/template.rs
  • crates/mise-cache-core/src/lib.rs
  • crates/mise-cache-rustc/src/lib.rs
  • crates/mise-interactive-config/build.rs
  • crates/mise-interactive-config/src/cursor.rs
  • crates/mise-interactive-config/src/document.rs
  • crates/mise-interactive-config/src/editor/undo.rs
  • crates/mise-interactive-config/src/inline_edit.rs
  • crates/mise-interactive-config/src/lib.rs
  • crates/mise-interactive-config/src/picker.rs
  • crates/mise-interactive-config/src/render.rs
  • crates/mise-shim/src/main.rs
  • crates/mise-sigstore/src/lib.rs
  • crates/vfox/build.rs
  • crates/vfox/src/bin.rs
  • crates/vfox/src/cli/available.rs
  • crates/vfox/src/cli/env_keys.rs
  • crates/vfox/src/cli/install.rs
  • crates/vfox/src/cli/mod.rs
  • crates/vfox/src/cli/plugins/list.rs
  • crates/vfox/src/config.rs
  • crates/vfox/src/hooks/mod.rs
  • crates/vfox/src/hooks/parse_legacy_file.rs
  • crates/vfox/src/hooks/pre_use.rs
  • crates/vfox/src/http.rs
  • crates/vfox/src/lib.rs
  • crates/vfox/src/lua_mod/archiver.rs
  • crates/vfox/src/lua_mod/cmd.rs
  • crates/vfox/src/lua_mod/env.rs
  • crates/vfox/src/lua_mod/file.rs
  • crates/vfox/src/lua_mod/hooks.rs
  • crates/vfox/src/lua_mod/html.rs
  • crates/vfox/src/lua_mod/http.rs
  • crates/vfox/src/lua_mod/json.rs
  • crates/vfox/src/lua_mod/log.rs
  • crates/vfox/src/lua_mod/mod.rs
  • crates/vfox/src/lua_mod/semver.rs
  • crates/vfox/src/lua_mod/strings.rs
  • crates/vfox/src/plugin.rs
  • crates/vfox/src/registry.rs
  • src/agecrypt.rs
  • src/aqua/aqua_registry_wrapper.rs
  • src/aqua/standard_registry.rs
  • src/backend/aqua.rs
  • src/backend/asdf.rs
  • src/backend/asset_matcher.rs
  • src/backend/aube_host.rs
  • src/backend/backend_type.rs
  • src/backend/cargo.rs
  • src/backend/cargo/native_binstall.rs
  • src/backend/conda.rs
  • src/backend/dotnet.rs
  • src/backend/external_plugin_cache.rs
  • src/backend/gem.rs
  • src/backend/github.rs
  • src/backend/go.rs
  • src/backend/http.rs
  • src/backend/jq.rs
  • src/backend/mod.rs
  • src/backend/npm.rs
  • src/backend/npm_registry.rs
  • src/backend/pipx.rs
  • src/backend/pkgx.rs
  • src/backend/platform_target.rs
  • src/backend/platform_tokens.rs
  • src/backend/s3.rs
  • src/backend/spm.rs
  • src/backend/static_helpers.rs
  • src/backend/ubi.rs
  • src/backend/version_list.rs
  • src/backend/vfox.rs
  • src/build_time.rs
  • src/cache.rs
  • src/cli/activate.rs
  • src/cli/args/backend_arg.rs
  • src/cli/args/env_var_arg.rs
  • src/cli/args/mod.rs
  • src/cli/args/tool_arg.rs
  • src/cli/asdf.rs
  • src/cli/backends/ls.rs
  • src/cli/backends/mod.rs
  • src/cli/bin_paths.rs
  • src/cli/bootstrap.rs
  • src/cli/cache/clear.rs
  • src/cli/cache/mod.rs
  • src/cli/cache/path.rs
  • src/cli/cache/prune.rs
  • src/cli/cache/task.rs
  • src/cli/command_effects.rs
  • src/cli/completion.rs
  • src/cli/config/get.rs
  • src/cli/config/ls.rs
  • src/cli/config/mod.rs
  • src/cli/config/set.rs
  • src/cli/current.rs
  • src/cli/deactivate.rs
  • src/cli/deps/add.rs
  • src/cli/deps/install.rs
  • src/cli/deps/mod.rs
  • src/cli/deps/remove.rs
  • src/cli/direnv/activate.rs
  • src/cli/direnv/envrc.rs
  • src/cli/direnv/exec.rs
  • src/cli/direnv/mod.rs
  • src/cli/doctor/mod.rs
  • src/cli/doctor/path.rs
  • src/cli/dotfiles/add.rs
  • src/cli/dotfiles/apply.rs
  • src/cli/dotfiles/edit.rs
  • src/cli/dotfiles/mod.rs
  • src/cli/dotfiles/status.rs
  • src/cli/dotfiles/unapply.rs
  • src/cli/edit.rs
  • src/cli/en.rs
  • src/cli/env.rs
  • src/cli/exec.rs
  • src/cli/external.rs
  • src/cli/fmt.rs
  • src/cli/generate/config.rs
  • src/cli/generate/devcontainer.rs
  • src/cli/generate/git_pre_commit.rs
  • src/cli/generate/github_action.rs
  • src/cli/generate/install_script.rs
  • src/cli/generate/mod.rs
  • src/cli/generate/task_docs.rs
  • src/cli/generate/task_stubs.rs
  • src/cli/generate/tool_stub.rs
  • src/cli/github/mod.rs
  • src/cli/github/token.rs
  • src/cli/global.rs
  • src/cli/hook_env.rs
  • src/cli/hook_not_found.rs
  • src/cli/implode.rs
  • src/cli/install.rs
  • src/cli/install_into.rs
  • src/cli/latest.rs
  • src/cli/link.rs
  • src/cli/local.rs
  • src/cli/lock.rs
  • src/cli/ls.rs
  • src/cli/ls_remote.rs
  • src/cli/mcp.rs
  • src/cli/mod.rs
  • src/cli/oci/build.rs
  • src/cli/oci/common.rs
  • src/cli/oci/mod.rs
  • src/cli/oci/push.rs
  • src/cli/oci/run.rs
  • src/cli/outdated.rs
  • src/cli/patrons.rs
  • src/cli/plugins/install.rs
  • src/cli/plugins/link.rs
  • src/cli/plugins/ls.rs
  • src/cli/plugins/ls_remote.rs
  • src/cli/plugins/mod.rs
  • src/cli/plugins/uninstall.rs
  • src/cli/plugins/update.rs
  • src/cli/prune.rs
  • src/cli/registry.rs
  • src/cli/render_help.rs
  • src/cli/reshim.rs
  • src/cli/run.rs
  • src/cli/search.rs
  • src/cli/self_update.rs
  • src/cli/self_update_stub.rs
  • src/cli/set.rs
  • src/cli/settings/add.rs
  • src/cli/settings/get.rs
  • src/cli/settings/ls.rs
  • src/cli/settings/mod.rs
  • src/cli/settings/set.rs
  • src/cli/settings/unset.rs
  • src/cli/shell.rs
  • src/cli/shell_alias/get.rs
  • src/cli/shell_alias/ls.rs
  • src/cli/shell_alias/mod.rs
  • src/cli/shell_alias/set.rs
  • src/cli/shell_alias/unset.rs
  • src/cli/sponsors.rs
  • src/cli/sync/mod.rs
  • src/cli/sync/node.rs
  • src/cli/sync/python.rs
  • src/cli/sync/ruby.rs
  • src/cli/system/brew/mod.rs
  • src/cli/system/brew/tap.rs
  • src/cli/system/brew/untap.rs
  • src/cli/system/import.rs
  • src/cli/system/install.rs
  • src/cli/system/prune.rs
  • src/cli/system/status.rs
  • src/cli/system/upgrade.rs
  • src/cli/system/use.rs
  • src/cli/tasks/add.rs
  • src/cli/tasks/deps.rs
  • src/cli/tasks/edit.rs
  • src/cli/tasks/graph.rs
  • src/cli/tasks/info.rs
  • src/cli/tasks/ls.rs
  • src/cli/tasks/mod.rs
  • src/cli/tasks/validate.rs
  • src/cli/test_tool.rs
  • src/cli/token/forgejo.rs
  • src/cli/token/github.rs
  • src/cli/token/gitlab.rs
  • src/cli/token/mod.rs
  • src/cli/tool.rs
  • src/cli/tool_alias/get.rs
  • src/cli/tool_alias/ls.rs
  • src/cli/tool_alias/mod.rs
  • src/cli/tool_alias/set.rs
  • src/cli/tool_alias/unset.rs
  • src/cli/tool_stub.rs
  • src/cli/trust.rs
  • src/cli/uninstall.rs
  • src/cli/unset.rs
  • src/cli/untrust.rs
  • src/cli/unuse.rs
  • src/cli/upgrade.rs
  • src/cli/usage.rs
  • src/cli/use.rs
  • src/cli/version.rs
  • src/cli/watch.rs
  • src/cli/where.rs
  • src/cli/which.rs
  • src/cmd.rs
  • src/config/config_file/config_root.rs
  • src/config/config_file/diagnostic.rs
  • src/config/config_file/idiomatic_version/mod.rs
  • src/config/config_file/idiomatic_version/package_json.rs
  • src/config/config_file/min_version.rs
  • src/config/config_file/mise_toml.rs
  • src/config/config_file/mod.rs
  • src/config/config_file/toml.rs
  • src/config/config_file/tool_versions.rs
  • src/config/env_directive/mod.rs
  • src/config/env_directive/module.rs
  • src/config/env_directive/venv.rs
  • src/config/miserc.rs
  • src/config/mod.rs
  • src/config/settings.rs
  • src/config/tracking.rs
  • src/deps/deps_ordering.rs
  • src/deps/engine.rs
  • src/deps/mod.rs
  • src/deps/providers/aube.rs
  • src/deps/providers/bun.rs
  • src/deps/providers/bundler.rs
  • src/deps/providers/composer.rs
  • src/deps/providers/custom.rs
  • src/deps/providers/dart.rs
  • src/deps/providers/deno.rs
  • src/deps/providers/git_submodule.rs
  • src/deps/providers/go.rs
  • src/deps/providers/mod.rs
  • src/deps/providers/npm.rs
  • src/deps/providers/pip.rs
  • src/deps/providers/pnpm.rs
  • src/deps/providers/poetry.rs
  • src/deps/providers/uv.rs
  • src/deps/providers/yarn.rs
  • src/deps/rule.rs
  • src/deps/state.rs
  • src/deps_graph.rs
  • src/direnv.rs
  • src/dirs.rs
  • src/duration.rs
  • src/env.rs
  • src/env_diff.rs
  • src/errors.rs
  • src/exit.rs
  • src/fake_asdf.rs
  • src/fake_asdf_windows.rs
  • src/file.rs
  • src/forgejo.rs
  • src/git.rs
  • src/github.rs
  • src/github/oauth.rs
  • src/github/sigstore.rs
  • src/gitlab.rs
  • src/gpg.rs
  • src/hash.rs
  • src/hint.rs
  • src/hook_env.rs
  • src/hooks.rs
  • src/http.rs
  • src/install_before.rs
  • src/install_context.rs
  • src/jobs.rs
  • src/lock_file.rs
  • src/lockfile.rs
  • src/logger.rs
  • src/main.rs
  • src/migrate.rs
  • src/minisign.rs
  • src/netrc.rs
  • src/oci/auth.rs
  • src/oci/builder.rs
  • src/oci/docker_archive.rs
  • src/oci/layer.rs
  • src/oci/layout.rs
  • src/oci/manifest.rs
  • src/oci/mod.rs
  • src/oci/packages.rs
  • src/oci/registry.rs
  • src/output.rs
  • src/parallel.rs
  • src/path.rs
  • src/path_env.rs
  • src/platform.rs
  • src/plugins/asdf_plugin.rs
  • src/plugins/core/bun.rs
  • src/plugins/core/deno.rs
  • src/plugins/core/dotnet.rs
  • src/plugins/core/elixir.rs
  • src/plugins/core/erlang.rs
  • src/plugins/core/go.rs
  • src/plugins/core/java.rs
  • src/plugins/core/mod.rs
  • src/plugins/core/node.rs
  • src/plugins/core/python.rs
  • src/plugins/core/ruby.rs
  • src/plugins/core/ruby_common.rs
  • src/plugins/core/ruby_windows.rs
  • src/plugins/core/rust.rs
  • src/plugins/core/swift.rs
  • src/plugins/core/zig.rs
  • src/plugins/mise_plugin_toml.rs
  • src/plugins/mod.rs
  • src/plugins/script_manager.rs
  • src/plugins/vfox_plugin.rs
  • src/rand.rs
  • src/redactions.rs
  • src/registry.rs
  • src/remote_source.rs
  • src/result.rs
  • src/runtime_symlinks.rs
  • src/sandbox/landlock.rs
  • src/sandbox/macos.rs
  • src/sandbox/mod.rs
  • src/sandbox/seccomp.rs
  • src/semver.rs
  • src/shell/bash.rs
  • src/shell/elvish.rs
  • src/shell/fish.rs
  • src/shell/mod.rs
  • src/shell/nushell.rs
  • src/shell/pwsh.rs
  • src/shell/xonsh.rs
  • src/shell/zsh.rs
  • src/shims.rs
  • src/shorthands.rs
  • src/sops.rs
  • src/sysconfig/mod.rs
  • src/sysconfig/parser.rs
  • src/system/accounts.rs
  • src/system/accounts_non_linux.rs
  • src/system/compose.rs
  • src/system/defaults.rs
  • src/system/deps.rs
  • src/system/edits.rs
  • src/system/files.rs
  • src/system/firewall.rs
  • src/system/firewall_non_linux.rs
  • src/system/hooks.rs
  • src/system/launchd.rs
  • src/system/login_shell.rs
  • src/system/managed_files.rs
  • src/system/mod.rs
  • src/system/packages/apk.rs
  • src/system/packages/apt.rs
  • src/system/packages/brew/api.rs
  • src/system/packages/brew/cask.rs
  • src/system/packages/brew/elf.rs
  • src/system/packages/brew/fetch.rs
  • src/system/packages/brew/macho.rs
  • src/system/packages/brew/maintenance.rs
  • src/system/packages/brew/mod.rs
  • src/system/packages/brew/pour.rs
  • src/system/packages/brew/prefix.rs
  • src/system/packages/brew/relocate.rs
  • src/system/packages/brew/resolve.rs
  • src/system/packages/brew/source.rs
  • src/system/packages/brew/tag.rs
  • src/system/packages/dnf.rs
  • src/system/packages/flatpak.rs
  • src/system/packages/mas.rs
  • src/system/packages/mod.rs
  • src/system/packages/pacman.rs
  • src/system/packages/plugin.rs
  • src/system/remote.rs
  • src/system/repos.rs
  • src/system/resources.rs
  • src/system/secrets.rs
  • src/system/services.rs
  • src/system/services_non_linux.rs
  • src/system/shell_activation.rs
  • src/system/systemd.rs
  • src/task/deps.rs
  • src/task/mod.rs
  • src/task/task_cache.rs
  • src/task/task_confirm.rs
  • src/task/task_context_builder.rs
  • src/task/task_dep.rs
  • src/task/task_executor.rs
  • src/task/task_fetcher.rs
  • src/task/task_file_providers/local_task.rs
  • src/task/task_file_providers/mod.rs
  • src/task/task_file_providers/remote_task_git.rs
  • src/task/task_file_providers/remote_task_http.rs
  • src/task/task_helpers.rs
  • src/task/task_list.rs
  • src/task/task_load_context.rs
  • src/task/task_output.rs
  • src/task/task_output_handler.rs
  • src/task/task_results_display.rs
  • src/task/task_scheduler.rs
  • src/task/task_script_parser.rs
  • src/task/task_source_checker.rs
  • src/task/task_sources.rs
  • src/task/task_template.rs
  • src/task/task_tool_installer.rs
  • src/task/workspace.rs
  • src/task/workspace/cargo.rs
  • src/task/workspace/git.rs
  • src/task/workspace/go.rs
  • src/task/workspace/node.rs
  • src/task/workspace/uv.rs
  • src/tera.rs
  • src/test.rs
  • src/timeout.rs
  • src/timings.rs
  • src/tokens.rs
  • src/toml.rs
  • src/toolset/builder.rs
  • src/toolset/env_cache.rs
  • src/toolset/install_options.rs
  • src/toolset/install_state.rs
  • src/toolset/mod.rs
  • src/toolset/outdated_info.rs
  • src/toolset/tool_deps.rs
  • src/toolset/tool_request.rs
  • src/toolset/tool_request_set.rs
  • src/toolset/tool_source.rs
  • src/toolset/tool_version.rs
  • src/toolset/tool_version_list.rs
  • src/toolset/tool_version_options.rs
  • src/toolset/toolset_env.rs
  • src/toolset/toolset_install.rs
  • src/toolset/toolset_paths.rs
  • src/ui/ctrlc.rs
  • src/ui/ctrlc_stub.rs
  • src/ui/info.rs
  • src/ui/mod.rs
  • src/ui/multi_progress_report.rs
  • src/ui/progress_report.rs
  • src/ui/prompt.rs
  • src/ui/style.rs
  • src/ui/table.rs
  • src/ui/theme.rs
  • src/ui/time.rs
  • src/ui/tree.rs
  • src/uv.rs
  • src/versions_host.rs
  • src/watch_files.rs
  • src/wildcard.rs

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@risu729
risu729 force-pushed the refactor/binary-visibility-lints branch from 48562c8 to bcbf72e Compare August 21, 2026 15:55
@risu729 risu729 changed the title refactor(core): enforce binary visibility refactor: enforce workspace visibility Aug 21, 2026
@risu729
risu729 marked this pull request as ready for review August 21, 2026 16:02
@risu729
risu729 force-pushed the refactor/binary-visibility-lints branch from 6dd6cae to 10ee37b Compare August 21, 2026 18:18
@jdx
jdx enabled auto-merge (squash) August 21, 2026 18:25
@jdx
jdx merged commit 4a376c1 into jdx:main Aug 21, 2026
30 checks passed
@risu729
risu729 deleted the refactor/binary-visibility-lints branch August 21, 2026 21:22
jdx added a commit that referenced this pull request Aug 21, 2026
Resolves conflicts with the workspace-visibility refactor (#12249): the
lazy per-tool implementations keep their bodies and adopt pub(crate),
including get_tool and the try_list_tools/list_tools error-propagating
variants this branch introduced.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants