Migrate task runner from Makefile to mise#578
Conversation
Remove the Makefile and move all tasks into mise.toml (setup-dev, check-all, dev, format/lint/type-check/security, pre-commit, clean, docs). Update the release workflow to use jdx/mise-action and refresh contributor/install docs to use mise commands.
Greptile SummaryThis PR replaces the
Confidence Score: 5/5Safe to merge — no application code changed, and the CI build path (mise-action → uv sync --frozen → pyinstaller) is straightforward and functionally equivalent to what it replaced. The change is purely tooling and documentation. The CI workflow correctly delegates to mise-action, the build step is unchanged, and all Makefile targets have direct equivalents in mise.toml. The mise.toml — the Important Files Changed
Prompt To Fix All With AIFix the following 2 code review issues. Work through them one at a time, proposing concise fixes.
---
### Issue 1 of 2
mise.toml:41-49
The `check-all` and `dev` tasks invoke `mise <task>` as a subprocess from within a task `run` array, whereas `setup-dev` uses the idiomatic `depends` key. Calling `mise` recursively works but bypasses mise's dependency graph (no parallelism, no deduplication) and silently relies on `mise` being on `PATH` inside every task shell. Using `depends` is the declared mechanism for task chaining in mise and is already used by `setup-dev`.
```suggestion
[tasks.check-all]
description = "Run all code quality checks (format, lint, type-check, security)"
depends = ["format", "lint", "type-check", "security"]
run = "echo '✅ All code quality checks passed!'"
```
### Issue 2 of 2
mise.toml:65-72
Same pattern: `dev` calls sub-tasks via nested `mise` instead of `depends`. Prefer `depends` for consistency with `setup-dev` and to let mise manage the execution graph.
```suggestion
[tasks.dev]
description = "Quick dev loop: format, lint, type-check"
depends = ["format", "lint", "type-check"]
run = "echo '✅ Development cycle complete!'"
```
Reviews (2): Last reviewed commit: "Update mise.toml" | Re-trigger Greptile |
| [tools] | ||
| "npm:mintlify" = "latest" | ||
| node = "lts" | ||
| pre-commit = "latest" | ||
| python = "3.12" | ||
| uv = "latest" |
There was a problem hiding this comment.
Using
latest for uv, pre-commit, and npm:mintlify, plus lts for Node, undermines the core value proposition of mise as a reproducible toolchain. Two contributors running mise install days apart may get different tool versions, causing silent drift between environments — exactly the problem mise is meant to solve. Pin these to specific versions (e.g., uv = "0.7.x", node = "22.x", pre-commit = "4.x") and commit the mise.lock or equivalent.
| [tools] | |
| "npm:mintlify" = "latest" | |
| node = "lts" | |
| pre-commit = "latest" | |
| python = "3.12" | |
| uv = "latest" | |
| [tools] | |
| "npm:mintlify" = "4" | |
| node = "22" | |
| pre-commit = "4" | |
| python = "3.12" | |
| uv = "0.7" |
Prompt To Fix With AI
This is a comment left during a code review.
Path: mise.toml
Line: 1-6
Comment:
Using `latest` for `uv`, `pre-commit`, and `npm:mintlify`, plus `lts` for Node, undermines the core value proposition of mise as a reproducible toolchain. Two contributors running `mise install` days apart may get different tool versions, causing silent drift between environments — exactly the problem mise is meant to solve. Pin these to specific versions (e.g., `uv = "0.7.x"`, `node = "22.x"`, `pre-commit = "4.x"`) and commit the `mise.lock` or equivalent.
```suggestion
[tools]
"npm:mintlify" = "4"
node = "22"
pre-commit = "4"
python = "3.12"
uv = "0.7"
```
How can I resolve this? If you propose a fix, please make it concise.Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
There was a problem hiding this comment.
Pinned versions are preferable, but I couldn't find any versions in the current project, so I thought it safer to leave it up to the maintainers.
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
|
Please note that several of the current code clean/linter steps are broken. This is not something I have introduced :) |
|
@greptile |
Summary
Adopt mise-en-place as the single tool for both toolchain provisioning (Python, uv, Node, pre-commit, the Mintlify docs CLI) and task running, replacing the
Makefileand the manual setup steps. Contributors now runmise installto get a pinned toolchain andmise <task>for everything theMakefileused to do.Changes
mise.toml— pins tools (python 3.12,uv,node lts,pre-commit,npm:mintlify) and defines tasks:setup-dev,dev-install,prod-install,format,lint,type-check,security,check-all,pre-commit,clean,dev, anddocs.Makefile— removed; all targets migrated tomisetasks..github/workflows/build-release.yml— replacesactions/setup-python+astral-sh/setup-uvwithjdx/mise-action(install: true,cache: true) so CI uses the same pinned toolchain as local dev.CONTRIBUTING.md,docs/contributing.mdx,docs/quickstart.mdx,docs/README.md, andREADME.mdupdated to usemisefor setup, checks, docs preview, and install (mise use -g "github:usestrix/strix"/pipx:strix-agent).Why
mise install) provisions everything; one verb (mise <task>) runs everything.Notes for reviewers
mise trustbeforemise install(called out in the docs).mise check-all.How to verify