Repository navigation
Conversation
✅ Deploy Preview for virtual-coffee-io ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
Coverage Report
File Coverage
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
The cut-over is done (docs/adr/0004). Deletes scripts/airtable, the airtable dependency, its env keys and the dangling path comments; ADRs 0004 and 0012 point at git history.
It was only needed for auth forwarding, which the local test-user sign-in replaced. Drops dev:tunnel, local-dev:tunnel and the tunnel-only Next settings.
Pins pnpm and watchexec, reads Node from .nvmrc, and promotes the local workflows (codegen, checks, dev loop, database, email) from a personal file. Deletes .tool-versions. A test keeps mise.toml's pnpm equal to packageManager.
package.json's dev is now a shim for `mise run dev`. Drops concurrently, npm-watch, cross-env and the scripts they served. dev:server derives Next's port (PORT) and URL from WEB_PORT, so a worktree can run beside the main checkout.
Generated by `mise generate install-script --localize`; its data lives in the gitignored .mise/.
Checks the platform (native Windows is pointed at WSL), installs or finds mise, runs pnpm install and codegen, creates .env without overwriting one, applies the local migrations, and offers the seed, Mailpit and pitchfork.
port.auto gives the main checkout 9000 and each linked worktree its own slot (WEB_PORT, stride 10; dev:server puts Next on the port above). Verified with pitchfork 2.29: the main checkout and a worktree run side by side. The proxy is off, so there is no WEB_URL; use http://localhost:$WEB_PORT.
Replaces the pnpm/action-setup + setup-node pairs in ci.yml and refresh-bot-list.yml. mise.lock is committed, so the action installs --locked.
…t take args Pins usage 6.12.0 and pitchfork 2.29.0. db:generate requires a hyphenated --name; test, lint and format get typed flags and paths. bin/setup's extra is now registering and starting the web daemon.
Adds ADR 0020 and its Greptile pointer, docs/agents/dev-server.md, and moves README, CONTRIBUTING and CLAUDE.md to bin/setup and mise run.
Its state/ links back to the checkout, so Vitest ran every test twice (and two db tests failed in the duplicate). Excludes it from Vitest, ESLint and tsc, and tells knip that mise is a toolchain binary, not a dependency.
mailpit is scoped to the mail:server task (not [tools]), so it downloads on first use only. [daemons.mail] gives the UI an auto port (base 8025) and SMTP the port above it; dev --mail starts it and exports SMTP_HOST/SMTP_PORT, which win over .env. bin/setup's brew extra becomes a pointer.
[daemons.mail] uses Mailpit's defaults (UI 8025, SMTP 1025). dev --mail reuses whatever already answers on :8025 and only starts the daemon otherwise, so a second worktree never fights over the port.
Signed-off-by: Joe Karow <58997957+JoeKarow@users.noreply.github.com>
JoeKarow
force-pushed
the
feat/mise-onboarding
branch
from
October 8, 2026 18:17
b265ca8 to
9bd21a0
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Linked Issue
None. This is tooling work with no tracking issue.
Description
mise is now the required toolchain, locally and in CI (
docs/adr/0020).bin/setup: an idempotent first-run wizard. It checks platform → mise → tools → deps and codegen →.env→ local database → optional extras. On native Windows it points to WSL and exits.bin/mise(mise generate install-script --localize, markedlinguist-vendored).mise.toml+mise.lock:.nvmrc.check,dev,codegenanddb:*. Tasks that take arguments haveusagespecs.[deps.pnpm]reinstallsnode_modulesbeforemise runwhenever the lockfile changes.src/test/toolchain.test.tskeeps the pnpm pins in sync.mise daemons start webgives each git worktree its own port. Read it frommise daemons urls --jsonor$WEB_PORT.mise run dev --mailreuses or starts one shared Mailpit inbox at http://localhost:8025. Mailpit is installed on first use.mise run devreplaces concurrently, npm-watch and cross-env.pnpm devis kept as a shim.ci.ymlandrefresh-bot-list.ymlinstall tools withjdx/mise-actionfrom the lockfile.netlify dev --livetunnel.bin/setup), CLAUDE.md, anddocs/agents/dev-server.mdfor agents.Methodology
Onboarding was a manual list of steps. The useful task set lived in one maintainer's gitignored config, so contributors and agents never had it. Parallel worktrees and agents also collided on :9000.
A pinned, repo-local mise means setup no longer depends on a global version manager. Daemons give each worktree its own ports, and agents can read them.
Verification:
mise run check(codegen, typecheck, lint, test, knip) andpnpm buildpass.bin/setup --yesworked from a fresh clone with mise off PATH, and a second run was a no-op../bin/mise run devworks without a global mise.db:migrate.--mail, two worktrees shared one Mailpit and a test send was delivered.Not verified:
Code of Conduct