Skip to content

chore: replace multiple devcontainers with a single mise-based one#179

Merged
qw-in merged 4 commits into
mainfrom
quinn/mise-devcontainer
May 21, 2026
Merged

chore: replace multiple devcontainers with a single mise-based one#179
qw-in merged 4 commits into
mainfrom
quinn/mise-devcontainer

Conversation

@qw-in

@qw-in qw-in commented May 20, 2026

Copy link
Copy Markdown
Member

No description provided.

qw-in and others added 4 commits May 20, 2026 19:50
Consolidates node-20, node-22, node-24, deno-2, and python-3 devcontainers
into a single container. mise.toml at the repo root declares all runtimes
(Node 24, Deno 2.4.5, Python 3.10, uv 0.9.21) so any developer gets the
full toolchain in one container.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Switch devcontainer from image+postCreateCommand to a Dockerfile so
  tools are baked in at build time rather than downloaded on first open
- Add mise.lock (generated by `mise lock`) to pin exact versions and
  checksums for all platforms
- Enable lockfile = true in mise.toml [settings]
- Remove Trunk and .trunk/; replace trunk fmt/check in CONTRIBUTING.md
  with direct biome/prettier invocations

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…cksum

Downloads the binary directly from github.com/jdx/mise/releases with
SHA-256 verification rather than piping a script into the shell. The
ARG makes the version and its checksums easy to bump together.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

@arcjet-review arcjet-review 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.

Arcjet Review — 🟢 Low Risk

Decision: Approved

Rationale: This PR is a dev-tooling consolidation: it replaces four per-runtime devcontainers (node-20/22/24, deno-2, python-3) and the Trunk linting setup with a single mise-based devcontainer driven by mise.toml/mise.lock. Only dev-environment files are touched — no application code, no CI workflows, no production runtime behavior. The Dockerfile follows good supply-chain hygiene: mise is pinned to a specific version (2026.5.12), downloaded from the official GitHub release, and verified against pinned SHA256 checksums for both x86_64 and aarch64 before being made executable. MISE_TRUSTED_CONFIG_PATHS is scoped to /workspaces and the bundled mise.toml is explicitly trusted, which is appropriate inside a devcontainer. CONTRIBUTING.md is updated consistently to drop Trunk references. No secrets, no auth/permissions changes, no migrations.

Summary of Changes

Replaces the per-runtime devcontainers (node-20/22/24, deno-2, python-3) and the Trunk linting config with a single mise-based devcontainer. Adds .devcontainer/Dockerfile (mise pinned + SHA256-verified), a top-level mise.toml pinning node/deno/python/uv versions, rewrites .devcontainer/devcontainer.json to build from the new Dockerfile, and updates CONTRIBUTING.md to run Biome/Prettier directly instead of via Trunk.

Escalation Triggers

  • CI/CD Pipeline: New .devcontainer/Dockerfile added. Note: this is a devcontainer Dockerfile (local developer environment), not a CI or production image — impact is limited to contributor tooling.

Notes

Diff is well under the 1000-line threshold. Security skill checklist applied: no auth, secrets, crypto, or injection surface introduced; mise binary download uses HTTPS + pinned SHA256, which mitigates supply-chain tampering for this dependency.

Path filtering: 1 file excluded by ignore paths. 14 of 15 files included in review.

Review: 313a06f2 | Powered by Arcjet Review

Comment thread .devcontainer/Dockerfile
Comment thread .devcontainer/Dockerfile
Comment thread mise.toml
@qw-in qw-in added this pull request to the merge queue May 21, 2026
Merged via the queue into main with commit e90e517 May 21, 2026
19 checks passed
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.

1 participant