Repository navigation
Add mise extension - #31238
Add mise extension#31238lachieh wants to merge 4 commits into
Conversation
- Refer to the Mise Path preference by its new title - Name commands and preferences the way the store reads them - Show a load error with Retry when a mise list fails - Trim the changelog, identify mise in the README, and keep .agents local - Recapture store screenshots at the enforcer\'s padding - Format .oxlintrc.json - Keep ray lint out of the package scripts - Add Raycast\'s ESLint config and Prettier alongside oxlint and oxfmt - Run Raycast\'s ESLint rules through oxlint - Add store screenshots and shorten the Search Tools placeholder - Rename the menu-bar command to Tools Menu Bar - Run every mise call with the login shell\'s environment - Run terminal hand-offs in an interactive login shell - Add Manage Tasks - Add a Terminal Application preference and Run in Terminal on installs - Add preferences for upgrade flags, unuse, jobs, window and logging - Give the operation factories flag options and exec a command observer - Add component tests for the Raycast layer behind hand-written stubs - Add an integration suite that dry-runs every operation against mise - Show the requested version only when it is pinned - Add Upgrade All Tools, Prune Unused Versions and Clear Cache - Replace Check Outdated Tools with a Show Outdated Tools view - Open deeplinks in Raycast by bundle id - Add Check Outdated Tools for hosts without a menu bar - Let installs choose the global config file - Seed Search Tools from the deeplink fallbackText - Add backend-prefixed queries to Search Tools - Rename the extension icon to mise.png - Prepare the extension for the Raycast store - Run mise from the home directory - Add Outdated Tools menu bar with per-tool and Upgrade All hand-off - Add Installed Tools with set-global, upgrade and uninstall - Rename useGlobally to addGlobally - Replace no-op Search Tools with a registry view - Add mise core with locate, exec, and parsers - Add keyboard driving to verify-mise - Make the sandbox note in verify-mise conditional - Add verify-mise verification skill - Replace eslint and prettier with oxlint and oxfmt - Scaffold Raycast extension
|
Congratulations on your new Raycast extension! 🚀 We're currently experiencing a high volume of incoming requests. As a result, the initial review may take up to 15 business days. Once the PR is approved and merged, the extension will be available on our Store. |
|
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
…h text Addresses the two review findings: the menu bar showed "All tools up to date" when mise outdated failed, and Search Tools seeded its backend query from fallbackText without passing searchText to List.
… Remove, and offer a low-downloads retry - Search Tools filters and ranks the registry itself (capped), debounces the backend request and aborts in-flight searches when the query changes. - Installed rows in Search Tools get a confirmed Remove (unuse, then uninstall --all) as their primary action. - When mise refuses an npm package for low weekly downloads, the failure toast offers to retry with allow_low_downloads=true.
…s commit The previous commit staged only modified files, so src/ui/useDebounced.ts and the use-low-downloads-stderr fixture were left out and the build could not resolve ./ui/useDebounced.
0xdhrv
left a comment
There was a problem hiding this comment.
Hey @lachieh 👋
Thanks for your contribution 🔥 This is a really thorough mise client — careful execFile/spawn usage, login-shell env probing, solid prefs, and a serious test suite.
Here's everything I found in this pass:
Blocking
- issue (blocking): In Search Tools, Remove always runs
mise unuse <tool>and only thenmise uninstall --all <tool>(remove+runOperation'sandThen). Installed tools with no config entry (inactive) makeunusefail, so uninstall never runs and nothing is deleted.
Please either:
-
only offer Remove when a version has a config
source, and use uninstall-only for inactive tools, or -
change
removeso uninstall still runs whenunusefails because there is no config entry -
issue (blocking):
metadata/mise-3.pngshows personal paths under/Users/lachlan/…. Please retake it with the Capture Window command (tick Save to Metadata) using mock data so the home directory isn’t identifiable.
Docs: https://developers.raycast.com/basics/prepare-an-extension-for-store#screenshots
Should fix
- issue: In
outdated-tools.tsx,launchCommandfor Show Outdated Tools isn’t wrapped. It can throw if that command is disabled. Please catch it:
try {
await launchCommand({ name: "show-outdated", type: LaunchType.UserInitiated, context: upgrade ? { upgrade } : undefined });
} catch (error) {
await showFailureToast(error, { title: "Could not open Show Outdated Tools" });
}Optional
- suggestion: You can simplify some failure toasts with
showFailureToast(error)from@raycast/utils(e.g. inrunInTerminal/ generic failure paths).
When the blocking items are done, press Ready for review. I've converted the PR to a draft until then 😊
Feel free to reach me here or on Slack if anything is unclear.
Description
Raycast commands for mise (mise-en-place), the dev-tool version manager by @jdx
npm:,cargo:andgem:package search; installs go to your global config (mise use -g, or a chosen config file).mise outdatedreports, with one-click upgrades; the menu bar refreshes every 12 hours.All commands operate on global mise configuration, which is what applies when Raycast has no project directory. mise itself is not bundled: the extension finds the user's binary (preference, standard paths, or their login shell) and runs it with the login shell's environment so exports like
CARGO_HOMEapply as they do in a terminal. Nothing is downloaded or executed with a shell; every mise call isexecFile/spawnwith an argument array.Notes for review
npm run lintruns oxlint and oxfmt (the repository's day-to-day tooling);@raycast/eslint-configand Prettier are installed with Raycast's standard settings, andnpx ray lintpasses (ESLint and Prettier both run) — it is simply not wired into the npm scripts.npm test(unit + component tests behind a small@raycast/apistub) andnpm run test:integration(dry-runs every mise command line against a real mise).scripts/check_raycast_images.pyandscripts/check_metadata_images.pylocally.Screencast
Screenshots of each command are in
metadata/(Search Tools with a backend query, Show Installed Tools with details, Show Outdated Tools, Manage Tasks, the version picker).Checklist
npm run buildand tested this distribution build in Raycastassetsfolder are used by the extension itselfREADMEare placed outside of themetadatafolder