Skip to content

feat: add Bun, Python, Ruby, and Go to devcontainer features#67

Open
Copilot wants to merge 2 commits intomainfrom
copilot/update-devcontainer-features
Open

feat: add Bun, Python, Ruby, and Go to devcontainer features#67
Copilot wants to merge 2 commits intomainfrom
copilot/update-devcontainer-features

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Feb 26, 2026

Expands DevMagic's dev container from a Node.js/TypeScript-only environment to a multi-language setup by enabling four additional runtime features.

Changes

  • .devcontainer/devcontainer.json
    • Added ghcr.io/rails/devcontainer/features/bun:1 (latest)
    • Added ghcr.io/devcontainers/features/python:1 (3.12)
    • Added ghcr.io/devcontainers/features/ruby:1 (3.4)
    • Added ghcr.io/devcontainers/features/go:1 (1.23)
    • Removed now-redundant commented-out stubs for python, ruby, and go
"features": {
  "ghcr.io/rails/devcontainer/features/bun:1": { "version": "latest" },
  "ghcr.io/devcontainers/features/python:1": { "version": "3.12" },
  "ghcr.io/devcontainers/features/ruby:1": { "version": "3.4" },
  "ghcr.io/devcontainers/features/go:1": { "version": "1.23" }
}
Original prompt

Update .devcontainer/devcontainer.json to include additional essential dev container features.

We want to expand the language/tooling support in DevMagic to offer a flexible, multi-language environment while keeping the base image minimal.

Please add the following features to the "features" object in .devcontainer/devcontainer.json:

  1. Bun: Add the Bun feature (borrowing from the Rails devcontainer repository).
"ghcr.io/rails/devcontainer/features/bun:1": {
  "version": "latest"
}
  1. Python: Add the official Python feature.
"ghcr.io/devcontainers/features/python:1": {
  "version": "3.12"
}
  1. Ruby: Add the official Ruby feature.
"ghcr.io/devcontainers/features/ruby:1": {
  "version": "3.4"
}
  1. Go: Add the official Go feature.
"ghcr.io/devcontainers/features/go:1": {
  "version": "1.23"
}

Make sure the JSON syntax remains valid and these are correctly added to the existing "features" block in .devcontainer/devcontainer.json.

This pull request was created from Copilot chat.


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

@vercel
Copy link
Copy Markdown
Contributor

vercel Bot commented Feb 26, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
devmagic Ready Ready Preview, Comment Feb 26, 2026 7:43pm

Co-authored-by: marcelocra <2532492+marcelocra@users.noreply.github.com>
Copilot AI changed the title [WIP] Update devcontainer.json with additional essential features feat: add Bun, Python, Ruby, and Go to devcontainer features Feb 26, 2026
@marcelocra marcelocra marked this pull request as ready for review April 30, 2026 23:49
@marcelocra
Copy link
Copy Markdown
Owner

@copilot Review this PR and tell me whether it is still up to date and relevant or not.

Copy link
Copy Markdown
Contributor Author

Copilot AI commented Apr 30, 2026

@copilot Review this PR and tell me whether it is still up to date and relevant or not.

Reviewed against the current main (806eb27) — the PR is still up to date and relevant.

Up to date: The diff applies cleanly. None of the four features (bun, python, ruby, go) have landed on main through any other change, and the surrounding features block in main is unchanged from when this PR was branched. No rebase or conflict resolution is needed.

Still relevant: The original motivation (multi-language dev container) holds — main is still Node/TypeScript-only, and the commented-out stubs for python/ruby/go that this PR removes are still present on main, confirming nothing has superseded the change.

Minor things worth considering before merging (not blockers):

  • Pinned versions are aging. Go 1.23 and Python 3.12 are no longer the latest stable releases. If you want the container to track current stable, consider bumping to Go 1.24+ and Python 3.13. Ruby 3.4 and Bun latest are fine.
  • bun: "latest" intentionally floats — that's consistent with how the Rails devcontainer feature is typically used, but it does mean container rebuilds can pull in a newer Bun unexpectedly. Pinning to a specific version would be more reproducible if that matters to you.
  • Container size will grow noticeably (Python + Ruby + Go toolchains on top of the typescript-node base). Still well under the ~10 GB universal image, but worth noting in the PR description if you want to set expectations.

If you'd like, I can push a follow-up commit bumping Go to 1.24 and Python to 3.13, or pinning Bun — just say the word.

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Apr 30, 2026

Greptile Summary

This PR expands the DevMagic devcontainer from a TypeScript/Node.js-only setup to a multi-language environment by enabling Bun, Python 3.12, Ruby 3.4, and Go 1.23 as devcontainer features, and removes the now-redundant commented-out stubs for the three official-namespace features. The JSONC structure is valid and all official-namespace features pin explicit versions; only Bun uses "version": "latest" which makes it non-deterministic compared to the rest.

Confidence Score: 4/5

Safe to merge; only a non-critical version-pinning inconsistency for Bun.

Only a single P2 finding (unpinned Bun version) with no logic errors, security issues, or JSON validity problems. P2-only ceiling is 4/5.

.devcontainer/devcontainer.json — pin the Bun version before merging if reproducible builds matter.

Important Files Changed

Filename Overview
.devcontainer/devcontainer.json Adds Bun, Python 3.12, Ruby 3.4, and Go 1.23 devcontainer features; JSONC structure is valid, but Bun's version is unpinned ("latest") while all other new features use specific version strings.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A["Base Image\ntypescript-node:24-bookworm"] --> B[devcontainer build]
    B --> C["common-utils:2\n(zsh default shell)"]
    B --> D["git-lfs:1\n(autoPull: false)"]
    B --> E["git:1"]
    B --> F["github-cli:1"]
    B --> G["bun:1 ⚠️ latest\n(rails namespace)"]
    B --> H["python:1\nv3.12"]
    B --> I["ruby:1\nv3.4"]
    B --> J["go:1\nv1.23"]
    B --> K["postCreateCommand\ncurl devmagic.run/setup | bash"]
Loading

Reviews (1): Last reviewed commit: "feat: add Bun, Python, Ruby, and Go feat..." | Re-trigger Greptile

Comment on lines +72 to +74
"ghcr.io/rails/devcontainer/features/bun:1": {
"version": "latest"
},
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2 Bun version is unpinned ("latest")

Unlike the other three features in this PR (Python 3.12, Ruby 3.4, Go 1.23), Bun uses "version": "latest", which is non-deterministic. Two developers rebuilding the container at different times could get different Bun versions, leading to inconsistent toolchain behaviour. Pin a specific version for reproducibility.

Suggested change
"ghcr.io/rails/devcontainer/features/bun:1": {
"version": "latest"
},
"ghcr.io/rails/devcontainer/features/bun:1": {
"version": "1.2.3"
},

Copilot AI requested a review from marcelocra April 30, 2026 23:51
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Expands the DevMagic dev container configuration to support additional runtimes beyond Node.js/TypeScript by enabling Bun, Python, Ruby, and Go via Dev Container features.

Changes:

  • Added Bun, Python, Ruby, and Go features (with specified versions) to .devcontainer/devcontainer.json.
  • Removed redundant commented-out stubs for Python/Ruby/Go features.

Comment on lines +71 to +73
// Bun JavaScript runtime (borrowing from the Rails devcontainer repository).
"ghcr.io/rails/devcontainer/features/bun:1": {
"version": "latest"

// Bun JavaScript runtime (borrowing from the Rails devcontainer repository).
"ghcr.io/rails/devcontainer/features/bun:1": {
"version": "latest"
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.

3 participants