Skip to content

chore(dev/onboarding): set up mise-based workflow for initial codebase setup#5761

Open
kanadgupta wants to merge 8 commits into
developfrom
kanad-2026-07-01/add-mise-config
Open

chore(dev/onboarding): set up mise-based workflow for initial codebase setup#5761
kanadgupta wants to merge 8 commits into
developfrom
kanad-2026-07-01/add-mise-config

Conversation

@kanadgupta

@kanadgupta kanadgupta commented Jul 2, 2026

Copy link
Copy Markdown

What kind of change does this PR introduce?

Adds a mise.toml along with enhancements to our CONTRIBUTING.md so first-time contributors have a quick and easy way to install all the correct versions of all of the required software (Node, Bun, Go, golangci-lint, pnpm) to get tests running.

I tried to minimize the amount of additional configuration, utilizing existing files (e.g., .nvmrc, go.mod, package.json) as the respective versioning sources of truth where applicable.

I also chose not to commit a mise.lock lockfile for simplicity's sake but I'm happy to add it if folks want to lean into mise further in this repo.

What is the current behavior?

If someone clones the repo for the first time, they'll need to manually download all of the executables (Node, Bun, Go, golangci-lint) and look in a few different places to determine which versions to use.

What is the new behavior?

Now, users can install mise and run mise install and it'll install the correct versions of all the required software:

CleanShot.2026-07-02.at.08.04.14.mp4

@kanadgupta kanadgupta marked this pull request as ready for review July 2, 2026 15:07
@kanadgupta kanadgupta requested a review from a team as a code owner July 2, 2026 15:07
@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown

Supabase CLI preview

npx --yes https://pkg.pr.new/supabase/cli/supabase@68862e363e45cdc26b174c70f942616cbde5d1aa

Preview package for commit 68862e3.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3820f1b03c

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread mise.toml Outdated

[hooks]
# installs the package manager (e.g., pnpm) for the project, if it is not already installed
postinstall = "corepack enable"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Declare the mise version needed for the hook

For contributors who already have a mise release that still gates hooks behind the experimental flag (for example 2026.4.28), this postinstall entry is refused with hooks is experimental unless experimental=true is enabled, so the corepack enable step never runs and the documented mise install flow can leave them without the pinned pnpm/Corepack setup. Please either enable the required setting for those versions or declare a minimum mise version where install hooks are stable.

Useful? React with 👍 / 👎.

Comment thread mise.toml

[tools]
# extracts the go version from `apps/cli-go/go.mod`
go = "{{ exec(command=`awk '/^go / {print $2}' apps/cli-go/go.mod`) }}"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Avoid Unix-only parsing for the Go version

On native Windows setups using the mise installer path linked from CONTRIBUTING, awk is not available by default, so this template command fails while mise is parsing [tools] before it can install Go. That blocks the documented mise install onboarding flow for Windows contributors; use a cross-platform version source or provide a Windows-specific config path.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@supabase/cli how much do we accommodate non-Unix developers in this repo? mise supports OS-specific tool installation so I'm happy to split this out to be more OS-specific if needed.

Comment thread mise.toml
[tools]
# extracts the go version from `apps/cli-go/go.mod`
go = "{{ exec(command=`awk '/^go / {print $2}' apps/cli-go/go.mod`) }}"
golangci-lint = "2"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Pin golangci-lint to the repo's recorded version

I checked mise install --help, which describes major-only specs such as node@20 as fuzzy versions; with golangci-lint = "2", contributors will get whichever 2.x release mise resolves at install time instead of the v2.1.6 already recorded in apps/cli-go/go.mod. When a later 2.x release changes or adds checks, mise install users can see different lint behavior from the repo-pinned Go tool dependency, so this should use the exact version or derive it from go.mod.

Useful? React with 👍 / 👎.

@avallete avallete left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Few minor comments and nitpicks, leaving approval to @Coly010 given my comment about NX/monorepo.

Thanks for this PR !

Also, the PR title I think should be chore: as it's only adding dev tools for contributors, nothing user facing in a release.

- name: Resolve Bun version
shell: bash
run: echo "BUN_VERSION=1.3.13" >> "$GITHUB_ENV"
run: echo "BUN_VERSION=$(cat .bun-version)" >> "$GITHUB_ENV"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

praise

That's nice.

Comment thread mise.toml Outdated
Comment thread mise.toml Outdated
Comment thread CONTRIBUTING.md Outdated
@kanadgupta kanadgupta changed the title feat: set up mise-based workflow for initial codebase setup chore(dev/onboarding): set up mise-based workflow for initial codebase setup Jul 2, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 68862e363e

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread CONTRIBUTING.md
From the repo root:

```sh
mise install

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Document the required mise trust step

Because this config contains [settings] and exec(...) templates, mise treats it as a trusted-only config; the mise trust docs describe templates/settings as outside the safe config set, and a fresh non-interactive mise install stops with an untrusted-config error before installing anything. In the onboarding flow documented here, users who run only this command from a fresh clone in an IDE task/script/non-TTY shell will be blocked, so add the mise trust step or avoid trusted-only features.

Useful? React with 👍 / 👎.

Comment thread mise.toml
go = "{{ exec(command=`awk '/^go / {print $2}' apps/cli-go/go.mod`) }}"
golangci-lint = "2"
# extracts the pnpm version from `package.json` (in the root)
pnpm = """{{ exec(command=`jq -r '.packageManager | split("@")[1]' package.json`) }}"""

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Avoid requiring jq before mise can install tools

This template runs jq while mise is parsing the config, before it has installed any of the repo tools, but jq is not listed as a prerequisite and is not present by default on fresh macOS or native Windows setups. In those environments the documented mise install path fails while resolving the pnpm version, so either use a mise/native file parser or document/install jq before relying on it here.

Useful? React with 👍 / 👎.

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